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 100854436 : tree_zero_one_valued_p (tree t)
11 : {
12 100854436 : const tree type = TREE_TYPE (t);
13 100854436 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 100854436 : if (TREE_SIDE_EFFECTS (t)) return false;
15 95240776 : {
16 95240776 : tree captures[1] ATTRIBUTE_UNUSED = { t };
17 190481552 : if (INTEGRAL_TYPE_P (type)
18 68924738 : && (TYPE_UNSIGNED (type)
19 12399703 : || TYPE_PRECISION (type) > 1)
20 233090202 : && wi::leu_p (tree_nonzero_bits (captures[0]), 1)
21 : )
22 : {
23 483674 : {
24 483674 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 28, __FILE__, __LINE__, false);
25 483674 : return true;
26 : }
27 : }
28 : }
29 94757102 : switch (TREE_CODE (t))
30 : {
31 263390 : case BIT_AND_EXPR:
32 263390 : {
33 263390 : tree _p0 = TREE_OPERAND (t, 0);
34 263390 : tree _p1 = TREE_OPERAND (t, 1);
35 263390 : if (integer_onep (_p1))
36 : {
37 0 : {
38 0 : tree captures[2] ATTRIBUTE_UNUSED = { t, _p0 };
39 0 : if (INTEGRAL_TYPE_P (type)
40 : )
41 : {
42 0 : {
43 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 29, __FILE__, __LINE__, false);
44 0 : return true;
45 : }
46 : }
47 : }
48 : }
49 263390 : if (integer_onep (_p0))
50 : {
51 0 : {
52 0 : tree captures[2] ATTRIBUTE_UNUSED = { t, _p1 };
53 0 : if (INTEGRAL_TYPE_P (type)
54 : )
55 : {
56 0 : {
57 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 29, __FILE__, __LINE__, false);
58 0 : return true;
59 : }
60 : }
61 : }
62 : }
63 : break;
64 : }
65 45206416 : CASE_CONVERT:
66 45206416 : {
67 45206416 : tree _p0 = TREE_OPERAND (t, 0);
68 45206416 : {
69 45206416 : tree captures[2] ATTRIBUTE_UNUSED = { t, _p0 };
70 90405743 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
71 40591289 : && (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
72 35938590 : || TYPE_PRECISION (TREE_TYPE (captures[1])) > 1)
73 40591281 : && INTEGRAL_TYPE_P (type)
74 40591267 : && (TYPE_UNSIGNED (type)
75 1931453 : || TYPE_PRECISION (type) > 1)
76 131004099 : && wi::leu_p (tree_nonzero_bits (captures[1]), 1)
77 : )
78 : {
79 0 : {
80 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 30, __FILE__, __LINE__, false);
81 0 : return true;
82 : }
83 : }
84 : }
85 : break;
86 : }
87 94757102 : default:;
88 : }
89 94757102 : if (tree_truth_valued_p (t))
90 : {
91 170658 : {
92 170658 : tree captures[1] ATTRIBUTE_UNUSED = { t };
93 170658 : if (INTEGRAL_TYPE_P (type)
94 170658 : && (TYPE_UNSIGNED (type)
95 170579 : || TYPE_PRECISION (type) > 1)
96 : )
97 : {
98 170608 : {
99 170608 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 31, __FILE__, __LINE__, false);
100 170608 : return true;
101 : }
102 : }
103 : }
104 : }
105 : return false;
106 : }
107 :
108 : tree
109 1 : generic_simplify_2 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
110 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
111 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
112 : {
113 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
114 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail73;
115 1 : {
116 1 : tree res_op0;
117 1 : res_op0 = captures[0];
118 1 : tree _r;
119 1 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
120 1 : if (TREE_SIDE_EFFECTS (captures[1]))
121 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
122 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 50, __FILE__, __LINE__, true);
123 : return _r;
124 : }
125 0 : next_after_fail73:;
126 0 : return NULL_TREE;
127 : }
128 :
129 : tree
130 0 : generic_simplify_9 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
131 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
132 : const enum tree_code ARG_UNUSED (bit_op))
133 : {
134 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
135 0 : if (bit_op == BIT_AND_EXPR
136 : )
137 : {
138 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail81;
139 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail81;
140 0 : {
141 0 : tree _r;
142 0 : _r = build_zero_cst (type);
143 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 56, __FILE__, __LINE__, true);
144 0 : return _r;
145 : }
146 : next_after_fail81:;
147 : }
148 : else
149 : {
150 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail82;
151 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail82;
152 0 : {
153 0 : tree _r;
154 0 : _r = build_minus_one_cst (type);
155 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 57, __FILE__, __LINE__, true);
156 0 : return _r;
157 : }
158 : next_after_fail82:;
159 : }
160 : return NULL_TREE;
161 : }
162 :
163 : tree
164 1 : generic_simplify_18 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
165 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
166 : {
167 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
168 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail93;
169 1 : {
170 1 : tree res_op0;
171 1 : res_op0 = captures[1];
172 1 : tree res_op1;
173 1 : {
174 1 : tree _o1[1], _r1;
175 1 : _o1[0] = captures[2];
176 1 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
177 1 : res_op1 = _r1;
178 : }
179 1 : tree _r;
180 1 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
181 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 66, __FILE__, __LINE__, true);
182 : return _r;
183 : }
184 0 : next_after_fail93:;
185 0 : return NULL_TREE;
186 : }
187 :
188 : tree
189 731 : generic_simplify_28 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
190 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
191 : {
192 731 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
193 731 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
194 : )
195 : {
196 731 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail103;
197 731 : {
198 731 : tree res_op0;
199 731 : {
200 731 : tree _o1[2], _r1;
201 731 : {
202 731 : tree _o2[1], _r2;
203 731 : _o2[0] = captures[2];
204 731 : if (TREE_TYPE (_o2[0]) != type)
205 : {
206 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o2[0]);
207 : }
208 : else
209 : _r2 = _o2[0];
210 731 : _o1[0] = _r2;
211 : }
212 731 : _o1[1] = captures[3];
213 731 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
214 731 : res_op0 = _r1;
215 : }
216 731 : tree _r;
217 731 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
218 731 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 76, __FILE__, __LINE__, true);
219 731 : return _r;
220 : }
221 0 : next_after_fail103:;
222 : }
223 : return NULL_TREE;
224 : }
225 :
226 : tree
227 7 : generic_simplify_36 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
228 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
229 : const enum tree_code ARG_UNUSED (op))
230 : {
231 7 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
232 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail113;
233 7 : {
234 7 : tree _r;
235 7 : _r = constant_boolean_node (true, type);
236 7 : if (TREE_SIDE_EFFECTS (captures[0]))
237 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
238 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 85, __FILE__, __LINE__, true);
239 : return _r;
240 : }
241 0 : next_after_fail113:;
242 0 : return NULL_TREE;
243 : }
244 :
245 : tree
246 24 : generic_simplify_39 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
247 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
248 : {
249 24 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
250 24 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
251 : )
252 : {
253 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail116;
254 24 : {
255 24 : tree res_op0;
256 24 : {
257 24 : tree _o1[2], _r1;
258 24 : {
259 24 : tree _o2[1], _r2;
260 24 : _o2[0] = captures[2];
261 24 : if (TREE_TYPE (_o2[0]) != type)
262 : {
263 24 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o2[0]);
264 : }
265 : else
266 : _r2 = _o2[0];
267 24 : _o1[0] = _r2;
268 : }
269 24 : _o1[1] = captures[3];
270 24 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
271 24 : res_op0 = _r1;
272 : }
273 24 : tree _r;
274 24 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
275 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 76, __FILE__, __LINE__, true);
276 24 : return _r;
277 : }
278 0 : next_after_fail116:;
279 : }
280 : return NULL_TREE;
281 : }
282 :
283 : tree
284 7 : generic_simplify_48 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
285 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
286 : const enum tree_code ARG_UNUSED (op))
287 : {
288 7 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
289 14 : if (INTEGRAL_TYPE_P (type)
290 7 : && tree_int_cst_sgn (captures[2]) > 0
291 7 : && tree_int_cst_sgn (captures[4]) > 0
292 28 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[3])) == 0
293 : )
294 : {
295 4 : {
296 4 : tree t = type;
297 4 : if (!TYPE_OVERFLOW_WRAPS (t))
298 4 : t = unsigned_type_for (t);
299 4 : wide_int wone = wi::one (TYPE_PRECISION (t));
300 8 : wide_int c = wi::add (wi::lshift (wone, wi::to_wide (captures[2])),
301 8 : wi::lshift (wone, wi::to_wide (captures[4])));
302 4 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail126;
303 4 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail126;
304 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail126;
305 4 : {
306 4 : tree res_op0;
307 4 : {
308 4 : tree _o1[2], _r1;
309 4 : {
310 4 : tree _o2[1], _r2;
311 4 : _o2[0] = captures[1];
312 4 : if (TREE_TYPE (_o2[0]) != t)
313 : {
314 4 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
315 : }
316 : else
317 : _r2 = _o2[0];
318 4 : _o1[0] = _r2;
319 : }
320 4 : _o1[1] = wide_int_to_tree (t,c);
321 4 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
322 4 : res_op0 = _r1;
323 : }
324 4 : tree _r;
325 4 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
326 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 94, __FILE__, __LINE__, true);
327 4 : return _r;
328 : }
329 0 : next_after_fail126:;
330 4 : }
331 : }
332 : return NULL_TREE;
333 : }
334 :
335 : tree
336 45 : generic_simplify_58 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
337 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
338 : {
339 45 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
340 45 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail139;
341 45 : {
342 45 : if (! tree_invariant_p (captures[2])) goto next_after_fail139;
343 45 : tree res_op0;
344 45 : {
345 45 : tree _o1[2], _r1;
346 45 : _o1[0] = captures[0];
347 45 : _o1[1] = unshare_expr (captures[2]);
348 45 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
349 45 : res_op0 = _r1;
350 : }
351 45 : tree res_op1;
352 45 : {
353 45 : tree _o1[1], _r1;
354 45 : _o1[0] = captures[2];
355 45 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
356 45 : res_op1 = _r1;
357 : }
358 45 : tree _r;
359 45 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
360 45 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 107, __FILE__, __LINE__, true);
361 : return _r;
362 : }
363 : next_after_fail139:;
364 : return NULL_TREE;
365 : }
366 :
367 : tree
368 7 : generic_simplify_67 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
369 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
370 : {
371 7 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
372 7 : if (!TYPE_SATURATING (type)
373 : )
374 : {
375 7 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
376 14 : && !FIXED_POINT_TYPE_P (type)
377 : )
378 : {
379 7 : if (TYPE_OVERFLOW_UNDEFINED (type)
380 14 : && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[0]))
381 : )
382 : {
383 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail156;
384 7 : {
385 7 : tree res_op0;
386 7 : res_op0 = captures[2];
387 7 : tree res_op1;
388 7 : res_op1 = captures[1];
389 7 : tree _r;
390 7 : _r = fold_build2_loc (loc, POINTER_DIFF_EXPR, type, res_op0, res_op1);
391 7 : if (TREE_SIDE_EFFECTS (captures[0]))
392 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
393 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 124, __FILE__, __LINE__, true);
394 7 : return _r;
395 : }
396 0 : next_after_fail156:;
397 : }
398 : }
399 : }
400 : return NULL_TREE;
401 : }
402 :
403 : tree
404 9 : generic_simplify_75 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
405 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
406 : {
407 9 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
408 9 : if (INTEGRAL_TYPE_P (type)
409 9 : && (
410 :
411 9 : || !TREE_SIDE_EFFECTS (captures[1]))
412 : )
413 : {
414 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail165;
415 2 : {
416 2 : tree res_op0;
417 2 : {
418 2 : tree _o1[1], _r1;
419 2 : _o1[0] = captures[2];
420 2 : if (TREE_TYPE (_o1[0]) != boolean_type_node)
421 : {
422 2 : _r1 = fold_build1_loc (loc, NOP_EXPR, boolean_type_node, _o1[0]);
423 : }
424 : else
425 : _r1 = _o1[0];
426 2 : res_op0 = _r1;
427 : }
428 2 : tree res_op1;
429 2 : res_op1 = captures[1];
430 2 : tree res_op2;
431 2 : res_op2 = captures[0];
432 2 : tree _r;
433 2 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
434 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 133, __FILE__, __LINE__, true);
435 2 : return _r;
436 : }
437 0 : next_after_fail165:;
438 : }
439 : return NULL_TREE;
440 : }
441 :
442 : tree
443 1 : generic_simplify_80 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
444 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
445 : const combined_fn ARG_UNUSED (logs))
446 : {
447 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
448 1 : if (flag_unsafe_math_optimizations
449 : )
450 : {
451 1 : if (! HONOR_SIGN_DEPENDENT_ROUNDING (type)
452 1 : && ! HONOR_NANS (type) && ! HONOR_INFINITIES (type)
453 1 : && ! flag_trapping_math
454 2 : && ! flag_errno_math
455 : )
456 : {
457 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail171;
458 1 : {
459 1 : tree res_op0;
460 1 : {
461 1 : tree _o1[2], _r1;
462 1 : _o1[0] = captures[1];
463 1 : _o1[1] = captures[3];
464 1 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
465 1 : res_op0 = _r1;
466 : }
467 1 : tree _r;
468 1 : _r = maybe_build_call_expr_loc (loc, logs, type, 1, res_op0);
469 1 : if (!_r)
470 0 : goto next_after_fail171;
471 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 139, __FILE__, __LINE__, true);
472 1 : return _r;
473 : }
474 : next_after_fail171:;
475 : }
476 : }
477 : return NULL_TREE;
478 : }
479 :
480 : tree
481 21 : generic_simplify_88 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
482 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
483 : {
484 21 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
485 21 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail179;
486 21 : {
487 21 : tree res_op0;
488 21 : {
489 21 : tree _o1[2], _r1;
490 21 : _o1[0] = captures[1];
491 21 : _o1[1] = unshare_expr (captures[2]);
492 21 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
493 21 : res_op0 = _r1;
494 : }
495 21 : tree res_op1;
496 21 : res_op1 = captures[2];
497 21 : tree _r;
498 21 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
499 21 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 147, __FILE__, __LINE__, true);
500 : return _r;
501 : }
502 0 : next_after_fail179:;
503 0 : return NULL_TREE;
504 : }
505 :
506 : tree
507 57819 : generic_simplify_96 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
508 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
509 : {
510 57819 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
511 57819 : if (!TYPE_SATURATING (type)
512 : )
513 : {
514 57819 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
515 115627 : && !FIXED_POINT_TYPE_P (type)
516 : )
517 : {
518 57808 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail187;
519 57808 : {
520 57808 : tree res_op0;
521 57808 : res_op0 = captures[1];
522 57808 : tree _r;
523 57808 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
524 57808 : if (TREE_SIDE_EFFECTS (captures[0]))
525 15 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
526 57808 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 154, __FILE__, __LINE__, true);
527 57808 : return _r;
528 : }
529 0 : next_after_fail187:;
530 : }
531 : }
532 : return NULL_TREE;
533 : }
534 :
535 : tree
536 41 : generic_simplify_102 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
537 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
538 : {
539 41 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
540 41 : if (!TYPE_SATURATING (type)
541 : )
542 : {
543 41 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
544 82 : && !FIXED_POINT_TYPE_P (type)
545 : )
546 : {
547 82 : if (!TYPE_OVERFLOW_TRAPS (type)
548 41 : && TREE_CODE (type) != COMPLEX_TYPE
549 81 : && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
550 : )
551 : {
552 40 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail197;
553 40 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail197;
554 40 : {
555 40 : tree res_op0;
556 40 : {
557 40 : tree _o1[1], _r1;
558 40 : _o1[0] = captures[0];
559 40 : if (TREE_TYPE (_o1[0]) != type)
560 : {
561 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
562 : }
563 : else
564 : _r1 = _o1[0];
565 40 : res_op0 = _r1;
566 : }
567 40 : tree _r;
568 40 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
569 40 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 164, __FILE__, __LINE__, true);
570 40 : return _r;
571 : }
572 : next_after_fail197:;
573 : }
574 : }
575 : }
576 : return NULL_TREE;
577 : }
578 :
579 : tree
580 0 : generic_simplify_110 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
581 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
582 : {
583 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
584 0 : if (TREE_CODE (captures[1]) == SSA_NAME && num_imm_uses (captures[1]) == 2
585 : )
586 : {
587 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail207;
588 0 : {
589 0 : if (! tree_invariant_p (captures[2])) goto next_after_fail207;
590 0 : tree res_op0;
591 0 : {
592 0 : tree _o1[2], _r1;
593 0 : {
594 0 : tree _o2[3], _r2;
595 0 : _o2[0] = unshare_expr (captures[2]);
596 0 : _o2[1] = captures[2];
597 0 : _o2[2] = captures[4];
598 0 : _r2 = fold_build3_loc (loc, VEC_PERM_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1], _o2[2]);
599 0 : _o1[0] = _r2;
600 : }
601 0 : _o1[1] = captures[3];
602 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
603 0 : res_op0 = _r1;
604 : }
605 0 : tree res_op1;
606 0 : res_op1 = captures[5];
607 0 : tree _r;
608 0 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
609 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 174, __FILE__, __LINE__, true);
610 0 : return _r;
611 : }
612 : next_after_fail207:;
613 : }
614 : return NULL_TREE;
615 : }
616 :
617 : tree
618 0 : generic_simplify_116 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
619 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
620 : {
621 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
622 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail213;
623 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail213;
624 0 : {
625 0 : tree _r;
626 0 : _r = captures[2];
627 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 178, __FILE__, __LINE__, true);
628 : return _r;
629 : }
630 : next_after_fail213:;
631 : return NULL_TREE;
632 : }
633 :
634 : tree
635 0 : generic_simplify_122 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
636 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
637 : {
638 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
639 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail219;
640 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail219;
641 0 : {
642 0 : tree _r;
643 0 : _r = captures[2];
644 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 184, __FILE__, __LINE__, true);
645 : return _r;
646 : }
647 : next_after_fail219:;
648 : return NULL_TREE;
649 : }
650 :
651 : tree
652 15 : generic_simplify_129 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
653 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
654 : const enum tree_code ARG_UNUSED (bitop))
655 : {
656 15 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
657 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail226;
658 15 : {
659 15 : tree res_op0;
660 15 : res_op0 = captures[0];
661 15 : tree res_op1;
662 15 : {
663 15 : tree _o1[1], _r1;
664 15 : _o1[0] = captures[2];
665 15 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
666 15 : res_op1 = _r1;
667 : }
668 15 : tree _r;
669 15 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
670 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 188, __FILE__, __LINE__, true);
671 : return _r;
672 : }
673 0 : next_after_fail226:;
674 0 : return NULL_TREE;
675 : }
676 :
677 : tree
678 0 : generic_simplify_140 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
679 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
680 : const enum tree_code ARG_UNUSED (op))
681 : {
682 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
683 0 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[3]))
684 0 : && tree_nop_conversion_p (type, TREE_TYPE (captures[6]))
685 : )
686 : {
687 0 : if (single_use (captures[4]) && single_use (captures[5])
688 : )
689 : {
690 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail240;
691 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail240;
692 0 : {
693 0 : tree res_op0;
694 0 : res_op0 = captures[0];
695 0 : tree res_op1;
696 0 : {
697 0 : tree _o1[1], _r1;
698 0 : _o1[0] = captures[6];
699 0 : if (TREE_TYPE (_o1[0]) != type)
700 : {
701 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
702 : }
703 : else
704 : _r1 = _o1[0];
705 0 : res_op1 = _r1;
706 : }
707 0 : tree _r;
708 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
709 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 194, __FILE__, __LINE__, true);
710 0 : return _r;
711 : }
712 : next_after_fail240:;
713 : }
714 : else
715 : {
716 : if (single_use (captures[0]) && single_use (captures[1])
717 : )
718 : {
719 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail241;
720 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail241;
721 : {
722 : tree res_op0;
723 : {
724 : tree _o1[1], _r1;
725 : _o1[0] = captures[3];
726 : if (TREE_TYPE (_o1[0]) != type)
727 : {
728 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
729 : }
730 : else
731 : _r1 = _o1[0];
732 : res_op0 = _r1;
733 : }
734 : tree res_op1;
735 : res_op1 = captures[4];
736 : tree _r;
737 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
738 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 195, __FILE__, __LINE__, true);
739 : return _r;
740 : }
741 : next_after_fail241:;
742 : }
743 : }
744 : }
745 : return NULL_TREE;
746 : }
747 :
748 : tree
749 4 : generic_simplify_155 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
750 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
751 : {
752 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
753 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail260;
754 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail260;
755 4 : {
756 4 : tree _r;
757 4 : _r = captures[2];
758 4 : if (TREE_SIDE_EFFECTS (captures[1]))
759 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
760 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 209, __FILE__, __LINE__, true);
761 : return _r;
762 : }
763 : next_after_fail260:;
764 : return NULL_TREE;
765 : }
766 :
767 : tree
768 0 : generic_simplify_161 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
769 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
770 : const enum tree_code ARG_UNUSED (cmp),
771 : const enum tree_code ARG_UNUSED (bitop),
772 : const enum tree_code ARG_UNUSED (neeq))
773 : {
774 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
775 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail285;
776 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail285;
777 0 : {
778 0 : tree res_op0;
779 0 : {
780 0 : tree _o1[2], _r1;
781 0 : _o1[0] = build_zero_cst (TREE_TYPE (captures[0]));
782 0 : _o1[1] = captures[3];
783 0 : _r1 = fold_build2_loc (loc, cmp, type, _o1[0], _o1[1]);
784 0 : res_op0 = _r1;
785 : }
786 0 : tree res_op1;
787 0 : res_op1 = captures[4];
788 0 : tree _r;
789 0 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
790 0 : if (TREE_SIDE_EFFECTS (captures[2]))
791 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
792 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 227, __FILE__, __LINE__, true);
793 : return _r;
794 : }
795 : next_after_fail285:;
796 : return NULL_TREE;
797 : }
798 :
799 : tree
800 0 : generic_simplify_169 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
801 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
802 : const enum tree_code ARG_UNUSED (cmp),
803 : const enum tree_code ARG_UNUSED (bitop),
804 : const enum tree_code ARG_UNUSED (neeq))
805 : {
806 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
807 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail306;
808 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail306;
809 0 : {
810 0 : tree res_op0;
811 0 : {
812 0 : tree _o1[2], _r1;
813 0 : _o1[0] = build_zero_cst (TREE_TYPE (captures[0]));
814 0 : _o1[1] = captures[3];
815 0 : _r1 = fold_build2_loc (loc, cmp, type, _o1[0], _o1[1]);
816 0 : res_op0 = _r1;
817 : }
818 0 : tree res_op1;
819 0 : res_op1 = captures[4];
820 0 : tree _r;
821 0 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
822 0 : if (TREE_SIDE_EFFECTS (captures[2]))
823 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
824 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 227, __FILE__, __LINE__, true);
825 : return _r;
826 : }
827 : next_after_fail306:;
828 : return NULL_TREE;
829 : }
830 :
831 : tree
832 0 : generic_simplify_175 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
833 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
834 : {
835 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
836 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail313;
837 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail313;
838 0 : {
839 0 : tree _r;
840 0 : _r = captures[1];
841 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 233, __FILE__, __LINE__, true);
842 : return _r;
843 : }
844 : next_after_fail313:;
845 : return NULL_TREE;
846 : }
847 :
848 : tree
849 94 : generic_simplify_177 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
850 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
851 : const enum tree_code ARG_UNUSED (logic),
852 : const enum tree_code ARG_UNUSED (op),
853 : const enum tree_code ARG_UNUSED (ext))
854 : {
855 94 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
856 188 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
857 188 : && TREE_CODE (captures[1]) != INTEGER_CST
858 : )
859 : {
860 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail315;
861 0 : {
862 0 : tree res_op0;
863 0 : res_op0 = captures[1];
864 0 : tree res_op1;
865 0 : {
866 0 : tree _o1[2], _r1;
867 0 : _o1[0] = captures[2];
868 0 : _o1[1] = captures[4];
869 0 : _r1 = fold_build2_loc (loc, ext, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
870 0 : res_op1 = _r1;
871 : }
872 0 : tree _r;
873 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
874 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 234, __FILE__, __LINE__, true);
875 0 : return _r;
876 : }
877 0 : next_after_fail315:;
878 : }
879 : return NULL_TREE;
880 : }
881 :
882 : tree
883 0 : generic_simplify_182 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
884 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
885 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
886 : {
887 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
888 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
889 : )
890 : {
891 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail320;
892 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail320;
893 0 : {
894 0 : tree res_op0;
895 0 : {
896 0 : tree _o1[1], _r1;
897 0 : _o1[0] = captures[0];
898 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
899 0 : res_op0 = _r1;
900 : }
901 0 : tree _r;
902 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
903 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 238, __FILE__, __LINE__, true);
904 0 : return _r;
905 : }
906 : next_after_fail320:;
907 : }
908 : return NULL_TREE;
909 : }
910 :
911 : tree
912 0 : generic_simplify_188 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
913 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
914 : {
915 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
916 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail326;
917 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail326;
918 0 : {
919 0 : tree _r;
920 0 : _r = build_zero_cst (type);
921 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 242, __FILE__, __LINE__, true);
922 : return _r;
923 : }
924 : next_after_fail326:;
925 : return NULL_TREE;
926 : }
927 :
928 : tree
929 0 : generic_simplify_194 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
930 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
931 : const enum tree_code ARG_UNUSED (cmp))
932 : {
933 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
934 0 : if (fold_before_rtl_expansion_p ()
935 : )
936 : {
937 0 : if (INTEGRAL_TYPE_P (type)
938 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
939 : )
940 : {
941 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail334;
942 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail334;
943 0 : {
944 0 : tree res_op0;
945 0 : res_op0 = captures[0];
946 0 : tree res_op1;
947 0 : res_op1 = captures[3];
948 0 : tree res_op2;
949 0 : res_op2 = build_zero_cst (type);
950 0 : tree _r;
951 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
952 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 246, __FILE__, __LINE__, true);
953 0 : return _r;
954 : }
955 : next_after_fail334:;
956 : }
957 : }
958 : return NULL_TREE;
959 : }
960 :
961 : tree
962 186693 : generic_simplify_199 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
963 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
964 : {
965 186693 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
966 186693 : if (TREE_CODE (captures[3]) != INTEGER_CST
967 : && single_use (captures[0])
968 186693 : && !integer_zerop (captures[2]) && !integer_minus_onep (captures[2])
969 : )
970 : {
971 186663 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail340;
972 186663 : {
973 186663 : tree res_op0;
974 186663 : {
975 186663 : tree _o1[2], _r1;
976 186663 : _o1[0] = captures[1];
977 186663 : _o1[1] = captures[3];
978 186663 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
979 186663 : res_op0 = _r1;
980 : }
981 186663 : tree res_op1;
982 186663 : res_op1 = captures[2];
983 186663 : tree _r;
984 186663 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
985 186663 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 253, __FILE__, __LINE__, true);
986 186663 : return _r;
987 : }
988 0 : next_after_fail340:;
989 : }
990 : return NULL_TREE;
991 : }
992 :
993 : tree
994 38 : generic_simplify_205 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
995 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
996 : const combined_fn ARG_UNUSED (POW))
997 : {
998 38 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
999 38 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1000 : )
1001 : {
1002 38 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail346;
1003 38 : {
1004 38 : tree res_op0;
1005 38 : res_op0 = captures[1];
1006 38 : tree res_op1;
1007 38 : {
1008 38 : tree _o1[2], _r1;
1009 38 : _o1[0] = captures[2];
1010 38 : _o1[1] = captures[4];
1011 38 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1012 38 : res_op1 = _r1;
1013 : }
1014 38 : tree _r;
1015 38 : _r = maybe_build_call_expr_loc (loc, POW, type, 2, res_op0, res_op1);
1016 38 : if (!_r)
1017 0 : goto next_after_fail346;
1018 38 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 259, __FILE__, __LINE__, true);
1019 38 : return _r;
1020 : }
1021 : next_after_fail346:;
1022 : }
1023 : return NULL_TREE;
1024 : }
1025 :
1026 : tree
1027 0 : generic_simplify_213 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1028 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1029 : const enum tree_code ARG_UNUSED (op))
1030 : {
1031 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1032 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail357;
1033 0 : {
1034 0 : tree _r;
1035 0 : _r = constant_boolean_node (op == NE_EXPR ? true : false, type);
1036 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1037 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1038 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 269, __FILE__, __LINE__, true);
1039 : return _r;
1040 : }
1041 0 : next_after_fail357:;
1042 0 : return NULL_TREE;
1043 : }
1044 :
1045 : tree
1046 2659 : generic_simplify_218 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1047 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1048 : const enum tree_code ARG_UNUSED (cmp))
1049 : {
1050 2659 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1051 5318 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1052 3492 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
1053 4426 : && tree_expr_nonzero_p (captures[1])
1054 : )
1055 : {
1056 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail362;
1057 12 : {
1058 12 : tree res_op0;
1059 12 : res_op0 = captures[0];
1060 12 : tree res_op1;
1061 12 : res_op1 = captures[2];
1062 12 : tree _r;
1063 12 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1064 12 : if (TREE_SIDE_EFFECTS (captures[1]))
1065 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1066 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 274, __FILE__, __LINE__, true);
1067 12 : return _r;
1068 : }
1069 0 : next_after_fail362:;
1070 : }
1071 : return NULL_TREE;
1072 : }
1073 :
1074 : tree
1075 43 : generic_simplify_224 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1076 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1077 : const enum tree_code ARG_UNUSED (op))
1078 : {
1079 43 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1080 43 : if (!TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[2]))
1081 : )
1082 : {
1083 43 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail381;
1084 43 : {
1085 43 : tree res_op0;
1086 43 : res_op0 = captures[1];
1087 43 : tree res_op1;
1088 43 : res_op1 = captures[3];
1089 43 : tree _r;
1090 43 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1091 43 : if (TREE_SIDE_EFFECTS (captures[2]))
1092 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1093 43 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 293, __FILE__, __LINE__, true);
1094 43 : return _r;
1095 : }
1096 0 : next_after_fail381:;
1097 : }
1098 : return NULL_TREE;
1099 : }
1100 :
1101 : tree
1102 0 : generic_simplify_232 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1103 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1104 : const enum tree_code ARG_UNUSED (cmp1),
1105 : const enum tree_code ARG_UNUSED (cmp2),
1106 : const enum tree_code ARG_UNUSED (rcmp))
1107 : {
1108 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1109 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1110 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
1111 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[0]))
1112 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
1113 : )
1114 : {
1115 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail389;
1116 0 : {
1117 0 : tree res_op0;
1118 0 : res_op0 = captures[0];
1119 0 : tree res_op1;
1120 0 : res_op1 = captures[1];
1121 0 : tree _r;
1122 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
1123 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 300, __FILE__, __LINE__, true);
1124 0 : return _r;
1125 : }
1126 0 : next_after_fail389:;
1127 : }
1128 : return NULL_TREE;
1129 : }
1130 :
1131 : tree
1132 2 : generic_simplify_240 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1133 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1134 : const enum tree_code ARG_UNUSED (cmp),
1135 : const enum tree_code ARG_UNUSED (icmp))
1136 : {
1137 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1138 2 : if (tree_int_cst_sgn (captures[0]) > 0
1139 : )
1140 : {
1141 2 : {
1142 2 : int c1 = wi::clz (wi::to_wide (captures[0]));
1143 2 : int c2 = wi::clz (wi::to_wide (captures[2]));
1144 2 : if (c1 > c2
1145 : )
1146 : {
1147 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail401;
1148 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail401;
1149 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail401;
1150 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail401;
1151 0 : {
1152 0 : tree _r;
1153 0 : _r = constant_boolean_node (cmp == NE_EXPR ? false : true, type);
1154 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1155 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1156 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 312, __FILE__, __LINE__, true);
1157 0 : return _r;
1158 : }
1159 : next_after_fail401:;
1160 : }
1161 : else
1162 : {
1163 2 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail402;
1164 2 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail402;
1165 2 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail402;
1166 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail402;
1167 2 : {
1168 2 : tree res_op0;
1169 2 : res_op0 = captures[1];
1170 2 : tree res_op1;
1171 2 : res_op1 = build_int_cst (TREE_TYPE (captures[1]), c2 - c1);
1172 2 : tree _r;
1173 2 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1174 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 313, __FILE__, __LINE__, true);
1175 2 : return _r;
1176 : }
1177 : next_after_fail402:;
1178 : }
1179 : }
1180 : }
1181 : return NULL_TREE;
1182 : }
1183 :
1184 : tree
1185 179 : generic_simplify_249 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1186 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1187 : const enum tree_code ARG_UNUSED (cmp),
1188 : const enum tree_code ARG_UNUSED (icmp),
1189 : const enum tree_code ARG_UNUSED (ncmp))
1190 : {
1191 179 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1192 179 : if (types_match (type, TREE_TYPE (captures[0]))
1193 : )
1194 : {
1195 125 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail418;
1196 125 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail418;
1197 125 : {
1198 125 : tree res_op0;
1199 125 : res_op0 = captures[1];
1200 125 : tree res_op1;
1201 125 : res_op1 = captures[2];
1202 125 : tree _r;
1203 125 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1204 125 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 329, __FILE__, __LINE__, true);
1205 125 : return _r;
1206 : }
1207 : next_after_fail418:;
1208 : }
1209 : return NULL_TREE;
1210 : }
1211 :
1212 : tree
1213 46675833 : generic_simplify_256 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1214 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1215 : const enum tree_code ARG_UNUSED (cmp))
1216 : {
1217 46675833 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1218 46675833 : {
1219 46675833 : bool wascmp;
1220 46675833 : if (types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
1221 46675833 : && bitwise_inverted_equal_p (captures[0], captures[1], wascmp)
1222 : )
1223 : {
1224 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail431;
1225 5 : {
1226 5 : tree _r;
1227 5 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1228 5 : if (TREE_SIDE_EFFECTS (captures[0]))
1229 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1230 5 : if (TREE_SIDE_EFFECTS (captures[1]))
1231 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1232 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 341, __FILE__, __LINE__, true);
1233 5 : return _r;
1234 : }
1235 0 : next_after_fail431:;
1236 : }
1237 : }
1238 46675828 : return NULL_TREE;
1239 : }
1240 :
1241 : tree
1242 8885 : generic_simplify_261 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1243 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1244 : const enum tree_code ARG_UNUSED (op),
1245 : const enum tree_code ARG_UNUSED (cmp))
1246 : {
1247 8885 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1248 8885 : if (flag_unsafe_math_optimizations
1249 : )
1250 : {
1251 5 : {
1252 8 : tree tem = const_binop (op == PLUS_EXPR ? MINUS_EXPR : PLUS_EXPR,
1253 5 : TREE_TYPE (captures[1]), captures[2], captures[1]);
1254 5 : if (tem && !TREE_OVERFLOW (tem)
1255 : )
1256 : {
1257 4 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail450;
1258 4 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail450;
1259 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail450;
1260 4 : {
1261 4 : tree res_op0;
1262 4 : res_op0 = captures[0];
1263 4 : tree res_op1;
1264 4 : res_op1 = tem;
1265 4 : tree _r;
1266 4 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1267 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 359, __FILE__, __LINE__, true);
1268 4 : return _r;
1269 : }
1270 : next_after_fail450:;
1271 : }
1272 : }
1273 : }
1274 : return NULL_TREE;
1275 : }
1276 :
1277 : tree
1278 69 : generic_simplify_267 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1279 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1280 : const enum tree_code ARG_UNUSED (cmp))
1281 : {
1282 69 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1283 69 : if (!integer_zerop (captures[1])
1284 : )
1285 : {
1286 69 : if (wi::to_wide (captures[2]) == 0
1287 : )
1288 : {
1289 22 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail481;
1290 22 : {
1291 22 : tree res_op0;
1292 22 : res_op0 = captures[0];
1293 22 : tree res_op1;
1294 22 : res_op1 = captures[2];
1295 22 : tree _r;
1296 22 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1297 22 : if (TREE_SIDE_EFFECTS (captures[1]))
1298 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1299 22 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 390, __FILE__, __LINE__, true);
1300 22 : return _r;
1301 : }
1302 0 : next_after_fail481:;
1303 : }
1304 : else
1305 : {
1306 47 : if (TREE_CODE (captures[1]) == INTEGER_CST
1307 : )
1308 : {
1309 47 : {
1310 47 : wi::overflow_type ovf;
1311 47 : wide_int prod = wi::mul (wi::to_wide (captures[2]), wi::to_wide (captures[1]),
1312 94 : TYPE_SIGN (TREE_TYPE (captures[1])), &ovf);
1313 47 : if (ovf
1314 : )
1315 : {
1316 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail482;
1317 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail482;
1318 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail482;
1319 0 : {
1320 0 : tree _r;
1321 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1322 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1323 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1324 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 391, __FILE__, __LINE__, true);
1325 0 : return _r;
1326 : }
1327 0 : next_after_fail482:;
1328 : }
1329 : else
1330 : {
1331 47 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail483;
1332 47 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail483;
1333 47 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail483;
1334 47 : {
1335 47 : tree res_op0;
1336 47 : res_op0 = captures[0];
1337 47 : tree res_op1;
1338 47 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[0]), prod);
1339 47 : tree _r;
1340 47 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1341 47 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 392, __FILE__, __LINE__, true);
1342 47 : return _r;
1343 : }
1344 0 : next_after_fail483:;
1345 : }
1346 47 : }
1347 : }
1348 : }
1349 : }
1350 : return NULL_TREE;
1351 : }
1352 :
1353 : tree
1354 27309 : generic_simplify_274 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1355 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1356 : const enum tree_code ARG_UNUSED (cmp))
1357 : {
1358 27309 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1359 27309 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail507;
1360 27309 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail507;
1361 27309 : {
1362 27309 : tree res_op0;
1363 27309 : res_op0 = captures[0];
1364 27309 : tree res_op1;
1365 27309 : res_op1 = captures[1];
1366 27309 : tree _r;
1367 27309 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1368 27309 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 408, __FILE__, __LINE__, true);
1369 : return _r;
1370 : }
1371 : next_after_fail507:;
1372 : return NULL_TREE;
1373 : }
1374 :
1375 : tree
1376 149866 : generic_simplify_276 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1377 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1378 : const enum tree_code ARG_UNUSED (cmp))
1379 : {
1380 149866 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1381 149866 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail509;
1382 149866 : {
1383 149866 : tree res_op0;
1384 149866 : {
1385 149866 : tree _o1[2], _r1;
1386 149866 : _o1[0] = captures[0];
1387 149866 : {
1388 149866 : tree _o2[1], _r2;
1389 149866 : _o2[0] = captures[1];
1390 149866 : _r2 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
1391 149866 : if (EXPR_P (_r2))
1392 149837 : goto next_after_fail509;
1393 29 : _o1[1] = _r2;
1394 : }
1395 29 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1396 29 : res_op0 = _r1;
1397 : }
1398 29 : tree res_op1;
1399 29 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
1400 29 : tree _r;
1401 29 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1402 29 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 410, __FILE__, __LINE__, true);
1403 : return _r;
1404 : }
1405 : next_after_fail509:;
1406 : return NULL_TREE;
1407 : }
1408 :
1409 : tree
1410 30068183 : generic_simplify_280 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1411 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1412 : const enum tree_code ARG_UNUSED (cmp))
1413 : {
1414 30068183 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1415 30068183 : if (tree_expr_nonzero_p (captures[0])
1416 : )
1417 : {
1418 1023387 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail513;
1419 1023387 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail513;
1420 1023387 : {
1421 1023387 : tree _r;
1422 1023387 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1423 1023387 : if (TREE_SIDE_EFFECTS (captures[0]))
1424 6712 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1425 1023387 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 414, __FILE__, __LINE__, true);
1426 1023387 : return _r;
1427 : }
1428 : next_after_fail513:;
1429 : }
1430 : return NULL_TREE;
1431 : }
1432 :
1433 : tree
1434 94 : generic_simplify_285 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1435 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1436 : const enum tree_code ARG_UNUSED (sgncmp),
1437 : const enum tree_code ARG_UNUSED (cmp),
1438 : const enum tree_code ARG_UNUSED (ncmp))
1439 : {
1440 94 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1441 188 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1442 94 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1443 188 : && types_match (captures[0], captures[2])
1444 : )
1445 : {
1446 94 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail518;
1447 94 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail518;
1448 94 : {
1449 94 : tree res_op0;
1450 94 : {
1451 94 : tree _o1[2], _r1;
1452 94 : _o1[0] = captures[0];
1453 94 : _o1[1] = captures[2];
1454 94 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1455 94 : res_op0 = _r1;
1456 : }
1457 94 : tree res_op1;
1458 94 : res_op1 = captures[1];
1459 94 : tree _r;
1460 94 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
1461 94 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 418, __FILE__, __LINE__, true);
1462 94 : return _r;
1463 : }
1464 : next_after_fail518:;
1465 : }
1466 : return NULL_TREE;
1467 : }
1468 :
1469 : tree
1470 115881 : generic_simplify_290 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1471 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1472 : const enum tree_code ARG_UNUSED (cmp))
1473 : {
1474 115881 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1475 115881 : {
1476 115881 : poly_int64 off0, off1;
1477 115881 : tree base0, base1;
1478 115881 : int equal = address_compare (cmp, TREE_TYPE (captures[0]), captures[1], captures[2], base0, base1,
1479 : off0, off1,
1480 : 1
1481 : );
1482 115881 : if (equal == 1
1483 : )
1484 : {
1485 100232 : if (cmp == EQ_EXPR && (known_eq (off0, off1) || known_ne (off0, off1))
1486 : )
1487 : {
1488 8379 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail530;
1489 8379 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail530;
1490 8379 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail530;
1491 8379 : {
1492 8379 : tree _r;
1493 8379 : _r = constant_boolean_node (known_eq (off0, off1), type);
1494 8379 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 421, __FILE__, __LINE__, true);
1495 102192 : return _r;
1496 : }
1497 13689 : next_after_fail530:;
1498 : }
1499 : else
1500 : {
1501 51531 : if (cmp == NE_EXPR && (known_eq (off0, off1) || known_ne (off0, off1))
1502 : )
1503 : {
1504 51531 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail531;
1505 51531 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail531;
1506 51531 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail531;
1507 51531 : {
1508 51531 : tree _r;
1509 51531 : _r = constant_boolean_node (known_ne (off0, off1), type);
1510 51531 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 422, __FILE__, __LINE__, true);
1511 51531 : return _r;
1512 : }
1513 13689 : next_after_fail531:;
1514 : }
1515 : else
1516 : {
1517 29171 : if (cmp == LT_EXPR && (known_lt (off0, off1) || known_ge (off0, off1))
1518 : )
1519 : {
1520 29171 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail532;
1521 29171 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail532;
1522 29171 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail532;
1523 29171 : {
1524 29171 : tree _r;
1525 29171 : _r = constant_boolean_node (known_lt (off0, off1), type);
1526 29171 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 423, __FILE__, __LINE__, true);
1527 29171 : return _r;
1528 : }
1529 13689 : next_after_fail532:;
1530 : }
1531 : else
1532 : {
1533 391 : if (cmp == LE_EXPR && (known_le (off0, off1) || known_gt (off0, off1))
1534 : )
1535 : {
1536 391 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail533;
1537 391 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail533;
1538 391 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail533;
1539 391 : {
1540 391 : tree _r;
1541 391 : _r = constant_boolean_node (known_le (off0, off1), type);
1542 391 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 424, __FILE__, __LINE__, true);
1543 391 : return _r;
1544 : }
1545 13689 : next_after_fail533:;
1546 : }
1547 : else
1548 : {
1549 7192 : if (cmp == GE_EXPR && (known_ge (off0, off1) || known_lt (off0, off1))
1550 : )
1551 : {
1552 7192 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail534;
1553 7192 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail534;
1554 7192 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail534;
1555 7192 : {
1556 7192 : tree _r;
1557 7192 : _r = constant_boolean_node (known_ge (off0, off1), type);
1558 7192 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 425, __FILE__, __LINE__, true);
1559 7192 : return _r;
1560 : }
1561 13689 : next_after_fail534:;
1562 : }
1563 : else
1564 : {
1565 3568 : if (cmp == GT_EXPR && (known_gt (off0, off1) || known_le (off0, off1))
1566 : )
1567 : {
1568 3568 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail535;
1569 3568 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail535;
1570 3568 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail535;
1571 3568 : {
1572 3568 : tree _r;
1573 3568 : _r = constant_boolean_node (known_gt (off0, off1), type);
1574 3568 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 426, __FILE__, __LINE__, true);
1575 3568 : return _r;
1576 : }
1577 13689 : next_after_fail535:;
1578 : }
1579 : }
1580 : }
1581 : }
1582 : }
1583 : }
1584 : }
1585 : else
1586 : {
1587 15649 : if (equal == 0
1588 : )
1589 : {
1590 1960 : if (cmp == EQ_EXPR
1591 : )
1592 : {
1593 923 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail536;
1594 923 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail536;
1595 923 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail536;
1596 923 : {
1597 923 : tree _r;
1598 923 : _r = constant_boolean_node (false, type);
1599 923 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 427, __FILE__, __LINE__, true);
1600 923 : return _r;
1601 : }
1602 13689 : next_after_fail536:;
1603 : }
1604 : else
1605 : {
1606 1037 : if (cmp == NE_EXPR
1607 : )
1608 : {
1609 1037 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail537;
1610 1037 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail537;
1611 1037 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail537;
1612 1037 : {
1613 1037 : tree _r;
1614 1037 : _r = constant_boolean_node (true, type);
1615 1037 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 428, __FILE__, __LINE__, true);
1616 1037 : return _r;
1617 : }
1618 13689 : next_after_fail537:;
1619 : }
1620 : }
1621 : }
1622 : }
1623 : }
1624 13689 : return NULL_TREE;
1625 : }
1626 :
1627 : tree
1628 28236 : generic_simplify_305 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1629 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1630 : const enum tree_code ARG_UNUSED (cmp),
1631 : const enum tree_code ARG_UNUSED (icmp),
1632 : const enum tree_code ARG_UNUSED (ncmp))
1633 : {
1634 28236 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1635 28236 : if (types_match (type, TREE_TYPE (captures[0]))
1636 : )
1637 : {
1638 27466 : {
1639 27466 : enum tree_code ic = invert_tree_comparison
1640 27466 : (cmp, HONOR_NANS (captures[1]));
1641 27466 : if (ic == icmp
1642 : )
1643 : {
1644 22031 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail571;
1645 22031 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail571;
1646 22031 : {
1647 22031 : tree res_op0;
1648 22031 : res_op0 = captures[1];
1649 22031 : tree res_op1;
1650 22031 : res_op1 = captures[2];
1651 22031 : tree _r;
1652 22031 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1653 22031 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 462, __FILE__, __LINE__, true);
1654 22031 : return _r;
1655 : }
1656 : next_after_fail571:;
1657 : }
1658 : else
1659 : {
1660 5435 : if (ic == ncmp
1661 : )
1662 : {
1663 5 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail572;
1664 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail572;
1665 5 : {
1666 5 : tree res_op0;
1667 5 : res_op0 = captures[1];
1668 5 : tree res_op1;
1669 5 : res_op1 = captures[2];
1670 5 : tree _r;
1671 5 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
1672 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 463, __FILE__, __LINE__, true);
1673 5 : return _r;
1674 : }
1675 : next_after_fail572:;
1676 : }
1677 : }
1678 : }
1679 : }
1680 : return NULL_TREE;
1681 : }
1682 :
1683 : tree
1684 23 : generic_simplify_314 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1685 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1686 : const enum tree_code ARG_UNUSED (div))
1687 : {
1688 23 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1689 30 : if ((TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (captures[0]))
1690 16 : && (!VECTOR_TYPE_P (type)
1691 0 : || target_supports_op_p (type, RSHIFT_EXPR, optab_vector)
1692 0 : || target_supports_op_p (type, RSHIFT_EXPR, optab_scalar))
1693 39 : && (useless_type_conversion_p (type, TREE_TYPE (captures[2]))
1694 7 : || (element_precision (type) >= element_precision (TREE_TYPE (captures[2]))
1695 7 : && (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
1696 14 : || (element_precision (type)
1697 7 : == element_precision (TREE_TYPE (captures[2])))
1698 7 : || (INTEGRAL_TYPE_P (type)
1699 14 : && (tree_nonzero_bits (captures[0])
1700 44 : & wi::mask (element_precision (TREE_TYPE (captures[2])) - 1,
1701 : true,
1702 37 : element_precision (type))) == 0))))
1703 : )
1704 : {
1705 9 : if (!VECTOR_TYPE_P (type)
1706 9 : && useless_type_conversion_p (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
1707 18 : && element_precision (TREE_TYPE (captures[1])) < element_precision (type)
1708 : )
1709 : {
1710 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail582;
1711 0 : {
1712 0 : tree res_op0;
1713 0 : {
1714 0 : tree _o1[2], _r1;
1715 0 : _o1[0] = captures[1];
1716 0 : _o1[1] = captures[3];
1717 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1718 0 : res_op0 = _r1;
1719 : }
1720 0 : tree _r;
1721 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1722 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1723 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1724 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 471, __FILE__, __LINE__, true);
1725 0 : return _r;
1726 : }
1727 0 : next_after_fail582:;
1728 : }
1729 : else
1730 : {
1731 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail583;
1732 9 : {
1733 9 : tree res_op0;
1734 9 : res_op0 = captures[0];
1735 9 : tree res_op1;
1736 9 : res_op1 = captures[3];
1737 9 : tree _r;
1738 9 : _r = fold_build2_loc (loc, RSHIFT_EXPR, type, res_op0, res_op1);
1739 9 : if (TREE_SIDE_EFFECTS (captures[2]))
1740 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1741 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 472, __FILE__, __LINE__, true);
1742 9 : return _r;
1743 : }
1744 0 : next_after_fail583:;
1745 : }
1746 : }
1747 : return NULL_TREE;
1748 : }
1749 :
1750 : tree
1751 52 : generic_simplify_331 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1752 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1753 : const enum tree_code ARG_UNUSED (mod))
1754 : {
1755 52 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1756 52 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail601;
1757 52 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail601;
1758 52 : {
1759 52 : tree _r;
1760 52 : _r = captures[0];
1761 52 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 490, __FILE__, __LINE__, true);
1762 : return _r;
1763 : }
1764 : next_after_fail601:;
1765 : return NULL_TREE;
1766 : }
1767 :
1768 : tree
1769 5 : generic_simplify_339 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1770 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1771 : const combined_fn ARG_UNUSED (SINH),
1772 : const combined_fn ARG_UNUSED (COSH),
1773 : const combined_fn ARG_UNUSED (TANH))
1774 : {
1775 5 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1776 5 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1777 : )
1778 : {
1779 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail611;
1780 3 : {
1781 3 : tree res_op0;
1782 3 : res_op0 = captures[1];
1783 3 : tree _r;
1784 3 : _r = maybe_build_call_expr_loc (loc, TANH, type, 1, res_op0);
1785 3 : if (!_r)
1786 0 : goto next_after_fail611;
1787 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 500, __FILE__, __LINE__, true);
1788 3 : return _r;
1789 : }
1790 : next_after_fail611:;
1791 : }
1792 : return NULL_TREE;
1793 : }
1794 :
1795 : tree
1796 7507 : generic_simplify_347 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1797 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1798 : const enum tree_code ARG_UNUSED (cmp),
1799 : const enum tree_code ARG_UNUSED (op))
1800 : {
1801 7507 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1802 7507 : {
1803 7507 : tree from_type = TREE_TYPE (captures[0]), to_type = TREE_TYPE (captures[1]);
1804 7507 : if (types_match (from_type, to_type)
1805 7507 : || (TYPE_UNSIGNED (from_type)
1806 37 : && !TYPE_UNSIGNED (to_type)
1807 37 : && TYPE_PRECISION (from_type) == TYPE_PRECISION (to_type)
1808 37 : && integer_zerop (captures[1])
1809 31 : && (cmp == LT_EXPR || cmp == GE_EXPR))
1810 : )
1811 : {
1812 7477 : {
1813 7477 : wi::overflow_type overflow = wi::OVF_NONE;
1814 7477 : enum tree_code code, cmp_code = cmp;
1815 7477 : wide_int real_c1;
1816 7477 : wide_int c1 = wi::to_wide (captures[1]);
1817 7477 : wide_int c2 = wi::to_wide (captures[2]);
1818 7477 : wide_int c3 = wi::to_wide (captures[3]);
1819 7477 : signop sgn = TYPE_SIGN (from_type);
1820 7477 : if (!types_match (from_type, to_type))
1821 : {
1822 7 : if (cmp_code == LT_EXPR)
1823 : cmp_code = GT_EXPR;
1824 0 : if (cmp_code == GE_EXPR)
1825 0 : cmp_code = LE_EXPR;
1826 7 : c1 = wi::max_value (to_type);
1827 : }
1828 7477 : if (op == PLUS_EXPR)
1829 7477 : real_c1 = wi::sub (c3, c2, sgn, &overflow);
1830 : else
1831 0 : real_c1 = wi::add (c3, c2, sgn, &overflow);
1832 7477 : code = cmp_code;
1833 7477 : if (!overflow || !TYPE_OVERFLOW_UNDEFINED (from_type))
1834 : {
1835 14954 : if (!wi::cmp (wi::sub (real_c1, 1, sgn, &overflow), c1, sgn)
1836 7477 : && !overflow)
1837 : {
1838 635 : if (cmp_code == LE_EXPR)
1839 : code = LT_EXPR;
1840 633 : if (cmp_code == GT_EXPR)
1841 7477 : code = GE_EXPR;
1842 : }
1843 14954 : if (!wi::cmp (wi::add (real_c1, 1, sgn, &overflow), c1, sgn)
1844 7477 : && !overflow)
1845 : {
1846 6419 : if (cmp_code == LT_EXPR)
1847 : code = LE_EXPR;
1848 6419 : if (cmp_code == GE_EXPR)
1849 : code = GT_EXPR;
1850 : }
1851 1087 : if (code != cmp_code || !wi::cmp (real_c1, c1, sgn))
1852 : {
1853 7254 : if (cmp_code == LT_EXPR || cmp_code == LE_EXPR)
1854 : code = MIN_EXPR;
1855 7252 : if (cmp_code == GT_EXPR || cmp_code == GE_EXPR)
1856 : code = MAX_EXPR;
1857 : }
1858 : }
1859 225 : if (code == MAX_EXPR
1860 : )
1861 : {
1862 7252 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail621;
1863 7252 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail621;
1864 7252 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail621;
1865 7252 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail621;
1866 7252 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail621;
1867 7252 : {
1868 7252 : tree res_op0;
1869 7252 : {
1870 7252 : tree _o1[2], _r1;
1871 7252 : _o1[0] = captures[0];
1872 7252 : _o1[1] = wide_int_to_tree (from_type, real_c1);
1873 7252 : _r1 = fold_build2_loc (loc, MAX_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1874 7252 : res_op0 = _r1;
1875 : }
1876 7252 : tree res_op1;
1877 7252 : res_op1 = wide_int_to_tree (from_type, c2);
1878 7252 : tree _r;
1879 7252 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1880 7252 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 510, __FILE__, __LINE__, true);
1881 7252 : return _r;
1882 : }
1883 223 : next_after_fail621:;
1884 : }
1885 : else
1886 : {
1887 225 : if (code == MIN_EXPR
1888 : )
1889 : {
1890 2 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail622;
1891 2 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail622;
1892 2 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail622;
1893 2 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail622;
1894 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail622;
1895 2 : {
1896 2 : tree res_op0;
1897 2 : {
1898 2 : tree _o1[2], _r1;
1899 2 : _o1[0] = captures[0];
1900 2 : _o1[1] = wide_int_to_tree (from_type, real_c1);
1901 2 : _r1 = fold_build2_loc (loc, MIN_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1902 2 : res_op0 = _r1;
1903 : }
1904 2 : tree res_op1;
1905 2 : res_op1 = wide_int_to_tree (from_type, c2);
1906 2 : tree _r;
1907 2 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1908 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 511, __FILE__, __LINE__, true);
1909 2 : return _r;
1910 : }
1911 223 : next_after_fail622:;
1912 : }
1913 : }
1914 7477 : }
1915 : }
1916 : }
1917 : return NULL_TREE;
1918 : }
1919 :
1920 : tree
1921 17 : generic_simplify_377 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1922 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1923 : const enum tree_code ARG_UNUSED (cmp))
1924 : {
1925 17 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1926 17 : if (INTEGRAL_TYPE_P (type)
1927 17 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1928 17 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1929 34 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (type)
1930 : )
1931 : {
1932 17 : {
1933 17 : tree shifter = build_int_cst (integer_type_node, TYPE_PRECISION (type) - 1);
1934 17 : if (cmp == GE_EXPR
1935 : )
1936 : {
1937 9 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail657;
1938 9 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail657;
1939 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail657;
1940 9 : {
1941 9 : tree res_op0;
1942 9 : {
1943 9 : tree _o1[1], _r1;
1944 9 : {
1945 9 : tree _o2[2], _r2;
1946 9 : _o2[0] = captures[0];
1947 9 : _o2[1] = shifter;
1948 9 : _r2 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1949 9 : _o1[0] = _r2;
1950 : }
1951 9 : if (TREE_TYPE (_o1[0]) != type)
1952 : {
1953 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1954 : }
1955 : else
1956 : _r1 = _o1[0];
1957 9 : res_op0 = _r1;
1958 : }
1959 9 : tree res_op1;
1960 9 : res_op1 = captures[1];
1961 9 : tree _r;
1962 9 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
1963 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 544, __FILE__, __LINE__, true);
1964 9 : return _r;
1965 : }
1966 : next_after_fail657:;
1967 : }
1968 : else
1969 : {
1970 8 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail658;
1971 8 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail658;
1972 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail658;
1973 8 : {
1974 8 : tree res_op0;
1975 8 : {
1976 8 : tree _o1[2], _r1;
1977 8 : {
1978 8 : tree _o2[1], _r2;
1979 8 : {
1980 8 : tree _o3[2], _r3;
1981 8 : _o3[0] = captures[0];
1982 8 : _o3[1] = shifter;
1983 8 : _r3 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
1984 8 : _o2[0] = _r3;
1985 : }
1986 8 : if (TREE_TYPE (_o2[0]) != type)
1987 : {
1988 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
1989 : }
1990 : else
1991 : _r2 = _o2[0];
1992 8 : _o1[0] = _r2;
1993 : }
1994 8 : _o1[1] = captures[1];
1995 8 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1996 8 : res_op0 = _r1;
1997 : }
1998 8 : tree _r;
1999 8 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
2000 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 545, __FILE__, __LINE__, true);
2001 8 : return _r;
2002 : }
2003 : next_after_fail658:;
2004 : }
2005 : }
2006 : }
2007 : return NULL_TREE;
2008 : }
2009 :
2010 : tree
2011 1244219 : generic_simplify_396 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2012 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2013 : const enum tree_code ARG_UNUSED (cmp))
2014 : {
2015 1244219 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2016 2488438 : if ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2017 548 : || POINTER_TYPE_P (TREE_TYPE (captures[2]))
2018 173 : || VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[2])))
2019 2488438 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
2020 : )
2021 : {
2022 1062670 : {
2023 1062670 : tree cst = uniform_integer_cst_p (captures[2]);
2024 1062670 : tree arg1_type = TREE_TYPE (cst);
2025 1062670 : unsigned int prec = TYPE_PRECISION (arg1_type);
2026 1062670 : wide_int max = wi::max_value (arg1_type);
2027 1062670 : wide_int signed_max = wi::max_value (prec, SIGNED);
2028 1062670 : wide_int min = wi::min_value (arg1_type);
2029 1062670 : if (wi::to_wide (cst) == max
2030 : )
2031 : {
2032 713 : if (cmp == GT_EXPR
2033 : )
2034 : {
2035 481 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail682;
2036 481 : {
2037 481 : tree _r;
2038 481 : _r = constant_boolean_node (false, type);
2039 481 : if (TREE_SIDE_EFFECTS (captures[1]))
2040 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2041 481 : if (TREE_SIDE_EFFECTS (captures[2]))
2042 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2043 481 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 569, __FILE__, __LINE__, true);
2044 481 : return _r;
2045 : }
2046 0 : next_after_fail682:;
2047 : }
2048 : else
2049 : {
2050 232 : if (cmp == GE_EXPR
2051 : )
2052 : {
2053 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail683;
2054 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail683;
2055 0 : {
2056 0 : tree res_op0;
2057 0 : res_op0 = captures[0];
2058 0 : tree res_op1;
2059 0 : res_op1 = captures[2];
2060 0 : tree _r;
2061 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2062 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 570, __FILE__, __LINE__, true);
2063 0 : return _r;
2064 : }
2065 998693 : next_after_fail683:;
2066 : }
2067 : else
2068 : {
2069 232 : if (cmp == LE_EXPR
2070 : )
2071 : {
2072 232 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail684;
2073 232 : {
2074 232 : tree _r;
2075 232 : _r = constant_boolean_node (true, type);
2076 232 : if (TREE_SIDE_EFFECTS (captures[1]))
2077 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2078 232 : if (TREE_SIDE_EFFECTS (captures[2]))
2079 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2080 232 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 571, __FILE__, __LINE__, true);
2081 232 : return _r;
2082 : }
2083 0 : next_after_fail684:;
2084 : }
2085 : else
2086 : {
2087 0 : if (cmp == LT_EXPR
2088 : )
2089 : {
2090 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail685;
2091 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail685;
2092 0 : {
2093 0 : tree res_op0;
2094 0 : res_op0 = captures[0];
2095 0 : tree res_op1;
2096 0 : res_op1 = captures[2];
2097 0 : tree _r;
2098 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
2099 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 572, __FILE__, __LINE__, true);
2100 0 : return _r;
2101 : }
2102 998693 : next_after_fail685:;
2103 : }
2104 : }
2105 : }
2106 : }
2107 : }
2108 : else
2109 : {
2110 1061957 : if (wi::to_wide (cst) == min
2111 : )
2112 : {
2113 58691 : if (cmp == LT_EXPR
2114 : )
2115 : {
2116 2560 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail686;
2117 2560 : {
2118 2560 : tree _r;
2119 2560 : _r = constant_boolean_node (false, type);
2120 2560 : if (TREE_SIDE_EFFECTS (captures[1]))
2121 6 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2122 2560 : if (TREE_SIDE_EFFECTS (captures[2]))
2123 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2124 2560 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 573, __FILE__, __LINE__, true);
2125 2560 : return _r;
2126 : }
2127 0 : next_after_fail686:;
2128 : }
2129 : else
2130 : {
2131 56131 : if (cmp == LE_EXPR
2132 : )
2133 : {
2134 15443 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail687;
2135 14325 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail687;
2136 14325 : {
2137 14325 : tree res_op0;
2138 14325 : res_op0 = captures[0];
2139 14325 : tree res_op1;
2140 14325 : res_op1 = captures[2];
2141 14325 : tree _r;
2142 14325 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2143 14325 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 574, __FILE__, __LINE__, true);
2144 14325 : return _r;
2145 : }
2146 998693 : next_after_fail687:;
2147 : }
2148 : else
2149 : {
2150 40688 : if (cmp == GE_EXPR
2151 : )
2152 : {
2153 8613 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail688;
2154 8613 : {
2155 8613 : tree _r;
2156 8613 : _r = constant_boolean_node (true, type);
2157 8613 : if (TREE_SIDE_EFFECTS (captures[1]))
2158 51 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2159 8613 : if (TREE_SIDE_EFFECTS (captures[2]))
2160 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2161 8613 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 575, __FILE__, __LINE__, true);
2162 8613 : return _r;
2163 : }
2164 0 : next_after_fail688:;
2165 : }
2166 : else
2167 : {
2168 32075 : if (cmp == GT_EXPR
2169 : )
2170 : {
2171 32075 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail689;
2172 26485 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail689;
2173 26485 : {
2174 26485 : tree res_op0;
2175 26485 : res_op0 = captures[0];
2176 26485 : tree res_op1;
2177 26485 : res_op1 = captures[2];
2178 26485 : tree _r;
2179 26485 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
2180 26485 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 576, __FILE__, __LINE__, true);
2181 26485 : return _r;
2182 : }
2183 998693 : next_after_fail689:;
2184 : }
2185 : }
2186 : }
2187 : }
2188 : }
2189 : else
2190 : {
2191 1003266 : if (wi::to_wide (cst) == max - 1
2192 : )
2193 : {
2194 6329 : if (cmp == GT_EXPR
2195 : )
2196 : {
2197 1411 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail690;
2198 1411 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail690;
2199 1411 : {
2200 1411 : tree res_op0;
2201 1411 : res_op0 = captures[0];
2202 1411 : tree res_op1;
2203 1411 : res_op1 = build_uniform_cst (TREE_TYPE (captures[2]),
2204 1411 : wide_int_to_tree (TREE_TYPE (cst),
2205 1411 : wi::to_wide (cst)
2206 2822 : + 1));
2207 1411 : tree _r;
2208 1411 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2209 1411 : if (TREE_SIDE_EFFECTS (captures[2]))
2210 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2211 1411 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 577, __FILE__, __LINE__, true);
2212 1411 : return _r;
2213 : }
2214 998693 : next_after_fail690:;
2215 : }
2216 : else
2217 : {
2218 4918 : if (cmp == LE_EXPR
2219 : )
2220 : {
2221 4918 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail691;
2222 4918 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail691;
2223 4918 : {
2224 4918 : tree res_op0;
2225 4918 : res_op0 = captures[0];
2226 4918 : tree res_op1;
2227 4918 : res_op1 = build_uniform_cst (TREE_TYPE (captures[2]),
2228 4918 : wide_int_to_tree (TREE_TYPE (cst),
2229 4918 : wi::to_wide (cst)
2230 9836 : + 1));
2231 4918 : tree _r;
2232 4918 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
2233 4918 : if (TREE_SIDE_EFFECTS (captures[2]))
2234 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2235 4918 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 578, __FILE__, __LINE__, true);
2236 4918 : return _r;
2237 : }
2238 998693 : next_after_fail691:;
2239 : }
2240 : }
2241 : }
2242 : else
2243 : {
2244 996937 : if (wi::to_wide (cst) == min + 1
2245 : )
2246 : {
2247 57350 : if (cmp == GE_EXPR
2248 : )
2249 : {
2250 1741 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail692;
2251 1741 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail692;
2252 1741 : {
2253 1741 : tree res_op0;
2254 1741 : res_op0 = captures[0];
2255 1741 : tree res_op1;
2256 1741 : res_op1 = build_uniform_cst (TREE_TYPE (captures[2]),
2257 1741 : wide_int_to_tree (TREE_TYPE (cst),
2258 1741 : wi::to_wide (cst)
2259 3482 : - 1));
2260 1741 : tree _r;
2261 1741 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
2262 1741 : if (TREE_SIDE_EFFECTS (captures[2]))
2263 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2264 1741 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 579, __FILE__, __LINE__, true);
2265 1741 : return _r;
2266 : }
2267 998693 : next_after_fail692:;
2268 : }
2269 : else
2270 : {
2271 55609 : if (cmp == LT_EXPR
2272 : )
2273 : {
2274 334 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail693;
2275 334 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail693;
2276 334 : {
2277 334 : tree res_op0;
2278 334 : res_op0 = captures[0];
2279 334 : tree res_op1;
2280 334 : res_op1 = build_uniform_cst (TREE_TYPE (captures[2]),
2281 334 : wide_int_to_tree (TREE_TYPE (cst),
2282 334 : wi::to_wide (cst)
2283 668 : - 1));
2284 334 : tree _r;
2285 334 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2286 334 : if (TREE_SIDE_EFFECTS (captures[2]))
2287 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2288 334 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 580, __FILE__, __LINE__, true);
2289 334 : return _r;
2290 : }
2291 998693 : next_after_fail693:;
2292 : }
2293 : }
2294 : }
2295 : else
2296 : {
2297 939587 : if (wi::to_wide (cst) == signed_max
2298 2877 : && TYPE_UNSIGNED (arg1_type)
2299 2877 : && TYPE_MODE (arg1_type) != BLKmode
2300 939587 : && prec == GET_MODE_PRECISION (SCALAR_INT_TYPE_MODE (arg1_type))
2301 942464 : && INTEGRAL_TYPE_P (arg1_type)
2302 : )
2303 : {
2304 2877 : if (cmp == LE_EXPR || cmp == GT_EXPR
2305 : )
2306 : {
2307 2877 : {
2308 2877 : tree st = signed_type_for (TREE_TYPE (captures[2]));
2309 2877 : if (cst == captures[2] && cmp == LE_EXPR
2310 : )
2311 : {
2312 2841 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail694;
2313 2841 : {
2314 2841 : tree res_op0;
2315 2841 : {
2316 2841 : tree _o1[1], _r1;
2317 2841 : _o1[0] = captures[1];
2318 2841 : if (TREE_TYPE (_o1[0]) != st)
2319 : {
2320 2837 : _r1 = fold_build1_loc (loc, NOP_EXPR, st, _o1[0]);
2321 : }
2322 : else
2323 : _r1 = _o1[0];
2324 2841 : res_op0 = _r1;
2325 : }
2326 2841 : tree res_op1;
2327 2841 : res_op1 = build_zero_cst (st);
2328 2841 : tree _r;
2329 2841 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
2330 2841 : if (TREE_SIDE_EFFECTS (captures[2]))
2331 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2332 2841 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 581, __FILE__, __LINE__, true);
2333 2841 : return _r;
2334 : }
2335 0 : next_after_fail694:;
2336 0 : }
2337 : else
2338 : {
2339 36 : if (cst == captures[2] && cmp == GT_EXPR
2340 : )
2341 : {
2342 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail695;
2343 36 : {
2344 36 : tree res_op0;
2345 36 : {
2346 36 : tree _o1[1], _r1;
2347 36 : _o1[0] = captures[1];
2348 36 : if (TREE_TYPE (_o1[0]) != st)
2349 : {
2350 36 : _r1 = fold_build1_loc (loc, NOP_EXPR, st, _o1[0]);
2351 : }
2352 : else
2353 : _r1 = _o1[0];
2354 36 : res_op0 = _r1;
2355 : }
2356 36 : tree res_op1;
2357 36 : res_op1 = build_zero_cst (st);
2358 36 : tree _r;
2359 36 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2360 36 : if (TREE_SIDE_EFFECTS (captures[2]))
2361 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2362 36 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 582, __FILE__, __LINE__, true);
2363 36 : return _r;
2364 : }
2365 0 : next_after_fail695:;
2366 0 : }
2367 : else
2368 : {
2369 0 : if (cmp == LE_EXPR
2370 : )
2371 : {
2372 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail696;
2373 0 : {
2374 0 : tree res_op0;
2375 0 : {
2376 0 : tree _o1[1], _r1;
2377 0 : _o1[0] = captures[1];
2378 0 : if (TREE_TYPE (_o1[0]) != st)
2379 : {
2380 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, st, _o1[0]);
2381 : }
2382 : else
2383 : _r1 = _o1[0];
2384 0 : res_op0 = _r1;
2385 : }
2386 0 : tree res_op1;
2387 0 : res_op1 = build_zero_cst (st);
2388 0 : tree _r;
2389 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
2390 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2391 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2392 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 583, __FILE__, __LINE__, true);
2393 0 : return _r;
2394 : }
2395 0 : next_after_fail696:;
2396 : }
2397 : else
2398 : {
2399 0 : if (cmp == GT_EXPR
2400 : )
2401 : {
2402 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail697;
2403 0 : {
2404 0 : tree res_op0;
2405 0 : {
2406 0 : tree _o1[1], _r1;
2407 0 : _o1[0] = captures[1];
2408 0 : if (TREE_TYPE (_o1[0]) != st)
2409 : {
2410 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, st, _o1[0]);
2411 : }
2412 : else
2413 : _r1 = _o1[0];
2414 0 : res_op0 = _r1;
2415 : }
2416 0 : tree res_op1;
2417 0 : res_op1 = build_zero_cst (st);
2418 0 : tree _r;
2419 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2420 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2421 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2422 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 584, __FILE__, __LINE__, true);
2423 0 : return _r;
2424 : }
2425 0 : next_after_fail697:;
2426 : }
2427 : }
2428 : }
2429 : }
2430 : }
2431 : }
2432 : }
2433 : }
2434 : }
2435 : }
2436 : }
2437 1062670 : }
2438 : }
2439 : return NULL_TREE;
2440 : }
2441 :
2442 : tree
2443 1 : generic_simplify_458 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2444 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2445 : {
2446 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2447 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail806;
2448 1 : {
2449 1 : tree res_op0;
2450 1 : res_op0 = captures[0];
2451 1 : tree res_op1;
2452 1 : res_op1 = captures[1];
2453 1 : tree _r;
2454 1 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2455 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 658, __FILE__, __LINE__, true);
2456 : return _r;
2457 : }
2458 0 : next_after_fail806:;
2459 0 : return NULL_TREE;
2460 : }
2461 :
2462 : tree
2463 934053 : generic_simplify_464 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2464 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2465 : const enum tree_code ARG_UNUSED (op))
2466 : {
2467 934053 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2468 934053 : {
2469 934053 : tree pmop[2];
2470 934053 : tree utype = fold_bit_and_mask (TREE_TYPE (captures[1]), captures[3], op, captures[1], ERROR_MARK,
2471 : NULL_TREE, NULL_TREE, captures[2], ERROR_MARK,
2472 : NULL_TREE, NULL_TREE, pmop);
2473 934053 : if (utype
2474 : )
2475 : {
2476 331216 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail812;
2477 331216 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail812;
2478 331216 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail812;
2479 331216 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail812;
2480 331216 : {
2481 331216 : tree res_op0;
2482 331216 : {
2483 331216 : tree _o1[2], _r1;
2484 331216 : {
2485 331216 : tree _o2[2], _r2;
2486 331216 : {
2487 331216 : tree _o3[1], _r3;
2488 331216 : _o3[0] = pmop[0];
2489 331216 : if (TREE_TYPE (_o3[0]) != utype)
2490 : {
2491 238 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2492 : }
2493 : else
2494 : _r3 = _o3[0];
2495 331216 : _o2[0] = _r3;
2496 : }
2497 331216 : {
2498 331216 : tree _o3[1], _r3;
2499 331216 : _o3[0] = pmop[1];
2500 331216 : if (TREE_TYPE (_o3[0]) != utype)
2501 : {
2502 238 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2503 : }
2504 : else
2505 : _r3 = _o3[0];
2506 331216 : _o2[1] = _r3;
2507 : }
2508 331216 : _r2 = fold_build2_loc (loc, op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
2509 331216 : _o1[0] = _r2;
2510 : }
2511 331216 : {
2512 331216 : tree _o2[1], _r2;
2513 331216 : _o2[0] = captures[3];
2514 331216 : if (TREE_TYPE (_o2[0]) != utype)
2515 : {
2516 238 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2517 : }
2518 : else
2519 : _r2 = _o2[0];
2520 331216 : _o1[1] = _r2;
2521 : }
2522 331216 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2523 331216 : res_op0 = _r1;
2524 : }
2525 331216 : tree _r;
2526 331216 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2527 331216 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 663, __FILE__, __LINE__, true);
2528 331216 : return _r;
2529 : }
2530 602837 : next_after_fail812:;
2531 : }
2532 : }
2533 602837 : return NULL_TREE;
2534 : }
2535 :
2536 : tree
2537 0 : generic_simplify_477 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2538 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2539 : const enum tree_code ARG_UNUSED (code2),
2540 : const enum tree_code ARG_UNUSED (code1))
2541 : {
2542 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2543 0 : if ((TREE_CODE (captures[2]) == INTEGER_CST
2544 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
2545 0 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2546 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2]))
2547 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, code2))
2548 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
2549 0 : && bitwise_equal_p (captures[2], captures[5]))
2550 : )
2551 : {
2552 0 : {
2553 0 : bool one_before = false;
2554 0 : bool one_after = false;
2555 0 : int cmp = 0;
2556 0 : bool allbits = true;
2557 0 : if (TREE_CODE (captures[2]) == INTEGER_CST
2558 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
2559 : {
2560 0 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
2561 0 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
2562 0 : auto t2 = wi::to_wide (captures[5]);
2563 0 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
2564 0 : if (cmp < 0
2565 0 : && t1 == t2 - 1)
2566 : one_before = true;
2567 0 : if (cmp > 0
2568 0 : && t1 == t2 + 1)
2569 : one_after = true;
2570 : }
2571 0 : bool val;
2572 0 : switch (code2)
2573 : {
2574 0 : case EQ_EXPR: val = (cmp == 0); break;
2575 0 : case NE_EXPR: val = (cmp != 0); break;
2576 0 : case LT_EXPR: val = (cmp < 0); break;
2577 0 : case GT_EXPR: val = (cmp > 0); break;
2578 0 : case LE_EXPR: val = (cmp <= 0); break;
2579 0 : case GE_EXPR: val = (cmp >= 0); break;
2580 0 : default: gcc_unreachable ();
2581 : }
2582 0 : if (code1 == EQ_EXPR && val
2583 : )
2584 : {
2585 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail827;
2586 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail827;
2587 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail827;
2588 0 : {
2589 0 : tree _r;
2590 0 : _r = captures[0];
2591 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 677, __FILE__, __LINE__, true);
2592 0 : return _r;
2593 : }
2594 : next_after_fail827:;
2595 : }
2596 : else
2597 : {
2598 0 : if (code1 == EQ_EXPR && !val
2599 : )
2600 : {
2601 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail828;
2602 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail828;
2603 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail828;
2604 0 : {
2605 0 : tree _r;
2606 0 : _r = constant_boolean_node (false, type);
2607 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2608 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2609 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 678, __FILE__, __LINE__, true);
2610 0 : return _r;
2611 : }
2612 : next_after_fail828:;
2613 : }
2614 : else
2615 : {
2616 0 : if (code1 == NE_EXPR && !val && allbits
2617 : )
2618 : {
2619 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail829;
2620 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail829;
2621 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail829;
2622 0 : {
2623 0 : tree _r;
2624 0 : _r = captures[3];
2625 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 679, __FILE__, __LINE__, true);
2626 0 : return _r;
2627 : }
2628 : next_after_fail829:;
2629 : }
2630 : else
2631 : {
2632 0 : if ((code1 == NE_EXPR
2633 0 : && code2 == GE_EXPR
2634 0 : && cmp == 0
2635 0 : && allbits)
2636 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2637 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2638 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2639 : )
2640 : {
2641 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail830;
2642 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail830;
2643 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail830;
2644 0 : {
2645 0 : tree res_op0;
2646 0 : res_op0 = captures[4];
2647 0 : tree res_op1;
2648 0 : {
2649 0 : tree _o1[1], _r1;
2650 0 : _o1[0] = captures[2];
2651 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2652 : {
2653 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2654 : }
2655 : else
2656 : _r1 = _o1[0];
2657 0 : res_op1 = _r1;
2658 : }
2659 0 : tree _r;
2660 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2661 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 680, __FILE__, __LINE__, true);
2662 0 : return _r;
2663 : }
2664 : next_after_fail830:;
2665 : }
2666 : else
2667 : {
2668 0 : if ((code1 == NE_EXPR
2669 0 : && code2 == LE_EXPR
2670 0 : && cmp == 0
2671 0 : && allbits)
2672 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2673 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2674 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2675 : )
2676 : {
2677 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail831;
2678 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail831;
2679 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail831;
2680 0 : {
2681 0 : tree res_op0;
2682 0 : res_op0 = captures[4];
2683 0 : tree res_op1;
2684 0 : {
2685 0 : tree _o1[1], _r1;
2686 0 : _o1[0] = captures[2];
2687 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2688 : {
2689 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2690 : }
2691 : else
2692 : _r1 = _o1[0];
2693 0 : res_op1 = _r1;
2694 : }
2695 0 : tree _r;
2696 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2697 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 681, __FILE__, __LINE__, true);
2698 0 : return _r;
2699 : }
2700 : next_after_fail831:;
2701 : }
2702 : else
2703 : {
2704 0 : if ((code1 == NE_EXPR
2705 0 : && code2 == GT_EXPR
2706 : && one_after
2707 0 : && allbits)
2708 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2709 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2710 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2711 : )
2712 : {
2713 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail832;
2714 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail832;
2715 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail832;
2716 0 : {
2717 0 : tree res_op0;
2718 0 : res_op0 = captures[4];
2719 0 : tree res_op1;
2720 0 : {
2721 0 : tree _o1[1], _r1;
2722 0 : _o1[0] = captures[2];
2723 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2724 : {
2725 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2726 : }
2727 : else
2728 : _r1 = _o1[0];
2729 0 : res_op1 = _r1;
2730 : }
2731 0 : tree _r;
2732 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2733 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 682, __FILE__, __LINE__, true);
2734 0 : return _r;
2735 : }
2736 : next_after_fail832:;
2737 : }
2738 : else
2739 : {
2740 0 : if ((code1 == NE_EXPR
2741 0 : && code2 == LT_EXPR
2742 : && one_before
2743 0 : && allbits)
2744 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2745 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2746 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2747 : )
2748 : {
2749 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail833;
2750 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail833;
2751 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail833;
2752 0 : {
2753 0 : tree res_op0;
2754 0 : res_op0 = captures[4];
2755 0 : tree res_op1;
2756 0 : {
2757 0 : tree _o1[1], _r1;
2758 0 : _o1[0] = captures[2];
2759 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2760 : {
2761 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2762 : }
2763 : else
2764 : _r1 = _o1[0];
2765 0 : res_op1 = _r1;
2766 : }
2767 0 : tree _r;
2768 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2769 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 683, __FILE__, __LINE__, true);
2770 0 : return _r;
2771 : }
2772 : next_after_fail833:;
2773 : }
2774 : }
2775 : }
2776 : }
2777 : }
2778 : }
2779 : }
2780 : }
2781 : }
2782 : return NULL_TREE;
2783 : }
2784 :
2785 : tree
2786 145 : generic_simplify_508 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2787 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2788 : {
2789 145 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2790 145 : if (element_precision (type) <= element_precision (TREE_TYPE (captures[0]))
2791 145 : || !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
2792 : )
2793 : {
2794 145 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail900;
2795 145 : {
2796 145 : tree res_op0;
2797 145 : {
2798 145 : tree _o1[2], _r1;
2799 145 : _o1[0] = captures[0];
2800 145 : _o1[1] = build_each_one_cst (TREE_TYPE (captures[0]));
2801 145 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2802 145 : res_op0 = _r1;
2803 : }
2804 145 : tree _r;
2805 145 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2806 145 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 712, __FILE__, __LINE__, true);
2807 145 : return _r;
2808 : }
2809 0 : next_after_fail900:;
2810 : }
2811 : return NULL_TREE;
2812 : }
2813 :
2814 : tree
2815 253 : generic_simplify_515 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2816 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2817 : const enum tree_code ARG_UNUSED (cmp),
2818 : const enum tree_code ARG_UNUSED (icmp),
2819 : const enum tree_code ARG_UNUSED (ncmp))
2820 : {
2821 253 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2822 253 : if (VECTOR_TYPE_P (type)
2823 253 : || (INTEGRAL_TYPE_P (type) && TYPE_PRECISION (type) == 1)
2824 : )
2825 : {
2826 51 : {
2827 51 : enum tree_code ic = invert_tree_comparison
2828 51 : (cmp, HONOR_NANS (captures[0]));
2829 51 : if (ic == icmp
2830 : )
2831 : {
2832 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail907;
2833 12 : {
2834 12 : tree res_op0;
2835 12 : res_op0 = captures[0];
2836 12 : tree res_op1;
2837 12 : res_op1 = captures[1];
2838 12 : tree _r;
2839 12 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
2840 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 717, __FILE__, __LINE__, true);
2841 12 : return _r;
2842 : }
2843 0 : next_after_fail907:;
2844 : }
2845 : else
2846 : {
2847 39 : if (ic == ncmp
2848 : )
2849 : {
2850 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail908;
2851 0 : {
2852 0 : tree res_op0;
2853 0 : res_op0 = captures[0];
2854 0 : tree res_op1;
2855 0 : res_op1 = captures[1];
2856 0 : tree _r;
2857 0 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
2858 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 718, __FILE__, __LINE__, true);
2859 0 : return _r;
2860 : }
2861 0 : next_after_fail908:;
2862 : }
2863 : }
2864 : }
2865 : }
2866 : return NULL_TREE;
2867 : }
2868 :
2869 : tree
2870 2 : generic_simplify_528 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2871 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2872 : {
2873 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2874 2 : if (TREE_CODE (type) != COMPLEX_TYPE
2875 2 : && (! ANY_INTEGRAL_TYPE_P (type)
2876 1 : || TYPE_OVERFLOW_UNDEFINED (type))
2877 : )
2878 : {
2879 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail922;
2880 2 : {
2881 2 : tree res_op0;
2882 2 : {
2883 2 : tree _o1[1], _r1;
2884 2 : _o1[0] = captures[0];
2885 2 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2886 2 : res_op0 = _r1;
2887 : }
2888 2 : tree _r;
2889 2 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
2890 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 731, __FILE__, __LINE__, true);
2891 2 : return _r;
2892 : }
2893 0 : next_after_fail922:;
2894 : }
2895 : return NULL_TREE;
2896 : }
2897 :
2898 : tree
2899 0 : generic_simplify_537 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2900 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2901 : const enum tree_code ARG_UNUSED (minmax),
2902 : const enum tree_code ARG_UNUSED (maxmin))
2903 : {
2904 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2905 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail945;
2906 0 : {
2907 0 : tree res_op0;
2908 0 : {
2909 0 : tree _o1[2], _r1;
2910 0 : _o1[0] = captures[1];
2911 0 : _o1[1] = captures[3];
2912 0 : _r1 = fold_build2_loc (loc, maxmin, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2913 0 : res_op0 = _r1;
2914 : }
2915 0 : tree _r;
2916 0 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
2917 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 742, __FILE__, __LINE__, true);
2918 : return _r;
2919 : }
2920 0 : next_after_fail945:;
2921 0 : return NULL_TREE;
2922 : }
2923 :
2924 : tree
2925 0 : generic_simplify_542 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2926 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2927 : const combined_fn ARG_UNUSED (minmax))
2928 : {
2929 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2930 0 : if (real_isnan (TREE_REAL_CST_PTR (captures[1]))
2931 0 : && (!HONOR_SNANS (captures[1]) || !TREE_REAL_CST (captures[1]).signalling)
2932 0 : && !tree_expr_maybe_signaling_nan_p (captures[0])
2933 : )
2934 : {
2935 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail950;
2936 0 : {
2937 0 : tree _r;
2938 0 : _r = captures[0];
2939 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2940 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2941 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 747, __FILE__, __LINE__, true);
2942 0 : return _r;
2943 : }
2944 0 : next_after_fail950:;
2945 : }
2946 : return NULL_TREE;
2947 : }
2948 :
2949 : tree
2950 0 : generic_simplify_551 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2951 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2952 : const combined_fn ARG_UNUSED (cond_op))
2953 : {
2954 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2955 0 : {
2956 0 : tree op_type = TREE_TYPE (captures[5]);
2957 0 : if (inverse_conditions_p (captures[0], captures[2])
2958 0 : && element_precision (type) == element_precision (op_type)
2959 : )
2960 : {
2961 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail959;
2962 0 : {
2963 0 : tree res_op0;
2964 0 : {
2965 0 : tree _o1[4], _r1;
2966 0 : _o1[0] = captures[2];
2967 0 : _o1[1] = captures[3];
2968 0 : _o1[2] = captures[4];
2969 0 : {
2970 0 : tree _o2[1], _r2;
2971 0 : _o2[0] = captures[1];
2972 0 : if (TREE_TYPE (_o2[0]) != op_type)
2973 : {
2974 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, op_type, _o2[0]);
2975 : }
2976 : else
2977 : _r2 = _o2[0];
2978 0 : _o1[3] = _r2;
2979 : }
2980 0 : _r1 = maybe_build_call_expr_loc (loc, cond_op, TREE_TYPE (_o1[1]), 4, _o1[0], _o1[1], _o1[2], _o1[3]);
2981 0 : if (!_r1)
2982 0 : goto next_after_fail959;
2983 0 : res_op0 = _r1;
2984 : }
2985 0 : tree _r;
2986 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
2987 0 : if (TREE_SIDE_EFFECTS (captures[0]))
2988 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2989 0 : if (TREE_SIDE_EFFECTS (captures[5]))
2990 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[5]), _r);
2991 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 751, __FILE__, __LINE__, true);
2992 0 : return _r;
2993 : }
2994 : next_after_fail959:;
2995 : }
2996 : }
2997 : return NULL_TREE;
2998 : }
2999 :
3000 : tree
3001 5786 : generic_simplify_562 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3002 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
3003 : {
3004 5786 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3005 11572 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3006 5786 : && TYPE_MAX_VALUE (TREE_TYPE (captures[1]))
3007 5786 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (TREE_TYPE (captures[0])))
3008 8082 : && int_fits_type_p (captures[2], TREE_TYPE (captures[1]))
3009 : )
3010 : {
3011 1904 : if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
3012 : )
3013 : {
3014 929 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail971;
3015 929 : {
3016 929 : tree res_op0;
3017 929 : {
3018 929 : tree _o1[2], _r1;
3019 929 : _o1[0] = captures[1];
3020 929 : {
3021 929 : tree _o2[2], _r2;
3022 929 : _o2[0] = TYPE_MAX_VALUE (TREE_TYPE (captures[1]));
3023 929 : _o2[1] = captures[2];
3024 929 : _r2 = fold_build2_loc (loc, TRUNC_DIV_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
3025 929 : if (EXPR_P (_r2))
3026 0 : goto next_after_fail971;
3027 929 : _o1[1] = _r2;
3028 : }
3029 929 : _r1 = fold_build2_loc (loc, GT_EXPR, boolean_type_node, _o1[0], _o1[1]);
3030 929 : res_op0 = _r1;
3031 : }
3032 929 : tree _r;
3033 929 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3034 929 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 763, __FILE__, __LINE__, true);
3035 929 : return _r;
3036 : }
3037 : next_after_fail971:;
3038 : }
3039 : else
3040 : {
3041 975 : if (TYPE_MIN_VALUE (TREE_TYPE (captures[1]))
3042 : )
3043 : {
3044 975 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[2])) && integer_minus_onep (captures[2])
3045 : )
3046 : {
3047 56 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail972;
3048 56 : {
3049 56 : tree res_op0;
3050 56 : {
3051 56 : tree _o1[2], _r1;
3052 56 : _o1[0] = captures[1];
3053 56 : _o1[1] = TYPE_MIN_VALUE (TREE_TYPE (captures[1]));
3054 56 : _r1 = fold_build2_loc (loc, EQ_EXPR, boolean_type_node, _o1[0], _o1[1]);
3055 56 : res_op0 = _r1;
3056 : }
3057 56 : tree _r;
3058 56 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3059 56 : if (TREE_SIDE_EFFECTS (captures[2]))
3060 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
3061 56 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 764, __FILE__, __LINE__, true);
3062 56 : return _r;
3063 : }
3064 0 : next_after_fail972:;
3065 : }
3066 : else
3067 : {
3068 919 : {
3069 919 : tree div = fold_convert (TREE_TYPE (captures[1]), captures[2]);
3070 1838 : tree lo = int_const_binop (TRUNC_DIV_EXPR,
3071 919 : TYPE_MIN_VALUE (TREE_TYPE (captures[1])), div);
3072 1838 : tree hi = int_const_binop (TRUNC_DIV_EXPR,
3073 919 : TYPE_MAX_VALUE (TREE_TYPE (captures[1])), div);
3074 919 : tree etype = range_check_type (TREE_TYPE (captures[1]));
3075 919 : if (etype)
3076 : {
3077 919 : if (wi::neg_p (wi::to_wide (div)))
3078 88 : std::swap (lo, hi);
3079 919 : lo = fold_convert (etype, lo);
3080 919 : hi = fold_convert (etype, hi);
3081 919 : hi = int_const_binop (MINUS_EXPR, hi, lo);
3082 : }
3083 919 : if (etype
3084 : )
3085 : {
3086 919 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail973;
3087 919 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail973;
3088 919 : {
3089 919 : tree res_op0;
3090 919 : {
3091 919 : tree _o1[2], _r1;
3092 919 : {
3093 919 : tree _o2[2], _r2;
3094 919 : {
3095 919 : tree _o3[1], _r3;
3096 919 : _o3[0] = captures[1];
3097 919 : if (TREE_TYPE (_o3[0]) != etype)
3098 : {
3099 919 : _r3 = fold_build1_loc (loc, NOP_EXPR, etype, _o3[0]);
3100 : }
3101 : else
3102 : _r3 = _o3[0];
3103 919 : _o2[0] = _r3;
3104 : }
3105 919 : _o2[1] = lo;
3106 919 : _r2 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
3107 919 : _o1[0] = _r2;
3108 : }
3109 919 : _o1[1] = hi;
3110 919 : _r1 = fold_build2_loc (loc, GT_EXPR, boolean_type_node, _o1[0], _o1[1]);
3111 919 : res_op0 = _r1;
3112 : }
3113 919 : tree _r;
3114 919 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3115 919 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 765, __FILE__, __LINE__, true);
3116 919 : return _r;
3117 : }
3118 : next_after_fail973:;
3119 : }
3120 : }
3121 : }
3122 : }
3123 : }
3124 : }
3125 : return NULL_TREE;
3126 : }
3127 :
3128 : tree
3129 0 : generic_simplify_602 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3130 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
3131 : {
3132 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3133 0 : if (canonicalize_math_after_vectorization_p ()
3134 : )
3135 : {
3136 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1013;
3137 : {
3138 : tree res_op0;
3139 : res_op0 = captures[0];
3140 : tree res_op1;
3141 : res_op1 = captures[1];
3142 : tree res_op2;
3143 : res_op2 = captures[2];
3144 : tree _r;
3145 : _r = maybe_build_call_expr_loc (loc, CFN_FMS, type, 3, res_op0, res_op1, res_op2);
3146 : if (!_r)
3147 : goto next_after_fail1013;
3148 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 805, __FILE__, __LINE__, true);
3149 : return _r;
3150 : }
3151 0 : next_after_fail1013:;
3152 : }
3153 0 : return NULL_TREE;
3154 : }
3155 :
3156 : tree
3157 0 : generic_simplify_611 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3158 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree ARG_UNUSED (_p3), tree ARG_UNUSED (_p4), tree *ARG_UNUSED (captures))
3159 : {
3160 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3161 0 : if (canonicalize_math_after_vectorization_p ()
3162 : )
3163 : {
3164 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1022;
3165 : {
3166 : tree res_op0;
3167 : res_op0 = captures[0];
3168 : tree res_op1;
3169 : res_op1 = captures[1];
3170 : tree res_op2;
3171 : res_op2 = captures[2];
3172 : tree res_op3;
3173 : res_op3 = captures[3];
3174 : tree res_op4;
3175 : res_op4 = captures[4];
3176 : tree _r;
3177 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FMA, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3178 : if (!_r)
3179 : goto next_after_fail1022;
3180 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 814, __FILE__, __LINE__, true);
3181 : return _r;
3182 : }
3183 0 : next_after_fail1022:;
3184 : }
3185 0 : return NULL_TREE;
3186 : }
3187 :
3188 : tree
3189 0 : generic_simplify_622 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3190 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3191 : const combined_fn ARG_UNUSED (PARITY))
3192 : {
3193 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3194 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1034;
3195 0 : {
3196 0 : tree res_op0;
3197 0 : res_op0 = captures[0];
3198 0 : tree _r;
3199 0 : _r = maybe_build_call_expr_loc (loc, PARITY, type, 1, res_op0);
3200 0 : if (!_r)
3201 0 : goto next_after_fail1034;
3202 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 821, __FILE__, __LINE__, true);
3203 : return _r;
3204 : }
3205 : next_after_fail1034:;
3206 : return NULL_TREE;
3207 : }
3208 :
3209 : tree
3210 0 : generic_simplify_626 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3211 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3212 : const enum tree_code ARG_UNUSED (rot),
3213 : const combined_fn ARG_UNUSED (parity))
3214 : {
3215 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3216 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3217 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3218 0 : && (
3219 :
3220 0 : || !TREE_SIDE_EFFECTS (captures[3]))
3221 0 : && TYPE_PRECISION (TREE_TYPE (captures[0]))
3222 0 : >= TYPE_PRECISION (TREE_TYPE (captures[1]))
3223 : )
3224 : {
3225 0 : {
3226 0 : tree type0 = TREE_TYPE (captures[0]);
3227 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1038;
3228 0 : {
3229 0 : tree res_op0;
3230 0 : {
3231 0 : tree _o1[1], _r1;
3232 0 : _o1[0] = captures[2];
3233 0 : if (TREE_TYPE (_o1[0]) != type0)
3234 : {
3235 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3236 : }
3237 : else
3238 : _r1 = _o1[0];
3239 0 : res_op0 = _r1;
3240 : }
3241 0 : tree _r;
3242 0 : _r = maybe_build_call_expr_loc (loc, parity, type, 1, res_op0);
3243 0 : if (!_r)
3244 0 : goto next_after_fail1038;
3245 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3246 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3247 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 823, __FILE__, __LINE__, true);
3248 0 : return _r;
3249 : }
3250 : next_after_fail1038:;
3251 : }
3252 : }
3253 : return NULL_TREE;
3254 : }
3255 :
3256 : tree
3257 6600030 : generic_simplify_FLOAT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3258 : {
3259 6600030 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3260 6600030 : switch (TREE_CODE (_p0))
3261 : {
3262 563885 : CASE_CONVERT:
3263 563885 : {
3264 563885 : tree _q20 = TREE_OPERAND (_p0, 0);
3265 563885 : switch (TREE_CODE (_q20))
3266 : {
3267 0 : case LT_EXPR:
3268 0 : {
3269 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3270 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3271 0 : {
3272 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3273 0 : tree res = generic_simplify_523 (loc, type, _p0, captures, LT_EXPR);
3274 0 : if (res) return res;
3275 : }
3276 0 : break;
3277 : }
3278 0 : case LE_EXPR:
3279 0 : {
3280 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3281 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3282 0 : {
3283 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3284 0 : tree res = generic_simplify_523 (loc, type, _p0, captures, LE_EXPR);
3285 0 : if (res) return res;
3286 : }
3287 0 : break;
3288 : }
3289 0 : case EQ_EXPR:
3290 0 : {
3291 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3292 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3293 0 : {
3294 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3295 0 : tree res = generic_simplify_523 (loc, type, _p0, captures, EQ_EXPR);
3296 0 : if (res) return res;
3297 : }
3298 0 : break;
3299 : }
3300 0 : case NE_EXPR:
3301 0 : {
3302 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3303 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3304 0 : {
3305 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3306 0 : tree res = generic_simplify_523 (loc, type, _p0, captures, NE_EXPR);
3307 0 : if (res) return res;
3308 : }
3309 0 : break;
3310 : }
3311 0 : case GE_EXPR:
3312 0 : {
3313 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3314 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3315 0 : {
3316 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3317 0 : tree res = generic_simplify_523 (loc, type, _p0, captures, GE_EXPR);
3318 0 : if (res) return res;
3319 : }
3320 0 : break;
3321 : }
3322 0 : case GT_EXPR:
3323 0 : {
3324 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3325 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3326 0 : {
3327 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3328 0 : tree res = generic_simplify_523 (loc, type, _p0, captures, GT_EXPR);
3329 0 : if (res) return res;
3330 : }
3331 0 : break;
3332 : }
3333 0 : case UNORDERED_EXPR:
3334 0 : {
3335 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3336 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3337 0 : {
3338 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3339 0 : tree res = generic_simplify_523 (loc, type, _p0, captures, UNORDERED_EXPR);
3340 0 : if (res) return res;
3341 : }
3342 0 : break;
3343 : }
3344 0 : case ORDERED_EXPR:
3345 0 : {
3346 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3347 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3348 0 : {
3349 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3350 0 : tree res = generic_simplify_523 (loc, type, _p0, captures, ORDERED_EXPR);
3351 0 : if (res) return res;
3352 : }
3353 0 : break;
3354 : }
3355 0 : case UNLT_EXPR:
3356 0 : {
3357 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3358 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3359 0 : {
3360 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3361 0 : tree res = generic_simplify_523 (loc, type, _p0, captures, UNLT_EXPR);
3362 0 : if (res) return res;
3363 : }
3364 0 : break;
3365 : }
3366 0 : case UNLE_EXPR:
3367 0 : {
3368 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3369 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3370 0 : {
3371 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3372 0 : tree res = generic_simplify_523 (loc, type, _p0, captures, UNLE_EXPR);
3373 0 : if (res) return res;
3374 : }
3375 0 : break;
3376 : }
3377 0 : case UNGT_EXPR:
3378 0 : {
3379 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3380 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3381 0 : {
3382 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3383 0 : tree res = generic_simplify_523 (loc, type, _p0, captures, UNGT_EXPR);
3384 0 : if (res) return res;
3385 : }
3386 0 : break;
3387 : }
3388 0 : case UNGE_EXPR:
3389 0 : {
3390 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3391 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3392 0 : {
3393 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3394 0 : tree res = generic_simplify_523 (loc, type, _p0, captures, UNGE_EXPR);
3395 0 : if (res) return res;
3396 : }
3397 0 : break;
3398 : }
3399 0 : case UNEQ_EXPR:
3400 0 : {
3401 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3402 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3403 0 : {
3404 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3405 0 : tree res = generic_simplify_523 (loc, type, _p0, captures, UNEQ_EXPR);
3406 0 : if (res) return res;
3407 : }
3408 0 : break;
3409 : }
3410 0 : case LTGT_EXPR:
3411 0 : {
3412 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3413 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3414 0 : {
3415 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3416 0 : tree res = generic_simplify_523 (loc, type, _p0, captures, LTGT_EXPR);
3417 0 : if (res) return res;
3418 : }
3419 0 : break;
3420 : }
3421 : default:;
3422 : }
3423 : break;
3424 : }
3425 6600030 : default:;
3426 : }
3427 6600030 : {
3428 6600030 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3429 13200060 : if ((
3430 :
3431 : && useless_type_conversion_p (type, TREE_TYPE (captures[0])))
3432 : || (
3433 : 1
3434 6600030 : && type == TREE_TYPE (captures[0]))
3435 : )
3436 : {
3437 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1099;
3438 0 : {
3439 0 : tree _r;
3440 0 : _r = captures[0];
3441 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 839, __FILE__, __LINE__, true);
3442 0 : return _r;
3443 : }
3444 0 : next_after_fail1099:;
3445 : }
3446 : }
3447 6600030 : switch (TREE_CODE (_p0))
3448 : {
3449 563885 : CASE_CONVERT:
3450 563885 : {
3451 563885 : tree _q20 = TREE_OPERAND (_p0, 0);
3452 563885 : {
3453 563885 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
3454 563885 : {
3455 563885 : tree inside_type = TREE_TYPE (captures[1]);
3456 563885 : tree inter_type = TREE_TYPE (captures[0]);
3457 563885 : int inside_int = INTEGRAL_TYPE_P (inside_type);
3458 563885 : int inside_ptr = POINTER_TYPE_P (inside_type);
3459 563885 : int inside_float = FLOAT_TYPE_P (inside_type);
3460 563885 : int inside_vec = VECTOR_TYPE_P (inside_type);
3461 563885 : unsigned int inside_prec = element_precision (inside_type);
3462 563885 : int inside_unsignedp = TYPE_UNSIGNED (inside_type);
3463 563885 : int inter_int = INTEGRAL_TYPE_P (inter_type);
3464 563885 : int inter_ptr = POINTER_TYPE_P (inter_type);
3465 563885 : int inter_float = FLOAT_TYPE_P (inter_type);
3466 563885 : int inter_vec = VECTOR_TYPE_P (inter_type);
3467 563885 : unsigned int inter_prec = element_precision (inter_type);
3468 563885 : int inter_unsignedp = TYPE_UNSIGNED (inter_type);
3469 563885 : int final_int = INTEGRAL_TYPE_P (type);
3470 563885 : int final_ptr = POINTER_TYPE_P (type);
3471 563885 : int final_float = FLOAT_TYPE_P (type);
3472 563885 : int final_vec = VECTOR_TYPE_P (type);
3473 563885 : unsigned int final_prec = element_precision (type);
3474 563885 : int final_unsignedp = TYPE_UNSIGNED (type);
3475 563885 : if (((
3476 :
3477 : && useless_type_conversion_p (type, inside_type))
3478 : || (
3479 : 1
3480 563885 : && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type)))
3481 0 : && (((inter_int || inter_ptr) && final_int)
3482 0 : || (inter_float && final_float))
3483 563885 : && inter_prec >= final_prec
3484 : )
3485 : {
3486 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1100;
3487 0 : {
3488 0 : tree res_op0;
3489 0 : res_op0 = captures[1];
3490 0 : tree _r;
3491 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3492 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 840, __FILE__, __LINE__, true);
3493 0 : return _r;
3494 : }
3495 0 : next_after_fail1100:;
3496 : }
3497 : else
3498 : {
3499 563885 : if (((inter_int && inside_int) || (inter_float && inside_float))
3500 563879 : && (final_int || final_float)
3501 563879 : && inter_prec >= inside_prec
3502 562884 : && (inter_float || inter_unsignedp == inside_unsignedp)
3503 : )
3504 : {
3505 560497 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1101;
3506 560497 : {
3507 560497 : tree res_op0;
3508 560497 : res_op0 = captures[1];
3509 560497 : tree _r;
3510 560497 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3511 560497 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 841, __FILE__, __LINE__, true);
3512 560497 : return _r;
3513 : }
3514 0 : next_after_fail1101:;
3515 0 : }
3516 : else
3517 : {
3518 3388 : if (inside_int && inter_int && final_int
3519 0 : && ((inside_prec < inter_prec && inter_prec < final_prec
3520 0 : && inside_unsignedp && !inter_unsignedp)
3521 0 : || final_prec == inter_prec
3522 0 : || (inside_prec < inter_prec && inter_prec > final_prec
3523 0 : && !inside_unsignedp && inter_unsignedp))
3524 : )
3525 : {
3526 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1102;
3527 0 : {
3528 0 : tree res_op0;
3529 0 : res_op0 = captures[1];
3530 0 : tree _r;
3531 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3532 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 842, __FILE__, __LINE__, true);
3533 0 : return _r;
3534 : }
3535 0 : next_after_fail1102:;
3536 0 : }
3537 : else
3538 : {
3539 3388 : if (! inside_float && ! inter_float && ! final_float
3540 : && ! inside_vec && ! inter_vec && ! final_vec
3541 0 : && (inter_prec >= inside_prec || inter_prec >= final_prec)
3542 0 : && ! (inside_int && inter_int
3543 0 : && inter_unsignedp != inside_unsignedp
3544 0 : && inter_prec < final_prec)
3545 0 : && ((inter_unsignedp && inter_prec > inside_prec)
3546 0 : == (final_unsignedp && final_prec > inter_prec))
3547 0 : && ! (inside_ptr && inter_prec != final_prec)
3548 0 : && ! (final_ptr && inside_prec != inter_prec)
3549 : )
3550 : {
3551 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1103;
3552 0 : {
3553 0 : tree res_op0;
3554 0 : res_op0 = captures[1];
3555 0 : tree _r;
3556 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3557 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 843, __FILE__, __LINE__, true);
3558 0 : return _r;
3559 : }
3560 0 : next_after_fail1103:;
3561 0 : }
3562 : else
3563 : {
3564 3388 : if (inside_int && inter_int && final_int
3565 3382 : && final_prec <= inside_prec
3566 0 : && inter_prec >= inside_prec
3567 : )
3568 : {
3569 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1104;
3570 0 : {
3571 0 : tree res_op0;
3572 0 : res_op0 = captures[1];
3573 0 : tree _r;
3574 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3575 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 844, __FILE__, __LINE__, true);
3576 0 : return _r;
3577 : }
3578 0 : next_after_fail1104:;
3579 0 : }
3580 : else
3581 : {
3582 : if (0
3583 : && final_int && inter_int && inside_int
3584 : && final_prec >= inside_prec
3585 : && inside_prec > inter_prec
3586 : && inter_unsignedp
3587 : )
3588 : {
3589 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1105;
3590 : {
3591 : tree res_op0;
3592 : {
3593 : tree _o1[2], _r1;
3594 : _o1[0] = captures[1];
3595 : _o1[1] = wide_int_to_tree
3596 : (inside_type,
3597 : wi::mask (inter_prec, false,
3598 : TYPE_PRECISION (inside_type)));
3599 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3600 : res_op0 = _r1;
3601 : }
3602 : tree _r;
3603 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3604 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 845, __FILE__, __LINE__, true);
3605 : return _r;
3606 : }
3607 : next_after_fail1105:;
3608 : }
3609 : else
3610 : {
3611 : if (0
3612 : && inside_int && inter_float && final_int &&
3613 : (unsigned) significand_size (TYPE_MODE (inter_type))
3614 : >= inside_prec - !inside_unsignedp
3615 : )
3616 : {
3617 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1106;
3618 : {
3619 : tree res_op0;
3620 : res_op0 = captures[1];
3621 : tree _r;
3622 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3623 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 846, __FILE__, __LINE__, true);
3624 : return _r;
3625 : }
3626 : next_after_fail1106:;
3627 : }
3628 : }
3629 : }
3630 : }
3631 : }
3632 : }
3633 : }
3634 : }
3635 : }
3636 3388 : break;
3637 : }
3638 0 : case FLOAT_EXPR:
3639 0 : {
3640 0 : tree _q20 = TREE_OPERAND (_p0, 0);
3641 0 : {
3642 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
3643 0 : {
3644 0 : tree inside_type = TREE_TYPE (captures[1]);
3645 0 : tree inter_type = TREE_TYPE (captures[0]);
3646 0 : int inside_int = INTEGRAL_TYPE_P (inside_type);
3647 0 : int inside_ptr = POINTER_TYPE_P (inside_type);
3648 0 : int inside_float = FLOAT_TYPE_P (inside_type);
3649 0 : int inside_vec = VECTOR_TYPE_P (inside_type);
3650 0 : unsigned int inside_prec = element_precision (inside_type);
3651 0 : int inside_unsignedp = TYPE_UNSIGNED (inside_type);
3652 0 : int inter_int = INTEGRAL_TYPE_P (inter_type);
3653 0 : int inter_ptr = POINTER_TYPE_P (inter_type);
3654 0 : int inter_float = FLOAT_TYPE_P (inter_type);
3655 0 : int inter_vec = VECTOR_TYPE_P (inter_type);
3656 0 : unsigned int inter_prec = element_precision (inter_type);
3657 0 : int inter_unsignedp = TYPE_UNSIGNED (inter_type);
3658 0 : int final_int = INTEGRAL_TYPE_P (type);
3659 0 : int final_ptr = POINTER_TYPE_P (type);
3660 0 : int final_float = FLOAT_TYPE_P (type);
3661 0 : int final_vec = VECTOR_TYPE_P (type);
3662 0 : unsigned int final_prec = element_precision (type);
3663 0 : int final_unsignedp = TYPE_UNSIGNED (type);
3664 0 : if (((
3665 :
3666 : && useless_type_conversion_p (type, inside_type))
3667 : || (
3668 : 1
3669 0 : && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type)))
3670 0 : && (((inter_int || inter_ptr) && final_int)
3671 0 : || (inter_float && final_float))
3672 0 : && inter_prec >= final_prec
3673 : )
3674 : {
3675 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1107;
3676 0 : {
3677 0 : tree res_op0;
3678 0 : res_op0 = captures[1];
3679 0 : tree _r;
3680 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3681 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 840, __FILE__, __LINE__, true);
3682 0 : return _r;
3683 : }
3684 0 : next_after_fail1107:;
3685 : }
3686 : else
3687 : {
3688 0 : if (((inter_int && inside_int) || (inter_float && inside_float))
3689 0 : && (final_int || final_float)
3690 0 : && inter_prec >= inside_prec
3691 0 : && (inter_float || inter_unsignedp == inside_unsignedp)
3692 : )
3693 : {
3694 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1108;
3695 0 : {
3696 0 : tree res_op0;
3697 0 : res_op0 = captures[1];
3698 0 : tree _r;
3699 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3700 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 841, __FILE__, __LINE__, true);
3701 0 : return _r;
3702 : }
3703 0 : next_after_fail1108:;
3704 0 : }
3705 : else
3706 : {
3707 0 : if (inside_int && inter_int && final_int
3708 0 : && ((inside_prec < inter_prec && inter_prec < final_prec
3709 0 : && inside_unsignedp && !inter_unsignedp)
3710 0 : || final_prec == inter_prec
3711 0 : || (inside_prec < inter_prec && inter_prec > final_prec
3712 0 : && !inside_unsignedp && inter_unsignedp))
3713 : )
3714 : {
3715 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1109;
3716 0 : {
3717 0 : tree res_op0;
3718 0 : res_op0 = captures[1];
3719 0 : tree _r;
3720 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3721 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 842, __FILE__, __LINE__, true);
3722 0 : return _r;
3723 : }
3724 0 : next_after_fail1109:;
3725 0 : }
3726 : else
3727 : {
3728 0 : if (! inside_float && ! inter_float && ! final_float
3729 : && ! inside_vec && ! inter_vec && ! final_vec
3730 0 : && (inter_prec >= inside_prec || inter_prec >= final_prec)
3731 0 : && ! (inside_int && inter_int
3732 0 : && inter_unsignedp != inside_unsignedp
3733 0 : && inter_prec < final_prec)
3734 0 : && ((inter_unsignedp && inter_prec > inside_prec)
3735 0 : == (final_unsignedp && final_prec > inter_prec))
3736 0 : && ! (inside_ptr && inter_prec != final_prec)
3737 0 : && ! (final_ptr && inside_prec != inter_prec)
3738 : )
3739 : {
3740 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1110;
3741 0 : {
3742 0 : tree res_op0;
3743 0 : res_op0 = captures[1];
3744 0 : tree _r;
3745 0 : _r = fold_build1_loc (loc, FLOAT_EXPR, type, res_op0);
3746 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 843, __FILE__, __LINE__, true);
3747 0 : return _r;
3748 : }
3749 0 : next_after_fail1110:;
3750 0 : }
3751 : else
3752 : {
3753 0 : if (inside_int && inter_int && final_int
3754 0 : && final_prec <= inside_prec
3755 0 : && inter_prec >= inside_prec
3756 : )
3757 : {
3758 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1111;
3759 0 : {
3760 0 : tree res_op0;
3761 0 : res_op0 = captures[1];
3762 0 : tree _r;
3763 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3764 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 844, __FILE__, __LINE__, true);
3765 0 : return _r;
3766 : }
3767 0 : next_after_fail1111:;
3768 0 : }
3769 : else
3770 : {
3771 : if (0
3772 : && final_int && inter_int && inside_int
3773 : && final_prec >= inside_prec
3774 : && inside_prec > inter_prec
3775 : && inter_unsignedp
3776 : )
3777 : {
3778 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1112;
3779 : {
3780 : tree res_op0;
3781 : {
3782 : tree _o1[2], _r1;
3783 : _o1[0] = captures[1];
3784 : _o1[1] = wide_int_to_tree
3785 : (inside_type,
3786 : wi::mask (inter_prec, false,
3787 : TYPE_PRECISION (inside_type)));
3788 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3789 : res_op0 = _r1;
3790 : }
3791 : tree _r;
3792 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3793 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 845, __FILE__, __LINE__, true);
3794 : return _r;
3795 : }
3796 : next_after_fail1112:;
3797 : }
3798 : else
3799 : {
3800 : if (0
3801 : && inside_int && inter_float && final_int &&
3802 : (unsigned) significand_size (TYPE_MODE (inter_type))
3803 : >= inside_prec - !inside_unsignedp
3804 : )
3805 : {
3806 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1113;
3807 : {
3808 : tree res_op0;
3809 : res_op0 = captures[1];
3810 : tree _r;
3811 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3812 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 846, __FILE__, __LINE__, true);
3813 : return _r;
3814 : }
3815 : next_after_fail1113:;
3816 : }
3817 : }
3818 : }
3819 : }
3820 : }
3821 : }
3822 : }
3823 : }
3824 : }
3825 0 : break;
3826 : }
3827 : default:;
3828 : }
3829 : return NULL_TREE;
3830 : }
3831 :
3832 : tree
3833 72655966 : generic_simplify_MULT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
3834 : {
3835 72655966 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3836 72655966 : switch (TREE_CODE (_p1))
3837 : {
3838 443 : case VECTOR_CST:
3839 443 : {
3840 443 : {
3841 443 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
3842 443 : if (initializer_each_zero_or_onep (captures[1])
3843 9 : && !HONOR_SNANS (type)
3844 452 : && !HONOR_SIGNED_ZEROS (type)
3845 : )
3846 : {
3847 5 : {
3848 5 : tree itype = FLOAT_TYPE_P (type) ? unsigned_type_for (type) : type;
3849 5 : if (itype
3850 5 : && (!VECTOR_MODE_P (TYPE_MODE (type))
3851 5 : || (VECTOR_MODE_P (TYPE_MODE (itype))
3852 5 : && optab_handler (and_optab,
3853 5 : TYPE_MODE (itype)) != CODE_FOR_nothing))
3854 : )
3855 : {
3856 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1402;
3857 5 : {
3858 5 : tree res_op0;
3859 5 : {
3860 5 : tree _o1[2], _r1;
3861 5 : {
3862 5 : tree _o2[1], _r2;
3863 5 : _o2[0] = captures[0];
3864 5 : if (TREE_TYPE (_o2[0]) != itype)
3865 : {
3866 1 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, itype, _o2[0]);
3867 : }
3868 : else
3869 : _r2 = _o2[0];
3870 5 : _o1[0] = _r2;
3871 : }
3872 5 : {
3873 5 : tree _o2[2], _r2;
3874 5 : _o2[0] = captures[1];
3875 5 : _o2[1] = build_zero_cst (type);
3876 5 : _r2 = fold_build2_loc (loc, NE_EXPR, itype, _o2[0], _o2[1]);
3877 5 : _o1[1] = _r2;
3878 : }
3879 5 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, itype, _o1[0], _o1[1]);
3880 5 : res_op0 = _r1;
3881 : }
3882 5 : tree _r;
3883 5 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3884 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 965, __FILE__, __LINE__, true);
3885 5 : return _r;
3886 : }
3887 0 : next_after_fail1402:;
3888 : }
3889 : }
3890 : }
3891 : }
3892 438 : break;
3893 : }
3894 72655961 : default:;
3895 : }
3896 72655961 : if (integer_zerop (_p1))
3897 : {
3898 33466 : {
3899 33466 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
3900 33466 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1403;
3901 33466 : {
3902 33466 : tree _r;
3903 33466 : _r = captures[1];
3904 33466 : if (TREE_SIDE_EFFECTS (captures[0]))
3905 2459 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3906 33466 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 966, __FILE__, __LINE__, true);
3907 33466 : return _r;
3908 : }
3909 0 : next_after_fail1403:;
3910 : }
3911 : }
3912 72622495 : if (real_zerop (_p1))
3913 : {
3914 426 : {
3915 426 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
3916 426 : if (!tree_expr_maybe_nan_p (captures[0])
3917 218 : && (!HONOR_NANS (type) || !tree_expr_maybe_infinite_p (captures[0]))
3918 436 : && (!HONOR_SIGNED_ZEROS (type) || tree_expr_nonnegative_p (captures[0]))
3919 : )
3920 : {
3921 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1404;
3922 4 : {
3923 4 : tree _r;
3924 4 : _r = captures[1];
3925 4 : if (TREE_SIDE_EFFECTS (captures[0]))
3926 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3927 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 967, __FILE__, __LINE__, true);
3928 4 : return _r;
3929 : }
3930 0 : next_after_fail1404:;
3931 : }
3932 : }
3933 : }
3934 72622491 : if (real_onep (_p1))
3935 : {
3936 1246 : {
3937 1246 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3938 1246 : if (!tree_expr_maybe_signaling_nan_p (captures[0])
3939 1246 : && (!HONOR_SIGNED_ZEROS (type)
3940 1125 : || !COMPLEX_FLOAT_TYPE_P (type))
3941 : )
3942 : {
3943 763 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1405;
3944 763 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1405;
3945 763 : {
3946 763 : tree res_op0;
3947 763 : res_op0 = captures[0];
3948 763 : tree _r;
3949 763 : _r = non_lvalue_loc (loc, res_op0);
3950 763 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 968, __FILE__, __LINE__, true);
3951 763 : return _r;
3952 : }
3953 : next_after_fail1405:;
3954 : }
3955 : }
3956 : }
3957 72621728 : if (real_minus_onep (_p1))
3958 : {
3959 43677 : {
3960 43677 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3961 43677 : if (!tree_expr_maybe_signaling_nan_p (captures[0])
3962 43677 : && (!HONOR_SIGNED_ZEROS (type)
3963 40769 : || !COMPLEX_FLOAT_TYPE_P (type))
3964 : )
3965 : {
3966 43293 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1406;
3967 43293 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1406;
3968 43293 : {
3969 43293 : tree res_op0;
3970 43293 : res_op0 = captures[0];
3971 43293 : tree _r;
3972 43293 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
3973 43293 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 969, __FILE__, __LINE__, true);
3974 43293 : return _r;
3975 : }
3976 : next_after_fail1406:;
3977 : }
3978 : }
3979 : }
3980 72578435 : switch (TREE_CODE (_p0))
3981 : {
3982 60549 : case BIT_AND_EXPR:
3983 60549 : {
3984 60549 : tree _q20 = TREE_OPERAND (_p0, 0);
3985 60549 : tree _q21 = TREE_OPERAND (_p0, 1);
3986 60549 : switch (TREE_CODE (_q20))
3987 : {
3988 275 : case RSHIFT_EXPR:
3989 275 : {
3990 275 : tree _q30 = TREE_OPERAND (_q20, 0);
3991 275 : tree _q31 = TREE_OPERAND (_q20, 1);
3992 275 : if (uniform_integer_cst_p (_q31))
3993 : {
3994 14 : if (uniform_integer_cst_p (_q21))
3995 : {
3996 14 : if (uniform_integer_cst_p (_p1))
3997 : {
3998 14 : {
3999 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
4000 14 : {
4001 14 : tree rshift_cst = uniform_integer_cst_p (captures[1]);
4002 14 : tree bit_and_cst = uniform_integer_cst_p (captures[2]);
4003 14 : tree mult_cst = uniform_integer_cst_p (captures[3]);
4004 14 : if (VECTOR_TYPE_P (type)
4005 0 : && tree_fits_uhwi_p (rshift_cst)
4006 0 : && tree_fits_uhwi_p (mult_cst)
4007 0 : && tree_fits_uhwi_p (bit_and_cst)
4008 : )
4009 : {
4010 0 : {
4011 0 : HOST_WIDE_INT vec_elem_bits = vector_element_bits (type);
4012 0 : poly_int64 vec_nelts = TYPE_VECTOR_SUBPARTS (type);
4013 0 : poly_int64 vec_bits = vec_elem_bits * vec_nelts;
4014 0 : unsigned HOST_WIDE_INT cmp_bits_i, bit_and_i, mult_i;
4015 0 : unsigned HOST_WIDE_INT target_mult_i, target_bit_and_i;
4016 0 : cmp_bits_i = tree_to_uhwi (rshift_cst) + 1;
4017 0 : mult_i = tree_to_uhwi (mult_cst);
4018 0 : target_mult_i = (HOST_WIDE_INT_1U << cmp_bits_i) - 1;
4019 0 : bit_and_i = tree_to_uhwi (bit_and_cst);
4020 0 : target_bit_and_i = 0;
4021 0 : for (unsigned i = 0; i < vec_elem_bits / cmp_bits_i; i++)
4022 0 : target_bit_and_i = (target_bit_and_i << cmp_bits_i) | 1U;
4023 0 : if ((exact_log2 (cmp_bits_i)) >= 0
4024 0 : && cmp_bits_i < HOST_BITS_PER_WIDE_INT
4025 0 : && multiple_p (vec_bits, cmp_bits_i)
4026 0 : && vec_elem_bits <= HOST_BITS_PER_WIDE_INT
4027 0 : && target_mult_i == mult_i
4028 0 : && target_bit_and_i == bit_and_i
4029 : )
4030 : {
4031 0 : {
4032 0 : tree cmp_type = build_nonstandard_integer_type (cmp_bits_i, 0);
4033 0 : poly_int64 vector_type_nelts = exact_div (vec_bits, cmp_bits_i);
4034 0 : tree vec_cmp_type = build_vector_type (cmp_type, vector_type_nelts);
4035 0 : tree vec_truth_type = truth_type_for (vec_cmp_type);
4036 0 : tree zeros = build_zero_cst (vec_cmp_type);
4037 0 : tree ones = build_all_ones_cst (vec_cmp_type);
4038 0 : if (expand_vec_cmp_expr_p (vec_cmp_type, vec_truth_type, LT_EXPR)
4039 0 : && expand_vec_cond_expr_p (vec_cmp_type, vec_truth_type)
4040 : )
4041 : {
4042 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1407;
4043 0 : {
4044 0 : tree res_op0;
4045 0 : {
4046 0 : tree _o1[3], _r1;
4047 0 : {
4048 0 : tree _o2[2], _r2;
4049 0 : {
4050 0 : tree _o3[1], _r3;
4051 0 : _o3[0] = captures[0];
4052 0 : if (TREE_TYPE (_o3[0]) != vec_cmp_type)
4053 : {
4054 0 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, vec_cmp_type, _o3[0]);
4055 : }
4056 : else
4057 : _r3 = _o3[0];
4058 0 : _o2[0] = _r3;
4059 : }
4060 0 : _o2[1] = zeros;
4061 0 : _r2 = fold_build2_loc (loc, LT_EXPR, vec_truth_type, _o2[0], _o2[1]);
4062 0 : _o1[0] = _r2;
4063 : }
4064 0 : _o1[1] = ones;
4065 0 : _o1[2] = zeros;
4066 0 : _r1 = fold_build3_loc (loc, VEC_COND_EXPR, TREE_TYPE (_o1[1]), _o1[0], _o1[1], _o1[2]);
4067 0 : res_op0 = _r1;
4068 : }
4069 0 : tree _r;
4070 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
4071 0 : if (TREE_SIDE_EFFECTS (captures[1]))
4072 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4073 0 : if (TREE_SIDE_EFFECTS (captures[2]))
4074 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
4075 0 : if (TREE_SIDE_EFFECTS (captures[3]))
4076 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
4077 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 970, __FILE__, __LINE__, true);
4078 0 : return _r;
4079 : }
4080 0 : next_after_fail1407:;
4081 : }
4082 : }
4083 : }
4084 : }
4085 : }
4086 : }
4087 : }
4088 : }
4089 : }
4090 : }
4091 : break;
4092 : }
4093 : default:;
4094 : }
4095 : break;
4096 : }
4097 72578435 : default:;
4098 : }
4099 72578435 : switch (TREE_CODE (_p1))
4100 : {
4101 3118 : case COND_EXPR:
4102 3118 : {
4103 3118 : tree _q30 = TREE_OPERAND (_p1, 0);
4104 3118 : tree _q31 = TREE_OPERAND (_p1, 1);
4105 3118 : tree _q32 = TREE_OPERAND (_p1, 2);
4106 3118 : switch (TREE_CODE (_q30))
4107 : {
4108 530 : case GT_EXPR:
4109 530 : {
4110 530 : tree _q40 = TREE_OPERAND (_q30, 0);
4111 530 : tree _q41 = TREE_OPERAND (_q30, 1);
4112 530 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4113 : {
4114 0 : if (real_zerop (_q41))
4115 : {
4116 0 : if (real_onep (_q31))
4117 : {
4118 0 : if (real_minus_onep (_q32))
4119 : {
4120 0 : {
4121 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4122 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4123 : )
4124 : {
4125 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1408;
4126 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1408;
4127 0 : {
4128 0 : tree res_op0;
4129 0 : {
4130 0 : tree _o1[1], _r1;
4131 0 : _o1[0] = captures[0];
4132 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4133 0 : res_op0 = _r1;
4134 : }
4135 0 : tree _r;
4136 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4137 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 971, __FILE__, __LINE__, true);
4138 0 : return _r;
4139 : }
4140 0 : next_after_fail1408:;
4141 : }
4142 : }
4143 : }
4144 : }
4145 : }
4146 : }
4147 : break;
4148 : }
4149 20 : case GE_EXPR:
4150 20 : {
4151 20 : tree _q40 = TREE_OPERAND (_q30, 0);
4152 20 : tree _q41 = TREE_OPERAND (_q30, 1);
4153 20 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4154 : {
4155 0 : if (real_zerop (_q41))
4156 : {
4157 0 : if (real_onep (_q31))
4158 : {
4159 0 : if (real_minus_onep (_q32))
4160 : {
4161 0 : {
4162 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4163 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4164 : )
4165 : {
4166 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1409;
4167 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1409;
4168 0 : {
4169 0 : tree res_op0;
4170 0 : {
4171 0 : tree _o1[1], _r1;
4172 0 : _o1[0] = captures[0];
4173 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4174 0 : res_op0 = _r1;
4175 : }
4176 0 : tree _r;
4177 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4178 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 971, __FILE__, __LINE__, true);
4179 0 : return _r;
4180 : }
4181 0 : next_after_fail1409:;
4182 : }
4183 : }
4184 : }
4185 : }
4186 : }
4187 : }
4188 : break;
4189 : }
4190 51 : case LT_EXPR:
4191 51 : {
4192 51 : tree _q40 = TREE_OPERAND (_q30, 0);
4193 51 : tree _q41 = TREE_OPERAND (_q30, 1);
4194 51 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4195 : {
4196 0 : if (real_zerop (_q41))
4197 : {
4198 0 : if (real_onep (_q31))
4199 : {
4200 0 : if (real_minus_onep (_q32))
4201 : {
4202 0 : {
4203 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4204 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4205 : )
4206 : {
4207 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1410;
4208 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1410;
4209 0 : {
4210 0 : tree res_op0;
4211 0 : {
4212 0 : tree _o1[1], _r1;
4213 0 : _o1[0] = captures[0];
4214 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4215 0 : res_op0 = _r1;
4216 : }
4217 0 : tree _r;
4218 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4219 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 971, __FILE__, __LINE__, true);
4220 0 : return _r;
4221 : }
4222 0 : next_after_fail1410:;
4223 : }
4224 : }
4225 : }
4226 : }
4227 : }
4228 : }
4229 : break;
4230 : }
4231 5 : case LE_EXPR:
4232 5 : {
4233 5 : tree _q40 = TREE_OPERAND (_q30, 0);
4234 5 : tree _q41 = TREE_OPERAND (_q30, 1);
4235 5 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4236 : {
4237 0 : if (real_zerop (_q41))
4238 : {
4239 0 : if (real_onep (_q31))
4240 : {
4241 0 : if (real_minus_onep (_q32))
4242 : {
4243 0 : {
4244 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4245 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4246 : )
4247 : {
4248 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1411;
4249 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1411;
4250 0 : {
4251 0 : tree res_op0;
4252 0 : {
4253 0 : tree _o1[1], _r1;
4254 0 : _o1[0] = captures[0];
4255 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4256 0 : res_op0 = _r1;
4257 : }
4258 0 : tree _r;
4259 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4260 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 971, __FILE__, __LINE__, true);
4261 0 : return _r;
4262 : }
4263 0 : next_after_fail1411:;
4264 : }
4265 : }
4266 : }
4267 : }
4268 : }
4269 : }
4270 : break;
4271 : }
4272 : default:;
4273 : }
4274 : break;
4275 : }
4276 72578435 : default:;
4277 : }
4278 72578435 : switch (TREE_CODE (_p0))
4279 : {
4280 87428 : case COND_EXPR:
4281 87428 : {
4282 87428 : tree _q20 = TREE_OPERAND (_p0, 0);
4283 87428 : tree _q21 = TREE_OPERAND (_p0, 1);
4284 87428 : tree _q22 = TREE_OPERAND (_p0, 2);
4285 87428 : switch (TREE_CODE (_q20))
4286 : {
4287 22083 : case GT_EXPR:
4288 22083 : {
4289 22083 : tree _q30 = TREE_OPERAND (_q20, 0);
4290 22083 : tree _q31 = TREE_OPERAND (_q20, 1);
4291 22083 : if (real_zerop (_q31))
4292 : {
4293 4 : if (real_onep (_q21))
4294 : {
4295 3 : if (real_minus_onep (_q22))
4296 : {
4297 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4298 : {
4299 1 : {
4300 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4301 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4302 : )
4303 : {
4304 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1412;
4305 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1412;
4306 1 : {
4307 1 : tree res_op0;
4308 1 : {
4309 1 : tree _o1[1], _r1;
4310 1 : _o1[0] = captures[0];
4311 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4312 1 : res_op0 = _r1;
4313 : }
4314 1 : tree _r;
4315 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4316 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 971, __FILE__, __LINE__, true);
4317 1 : return _r;
4318 : }
4319 0 : next_after_fail1412:;
4320 : }
4321 : }
4322 : }
4323 : }
4324 : }
4325 3 : if (real_minus_onep (_q21))
4326 : {
4327 1 : if (real_onep (_q22))
4328 : {
4329 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4330 : {
4331 1 : {
4332 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4333 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4334 : )
4335 : {
4336 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1413;
4337 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1413;
4338 1 : {
4339 1 : tree res_op0;
4340 1 : {
4341 1 : tree _o1[1], _r1;
4342 1 : _o1[0] = captures[0];
4343 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4344 1 : res_op0 = _r1;
4345 : }
4346 1 : tree _r;
4347 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4348 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 972, __FILE__, __LINE__, true);
4349 1 : return _r;
4350 : }
4351 0 : next_after_fail1413:;
4352 : }
4353 : }
4354 : }
4355 : }
4356 : }
4357 : }
4358 : break;
4359 : }
4360 8256 : case GE_EXPR:
4361 8256 : {
4362 8256 : tree _q30 = TREE_OPERAND (_q20, 0);
4363 8256 : tree _q31 = TREE_OPERAND (_q20, 1);
4364 8256 : if (real_zerop (_q31))
4365 : {
4366 2 : if (real_onep (_q21))
4367 : {
4368 1 : if (real_minus_onep (_q22))
4369 : {
4370 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4371 : {
4372 1 : {
4373 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4374 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4375 : )
4376 : {
4377 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1414;
4378 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1414;
4379 1 : {
4380 1 : tree res_op0;
4381 1 : {
4382 1 : tree _o1[1], _r1;
4383 1 : _o1[0] = captures[0];
4384 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4385 1 : res_op0 = _r1;
4386 : }
4387 1 : tree _r;
4388 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4389 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 971, __FILE__, __LINE__, true);
4390 1 : return _r;
4391 : }
4392 0 : next_after_fail1414:;
4393 : }
4394 : }
4395 : }
4396 : }
4397 : }
4398 1 : if (real_minus_onep (_q21))
4399 : {
4400 1 : if (real_onep (_q22))
4401 : {
4402 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4403 : {
4404 1 : {
4405 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4406 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4407 : )
4408 : {
4409 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1415;
4410 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1415;
4411 1 : {
4412 1 : tree res_op0;
4413 1 : {
4414 1 : tree _o1[1], _r1;
4415 1 : _o1[0] = captures[0];
4416 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4417 1 : res_op0 = _r1;
4418 : }
4419 1 : tree _r;
4420 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4421 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 972, __FILE__, __LINE__, true);
4422 1 : return _r;
4423 : }
4424 0 : next_after_fail1415:;
4425 : }
4426 : }
4427 : }
4428 : }
4429 : }
4430 : }
4431 : break;
4432 : }
4433 7714 : case LT_EXPR:
4434 7714 : {
4435 7714 : tree _q30 = TREE_OPERAND (_q20, 0);
4436 7714 : tree _q31 = TREE_OPERAND (_q20, 1);
4437 7714 : if (real_zerop (_q31))
4438 : {
4439 2 : if (real_onep (_q21))
4440 : {
4441 1 : if (real_minus_onep (_q22))
4442 : {
4443 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4444 : {
4445 1 : {
4446 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4447 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4448 : )
4449 : {
4450 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1416;
4451 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1416;
4452 1 : {
4453 1 : tree res_op0;
4454 1 : {
4455 1 : tree _o1[1], _r1;
4456 1 : _o1[0] = captures[0];
4457 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4458 1 : res_op0 = _r1;
4459 : }
4460 1 : tree _r;
4461 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4462 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 971, __FILE__, __LINE__, true);
4463 1 : return _r;
4464 : }
4465 0 : next_after_fail1416:;
4466 : }
4467 : }
4468 : }
4469 : }
4470 : }
4471 1 : if (real_minus_onep (_q21))
4472 : {
4473 1 : if (real_onep (_q22))
4474 : {
4475 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4476 : {
4477 1 : {
4478 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4479 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4480 : )
4481 : {
4482 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1417;
4483 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1417;
4484 1 : {
4485 1 : tree res_op0;
4486 1 : {
4487 1 : tree _o1[1], _r1;
4488 1 : _o1[0] = captures[0];
4489 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4490 1 : res_op0 = _r1;
4491 : }
4492 1 : tree _r;
4493 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4494 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 972, __FILE__, __LINE__, true);
4495 1 : return _r;
4496 : }
4497 0 : next_after_fail1417:;
4498 : }
4499 : }
4500 : }
4501 : }
4502 : }
4503 : }
4504 : break;
4505 : }
4506 2972 : case LE_EXPR:
4507 2972 : {
4508 2972 : tree _q30 = TREE_OPERAND (_q20, 0);
4509 2972 : tree _q31 = TREE_OPERAND (_q20, 1);
4510 2972 : if (real_zerop (_q31))
4511 : {
4512 2 : if (real_onep (_q21))
4513 : {
4514 1 : if (real_minus_onep (_q22))
4515 : {
4516 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4517 : {
4518 1 : {
4519 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4520 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4521 : )
4522 : {
4523 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1418;
4524 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1418;
4525 1 : {
4526 1 : tree res_op0;
4527 1 : {
4528 1 : tree _o1[1], _r1;
4529 1 : _o1[0] = captures[0];
4530 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4531 1 : res_op0 = _r1;
4532 : }
4533 1 : tree _r;
4534 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4535 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 971, __FILE__, __LINE__, true);
4536 1 : return _r;
4537 : }
4538 0 : next_after_fail1418:;
4539 : }
4540 : }
4541 : }
4542 : }
4543 : }
4544 1 : if (real_minus_onep (_q21))
4545 : {
4546 1 : if (real_onep (_q22))
4547 : {
4548 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4549 : {
4550 1 : {
4551 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4552 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4553 : )
4554 : {
4555 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1419;
4556 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1419;
4557 1 : {
4558 1 : tree res_op0;
4559 1 : {
4560 1 : tree _o1[1], _r1;
4561 1 : _o1[0] = captures[0];
4562 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4563 1 : res_op0 = _r1;
4564 : }
4565 1 : tree _r;
4566 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4567 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 972, __FILE__, __LINE__, true);
4568 1 : return _r;
4569 : }
4570 0 : next_after_fail1419:;
4571 : }
4572 : }
4573 : }
4574 : }
4575 : }
4576 : }
4577 : break;
4578 : }
4579 : default:;
4580 : }
4581 : break;
4582 : }
4583 72578427 : default:;
4584 : }
4585 72578427 : switch (TREE_CODE (_p1))
4586 : {
4587 3118 : case COND_EXPR:
4588 3118 : {
4589 3118 : tree _q30 = TREE_OPERAND (_p1, 0);
4590 3118 : tree _q31 = TREE_OPERAND (_p1, 1);
4591 3118 : tree _q32 = TREE_OPERAND (_p1, 2);
4592 3118 : switch (TREE_CODE (_q30))
4593 : {
4594 530 : case GT_EXPR:
4595 530 : {
4596 530 : tree _q40 = TREE_OPERAND (_q30, 0);
4597 530 : tree _q41 = TREE_OPERAND (_q30, 1);
4598 530 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4599 : {
4600 0 : if (real_zerop (_q41))
4601 : {
4602 0 : if (real_minus_onep (_q31))
4603 : {
4604 0 : if (real_onep (_q32))
4605 : {
4606 0 : {
4607 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4608 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4609 : )
4610 : {
4611 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1420;
4612 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1420;
4613 0 : {
4614 0 : tree res_op0;
4615 0 : {
4616 0 : tree _o1[1], _r1;
4617 0 : _o1[0] = captures[0];
4618 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4619 0 : res_op0 = _r1;
4620 : }
4621 0 : tree _r;
4622 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4623 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 972, __FILE__, __LINE__, true);
4624 0 : return _r;
4625 : }
4626 0 : next_after_fail1420:;
4627 : }
4628 : }
4629 : }
4630 : }
4631 : }
4632 : }
4633 : break;
4634 : }
4635 20 : case GE_EXPR:
4636 20 : {
4637 20 : tree _q40 = TREE_OPERAND (_q30, 0);
4638 20 : tree _q41 = TREE_OPERAND (_q30, 1);
4639 20 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4640 : {
4641 0 : if (real_zerop (_q41))
4642 : {
4643 0 : if (real_minus_onep (_q31))
4644 : {
4645 0 : if (real_onep (_q32))
4646 : {
4647 0 : {
4648 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4649 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4650 : )
4651 : {
4652 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1421;
4653 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1421;
4654 0 : {
4655 0 : tree res_op0;
4656 0 : {
4657 0 : tree _o1[1], _r1;
4658 0 : _o1[0] = captures[0];
4659 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4660 0 : res_op0 = _r1;
4661 : }
4662 0 : tree _r;
4663 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4664 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 972, __FILE__, __LINE__, true);
4665 0 : return _r;
4666 : }
4667 0 : next_after_fail1421:;
4668 : }
4669 : }
4670 : }
4671 : }
4672 : }
4673 : }
4674 : break;
4675 : }
4676 51 : case LT_EXPR:
4677 51 : {
4678 51 : tree _q40 = TREE_OPERAND (_q30, 0);
4679 51 : tree _q41 = TREE_OPERAND (_q30, 1);
4680 51 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4681 : {
4682 0 : if (real_zerop (_q41))
4683 : {
4684 0 : if (real_minus_onep (_q31))
4685 : {
4686 0 : if (real_onep (_q32))
4687 : {
4688 0 : {
4689 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4690 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4691 : )
4692 : {
4693 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1422;
4694 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1422;
4695 0 : {
4696 0 : tree res_op0;
4697 0 : {
4698 0 : tree _o1[1], _r1;
4699 0 : _o1[0] = captures[0];
4700 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4701 0 : res_op0 = _r1;
4702 : }
4703 0 : tree _r;
4704 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4705 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 972, __FILE__, __LINE__, true);
4706 0 : return _r;
4707 : }
4708 0 : next_after_fail1422:;
4709 : }
4710 : }
4711 : }
4712 : }
4713 : }
4714 : }
4715 : break;
4716 : }
4717 5 : case LE_EXPR:
4718 5 : {
4719 5 : tree _q40 = TREE_OPERAND (_q30, 0);
4720 5 : tree _q41 = TREE_OPERAND (_q30, 1);
4721 5 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4722 : {
4723 0 : if (real_zerop (_q41))
4724 : {
4725 0 : if (real_minus_onep (_q31))
4726 : {
4727 0 : if (real_onep (_q32))
4728 : {
4729 0 : {
4730 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4731 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4732 : )
4733 : {
4734 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1423;
4735 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1423;
4736 0 : {
4737 0 : tree res_op0;
4738 0 : {
4739 0 : tree _o1[1], _r1;
4740 0 : _o1[0] = captures[0];
4741 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4742 0 : res_op0 = _r1;
4743 : }
4744 0 : tree _r;
4745 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4746 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 972, __FILE__, __LINE__, true);
4747 0 : return _r;
4748 : }
4749 0 : next_after_fail1423:;
4750 : }
4751 : }
4752 : }
4753 : }
4754 : }
4755 : }
4756 : break;
4757 : }
4758 : default:;
4759 : }
4760 : break;
4761 : }
4762 897094 : case CALL_EXPR:
4763 897094 : switch (get_call_combined_fn (_p1))
4764 : {
4765 20 : case CFN_BUILT_IN_COPYSIGNF16:
4766 20 : if (call_expr_nargs (_p1) == 2)
4767 : {
4768 20 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4769 20 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4770 20 : if (real_onep (_q30))
4771 : {
4772 20 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4773 : {
4774 0 : {
4775 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4776 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
4777 0 : if (res) return res;
4778 : }
4779 : }
4780 : }
4781 : }
4782 : break;
4783 0 : case CFN_BUILT_IN_COPYSIGNF32:
4784 0 : if (call_expr_nargs (_p1) == 2)
4785 : {
4786 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4787 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4788 0 : if (real_onep (_q30))
4789 : {
4790 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4791 : {
4792 0 : {
4793 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4794 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
4795 0 : if (res) return res;
4796 : }
4797 : }
4798 : }
4799 : }
4800 : break;
4801 0 : case CFN_BUILT_IN_COPYSIGNF64:
4802 0 : if (call_expr_nargs (_p1) == 2)
4803 : {
4804 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4805 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4806 0 : if (real_onep (_q30))
4807 : {
4808 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4809 : {
4810 0 : {
4811 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4812 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
4813 0 : if (res) return res;
4814 : }
4815 : }
4816 : }
4817 : }
4818 : break;
4819 0 : case CFN_BUILT_IN_COPYSIGNF128X:
4820 0 : if (call_expr_nargs (_p1) == 2)
4821 : {
4822 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4823 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4824 0 : if (real_onep (_q30))
4825 : {
4826 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4827 : {
4828 0 : {
4829 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4830 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
4831 0 : if (res) return res;
4832 : }
4833 : }
4834 : }
4835 : }
4836 : break;
4837 0 : case CFN_BUILT_IN_COPYSIGNF128:
4838 0 : if (call_expr_nargs (_p1) == 2)
4839 : {
4840 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4841 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4842 0 : if (real_onep (_q30))
4843 : {
4844 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4845 : {
4846 0 : {
4847 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4848 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
4849 0 : if (res) return res;
4850 : }
4851 : }
4852 : }
4853 : }
4854 : break;
4855 0 : case CFN_BUILT_IN_COPYSIGNF32X:
4856 0 : if (call_expr_nargs (_p1) == 2)
4857 : {
4858 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4859 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4860 0 : if (real_onep (_q30))
4861 : {
4862 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4863 : {
4864 0 : {
4865 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4866 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
4867 0 : if (res) return res;
4868 : }
4869 : }
4870 : }
4871 : }
4872 : break;
4873 0 : case CFN_BUILT_IN_COPYSIGNF64X:
4874 0 : if (call_expr_nargs (_p1) == 2)
4875 : {
4876 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4877 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4878 0 : if (real_onep (_q30))
4879 : {
4880 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4881 : {
4882 0 : {
4883 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4884 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
4885 0 : if (res) return res;
4886 : }
4887 : }
4888 : }
4889 : }
4890 : break;
4891 18 : case CFN_BUILT_IN_COPYSIGN:
4892 18 : if (call_expr_nargs (_p1) == 2)
4893 : {
4894 18 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4895 18 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4896 18 : if (real_onep (_q30))
4897 : {
4898 14 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4899 : {
4900 0 : {
4901 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4902 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
4903 0 : if (res) return res;
4904 : }
4905 : }
4906 : }
4907 : }
4908 : break;
4909 14 : case CFN_BUILT_IN_COPYSIGNF:
4910 14 : if (call_expr_nargs (_p1) == 2)
4911 : {
4912 14 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4913 14 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4914 14 : if (real_onep (_q30))
4915 : {
4916 12 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4917 : {
4918 0 : {
4919 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4920 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
4921 0 : if (res) return res;
4922 : }
4923 : }
4924 : }
4925 : }
4926 : break;
4927 0 : case CFN_BUILT_IN_COPYSIGNL:
4928 0 : if (call_expr_nargs (_p1) == 2)
4929 : {
4930 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4931 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4932 0 : if (real_onep (_q30))
4933 : {
4934 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4935 : {
4936 0 : {
4937 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4938 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
4939 0 : if (res) return res;
4940 : }
4941 : }
4942 : }
4943 : }
4944 : break;
4945 0 : case CFN_COPYSIGN:
4946 0 : if (call_expr_nargs (_p1) == 2)
4947 : {
4948 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4949 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4950 0 : if (real_onep (_q30))
4951 : {
4952 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4953 : {
4954 0 : {
4955 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4956 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
4957 0 : if (res) return res;
4958 : }
4959 : }
4960 : }
4961 : }
4962 : break;
4963 : default:;
4964 : }
4965 : break;
4966 72578427 : default:;
4967 : }
4968 72578427 : switch (TREE_CODE (_p0))
4969 : {
4970 2746529 : case CALL_EXPR:
4971 2746529 : switch (get_call_combined_fn (_p0))
4972 : {
4973 1 : case CFN_BUILT_IN_COPYSIGNF16:
4974 1 : if (call_expr_nargs (_p0) == 2)
4975 : {
4976 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4977 1 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4978 1 : if (real_onep (_q20))
4979 : {
4980 1 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4981 : {
4982 0 : {
4983 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
4984 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
4985 0 : if (res) return res;
4986 : }
4987 : }
4988 1 : switch (TREE_CODE (_q21))
4989 : {
4990 0 : case NEGATE_EXPR:
4991 0 : {
4992 0 : tree _q40 = TREE_OPERAND (_q21, 0);
4993 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
4994 : {
4995 0 : {
4996 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
4997 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
4998 0 : if (res) return res;
4999 : }
5000 : }
5001 : break;
5002 : }
5003 : default:;
5004 : }
5005 : }
5006 : }
5007 : break;
5008 0 : case CFN_BUILT_IN_COPYSIGNF32:
5009 0 : if (call_expr_nargs (_p0) == 2)
5010 : {
5011 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5012 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5013 0 : if (real_onep (_q20))
5014 : {
5015 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5016 : {
5017 0 : {
5018 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5019 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
5020 0 : if (res) return res;
5021 : }
5022 : }
5023 0 : switch (TREE_CODE (_q21))
5024 : {
5025 0 : case NEGATE_EXPR:
5026 0 : {
5027 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5028 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5029 : {
5030 0 : {
5031 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5032 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
5033 0 : if (res) return res;
5034 : }
5035 : }
5036 : break;
5037 : }
5038 : default:;
5039 : }
5040 : }
5041 : }
5042 : break;
5043 0 : case CFN_BUILT_IN_COPYSIGNF64:
5044 0 : if (call_expr_nargs (_p0) == 2)
5045 : {
5046 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5047 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5048 0 : if (real_onep (_q20))
5049 : {
5050 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5051 : {
5052 0 : {
5053 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5054 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
5055 0 : if (res) return res;
5056 : }
5057 : }
5058 0 : switch (TREE_CODE (_q21))
5059 : {
5060 0 : case NEGATE_EXPR:
5061 0 : {
5062 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5063 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5064 : {
5065 0 : {
5066 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5067 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
5068 0 : if (res) return res;
5069 : }
5070 : }
5071 : break;
5072 : }
5073 : default:;
5074 : }
5075 : }
5076 : }
5077 : break;
5078 0 : case CFN_BUILT_IN_COPYSIGNF128X:
5079 0 : if (call_expr_nargs (_p0) == 2)
5080 : {
5081 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5082 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5083 0 : if (real_onep (_q20))
5084 : {
5085 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5086 : {
5087 0 : {
5088 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5089 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5090 0 : if (res) return res;
5091 : }
5092 : }
5093 0 : switch (TREE_CODE (_q21))
5094 : {
5095 0 : case NEGATE_EXPR:
5096 0 : {
5097 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5098 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5099 : {
5100 0 : {
5101 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5102 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5103 0 : if (res) return res;
5104 : }
5105 : }
5106 : break;
5107 : }
5108 : default:;
5109 : }
5110 : }
5111 : }
5112 : break;
5113 8 : case CFN_BUILT_IN_COPYSIGNF128:
5114 8 : if (call_expr_nargs (_p0) == 2)
5115 : {
5116 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5117 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5118 8 : if (real_onep (_q20))
5119 : {
5120 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5121 : {
5122 0 : {
5123 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5124 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5125 0 : if (res) return res;
5126 : }
5127 : }
5128 0 : switch (TREE_CODE (_q21))
5129 : {
5130 0 : case NEGATE_EXPR:
5131 0 : {
5132 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5133 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5134 : {
5135 0 : {
5136 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5137 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5138 0 : if (res) return res;
5139 : }
5140 : }
5141 : break;
5142 : }
5143 : default:;
5144 : }
5145 : }
5146 : }
5147 : break;
5148 0 : case CFN_BUILT_IN_COPYSIGNF32X:
5149 0 : if (call_expr_nargs (_p0) == 2)
5150 : {
5151 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5152 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5153 0 : if (real_onep (_q20))
5154 : {
5155 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5156 : {
5157 0 : {
5158 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5159 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5160 0 : if (res) return res;
5161 : }
5162 : }
5163 0 : switch (TREE_CODE (_q21))
5164 : {
5165 0 : case NEGATE_EXPR:
5166 0 : {
5167 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5168 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5169 : {
5170 0 : {
5171 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5172 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5173 0 : if (res) return res;
5174 : }
5175 : }
5176 : break;
5177 : }
5178 : default:;
5179 : }
5180 : }
5181 : }
5182 : break;
5183 0 : case CFN_BUILT_IN_COPYSIGNF64X:
5184 0 : if (call_expr_nargs (_p0) == 2)
5185 : {
5186 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5187 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5188 0 : if (real_onep (_q20))
5189 : {
5190 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5191 : {
5192 0 : {
5193 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5194 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5195 0 : if (res) return res;
5196 : }
5197 : }
5198 0 : switch (TREE_CODE (_q21))
5199 : {
5200 0 : case NEGATE_EXPR:
5201 0 : {
5202 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5203 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5204 : {
5205 0 : {
5206 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5207 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5208 0 : if (res) return res;
5209 : }
5210 : }
5211 : break;
5212 : }
5213 : default:;
5214 : }
5215 : }
5216 : }
5217 : break;
5218 18 : case CFN_BUILT_IN_COPYSIGN:
5219 18 : if (call_expr_nargs (_p0) == 2)
5220 : {
5221 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5222 18 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5223 18 : if (real_onep (_q20))
5224 : {
5225 3 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5226 : {
5227 0 : {
5228 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5229 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
5230 0 : if (res) return res;
5231 : }
5232 : }
5233 3 : switch (TREE_CODE (_q21))
5234 : {
5235 0 : case NEGATE_EXPR:
5236 0 : {
5237 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5238 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5239 : {
5240 0 : {
5241 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5242 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
5243 0 : if (res) return res;
5244 : }
5245 : }
5246 : break;
5247 : }
5248 : default:;
5249 : }
5250 : }
5251 : }
5252 : break;
5253 36 : case CFN_BUILT_IN_COPYSIGNF:
5254 36 : if (call_expr_nargs (_p0) == 2)
5255 : {
5256 36 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5257 36 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5258 36 : if (real_onep (_q20))
5259 : {
5260 12 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5261 : {
5262 4 : {
5263 4 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5264 4 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
5265 4 : if (res) return res;
5266 : }
5267 : }
5268 12 : switch (TREE_CODE (_q21))
5269 : {
5270 0 : case NEGATE_EXPR:
5271 0 : {
5272 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5273 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5274 : {
5275 0 : {
5276 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5277 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
5278 0 : if (res) return res;
5279 : }
5280 : }
5281 : break;
5282 : }
5283 : default:;
5284 : }
5285 : }
5286 : }
5287 : break;
5288 8 : case CFN_BUILT_IN_COPYSIGNL:
5289 8 : if (call_expr_nargs (_p0) == 2)
5290 : {
5291 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5292 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5293 8 : if (real_onep (_q20))
5294 : {
5295 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5296 : {
5297 0 : {
5298 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5299 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
5300 0 : if (res) return res;
5301 : }
5302 : }
5303 0 : switch (TREE_CODE (_q21))
5304 : {
5305 0 : case NEGATE_EXPR:
5306 0 : {
5307 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5308 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5309 : {
5310 0 : {
5311 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5312 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
5313 0 : if (res) return res;
5314 : }
5315 : }
5316 : break;
5317 : }
5318 : default:;
5319 : }
5320 : }
5321 : }
5322 : break;
5323 0 : case CFN_COPYSIGN:
5324 0 : if (call_expr_nargs (_p0) == 2)
5325 : {
5326 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5327 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5328 0 : if (real_onep (_q20))
5329 : {
5330 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5331 : {
5332 0 : {
5333 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5334 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
5335 0 : if (res) return res;
5336 : }
5337 : }
5338 0 : switch (TREE_CODE (_q21))
5339 : {
5340 0 : case NEGATE_EXPR:
5341 0 : {
5342 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5343 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5344 : {
5345 0 : {
5346 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5347 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
5348 0 : if (res) return res;
5349 : }
5350 : }
5351 : break;
5352 : }
5353 : default:;
5354 : }
5355 : }
5356 : }
5357 : break;
5358 : default:;
5359 : }
5360 : break;
5361 72578427 : default:;
5362 : }
5363 72578427 : switch (TREE_CODE (_p1))
5364 : {
5365 897094 : case CALL_EXPR:
5366 897094 : switch (get_call_combined_fn (_p1))
5367 : {
5368 20 : case CFN_BUILT_IN_COPYSIGNF16:
5369 20 : if (call_expr_nargs (_p1) == 2)
5370 : {
5371 20 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5372 20 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5373 20 : if (real_onep (_q30))
5374 : {
5375 20 : switch (TREE_CODE (_q31))
5376 : {
5377 0 : case NEGATE_EXPR:
5378 0 : {
5379 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5380 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5381 : {
5382 0 : {
5383 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5384 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
5385 0 : if (res) return res;
5386 : }
5387 : }
5388 : break;
5389 : }
5390 : default:;
5391 : }
5392 : }
5393 : }
5394 : break;
5395 0 : case CFN_BUILT_IN_COPYSIGNF32:
5396 0 : if (call_expr_nargs (_p1) == 2)
5397 : {
5398 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5399 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5400 0 : if (real_onep (_q30))
5401 : {
5402 0 : switch (TREE_CODE (_q31))
5403 : {
5404 0 : case NEGATE_EXPR:
5405 0 : {
5406 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5407 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5408 : {
5409 0 : {
5410 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5411 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
5412 0 : if (res) return res;
5413 : }
5414 : }
5415 : break;
5416 : }
5417 : default:;
5418 : }
5419 : }
5420 : }
5421 : break;
5422 0 : case CFN_BUILT_IN_COPYSIGNF64:
5423 0 : if (call_expr_nargs (_p1) == 2)
5424 : {
5425 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5426 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5427 0 : if (real_onep (_q30))
5428 : {
5429 0 : switch (TREE_CODE (_q31))
5430 : {
5431 0 : case NEGATE_EXPR:
5432 0 : {
5433 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5434 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5435 : {
5436 0 : {
5437 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5438 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
5439 0 : if (res) return res;
5440 : }
5441 : }
5442 : break;
5443 : }
5444 : default:;
5445 : }
5446 : }
5447 : }
5448 : break;
5449 0 : case CFN_BUILT_IN_COPYSIGNF128X:
5450 0 : if (call_expr_nargs (_p1) == 2)
5451 : {
5452 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5453 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5454 0 : if (real_onep (_q30))
5455 : {
5456 0 : switch (TREE_CODE (_q31))
5457 : {
5458 0 : case NEGATE_EXPR:
5459 0 : {
5460 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5461 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5462 : {
5463 0 : {
5464 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5465 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5466 0 : if (res) return res;
5467 : }
5468 : }
5469 : break;
5470 : }
5471 : default:;
5472 : }
5473 : }
5474 : }
5475 : break;
5476 0 : case CFN_BUILT_IN_COPYSIGNF128:
5477 0 : if (call_expr_nargs (_p1) == 2)
5478 : {
5479 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5480 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5481 0 : if (real_onep (_q30))
5482 : {
5483 0 : switch (TREE_CODE (_q31))
5484 : {
5485 0 : case NEGATE_EXPR:
5486 0 : {
5487 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5488 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5489 : {
5490 0 : {
5491 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5492 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5493 0 : if (res) return res;
5494 : }
5495 : }
5496 : break;
5497 : }
5498 : default:;
5499 : }
5500 : }
5501 : }
5502 : break;
5503 0 : case CFN_BUILT_IN_COPYSIGNF32X:
5504 0 : if (call_expr_nargs (_p1) == 2)
5505 : {
5506 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5507 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5508 0 : if (real_onep (_q30))
5509 : {
5510 0 : switch (TREE_CODE (_q31))
5511 : {
5512 0 : case NEGATE_EXPR:
5513 0 : {
5514 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5515 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5516 : {
5517 0 : {
5518 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5519 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5520 0 : if (res) return res;
5521 : }
5522 : }
5523 : break;
5524 : }
5525 : default:;
5526 : }
5527 : }
5528 : }
5529 : break;
5530 0 : case CFN_BUILT_IN_COPYSIGNF64X:
5531 0 : if (call_expr_nargs (_p1) == 2)
5532 : {
5533 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5534 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5535 0 : if (real_onep (_q30))
5536 : {
5537 0 : switch (TREE_CODE (_q31))
5538 : {
5539 0 : case NEGATE_EXPR:
5540 0 : {
5541 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5542 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5543 : {
5544 0 : {
5545 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5546 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5547 0 : if (res) return res;
5548 : }
5549 : }
5550 : break;
5551 : }
5552 : default:;
5553 : }
5554 : }
5555 : }
5556 : break;
5557 18 : case CFN_BUILT_IN_COPYSIGN:
5558 18 : if (call_expr_nargs (_p1) == 2)
5559 : {
5560 18 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5561 18 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5562 18 : if (real_onep (_q30))
5563 : {
5564 14 : switch (TREE_CODE (_q31))
5565 : {
5566 0 : case NEGATE_EXPR:
5567 0 : {
5568 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5569 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5570 : {
5571 0 : {
5572 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5573 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
5574 0 : if (res) return res;
5575 : }
5576 : }
5577 : break;
5578 : }
5579 : default:;
5580 : }
5581 : }
5582 : }
5583 : break;
5584 14 : case CFN_BUILT_IN_COPYSIGNF:
5585 14 : if (call_expr_nargs (_p1) == 2)
5586 : {
5587 14 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5588 14 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5589 14 : if (real_onep (_q30))
5590 : {
5591 12 : switch (TREE_CODE (_q31))
5592 : {
5593 0 : case NEGATE_EXPR:
5594 0 : {
5595 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5596 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5597 : {
5598 0 : {
5599 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5600 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
5601 0 : if (res) return res;
5602 : }
5603 : }
5604 : break;
5605 : }
5606 : default:;
5607 : }
5608 : }
5609 : }
5610 : break;
5611 0 : case CFN_BUILT_IN_COPYSIGNL:
5612 0 : if (call_expr_nargs (_p1) == 2)
5613 : {
5614 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5615 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5616 0 : if (real_onep (_q30))
5617 : {
5618 0 : switch (TREE_CODE (_q31))
5619 : {
5620 0 : case NEGATE_EXPR:
5621 0 : {
5622 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5623 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5624 : {
5625 0 : {
5626 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5627 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
5628 0 : if (res) return res;
5629 : }
5630 : }
5631 : break;
5632 : }
5633 : default:;
5634 : }
5635 : }
5636 : }
5637 : break;
5638 0 : case CFN_COPYSIGN:
5639 0 : if (call_expr_nargs (_p1) == 2)
5640 : {
5641 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5642 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5643 0 : if (real_onep (_q30))
5644 : {
5645 0 : switch (TREE_CODE (_q31))
5646 : {
5647 0 : case NEGATE_EXPR:
5648 0 : {
5649 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5650 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5651 : {
5652 0 : {
5653 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5654 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
5655 0 : if (res) return res;
5656 : }
5657 : }
5658 : break;
5659 : }
5660 : default:;
5661 : }
5662 : }
5663 : }
5664 : break;
5665 : default:;
5666 : }
5667 : break;
5668 72578427 : default:;
5669 : }
5670 72578427 : if (integer_onep (_p1))
5671 : {
5672 3566457 : {
5673 3566457 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5674 3566457 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, MULT_EXPR);
5675 3566457 : if (res) return res;
5676 : }
5677 : }
5678 69011970 : switch (TREE_CODE (_p0))
5679 : {
5680 5860514 : case MULT_EXPR:
5681 5860514 : {
5682 5860514 : tree _q20 = TREE_OPERAND (_p0, 0);
5683 5860514 : tree _q21 = TREE_OPERAND (_p0, 1);
5684 5860514 : switch (TREE_CODE (_q21))
5685 : {
5686 1161103 : case INTEGER_CST:
5687 1161103 : {
5688 1161103 : switch (TREE_CODE (_p1))
5689 : {
5690 991630 : case INTEGER_CST:
5691 991630 : {
5692 991630 : {
5693 991630 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5694 991630 : {
5695 991630 : wi::overflow_type overflow;
5696 991630 : wide_int mul = wi::mul (wi::to_wide (captures[1]), wi::to_wide (captures[2]),
5697 1983260 : TYPE_SIGN (type), &overflow);
5698 991630 : if (!overflow || TYPE_OVERFLOW_WRAPS (type)
5699 : )
5700 : {
5701 991600 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1424;
5702 991600 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1424;
5703 991600 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1424;
5704 991600 : {
5705 991600 : tree res_op0;
5706 991600 : res_op0 = captures[0];
5707 991600 : tree res_op1;
5708 991600 : res_op1 = wide_int_to_tree (type, mul);
5709 991600 : tree _r;
5710 991600 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5711 991600 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 973, __FILE__, __LINE__, true);
5712 991600 : return _r;
5713 : }
5714 30 : next_after_fail1424:;
5715 : }
5716 991600 : }
5717 : }
5718 30 : break;
5719 : }
5720 : default:;
5721 : }
5722 : break;
5723 : }
5724 : default:;
5725 : }
5726 : break;
5727 : }
5728 7646000 : case PLUS_EXPR:
5729 7646000 : {
5730 7646000 : tree _q20 = TREE_OPERAND (_p0, 0);
5731 7646000 : tree _q21 = TREE_OPERAND (_p0, 1);
5732 7646000 : switch (TREE_CODE (_q20))
5733 : {
5734 1145950 : case MULT_EXPR:
5735 1145950 : {
5736 1145950 : tree _q30 = TREE_OPERAND (_q20, 0);
5737 1145950 : tree _q31 = TREE_OPERAND (_q20, 1);
5738 1145950 : switch (TREE_CODE (_q31))
5739 : {
5740 301435 : case INTEGER_CST:
5741 301435 : {
5742 301435 : switch (TREE_CODE (_q21))
5743 : {
5744 35439 : case INTEGER_CST:
5745 35439 : {
5746 35439 : switch (TREE_CODE (_p1))
5747 : {
5748 11991 : case INTEGER_CST:
5749 11991 : {
5750 11991 : {
5751 11991 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
5752 11991 : {
5753 11991 : bool overflowed = true;
5754 11991 : wi::overflow_type ovf1, ovf2;
5755 11991 : wide_int mul = wi::mul (wi::to_wide (captures[3]), wi::to_wide (captures[5]),
5756 23982 : TYPE_SIGN (type), &ovf1);
5757 11991 : wide_int add = wi::mul (wi::to_wide (captures[4]), wi::to_wide (captures[5]),
5758 23982 : TYPE_SIGN (type), &ovf2);
5759 11991 : if (TYPE_OVERFLOW_UNDEFINED (type))
5760 : {
5761 : }
5762 : else
5763 4000 : overflowed = false;
5764 4000 : if (!overflowed
5765 : )
5766 : {
5767 4000 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1425;
5768 4000 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1425;
5769 4000 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1425;
5770 4000 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1425;
5771 4000 : {
5772 4000 : tree res_op0;
5773 4000 : {
5774 4000 : tree _o1[2], _r1;
5775 4000 : _o1[0] = captures[2];
5776 4000 : _o1[1] = wide_int_to_tree (type, mul);
5777 4000 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5778 4000 : res_op0 = _r1;
5779 : }
5780 4000 : tree res_op1;
5781 4000 : res_op1 = wide_int_to_tree (type, add);
5782 4000 : tree _r;
5783 4000 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
5784 4000 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 974, __FILE__, __LINE__, true);
5785 4000 : return _r;
5786 : }
5787 7991 : next_after_fail1425:;
5788 : }
5789 11991 : }
5790 : }
5791 7991 : break;
5792 : }
5793 : default:;
5794 : }
5795 : break;
5796 : }
5797 : default:;
5798 : }
5799 : break;
5800 : }
5801 : default:;
5802 : }
5803 : break;
5804 : }
5805 : default:;
5806 : }
5807 : break;
5808 : }
5809 77981 : case TRUNC_DIV_EXPR:
5810 77981 : {
5811 77981 : tree _q20 = TREE_OPERAND (_p0, 0);
5812 77981 : tree _q21 = TREE_OPERAND (_p0, 1);
5813 77981 : if (integer_pow2p (_q21))
5814 : {
5815 56143 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5816 : {
5817 37131 : {
5818 37131 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5819 37131 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
5820 : )
5821 : {
5822 37067 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1426;
5823 37067 : {
5824 37067 : tree res_op0;
5825 37067 : res_op0 = captures[0];
5826 37067 : tree res_op1;
5827 37067 : {
5828 37067 : tree _o1[1], _r1;
5829 37067 : _o1[0] = captures[1];
5830 37067 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
5831 37067 : res_op1 = _r1;
5832 : }
5833 37067 : tree _r;
5834 37067 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
5835 37067 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
5836 37067 : return _r;
5837 : }
5838 0 : next_after_fail1426:;
5839 : }
5840 : }
5841 : }
5842 : }
5843 : break;
5844 : }
5845 260 : case ABS_EXPR:
5846 260 : {
5847 260 : tree _q20 = TREE_OPERAND (_p0, 0);
5848 260 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5849 : {
5850 2 : {
5851 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
5852 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1427;
5853 2 : {
5854 2 : if (! tree_invariant_p (captures[1])) goto next_after_fail1427;
5855 0 : tree res_op0;
5856 0 : res_op0 = unshare_expr (captures[1]);
5857 0 : tree res_op1;
5858 0 : res_op1 = captures[1];
5859 0 : tree _r;
5860 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5861 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 976, __FILE__, __LINE__, true);
5862 0 : return _r;
5863 : }
5864 2 : next_after_fail1427:;
5865 : }
5866 : }
5867 : break;
5868 : }
5869 0 : case ABSU_EXPR:
5870 0 : {
5871 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5872 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5873 : {
5874 0 : {
5875 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20 };
5876 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1428;
5877 0 : {
5878 0 : tree res_op0;
5879 0 : {
5880 0 : tree _o1[1], _r1;
5881 0 : _o1[0] = captures[1];
5882 0 : if (TREE_TYPE (_o1[0]) != type)
5883 : {
5884 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
5885 : }
5886 : else
5887 : _r1 = _o1[0];
5888 0 : captures[2] = _r1;
5889 : }
5890 0 : res_op0 = unshare_expr (captures[2]);
5891 0 : tree res_op1;
5892 0 : res_op1 = captures[2];
5893 0 : tree _r;
5894 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5895 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
5896 0 : return _r;
5897 : }
5898 0 : next_after_fail1428:;
5899 : }
5900 : }
5901 : break;
5902 : }
5903 2514167 : case CALL_EXPR:
5904 2514167 : switch (get_call_combined_fn (_p0))
5905 : {
5906 1 : case CFN_BUILT_IN_COPYSIGNF16:
5907 1 : if (call_expr_nargs (_p0) == 2)
5908 : {
5909 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5910 1 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5911 1 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5912 : {
5913 0 : {
5914 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5915 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
5916 0 : if (res) return res;
5917 : }
5918 : }
5919 : }
5920 : break;
5921 0 : case CFN_BUILT_IN_COPYSIGNF32:
5922 0 : if (call_expr_nargs (_p0) == 2)
5923 : {
5924 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5925 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5926 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5927 : {
5928 0 : {
5929 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5930 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
5931 0 : if (res) return res;
5932 : }
5933 : }
5934 : }
5935 : break;
5936 0 : case CFN_BUILT_IN_COPYSIGNF64:
5937 0 : if (call_expr_nargs (_p0) == 2)
5938 : {
5939 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5940 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5941 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5942 : {
5943 0 : {
5944 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5945 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
5946 0 : if (res) return res;
5947 : }
5948 : }
5949 : }
5950 : break;
5951 0 : case CFN_BUILT_IN_COPYSIGNF128X:
5952 0 : if (call_expr_nargs (_p0) == 2)
5953 : {
5954 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5955 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5956 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5957 : {
5958 0 : {
5959 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5960 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5961 0 : if (res) return res;
5962 : }
5963 : }
5964 : }
5965 : break;
5966 8 : case CFN_BUILT_IN_COPYSIGNF128:
5967 8 : if (call_expr_nargs (_p0) == 2)
5968 : {
5969 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5970 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5971 8 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5972 : {
5973 0 : {
5974 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5975 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5976 0 : if (res) return res;
5977 : }
5978 : }
5979 : }
5980 : break;
5981 0 : case CFN_BUILT_IN_COPYSIGNF32X:
5982 0 : if (call_expr_nargs (_p0) == 2)
5983 : {
5984 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5985 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5986 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5987 : {
5988 0 : {
5989 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5990 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5991 0 : if (res) return res;
5992 : }
5993 : }
5994 : }
5995 : break;
5996 0 : case CFN_BUILT_IN_COPYSIGNF64X:
5997 0 : if (call_expr_nargs (_p0) == 2)
5998 : {
5999 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6000 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6001 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6002 : {
6003 0 : {
6004 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6005 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
6006 0 : if (res) return res;
6007 : }
6008 : }
6009 : }
6010 : break;
6011 18 : case CFN_BUILT_IN_COPYSIGN:
6012 18 : if (call_expr_nargs (_p0) == 2)
6013 : {
6014 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6015 18 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6016 18 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6017 : {
6018 0 : {
6019 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6020 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
6021 0 : if (res) return res;
6022 : }
6023 : }
6024 : }
6025 : break;
6026 36 : case CFN_BUILT_IN_COPYSIGNF:
6027 36 : if (call_expr_nargs (_p0) == 2)
6028 : {
6029 36 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6030 36 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6031 36 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6032 : {
6033 0 : {
6034 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6035 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
6036 0 : if (res) return res;
6037 : }
6038 : }
6039 : }
6040 : break;
6041 8 : case CFN_BUILT_IN_COPYSIGNL:
6042 8 : if (call_expr_nargs (_p0) == 2)
6043 : {
6044 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6045 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6046 8 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6047 : {
6048 0 : {
6049 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6050 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
6051 0 : if (res) return res;
6052 : }
6053 : }
6054 : }
6055 : break;
6056 0 : case CFN_COPYSIGN:
6057 0 : if (call_expr_nargs (_p0) == 2)
6058 : {
6059 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6060 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6061 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6062 : {
6063 0 : {
6064 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6065 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
6066 0 : if (res) return res;
6067 : }
6068 : }
6069 : }
6070 : break;
6071 : default:;
6072 : }
6073 : break;
6074 67979303 : default:;
6075 : }
6076 67979303 : switch (TREE_CODE (_p1))
6077 : {
6078 7384248 : CASE_CONVERT:
6079 7384248 : {
6080 7384248 : tree _q30 = TREE_OPERAND (_p1, 0);
6081 7384248 : switch (TREE_CODE (_q30))
6082 : {
6083 0 : case LSHIFT_EXPR:
6084 0 : {
6085 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6086 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6087 0 : if (integer_onep (_q40))
6088 : {
6089 0 : {
6090 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q41 };
6091 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6092 0 : if (res) return res;
6093 : }
6094 : }
6095 : break;
6096 : }
6097 : default:;
6098 : }
6099 : break;
6100 : }
6101 67979303 : default:;
6102 : }
6103 67979303 : switch (TREE_CODE (_p0))
6104 : {
6105 32367917 : CASE_CONVERT:
6106 32367917 : {
6107 32367917 : tree _q20 = TREE_OPERAND (_p0, 0);
6108 32367917 : switch (TREE_CODE (_q20))
6109 : {
6110 20 : case LSHIFT_EXPR:
6111 20 : {
6112 20 : tree _q30 = TREE_OPERAND (_q20, 0);
6113 20 : tree _q31 = TREE_OPERAND (_q20, 1);
6114 20 : if (integer_onep (_q30))
6115 : {
6116 1 : {
6117 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _q31 };
6118 1 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6119 1 : if (res) return res;
6120 : }
6121 : }
6122 : break;
6123 : }
6124 1 : case EQ_EXPR:
6125 1 : {
6126 1 : tree _q30 = TREE_OPERAND (_q20, 0);
6127 1 : tree _q31 = TREE_OPERAND (_q20, 1);
6128 1 : if (integer_zerop (_q31))
6129 : {
6130 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6131 : {
6132 0 : {
6133 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
6134 0 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
6135 0 : if (res) return res;
6136 : }
6137 : }
6138 : }
6139 : break;
6140 : }
6141 : default:;
6142 : }
6143 : break;
6144 : }
6145 67979303 : default:;
6146 : }
6147 67979303 : switch (TREE_CODE (_p1))
6148 : {
6149 826 : case LSHIFT_EXPR:
6150 826 : {
6151 826 : tree _q30 = TREE_OPERAND (_p1, 0);
6152 826 : tree _q31 = TREE_OPERAND (_p1, 1);
6153 826 : if (integer_onep (_q30))
6154 : {
6155 147 : {
6156 147 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
6157 147 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6158 147 : if (res) return res;
6159 : }
6160 : }
6161 : break;
6162 : }
6163 67979156 : default:;
6164 : }
6165 67979156 : switch (TREE_CODE (_p0))
6166 : {
6167 4229 : case LSHIFT_EXPR:
6168 4229 : {
6169 4229 : tree _q20 = TREE_OPERAND (_p0, 0);
6170 4229 : tree _q21 = TREE_OPERAND (_p0, 1);
6171 4229 : if (integer_onep (_q20))
6172 : {
6173 4007 : {
6174 4007 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
6175 4007 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6176 4007 : if (res) return res;
6177 : }
6178 : }
6179 : break;
6180 : }
6181 67975149 : default:;
6182 : }
6183 67975149 : switch (TREE_CODE (_p1))
6184 : {
6185 7383825 : CASE_CONVERT:
6186 7383825 : {
6187 7383825 : tree _q30 = TREE_OPERAND (_p1, 0);
6188 7383825 : switch (TREE_CODE (_q30))
6189 : {
6190 0 : case EQ_EXPR:
6191 0 : {
6192 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6193 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6194 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6195 : {
6196 0 : if (integer_zerop (_q41))
6197 : {
6198 0 : {
6199 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6200 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
6201 0 : if (res) return res;
6202 : }
6203 : }
6204 : }
6205 : break;
6206 : }
6207 : default:;
6208 : }
6209 : break;
6210 : }
6211 0 : case EQ_EXPR:
6212 0 : {
6213 0 : tree _q30 = TREE_OPERAND (_p1, 0);
6214 0 : tree _q31 = TREE_OPERAND (_p1, 1);
6215 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6216 : {
6217 0 : if (integer_zerop (_q31))
6218 : {
6219 0 : {
6220 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6221 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
6222 0 : if (res) return res;
6223 : }
6224 : }
6225 : }
6226 : break;
6227 : }
6228 67975149 : default:;
6229 : }
6230 67975149 : switch (TREE_CODE (_p0))
6231 : {
6232 183 : case EQ_EXPR:
6233 183 : {
6234 183 : tree _q20 = TREE_OPERAND (_p0, 0);
6235 183 : tree _q21 = TREE_OPERAND (_p0, 1);
6236 183 : if (integer_zerop (_q21))
6237 : {
6238 59 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6239 : {
6240 3 : {
6241 3 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6242 3 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
6243 3 : if (res) return res;
6244 : }
6245 : }
6246 : }
6247 : break;
6248 : }
6249 67975146 : default:;
6250 : }
6251 67975146 : switch (TREE_CODE (_p1))
6252 : {
6253 0 : case VEC_COND_EXPR:
6254 0 : {
6255 0 : tree _q30 = TREE_OPERAND (_p1, 0);
6256 0 : tree _q31 = TREE_OPERAND (_p1, 1);
6257 0 : tree _q32 = TREE_OPERAND (_p1, 2);
6258 0 : switch (TREE_CODE (_q30))
6259 : {
6260 0 : case EQ_EXPR:
6261 0 : {
6262 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6263 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6264 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6265 : {
6266 0 : if (integer_zerop (_q41))
6267 : {
6268 0 : if (integer_zerop (_q32))
6269 : {
6270 0 : {
6271 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
6272 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1429;
6273 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1429;
6274 0 : {
6275 0 : tree _r;
6276 0 : _r = build_zero_cst (type);
6277 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
6278 0 : return _r;
6279 : }
6280 0 : next_after_fail1429:;
6281 : }
6282 : }
6283 : }
6284 : }
6285 : break;
6286 : }
6287 : default:;
6288 : }
6289 : break;
6290 : }
6291 67975146 : default:;
6292 : }
6293 67975146 : switch (TREE_CODE (_p0))
6294 : {
6295 37 : case VEC_COND_EXPR:
6296 37 : {
6297 37 : tree _q20 = TREE_OPERAND (_p0, 0);
6298 37 : tree _q21 = TREE_OPERAND (_p0, 1);
6299 37 : tree _q22 = TREE_OPERAND (_p0, 2);
6300 37 : switch (TREE_CODE (_q20))
6301 : {
6302 1 : case EQ_EXPR:
6303 1 : {
6304 1 : tree _q30 = TREE_OPERAND (_q20, 0);
6305 1 : tree _q31 = TREE_OPERAND (_q20, 1);
6306 1 : if (integer_zerop (_q31))
6307 : {
6308 1 : if (integer_zerop (_q22))
6309 : {
6310 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6311 : {
6312 1 : {
6313 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
6314 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1430;
6315 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1430;
6316 1 : {
6317 1 : tree _r;
6318 1 : _r = build_zero_cst (type);
6319 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
6320 1 : return _r;
6321 : }
6322 0 : next_after_fail1430:;
6323 : }
6324 : }
6325 : }
6326 : }
6327 : break;
6328 : }
6329 0 : case NE_EXPR:
6330 0 : {
6331 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6332 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6333 0 : if (integer_zerop (_q31))
6334 : {
6335 0 : if (integer_zerop (_q21))
6336 : {
6337 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6338 : {
6339 0 : {
6340 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
6341 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1431;
6342 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1431;
6343 0 : {
6344 0 : tree _r;
6345 0 : _r = build_zero_cst (type);
6346 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 979, __FILE__, __LINE__, true);
6347 0 : return _r;
6348 : }
6349 0 : next_after_fail1431:;
6350 : }
6351 : }
6352 : }
6353 : }
6354 : break;
6355 : }
6356 : default:;
6357 : }
6358 : break;
6359 : }
6360 67975145 : default:;
6361 : }
6362 67975145 : switch (TREE_CODE (_p1))
6363 : {
6364 0 : case VEC_COND_EXPR:
6365 0 : {
6366 0 : tree _q30 = TREE_OPERAND (_p1, 0);
6367 0 : tree _q31 = TREE_OPERAND (_p1, 1);
6368 0 : tree _q32 = TREE_OPERAND (_p1, 2);
6369 0 : switch (TREE_CODE (_q30))
6370 : {
6371 0 : case NE_EXPR:
6372 0 : {
6373 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6374 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6375 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6376 : {
6377 0 : if (integer_zerop (_q41))
6378 : {
6379 0 : if (integer_zerop (_q31))
6380 : {
6381 0 : {
6382 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
6383 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1432;
6384 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1432;
6385 0 : {
6386 0 : tree _r;
6387 0 : _r = build_zero_cst (type);
6388 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 979, __FILE__, __LINE__, true);
6389 0 : return _r;
6390 : }
6391 0 : next_after_fail1432:;
6392 : }
6393 : }
6394 : }
6395 : }
6396 : break;
6397 : }
6398 : default:;
6399 : }
6400 : break;
6401 : }
6402 67975145 : default:;
6403 : }
6404 67975145 : switch (TREE_CODE (_p0))
6405 : {
6406 772634 : case RDIV_EXPR:
6407 772634 : {
6408 772634 : tree _q20 = TREE_OPERAND (_p0, 0);
6409 772634 : tree _q21 = TREE_OPERAND (_p0, 1);
6410 772634 : switch (TREE_CODE (_q20))
6411 : {
6412 58237 : case REAL_CST:
6413 58237 : {
6414 58237 : switch (TREE_CODE (_p1))
6415 : {
6416 1 : case REAL_CST:
6417 1 : {
6418 1 : {
6419 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
6420 1 : if (flag_associative_math
6421 1 : && single_use (captures[0])
6422 : )
6423 : {
6424 1 : {
6425 1 : tree tem = const_binop (MULT_EXPR, type, captures[1], captures[3]);
6426 1 : if (tem
6427 : )
6428 : {
6429 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1433;
6430 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1433;
6431 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1433;
6432 1 : {
6433 1 : tree res_op0;
6434 1 : res_op0 = tem;
6435 1 : tree res_op1;
6436 1 : res_op1 = captures[2];
6437 1 : tree _r;
6438 1 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
6439 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 980, __FILE__, __LINE__, true);
6440 1 : return _r;
6441 : }
6442 0 : next_after_fail1433:;
6443 : }
6444 : }
6445 : }
6446 : }
6447 0 : break;
6448 : }
6449 : default:;
6450 : }
6451 : break;
6452 : }
6453 : default:;
6454 : }
6455 : break;
6456 : }
6457 67975144 : default:;
6458 : }
6459 67975144 : {
6460 67975144 : tree _p0_pops[1];
6461 67975144 : if (tree_nop_convert (_p0, _p0_pops))
6462 : {
6463 23397126 : tree _q20 = _p0_pops[0];
6464 23397126 : switch (TREE_CODE (_q20))
6465 : {
6466 4 : case BIT_IOR_EXPR:
6467 4 : {
6468 4 : tree _q30 = TREE_OPERAND (_q20, 0);
6469 4 : tree _q31 = TREE_OPERAND (_q20, 1);
6470 4 : switch (TREE_CODE (_q30))
6471 : {
6472 4 : case NEGATE_EXPR:
6473 4 : {
6474 4 : tree _q40 = TREE_OPERAND (_q30, 0);
6475 4 : switch (TREE_CODE (_q40))
6476 : {
6477 0 : CASE_CONVERT:
6478 0 : {
6479 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6480 0 : switch (TREE_CODE (_q50))
6481 : {
6482 0 : case LT_EXPR:
6483 0 : {
6484 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6485 0 : tree _q61 = TREE_OPERAND (_q50, 1);
6486 0 : if (integer_zerop (_q61))
6487 : {
6488 0 : if (integer_onep (_q31))
6489 : {
6490 0 : {
6491 0 : tree _p1_pops[1];
6492 0 : if (tree_nop_convert (_p1, _p1_pops))
6493 : {
6494 0 : tree _q100 = _p1_pops[0];
6495 0 : if ((_q100 == _q60 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q60, 0) && types_match (_q100, _q60)))
6496 : {
6497 0 : {
6498 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6499 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
6500 0 : if (res) return res;
6501 : }
6502 : }
6503 : }
6504 : }
6505 0 : if ((_p1 == _q60 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q60, 0) && types_match (_p1, _q60)))
6506 : {
6507 0 : {
6508 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6509 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
6510 0 : if (res) return res;
6511 : }
6512 : }
6513 : }
6514 : }
6515 : break;
6516 : }
6517 : default:;
6518 : }
6519 : break;
6520 : }
6521 4 : case LT_EXPR:
6522 4 : {
6523 4 : tree _q50 = TREE_OPERAND (_q40, 0);
6524 4 : tree _q51 = TREE_OPERAND (_q40, 1);
6525 4 : if (integer_zerop (_q51))
6526 : {
6527 4 : if (integer_onep (_q31))
6528 : {
6529 4 : {
6530 4 : tree _p1_pops[1];
6531 4 : if (tree_nop_convert (_p1, _p1_pops))
6532 : {
6533 4 : tree _q90 = _p1_pops[0];
6534 4 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
6535 : {
6536 4 : {
6537 4 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
6538 4 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
6539 4 : if (res) return res;
6540 : }
6541 : }
6542 : }
6543 : }
6544 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
6545 : {
6546 0 : {
6547 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
6548 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
6549 0 : if (res) return res;
6550 : }
6551 : }
6552 : }
6553 : }
6554 : break;
6555 : }
6556 : default:;
6557 : }
6558 : break;
6559 : }
6560 0 : default:;
6561 : }
6562 0 : {
6563 0 : tree _q30_pops[1];
6564 0 : if (tree_nop_convert (_q30, _q30_pops))
6565 : {
6566 0 : tree _q40 = _q30_pops[0];
6567 0 : switch (TREE_CODE (_q40))
6568 : {
6569 0 : case NEGATE_EXPR:
6570 0 : {
6571 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6572 0 : switch (TREE_CODE (_q50))
6573 : {
6574 0 : CASE_CONVERT:
6575 0 : {
6576 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6577 0 : switch (TREE_CODE (_q60))
6578 : {
6579 0 : case LT_EXPR:
6580 0 : {
6581 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6582 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6583 0 : if (integer_zerop (_q71))
6584 : {
6585 0 : if (integer_onep (_q31))
6586 : {
6587 0 : {
6588 0 : tree _p1_pops[1];
6589 0 : if (tree_nop_convert (_p1, _p1_pops))
6590 : {
6591 0 : tree _q110 = _p1_pops[0];
6592 0 : if ((_q110 == _q70 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q70, 0) && types_match (_q110, _q70)))
6593 : {
6594 0 : {
6595 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q70 };
6596 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
6597 0 : if (res) return res;
6598 : }
6599 : }
6600 : }
6601 : }
6602 0 : if ((_p1 == _q70 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q70, 0) && types_match (_p1, _q70)))
6603 : {
6604 0 : {
6605 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q70 };
6606 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
6607 0 : if (res) return res;
6608 : }
6609 : }
6610 : }
6611 : }
6612 : break;
6613 : }
6614 : default:;
6615 : }
6616 : break;
6617 : }
6618 0 : case LT_EXPR:
6619 0 : {
6620 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6621 0 : tree _q61 = TREE_OPERAND (_q50, 1);
6622 0 : if (integer_zerop (_q61))
6623 : {
6624 0 : if (integer_onep (_q31))
6625 : {
6626 0 : {
6627 0 : tree _p1_pops[1];
6628 0 : if (tree_nop_convert (_p1, _p1_pops))
6629 : {
6630 0 : tree _q100 = _p1_pops[0];
6631 0 : if ((_q100 == _q60 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q60, 0) && types_match (_q100, _q60)))
6632 : {
6633 0 : {
6634 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6635 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
6636 0 : if (res) return res;
6637 : }
6638 : }
6639 : }
6640 : }
6641 0 : if ((_p1 == _q60 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q60, 0) && types_match (_p1, _q60)))
6642 : {
6643 0 : {
6644 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6645 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
6646 0 : if (res) return res;
6647 : }
6648 : }
6649 : }
6650 : }
6651 : break;
6652 : }
6653 : default:;
6654 : }
6655 : break;
6656 : }
6657 : default:;
6658 : }
6659 : }
6660 : }
6661 0 : break;
6662 : }
6663 23397122 : default:;
6664 : }
6665 23397122 : switch (TREE_CODE (_p1))
6666 : {
6667 0 : case BIT_IOR_EXPR:
6668 0 : {
6669 0 : tree _q40 = TREE_OPERAND (_p1, 0);
6670 0 : tree _q41 = TREE_OPERAND (_p1, 1);
6671 0 : switch (TREE_CODE (_q40))
6672 : {
6673 0 : case NEGATE_EXPR:
6674 0 : {
6675 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6676 0 : switch (TREE_CODE (_q50))
6677 : {
6678 0 : CASE_CONVERT:
6679 0 : {
6680 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6681 0 : switch (TREE_CODE (_q60))
6682 : {
6683 0 : case LT_EXPR:
6684 0 : {
6685 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6686 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6687 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6688 : {
6689 0 : if (integer_zerop (_q71))
6690 : {
6691 0 : if (integer_onep (_q41))
6692 : {
6693 0 : {
6694 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6695 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
6696 0 : if (res) return res;
6697 : }
6698 : }
6699 : }
6700 : }
6701 : break;
6702 : }
6703 : default:;
6704 : }
6705 : break;
6706 : }
6707 0 : case LT_EXPR:
6708 0 : {
6709 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6710 0 : tree _q61 = TREE_OPERAND (_q50, 1);
6711 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6712 : {
6713 0 : if (integer_zerop (_q61))
6714 : {
6715 0 : if (integer_onep (_q41))
6716 : {
6717 0 : {
6718 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6719 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
6720 0 : if (res) return res;
6721 : }
6722 : }
6723 : }
6724 : }
6725 : break;
6726 : }
6727 : default:;
6728 : }
6729 : break;
6730 : }
6731 0 : default:;
6732 : }
6733 0 : {
6734 0 : tree _q40_pops[1];
6735 0 : if (tree_nop_convert (_q40, _q40_pops))
6736 : {
6737 0 : tree _q50 = _q40_pops[0];
6738 0 : switch (TREE_CODE (_q50))
6739 : {
6740 0 : case NEGATE_EXPR:
6741 0 : {
6742 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6743 0 : switch (TREE_CODE (_q60))
6744 : {
6745 0 : CASE_CONVERT:
6746 0 : {
6747 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6748 0 : switch (TREE_CODE (_q70))
6749 : {
6750 0 : case LT_EXPR:
6751 0 : {
6752 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6753 0 : tree _q81 = TREE_OPERAND (_q70, 1);
6754 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
6755 : {
6756 0 : if (integer_zerop (_q81))
6757 : {
6758 0 : if (integer_onep (_q41))
6759 : {
6760 0 : {
6761 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6762 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
6763 0 : if (res) return res;
6764 : }
6765 : }
6766 : }
6767 : }
6768 : break;
6769 : }
6770 : default:;
6771 : }
6772 : break;
6773 : }
6774 0 : case LT_EXPR:
6775 0 : {
6776 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6777 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6778 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6779 : {
6780 0 : if (integer_zerop (_q71))
6781 : {
6782 0 : if (integer_onep (_q41))
6783 : {
6784 0 : {
6785 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6786 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
6787 0 : if (res) return res;
6788 : }
6789 : }
6790 : }
6791 : }
6792 : break;
6793 : }
6794 : default:;
6795 : }
6796 : break;
6797 : }
6798 : default:;
6799 : }
6800 : }
6801 : }
6802 0 : break;
6803 : }
6804 23397122 : default:;
6805 : }
6806 23397122 : {
6807 23397122 : tree _p1_pops[1];
6808 23397122 : if (tree_nop_convert (_p1, _p1_pops))
6809 : {
6810 2503921 : tree _q40 = _p1_pops[0];
6811 2503921 : switch (TREE_CODE (_q40))
6812 : {
6813 0 : case BIT_IOR_EXPR:
6814 0 : {
6815 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6816 0 : tree _q51 = TREE_OPERAND (_q40, 1);
6817 0 : switch (TREE_CODE (_q50))
6818 : {
6819 0 : case NEGATE_EXPR:
6820 0 : {
6821 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6822 0 : switch (TREE_CODE (_q60))
6823 : {
6824 0 : CASE_CONVERT:
6825 0 : {
6826 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6827 0 : switch (TREE_CODE (_q70))
6828 : {
6829 0 : case LT_EXPR:
6830 0 : {
6831 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6832 0 : tree _q81 = TREE_OPERAND (_q70, 1);
6833 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
6834 : {
6835 0 : if (integer_zerop (_q81))
6836 : {
6837 0 : if (integer_onep (_q51))
6838 : {
6839 0 : {
6840 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6841 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
6842 0 : if (res) return res;
6843 : }
6844 : }
6845 : }
6846 : }
6847 : break;
6848 : }
6849 : default:;
6850 : }
6851 : break;
6852 : }
6853 0 : case LT_EXPR:
6854 0 : {
6855 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6856 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6857 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6858 : {
6859 0 : if (integer_zerop (_q71))
6860 : {
6861 0 : if (integer_onep (_q51))
6862 : {
6863 0 : {
6864 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6865 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
6866 0 : if (res) return res;
6867 : }
6868 : }
6869 : }
6870 : }
6871 : break;
6872 : }
6873 : default:;
6874 : }
6875 : break;
6876 : }
6877 0 : default:;
6878 : }
6879 0 : {
6880 0 : tree _q50_pops[1];
6881 0 : if (tree_nop_convert (_q50, _q50_pops))
6882 : {
6883 0 : tree _q60 = _q50_pops[0];
6884 0 : switch (TREE_CODE (_q60))
6885 : {
6886 0 : case NEGATE_EXPR:
6887 0 : {
6888 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6889 0 : switch (TREE_CODE (_q70))
6890 : {
6891 0 : CASE_CONVERT:
6892 0 : {
6893 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6894 0 : switch (TREE_CODE (_q80))
6895 : {
6896 0 : case LT_EXPR:
6897 0 : {
6898 0 : tree _q90 = TREE_OPERAND (_q80, 0);
6899 0 : tree _q91 = TREE_OPERAND (_q80, 1);
6900 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
6901 : {
6902 0 : if (integer_zerop (_q91))
6903 : {
6904 0 : if (integer_onep (_q51))
6905 : {
6906 0 : {
6907 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6908 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
6909 0 : if (res) return res;
6910 : }
6911 : }
6912 : }
6913 : }
6914 : break;
6915 : }
6916 : default:;
6917 : }
6918 : break;
6919 : }
6920 0 : case LT_EXPR:
6921 0 : {
6922 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6923 0 : tree _q81 = TREE_OPERAND (_q70, 1);
6924 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
6925 : {
6926 0 : if (integer_zerop (_q81))
6927 : {
6928 0 : if (integer_onep (_q51))
6929 : {
6930 0 : {
6931 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6932 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
6933 0 : if (res) return res;
6934 : }
6935 : }
6936 : }
6937 : }
6938 : break;
6939 : }
6940 : default:;
6941 : }
6942 : break;
6943 : }
6944 : default:;
6945 : }
6946 : }
6947 : }
6948 0 : break;
6949 : }
6950 : default:;
6951 : }
6952 : }
6953 : }
6954 : }
6955 : }
6956 67975140 : {
6957 67975140 : tree _p1_pops[1];
6958 67975140 : if (tree_nop_convert (_p1, _p1_pops))
6959 : {
6960 7287473 : tree _q30 = _p1_pops[0];
6961 7287473 : switch (TREE_CODE (_q30))
6962 : {
6963 0 : case BIT_IOR_EXPR:
6964 0 : {
6965 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6966 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6967 0 : switch (TREE_CODE (_q40))
6968 : {
6969 0 : case NEGATE_EXPR:
6970 0 : {
6971 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6972 0 : switch (TREE_CODE (_q50))
6973 : {
6974 0 : CASE_CONVERT:
6975 0 : {
6976 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6977 0 : switch (TREE_CODE (_q60))
6978 : {
6979 0 : case LT_EXPR:
6980 0 : {
6981 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6982 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6983 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
6984 : {
6985 0 : if (integer_zerop (_q71))
6986 : {
6987 0 : if (integer_onep (_q41))
6988 : {
6989 0 : {
6990 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6991 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
6992 0 : if (res) return res;
6993 : }
6994 : }
6995 : }
6996 : }
6997 : break;
6998 : }
6999 : default:;
7000 : }
7001 : break;
7002 : }
7003 : default:;
7004 : }
7005 : break;
7006 : }
7007 0 : default:;
7008 : }
7009 0 : {
7010 0 : tree _q40_pops[1];
7011 0 : if (tree_nop_convert (_q40, _q40_pops))
7012 : {
7013 0 : tree _q50 = _q40_pops[0];
7014 0 : switch (TREE_CODE (_q50))
7015 : {
7016 0 : case NEGATE_EXPR:
7017 0 : {
7018 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7019 0 : switch (TREE_CODE (_q60))
7020 : {
7021 0 : CASE_CONVERT:
7022 0 : {
7023 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7024 0 : switch (TREE_CODE (_q70))
7025 : {
7026 0 : case LT_EXPR:
7027 0 : {
7028 0 : tree _q80 = TREE_OPERAND (_q70, 0);
7029 0 : tree _q81 = TREE_OPERAND (_q70, 1);
7030 0 : if ((_q80 == _p0 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _p0, 0) && types_match (_q80, _p0)))
7031 : {
7032 0 : if (integer_zerop (_q81))
7033 : {
7034 0 : if (integer_onep (_q41))
7035 : {
7036 0 : {
7037 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7038 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
7039 0 : if (res) return res;
7040 : }
7041 : }
7042 : }
7043 : }
7044 : break;
7045 : }
7046 : default:;
7047 : }
7048 : break;
7049 : }
7050 : default:;
7051 : }
7052 : break;
7053 : }
7054 : default:;
7055 : }
7056 : }
7057 : }
7058 0 : break;
7059 : }
7060 : default:;
7061 : }
7062 : }
7063 : }
7064 67975140 : switch (TREE_CODE (_p0))
7065 : {
7066 299 : case BIT_IOR_EXPR:
7067 299 : {
7068 299 : tree _q20 = TREE_OPERAND (_p0, 0);
7069 299 : tree _q21 = TREE_OPERAND (_p0, 1);
7070 299 : switch (TREE_CODE (_q20))
7071 : {
7072 1 : case NEGATE_EXPR:
7073 1 : {
7074 1 : tree _q30 = TREE_OPERAND (_q20, 0);
7075 1 : switch (TREE_CODE (_q30))
7076 : {
7077 0 : CASE_CONVERT:
7078 0 : {
7079 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7080 0 : switch (TREE_CODE (_q40))
7081 : {
7082 0 : case LT_EXPR:
7083 0 : {
7084 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7085 0 : tree _q51 = TREE_OPERAND (_q40, 1);
7086 0 : if (integer_zerop (_q51))
7087 : {
7088 0 : if (integer_onep (_q21))
7089 : {
7090 0 : {
7091 0 : tree _p1_pops[1];
7092 0 : if (tree_nop_convert (_p1, _p1_pops))
7093 : {
7094 0 : tree _q90 = _p1_pops[0];
7095 0 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
7096 : {
7097 0 : {
7098 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7099 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
7100 0 : if (res) return res;
7101 : }
7102 : }
7103 : }
7104 : }
7105 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
7106 : {
7107 0 : {
7108 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7109 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
7110 0 : if (res) return res;
7111 : }
7112 : }
7113 : }
7114 : }
7115 : break;
7116 : }
7117 : default:;
7118 : }
7119 : break;
7120 : }
7121 1 : case LT_EXPR:
7122 1 : {
7123 1 : tree _q40 = TREE_OPERAND (_q30, 0);
7124 1 : tree _q41 = TREE_OPERAND (_q30, 1);
7125 1 : if (integer_zerop (_q41))
7126 : {
7127 1 : if (integer_onep (_q21))
7128 : {
7129 1 : {
7130 1 : tree _p1_pops[1];
7131 1 : if (tree_nop_convert (_p1, _p1_pops))
7132 : {
7133 0 : tree _q80 = _p1_pops[0];
7134 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
7135 : {
7136 0 : {
7137 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
7138 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
7139 0 : if (res) return res;
7140 : }
7141 : }
7142 : }
7143 : }
7144 1 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
7145 : {
7146 1 : {
7147 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
7148 1 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
7149 1 : if (res) return res;
7150 : }
7151 : }
7152 : }
7153 : }
7154 : break;
7155 : }
7156 : default:;
7157 : }
7158 : break;
7159 : }
7160 298 : default:;
7161 : }
7162 298 : {
7163 298 : tree _q20_pops[1];
7164 298 : if (tree_nop_convert (_q20, _q20_pops))
7165 : {
7166 1 : tree _q30 = _q20_pops[0];
7167 1 : switch (TREE_CODE (_q30))
7168 : {
7169 1 : case NEGATE_EXPR:
7170 1 : {
7171 1 : tree _q40 = TREE_OPERAND (_q30, 0);
7172 1 : switch (TREE_CODE (_q40))
7173 : {
7174 0 : CASE_CONVERT:
7175 0 : {
7176 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7177 0 : switch (TREE_CODE (_q50))
7178 : {
7179 0 : case LT_EXPR:
7180 0 : {
7181 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7182 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7183 0 : if (integer_zerop (_q61))
7184 : {
7185 0 : if (integer_onep (_q21))
7186 : {
7187 0 : {
7188 0 : tree _p1_pops[1];
7189 0 : if (tree_nop_convert (_p1, _p1_pops))
7190 : {
7191 0 : tree _q100 = _p1_pops[0];
7192 0 : if ((_q100 == _q60 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q60, 0) && types_match (_q100, _q60)))
7193 : {
7194 0 : {
7195 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
7196 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
7197 0 : if (res) return res;
7198 : }
7199 : }
7200 : }
7201 : }
7202 0 : if ((_p1 == _q60 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q60, 0) && types_match (_p1, _q60)))
7203 : {
7204 0 : {
7205 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
7206 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
7207 0 : if (res) return res;
7208 : }
7209 : }
7210 : }
7211 : }
7212 : break;
7213 : }
7214 : default:;
7215 : }
7216 : break;
7217 : }
7218 1 : case LT_EXPR:
7219 1 : {
7220 1 : tree _q50 = TREE_OPERAND (_q40, 0);
7221 1 : tree _q51 = TREE_OPERAND (_q40, 1);
7222 1 : if (integer_zerop (_q51))
7223 : {
7224 1 : if (integer_onep (_q21))
7225 : {
7226 1 : {
7227 1 : tree _p1_pops[1];
7228 1 : if (tree_nop_convert (_p1, _p1_pops))
7229 : {
7230 1 : tree _q90 = _p1_pops[0];
7231 1 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
7232 : {
7233 1 : {
7234 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7235 1 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
7236 1 : if (res) return res;
7237 : }
7238 : }
7239 : }
7240 : }
7241 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
7242 : {
7243 0 : {
7244 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7245 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
7246 0 : if (res) return res;
7247 : }
7248 : }
7249 : }
7250 : }
7251 : break;
7252 : }
7253 : default:;
7254 : }
7255 : break;
7256 : }
7257 : default:;
7258 : }
7259 : }
7260 : }
7261 297 : break;
7262 : }
7263 67975138 : default:;
7264 : }
7265 67975138 : switch (TREE_CODE (_p1))
7266 : {
7267 1 : case BIT_IOR_EXPR:
7268 1 : {
7269 1 : tree _q30 = TREE_OPERAND (_p1, 0);
7270 1 : tree _q31 = TREE_OPERAND (_p1, 1);
7271 1 : switch (TREE_CODE (_q30))
7272 : {
7273 0 : case NEGATE_EXPR:
7274 0 : {
7275 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7276 0 : switch (TREE_CODE (_q40))
7277 : {
7278 0 : CASE_CONVERT:
7279 0 : {
7280 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7281 0 : switch (TREE_CODE (_q50))
7282 : {
7283 0 : case LT_EXPR:
7284 0 : {
7285 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7286 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7287 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
7288 : {
7289 0 : if (integer_zerop (_q61))
7290 : {
7291 0 : if (integer_onep (_q31))
7292 : {
7293 0 : {
7294 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7295 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
7296 0 : if (res) return res;
7297 : }
7298 : }
7299 : }
7300 : }
7301 : break;
7302 : }
7303 : default:;
7304 : }
7305 : break;
7306 : }
7307 0 : case LT_EXPR:
7308 0 : {
7309 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7310 0 : tree _q51 = TREE_OPERAND (_q40, 1);
7311 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
7312 : {
7313 0 : if (integer_zerop (_q51))
7314 : {
7315 0 : if (integer_onep (_q31))
7316 : {
7317 0 : {
7318 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7319 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
7320 0 : if (res) return res;
7321 : }
7322 : }
7323 : }
7324 : }
7325 : break;
7326 : }
7327 : default:;
7328 : }
7329 : break;
7330 : }
7331 1 : default:;
7332 : }
7333 1 : {
7334 1 : tree _q30_pops[1];
7335 1 : if (tree_nop_convert (_q30, _q30_pops))
7336 : {
7337 0 : tree _q40 = _q30_pops[0];
7338 0 : switch (TREE_CODE (_q40))
7339 : {
7340 0 : case NEGATE_EXPR:
7341 0 : {
7342 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7343 0 : switch (TREE_CODE (_q50))
7344 : {
7345 0 : CASE_CONVERT:
7346 0 : {
7347 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7348 0 : switch (TREE_CODE (_q60))
7349 : {
7350 0 : case LT_EXPR:
7351 0 : {
7352 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7353 0 : tree _q71 = TREE_OPERAND (_q60, 1);
7354 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
7355 : {
7356 0 : if (integer_zerop (_q71))
7357 : {
7358 0 : if (integer_onep (_q31))
7359 : {
7360 0 : {
7361 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7362 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
7363 0 : if (res) return res;
7364 : }
7365 : }
7366 : }
7367 : }
7368 : break;
7369 : }
7370 : default:;
7371 : }
7372 : break;
7373 : }
7374 0 : case LT_EXPR:
7375 0 : {
7376 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7377 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7378 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
7379 : {
7380 0 : if (integer_zerop (_q61))
7381 : {
7382 0 : if (integer_onep (_q31))
7383 : {
7384 0 : {
7385 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7386 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
7387 0 : if (res) return res;
7388 : }
7389 : }
7390 : }
7391 : }
7392 : break;
7393 : }
7394 : default:;
7395 : }
7396 : break;
7397 : }
7398 : default:;
7399 : }
7400 : }
7401 : }
7402 1 : break;
7403 : }
7404 67975138 : default:;
7405 : }
7406 67975138 : {
7407 67975138 : tree _p1_pops[1];
7408 67975138 : if (tree_nop_convert (_p1, _p1_pops))
7409 : {
7410 7287472 : tree _q30 = _p1_pops[0];
7411 7287472 : switch (TREE_CODE (_q30))
7412 : {
7413 0 : case BIT_IOR_EXPR:
7414 0 : {
7415 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7416 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7417 0 : switch (TREE_CODE (_q40))
7418 : {
7419 0 : case NEGATE_EXPR:
7420 0 : {
7421 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7422 0 : switch (TREE_CODE (_q50))
7423 : {
7424 0 : case LT_EXPR:
7425 0 : {
7426 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7427 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7428 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
7429 : {
7430 0 : if (integer_zerop (_q61))
7431 : {
7432 0 : if (integer_onep (_q41))
7433 : {
7434 0 : {
7435 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7436 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
7437 0 : if (res) return res;
7438 : }
7439 : }
7440 : }
7441 : }
7442 : break;
7443 : }
7444 : default:;
7445 : }
7446 : break;
7447 : }
7448 0 : default:;
7449 : }
7450 0 : {
7451 0 : tree _q40_pops[1];
7452 0 : if (tree_nop_convert (_q40, _q40_pops))
7453 : {
7454 0 : tree _q50 = _q40_pops[0];
7455 0 : switch (TREE_CODE (_q50))
7456 : {
7457 0 : case NEGATE_EXPR:
7458 0 : {
7459 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7460 0 : switch (TREE_CODE (_q60))
7461 : {
7462 0 : case LT_EXPR:
7463 0 : {
7464 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7465 0 : tree _q71 = TREE_OPERAND (_q60, 1);
7466 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
7467 : {
7468 0 : if (integer_zerop (_q71))
7469 : {
7470 0 : if (integer_onep (_q41))
7471 : {
7472 0 : {
7473 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7474 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
7475 0 : if (res) return res;
7476 : }
7477 : }
7478 : }
7479 : }
7480 : break;
7481 : }
7482 : default:;
7483 : }
7484 : break;
7485 : }
7486 : default:;
7487 : }
7488 : }
7489 : }
7490 0 : break;
7491 : }
7492 : default:;
7493 : }
7494 : }
7495 : }
7496 67975138 : switch (TREE_CODE (_p0))
7497 : {
7498 32367781 : CASE_CONVERT:
7499 32367781 : {
7500 32367781 : tree _q20 = TREE_OPERAND (_p0, 0);
7501 32367781 : switch (TREE_CODE (_q20))
7502 : {
7503 6285 : case NEGATE_EXPR:
7504 6285 : {
7505 6285 : tree _q30 = TREE_OPERAND (_q20, 0);
7506 6285 : switch (TREE_CODE (_p1))
7507 : {
7508 465 : CASE_CONVERT:
7509 465 : {
7510 465 : tree _q50 = TREE_OPERAND (_p1, 0);
7511 465 : if (tree_negate_expr_p (_q50))
7512 : {
7513 0 : {
7514 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q50 };
7515 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
7516 0 : if (res) return res;
7517 : }
7518 : }
7519 : break;
7520 : }
7521 6285 : default:;
7522 : }
7523 6285 : if (tree_negate_expr_p (_p1))
7524 : {
7525 3463 : {
7526 3463 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p1 };
7527 3463 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
7528 3463 : if (res) return res;
7529 : }
7530 : }
7531 : break;
7532 : }
7533 4 : case LT_EXPR:
7534 4 : {
7535 4 : tree _q30 = TREE_OPERAND (_q20, 0);
7536 4 : tree _q31 = TREE_OPERAND (_q20, 1);
7537 4 : {
7538 4 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7539 4 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, LT_EXPR);
7540 4 : if (res) return res;
7541 : }
7542 4 : break;
7543 : }
7544 6 : case LE_EXPR:
7545 6 : {
7546 6 : tree _q30 = TREE_OPERAND (_q20, 0);
7547 6 : tree _q31 = TREE_OPERAND (_q20, 1);
7548 6 : {
7549 6 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7550 6 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, LE_EXPR);
7551 6 : if (res) return res;
7552 : }
7553 6 : break;
7554 : }
7555 1 : case EQ_EXPR:
7556 1 : {
7557 1 : tree _q30 = TREE_OPERAND (_q20, 0);
7558 1 : tree _q31 = TREE_OPERAND (_q20, 1);
7559 1 : {
7560 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7561 1 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, EQ_EXPR);
7562 1 : if (res) return res;
7563 : }
7564 1 : break;
7565 : }
7566 1157 : case NE_EXPR:
7567 1157 : {
7568 1157 : tree _q30 = TREE_OPERAND (_q20, 0);
7569 1157 : tree _q31 = TREE_OPERAND (_q20, 1);
7570 1157 : {
7571 1157 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7572 1157 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, NE_EXPR);
7573 1157 : if (res) return res;
7574 : }
7575 1157 : break;
7576 : }
7577 19 : case GE_EXPR:
7578 19 : {
7579 19 : tree _q30 = TREE_OPERAND (_q20, 0);
7580 19 : tree _q31 = TREE_OPERAND (_q20, 1);
7581 19 : {
7582 19 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7583 19 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, GE_EXPR);
7584 19 : if (res) return res;
7585 : }
7586 19 : break;
7587 : }
7588 19 : case GT_EXPR:
7589 19 : {
7590 19 : tree _q30 = TREE_OPERAND (_q20, 0);
7591 19 : tree _q31 = TREE_OPERAND (_q20, 1);
7592 19 : {
7593 19 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7594 19 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, GT_EXPR);
7595 19 : if (res) return res;
7596 : }
7597 19 : break;
7598 : }
7599 0 : case UNORDERED_EXPR:
7600 0 : {
7601 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7602 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7603 0 : {
7604 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7605 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, UNORDERED_EXPR);
7606 0 : if (res) return res;
7607 : }
7608 0 : break;
7609 : }
7610 0 : case ORDERED_EXPR:
7611 0 : {
7612 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7613 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7614 0 : {
7615 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7616 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, ORDERED_EXPR);
7617 0 : if (res) return res;
7618 : }
7619 0 : break;
7620 : }
7621 0 : case UNLT_EXPR:
7622 0 : {
7623 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7624 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7625 0 : {
7626 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7627 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, UNLT_EXPR);
7628 0 : if (res) return res;
7629 : }
7630 0 : break;
7631 : }
7632 0 : case UNLE_EXPR:
7633 0 : {
7634 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7635 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7636 0 : {
7637 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7638 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, UNLE_EXPR);
7639 0 : if (res) return res;
7640 : }
7641 0 : break;
7642 : }
7643 0 : case UNGT_EXPR:
7644 0 : {
7645 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7646 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7647 0 : {
7648 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7649 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, UNGT_EXPR);
7650 0 : if (res) return res;
7651 : }
7652 0 : break;
7653 : }
7654 0 : case UNGE_EXPR:
7655 0 : {
7656 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7657 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7658 0 : {
7659 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7660 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, UNGE_EXPR);
7661 0 : if (res) return res;
7662 : }
7663 0 : break;
7664 : }
7665 0 : case UNEQ_EXPR:
7666 0 : {
7667 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7668 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7669 0 : {
7670 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7671 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, UNEQ_EXPR);
7672 0 : if (res) return res;
7673 : }
7674 0 : break;
7675 : }
7676 0 : case LTGT_EXPR:
7677 0 : {
7678 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7679 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7680 0 : {
7681 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7682 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures, LTGT_EXPR);
7683 0 : if (res) return res;
7684 : }
7685 0 : break;
7686 : }
7687 32366957 : default:;
7688 : }
7689 32366957 : if (tree_negate_expr_p (_q20))
7690 : {
7691 21925 : switch (TREE_CODE (_p1))
7692 : {
7693 2634 : CASE_CONVERT:
7694 2634 : {
7695 2634 : tree _q40 = TREE_OPERAND (_p1, 0);
7696 2634 : switch (TREE_CODE (_q40))
7697 : {
7698 0 : case NEGATE_EXPR:
7699 0 : {
7700 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7701 0 : {
7702 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q20 };
7703 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
7704 0 : if (res) return res;
7705 : }
7706 0 : break;
7707 : }
7708 : default:;
7709 : }
7710 : break;
7711 : }
7712 6 : case NEGATE_EXPR:
7713 6 : {
7714 6 : tree _q40 = TREE_OPERAND (_p1, 0);
7715 6 : {
7716 6 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
7717 6 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
7718 6 : if (res) return res;
7719 : }
7720 0 : break;
7721 : }
7722 : default:;
7723 : }
7724 : }
7725 : break;
7726 : }
7727 441337 : case NEGATE_EXPR:
7728 441337 : {
7729 441337 : tree _q20 = TREE_OPERAND (_p0, 0);
7730 441337 : switch (TREE_CODE (_p1))
7731 : {
7732 155474 : CASE_CONVERT:
7733 155474 : {
7734 155474 : tree _q40 = TREE_OPERAND (_p1, 0);
7735 155474 : if (tree_negate_expr_p (_q40))
7736 : {
7737 0 : {
7738 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
7739 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
7740 0 : if (res) return res;
7741 : }
7742 : }
7743 : break;
7744 : }
7745 441337 : default:;
7746 : }
7747 441337 : if (tree_negate_expr_p (_p1))
7748 : {
7749 34027 : {
7750 34027 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7751 34027 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
7752 34027 : if (res) return res;
7753 : }
7754 : }
7755 407310 : if (tree_zero_one_valued_p (_q20))
7756 : {
7757 529 : if (tree_zero_one_valued_p (_p1))
7758 : {
7759 521 : {
7760 521 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7761 521 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures);
7762 521 : if (res) return res;
7763 : }
7764 : }
7765 : }
7766 : break;
7767 : }
7768 67939760 : default:;
7769 : }
7770 67939760 : if (tree_negate_expr_p (_p0))
7771 : {
7772 717447 : switch (TREE_CODE (_p1))
7773 : {
7774 160145 : CASE_CONVERT:
7775 160145 : {
7776 160145 : tree _q30 = TREE_OPERAND (_p1, 0);
7777 160145 : switch (TREE_CODE (_q30))
7778 : {
7779 0 : case NEGATE_EXPR:
7780 0 : {
7781 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7782 0 : {
7783 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
7784 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
7785 0 : if (res) return res;
7786 : }
7787 0 : break;
7788 : }
7789 : default:;
7790 : }
7791 : break;
7792 : }
7793 6 : case NEGATE_EXPR:
7794 6 : {
7795 6 : tree _q30 = TREE_OPERAND (_p1, 0);
7796 6 : {
7797 6 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
7798 6 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
7799 6 : if (res) return res;
7800 : }
7801 0 : break;
7802 : }
7803 : default:;
7804 : }
7805 : }
7806 67939754 : if (tree_zero_one_valued_p (_p0))
7807 : {
7808 187996 : switch (TREE_CODE (_p1))
7809 : {
7810 24 : case NEGATE_EXPR:
7811 24 : {
7812 24 : tree _q30 = TREE_OPERAND (_p1, 0);
7813 24 : if (tree_zero_one_valued_p (_q30))
7814 : {
7815 24 : {
7816 24 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
7817 24 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures);
7818 24 : if (res) return res;
7819 : }
7820 : }
7821 : break;
7822 : }
7823 187972 : default:;
7824 : }
7825 187972 : if (tree_zero_one_valued_p (_p1))
7826 : {
7827 13034 : {
7828 13034 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
7829 13034 : if (INTEGRAL_TYPE_P (type)
7830 : )
7831 : {
7832 13034 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1434;
7833 13034 : {
7834 13034 : tree res_op0;
7835 13034 : res_op0 = captures[0];
7836 13034 : tree res_op1;
7837 13034 : res_op1 = captures[1];
7838 13034 : tree _r;
7839 13034 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
7840 13034 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 981, __FILE__, __LINE__, true);
7841 13034 : return _r;
7842 : }
7843 0 : next_after_fail1434:;
7844 : }
7845 : }
7846 : }
7847 : }
7848 67926696 : switch (TREE_CODE (_p1))
7849 : {
7850 7370789 : CASE_CONVERT:
7851 7370789 : {
7852 7370789 : tree _q30 = TREE_OPERAND (_p1, 0);
7853 7370789 : switch (TREE_CODE (_q30))
7854 : {
7855 0 : case LT_EXPR:
7856 0 : {
7857 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7858 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7859 0 : {
7860 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7861 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, LT_EXPR);
7862 0 : if (res) return res;
7863 : }
7864 0 : break;
7865 : }
7866 0 : case LE_EXPR:
7867 0 : {
7868 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7869 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7870 0 : {
7871 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7872 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, LE_EXPR);
7873 0 : if (res) return res;
7874 : }
7875 0 : break;
7876 : }
7877 0 : case EQ_EXPR:
7878 0 : {
7879 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7880 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7881 0 : {
7882 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7883 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, EQ_EXPR);
7884 0 : if (res) return res;
7885 : }
7886 0 : break;
7887 : }
7888 0 : case NE_EXPR:
7889 0 : {
7890 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7891 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7892 0 : {
7893 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7894 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, NE_EXPR);
7895 0 : if (res) return res;
7896 : }
7897 0 : break;
7898 : }
7899 0 : case GE_EXPR:
7900 0 : {
7901 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7902 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7903 0 : {
7904 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7905 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, GE_EXPR);
7906 0 : if (res) return res;
7907 : }
7908 0 : break;
7909 : }
7910 0 : case GT_EXPR:
7911 0 : {
7912 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7913 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7914 0 : {
7915 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7916 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, GT_EXPR);
7917 0 : if (res) return res;
7918 : }
7919 0 : break;
7920 : }
7921 0 : case UNORDERED_EXPR:
7922 0 : {
7923 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7924 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7925 0 : {
7926 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7927 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, UNORDERED_EXPR);
7928 0 : if (res) return res;
7929 : }
7930 0 : break;
7931 : }
7932 0 : case ORDERED_EXPR:
7933 0 : {
7934 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7935 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7936 0 : {
7937 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7938 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, ORDERED_EXPR);
7939 0 : if (res) return res;
7940 : }
7941 0 : break;
7942 : }
7943 0 : case UNLT_EXPR:
7944 0 : {
7945 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7946 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7947 0 : {
7948 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7949 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, UNLT_EXPR);
7950 0 : if (res) return res;
7951 : }
7952 0 : break;
7953 : }
7954 0 : case UNLE_EXPR:
7955 0 : {
7956 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7957 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7958 0 : {
7959 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7960 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, UNLE_EXPR);
7961 0 : if (res) return res;
7962 : }
7963 0 : break;
7964 : }
7965 0 : case UNGT_EXPR:
7966 0 : {
7967 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7968 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7969 0 : {
7970 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7971 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, UNGT_EXPR);
7972 0 : if (res) return res;
7973 : }
7974 0 : break;
7975 : }
7976 0 : case UNGE_EXPR:
7977 0 : {
7978 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7979 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7980 0 : {
7981 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7982 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, UNGE_EXPR);
7983 0 : if (res) return res;
7984 : }
7985 0 : break;
7986 : }
7987 0 : case UNEQ_EXPR:
7988 0 : {
7989 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7990 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7991 0 : {
7992 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7993 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, UNEQ_EXPR);
7994 0 : if (res) return res;
7995 : }
7996 0 : break;
7997 : }
7998 0 : case LTGT_EXPR:
7999 0 : {
8000 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8001 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8002 0 : {
8003 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
8004 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, LTGT_EXPR);
8005 0 : if (res) return res;
8006 : }
8007 0 : break;
8008 : }
8009 : default:;
8010 : }
8011 : break;
8012 : }
8013 67926696 : default:;
8014 : }
8015 67926696 : switch (TREE_CODE (_p0))
8016 : {
8017 3 : case MIN_EXPR:
8018 3 : {
8019 3 : tree _q20 = TREE_OPERAND (_p0, 0);
8020 3 : tree _q21 = TREE_OPERAND (_p0, 1);
8021 3 : switch (TREE_CODE (_p1))
8022 : {
8023 0 : case MAX_EXPR:
8024 0 : {
8025 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8026 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8027 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8028 : {
8029 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8030 : {
8031 0 : {
8032 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8033 0 : if (!HONOR_NANS (captures[0])
8034 : )
8035 : {
8036 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1435;
8037 0 : {
8038 0 : tree res_op0;
8039 0 : res_op0 = captures[0];
8040 0 : tree res_op1;
8041 0 : res_op1 = captures[1];
8042 0 : tree _r;
8043 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
8044 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
8045 0 : return _r;
8046 : }
8047 0 : next_after_fail1435:;
8048 : }
8049 : }
8050 : }
8051 : }
8052 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8053 : {
8054 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8055 : {
8056 0 : {
8057 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
8058 0 : if (!HONOR_NANS (captures[0])
8059 : )
8060 : {
8061 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1436;
8062 0 : {
8063 0 : tree res_op0;
8064 0 : res_op0 = captures[0];
8065 0 : tree res_op1;
8066 0 : res_op1 = captures[1];
8067 0 : tree _r;
8068 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
8069 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
8070 0 : return _r;
8071 : }
8072 0 : next_after_fail1436:;
8073 : }
8074 : }
8075 : }
8076 : }
8077 : break;
8078 : }
8079 : default:;
8080 : }
8081 : break;
8082 : }
8083 146 : case MAX_EXPR:
8084 146 : {
8085 146 : tree _q20 = TREE_OPERAND (_p0, 0);
8086 146 : tree _q21 = TREE_OPERAND (_p0, 1);
8087 146 : switch (TREE_CODE (_p1))
8088 : {
8089 0 : case MIN_EXPR:
8090 0 : {
8091 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8092 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8093 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8094 : {
8095 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8096 : {
8097 0 : {
8098 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8099 0 : if (!HONOR_NANS (captures[0])
8100 : )
8101 : {
8102 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1437;
8103 0 : {
8104 0 : tree res_op0;
8105 0 : res_op0 = captures[0];
8106 0 : tree res_op1;
8107 0 : res_op1 = captures[1];
8108 0 : tree _r;
8109 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
8110 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
8111 0 : return _r;
8112 : }
8113 0 : next_after_fail1437:;
8114 : }
8115 : }
8116 : }
8117 : }
8118 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8119 : {
8120 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8121 : {
8122 0 : {
8123 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8124 0 : if (!HONOR_NANS (captures[0])
8125 : )
8126 : {
8127 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1438;
8128 0 : {
8129 0 : tree res_op0;
8130 0 : res_op0 = captures[0];
8131 0 : tree res_op1;
8132 0 : res_op1 = captures[1];
8133 0 : tree _r;
8134 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
8135 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
8136 0 : return _r;
8137 : }
8138 0 : next_after_fail1438:;
8139 : }
8140 : }
8141 : }
8142 : }
8143 : break;
8144 : }
8145 : default:;
8146 : }
8147 : break;
8148 : }
8149 32353920 : CASE_CONVERT:
8150 32353920 : {
8151 32353920 : tree _q20 = TREE_OPERAND (_p0, 0);
8152 32353920 : switch (TREE_CODE (_q20))
8153 : {
8154 82 : case BIT_AND_EXPR:
8155 82 : {
8156 82 : tree _q30 = TREE_OPERAND (_q20, 0);
8157 82 : tree _q31 = TREE_OPERAND (_q20, 1);
8158 82 : switch (TREE_CODE (_q30))
8159 : {
8160 0 : CASE_CONVERT:
8161 0 : {
8162 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8163 0 : switch (TREE_CODE (_q40))
8164 : {
8165 0 : case RSHIFT_EXPR:
8166 0 : {
8167 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8168 0 : tree _q51 = TREE_OPERAND (_q40, 1);
8169 0 : switch (TREE_CODE (_q51))
8170 : {
8171 0 : case INTEGER_CST:
8172 0 : {
8173 0 : switch (TREE_CODE (_q31))
8174 : {
8175 0 : case INTEGER_CST:
8176 0 : {
8177 0 : switch (TREE_CODE (_p1))
8178 : {
8179 0 : case INTEGER_CST:
8180 0 : {
8181 0 : {
8182 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q50, _q51, _q31, _p1 };
8183 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures);
8184 0 : if (res) return res;
8185 : }
8186 0 : break;
8187 : }
8188 : default:;
8189 : }
8190 : break;
8191 : }
8192 : default:;
8193 : }
8194 : break;
8195 : }
8196 : default:;
8197 : }
8198 : break;
8199 : }
8200 : default:;
8201 : }
8202 : break;
8203 : }
8204 : default:;
8205 : }
8206 : break;
8207 : }
8208 31498 : case EXACT_DIV_EXPR:
8209 31498 : {
8210 31498 : tree _q30 = TREE_OPERAND (_q20, 0);
8211 31498 : tree _q31 = TREE_OPERAND (_q20, 1);
8212 31498 : switch (TREE_CODE (_p1))
8213 : {
8214 0 : CASE_CONVERT:
8215 0 : {
8216 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8217 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _q31, 0))
8218 : {
8219 0 : {
8220 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q31 };
8221 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures);
8222 0 : if (res) return res;
8223 : }
8224 : }
8225 : break;
8226 : }
8227 31498 : default:;
8228 : }
8229 31498 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q31, 0))
8230 : {
8231 21357 : {
8232 21357 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q31 };
8233 21357 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures);
8234 21357 : if (res) return res;
8235 : }
8236 : }
8237 10141 : switch (TREE_CODE (_q31))
8238 : {
8239 10141 : case INTEGER_CST:
8240 10141 : {
8241 10141 : if (poly_int_tree_p (_p1))
8242 : {
8243 10141 : {
8244 10141 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
8245 10141 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures);
8246 10141 : if (res) return res;
8247 : }
8248 : }
8249 : break;
8250 : }
8251 : default:;
8252 : }
8253 : break;
8254 : }
8255 1389006 : case PLUS_EXPR:
8256 1389006 : {
8257 1389006 : tree _q30 = TREE_OPERAND (_q20, 0);
8258 1389006 : tree _q31 = TREE_OPERAND (_q20, 1);
8259 1389006 : switch (TREE_CODE (_q30))
8260 : {
8261 174100 : CASE_CONVERT:
8262 174100 : {
8263 174100 : tree _q40 = TREE_OPERAND (_q30, 0);
8264 174100 : switch (TREE_CODE (_q40))
8265 : {
8266 0 : case EXACT_DIV_EXPR:
8267 0 : {
8268 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8269 0 : tree _q51 = TREE_OPERAND (_q40, 1);
8270 0 : switch (TREE_CODE (_q51))
8271 : {
8272 0 : case INTEGER_CST:
8273 0 : {
8274 0 : if (poly_int_tree_p (_q31))
8275 : {
8276 0 : if (poly_int_tree_p (_p1))
8277 : {
8278 0 : {
8279 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q50, _q51, _q31, _p1 };
8280 0 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8281 0 : if (res) return res;
8282 : }
8283 : }
8284 : }
8285 : break;
8286 : }
8287 : default:;
8288 : }
8289 : break;
8290 : }
8291 : default:;
8292 : }
8293 : break;
8294 : }
8295 112 : case EXACT_DIV_EXPR:
8296 112 : {
8297 112 : tree _q40 = TREE_OPERAND (_q30, 0);
8298 112 : tree _q41 = TREE_OPERAND (_q30, 1);
8299 112 : switch (TREE_CODE (_q41))
8300 : {
8301 112 : case INTEGER_CST:
8302 112 : {
8303 112 : if (poly_int_tree_p (_q31))
8304 : {
8305 112 : if (poly_int_tree_p (_p1))
8306 : {
8307 112 : {
8308 112 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q31, _p1 };
8309 112 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8310 112 : if (res) return res;
8311 : }
8312 : }
8313 : }
8314 : break;
8315 : }
8316 : default:;
8317 : }
8318 : break;
8319 : }
8320 : default:;
8321 : }
8322 : break;
8323 : }
8324 98470 : case MINUS_EXPR:
8325 98470 : {
8326 98470 : tree _q30 = TREE_OPERAND (_q20, 0);
8327 98470 : tree _q31 = TREE_OPERAND (_q20, 1);
8328 98470 : switch (TREE_CODE (_q30))
8329 : {
8330 20969 : CASE_CONVERT:
8331 20969 : {
8332 20969 : tree _q40 = TREE_OPERAND (_q30, 0);
8333 20969 : switch (TREE_CODE (_q40))
8334 : {
8335 0 : case EXACT_DIV_EXPR:
8336 0 : {
8337 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8338 0 : tree _q51 = TREE_OPERAND (_q40, 1);
8339 0 : switch (TREE_CODE (_q51))
8340 : {
8341 0 : case INTEGER_CST:
8342 0 : {
8343 0 : if (poly_int_tree_p (_q31))
8344 : {
8345 0 : if (poly_int_tree_p (_p1))
8346 : {
8347 0 : {
8348 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q50, _q51, _q31, _p1 };
8349 0 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8350 0 : if (res) return res;
8351 : }
8352 : }
8353 : }
8354 : break;
8355 : }
8356 : default:;
8357 : }
8358 : break;
8359 : }
8360 : default:;
8361 : }
8362 : break;
8363 : }
8364 0 : case EXACT_DIV_EXPR:
8365 0 : {
8366 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8367 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8368 0 : switch (TREE_CODE (_q41))
8369 : {
8370 0 : case INTEGER_CST:
8371 0 : {
8372 0 : if (poly_int_tree_p (_q31))
8373 : {
8374 0 : if (poly_int_tree_p (_p1))
8375 : {
8376 0 : {
8377 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q31, _p1 };
8378 0 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8379 0 : if (res) return res;
8380 : }
8381 : }
8382 : }
8383 : break;
8384 : }
8385 : default:;
8386 : }
8387 : break;
8388 : }
8389 : default:;
8390 : }
8391 : break;
8392 : }
8393 : default:;
8394 : }
8395 : break;
8396 : }
8397 59425 : case BIT_AND_EXPR:
8398 59425 : {
8399 59425 : tree _q20 = TREE_OPERAND (_p0, 0);
8400 59425 : tree _q21 = TREE_OPERAND (_p0, 1);
8401 59425 : switch (TREE_CODE (_q20))
8402 : {
8403 275 : case RSHIFT_EXPR:
8404 275 : {
8405 275 : tree _q30 = TREE_OPERAND (_q20, 0);
8406 275 : tree _q31 = TREE_OPERAND (_q20, 1);
8407 275 : switch (TREE_CODE (_q31))
8408 : {
8409 14 : case INTEGER_CST:
8410 14 : {
8411 14 : switch (TREE_CODE (_q21))
8412 : {
8413 14 : case INTEGER_CST:
8414 14 : {
8415 14 : switch (TREE_CODE (_p1))
8416 : {
8417 14 : case INTEGER_CST:
8418 14 : {
8419 14 : {
8420 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
8421 14 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures);
8422 14 : if (res) return res;
8423 : }
8424 8 : break;
8425 : }
8426 : default:;
8427 : }
8428 : break;
8429 : }
8430 : default:;
8431 : }
8432 : break;
8433 : }
8434 : default:;
8435 : }
8436 : break;
8437 : }
8438 : default:;
8439 : }
8440 : break;
8441 : }
8442 189555 : case EXACT_DIV_EXPR:
8443 189555 : {
8444 189555 : tree _q20 = TREE_OPERAND (_p0, 0);
8445 189555 : tree _q21 = TREE_OPERAND (_p0, 1);
8446 189555 : switch (TREE_CODE (_p1))
8447 : {
8448 114 : CASE_CONVERT:
8449 114 : {
8450 114 : tree _q50 = TREE_OPERAND (_p1, 0);
8451 114 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q21, 0))
8452 : {
8453 0 : {
8454 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q21 };
8455 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures);
8456 0 : if (res) return res;
8457 : }
8458 : }
8459 : break;
8460 : }
8461 189555 : default:;
8462 : }
8463 189555 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q21, 0))
8464 : {
8465 20644 : {
8466 20644 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q21 };
8467 20644 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures);
8468 20644 : if (res) return res;
8469 : }
8470 : }
8471 168911 : switch (TREE_CODE (_q21))
8472 : {
8473 168911 : case INTEGER_CST:
8474 168911 : {
8475 168911 : if (poly_int_tree_p (_p1))
8476 : {
8477 168797 : {
8478 168797 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8479 168797 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures);
8480 168797 : if (res) return res;
8481 : }
8482 : }
8483 : break;
8484 : }
8485 : default:;
8486 : }
8487 : break;
8488 : }
8489 7641991 : case PLUS_EXPR:
8490 7641991 : {
8491 7641991 : tree _q20 = TREE_OPERAND (_p0, 0);
8492 7641991 : tree _q21 = TREE_OPERAND (_p0, 1);
8493 7641991 : switch (TREE_CODE (_q20))
8494 : {
8495 3733788 : CASE_CONVERT:
8496 3733788 : {
8497 3733788 : tree _q30 = TREE_OPERAND (_q20, 0);
8498 3733788 : switch (TREE_CODE (_q30))
8499 : {
8500 5446 : case EXACT_DIV_EXPR:
8501 5446 : {
8502 5446 : tree _q40 = TREE_OPERAND (_q30, 0);
8503 5446 : tree _q41 = TREE_OPERAND (_q30, 1);
8504 5446 : switch (TREE_CODE (_q41))
8505 : {
8506 5446 : case INTEGER_CST:
8507 5446 : {
8508 5446 : if (poly_int_tree_p (_q21))
8509 : {
8510 5446 : if (poly_int_tree_p (_p1))
8511 : {
8512 5446 : {
8513 5446 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q21, _p1 };
8514 5446 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8515 5446 : if (res) return res;
8516 : }
8517 : }
8518 : }
8519 : break;
8520 : }
8521 : default:;
8522 : }
8523 : break;
8524 : }
8525 : default:;
8526 : }
8527 : break;
8528 : }
8529 0 : case EXACT_DIV_EXPR:
8530 0 : {
8531 0 : tree _q30 = TREE_OPERAND (_q20, 0);
8532 0 : tree _q31 = TREE_OPERAND (_q20, 1);
8533 0 : switch (TREE_CODE (_q31))
8534 : {
8535 0 : case INTEGER_CST:
8536 0 : {
8537 0 : if (poly_int_tree_p (_q21))
8538 : {
8539 0 : if (poly_int_tree_p (_p1))
8540 : {
8541 0 : {
8542 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
8543 0 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8544 0 : if (res) return res;
8545 : }
8546 : }
8547 : }
8548 : break;
8549 : }
8550 : default:;
8551 : }
8552 : break;
8553 : }
8554 : default:;
8555 : }
8556 : break;
8557 : }
8558 1186984 : case MINUS_EXPR:
8559 1186984 : {
8560 1186984 : tree _q20 = TREE_OPERAND (_p0, 0);
8561 1186984 : tree _q21 = TREE_OPERAND (_p0, 1);
8562 1186984 : switch (TREE_CODE (_q20))
8563 : {
8564 305244 : CASE_CONVERT:
8565 305244 : {
8566 305244 : tree _q30 = TREE_OPERAND (_q20, 0);
8567 305244 : switch (TREE_CODE (_q30))
8568 : {
8569 0 : case EXACT_DIV_EXPR:
8570 0 : {
8571 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8572 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8573 0 : switch (TREE_CODE (_q41))
8574 : {
8575 0 : case INTEGER_CST:
8576 0 : {
8577 0 : if (poly_int_tree_p (_q21))
8578 : {
8579 0 : if (poly_int_tree_p (_p1))
8580 : {
8581 0 : {
8582 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q21, _p1 };
8583 0 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8584 0 : if (res) return res;
8585 : }
8586 : }
8587 : }
8588 : break;
8589 : }
8590 : default:;
8591 : }
8592 : break;
8593 : }
8594 : default:;
8595 : }
8596 : break;
8597 : }
8598 0 : case EXACT_DIV_EXPR:
8599 0 : {
8600 0 : tree _q30 = TREE_OPERAND (_q20, 0);
8601 0 : tree _q31 = TREE_OPERAND (_q20, 1);
8602 0 : switch (TREE_CODE (_q31))
8603 : {
8604 0 : case INTEGER_CST:
8605 0 : {
8606 0 : if (poly_int_tree_p (_q21))
8607 : {
8608 0 : if (poly_int_tree_p (_p1))
8609 : {
8610 0 : {
8611 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
8612 0 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8613 0 : if (res) return res;
8614 : }
8615 : }
8616 : }
8617 : break;
8618 : }
8619 : default:;
8620 : }
8621 : break;
8622 : }
8623 : default:;
8624 : }
8625 : break;
8626 : }
8627 67823834 : default:;
8628 : }
8629 67823834 : if (integer_minus_onep (_p1))
8630 : {
8631 462652 : {
8632 462652 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8633 462652 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1439;
8634 462652 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1439;
8635 462652 : {
8636 462652 : tree res_op0;
8637 462652 : res_op0 = captures[0];
8638 462652 : tree _r;
8639 462652 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
8640 462652 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
8641 462652 : return _r;
8642 : }
8643 : next_after_fail1439:;
8644 : }
8645 : }
8646 67361182 : switch (TREE_CODE (_p0))
8647 : {
8648 4867101 : case MULT_EXPR:
8649 4867101 : {
8650 4867101 : tree _q20 = TREE_OPERAND (_p0, 0);
8651 4867101 : tree _q21 = TREE_OPERAND (_p0, 1);
8652 4867101 : switch (TREE_CODE (_q21))
8653 : {
8654 169503 : case INTEGER_CST:
8655 169503 : {
8656 169503 : {
8657 169503 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
8658 169503 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures);
8659 169503 : if (res) return res;
8660 : }
8661 30 : break;
8662 : }
8663 : default:;
8664 : }
8665 : break;
8666 : }
8667 67191709 : default:;
8668 : }
8669 67191709 : switch (TREE_CODE (_p1))
8670 : {
8671 23582 : case MULT_EXPR:
8672 23582 : {
8673 23582 : tree _q30 = TREE_OPERAND (_p1, 0);
8674 23582 : tree _q31 = TREE_OPERAND (_p1, 1);
8675 23582 : switch (TREE_CODE (_q31))
8676 : {
8677 17190 : case INTEGER_CST:
8678 17190 : {
8679 17190 : {
8680 17190 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q31, _p0 };
8681 17190 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures);
8682 17190 : if (res) return res;
8683 : }
8684 0 : break;
8685 : }
8686 : default:;
8687 : }
8688 : break;
8689 : }
8690 67174519 : default:;
8691 : }
8692 67174519 : switch (TREE_CODE (_p0))
8693 : {
8694 36 : case VEC_COND_EXPR:
8695 36 : {
8696 36 : tree _q20 = TREE_OPERAND (_p0, 0);
8697 36 : tree _q21 = TREE_OPERAND (_p0, 1);
8698 36 : tree _q22 = TREE_OPERAND (_p0, 2);
8699 36 : switch (TREE_CODE (_p1))
8700 : {
8701 0 : case VEC_COND_EXPR:
8702 0 : {
8703 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8704 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8705 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8706 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
8707 : {
8708 0 : {
8709 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
8710 0 : if (VECTOR_TYPE_P (type)
8711 0 : && (TREE_CODE_CLASS (MULT_EXPR) != tcc_comparison
8712 : || types_match (type, TREE_TYPE (captures[2]))
8713 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8714 : || (optimize_vectors_before_lowering_p ()
8715 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8716 : )
8717 : {
8718 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1440;
8719 0 : {
8720 0 : tree res_op0;
8721 0 : res_op0 = captures[1];
8722 0 : tree res_op1;
8723 0 : {
8724 0 : tree _o1[2], _r1;
8725 0 : _o1[0] = captures[2];
8726 0 : _o1[1] = captures[5];
8727 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8728 0 : if (EXPR_P (_r1))
8729 0 : goto next_after_fail1440;
8730 0 : res_op1 = _r1;
8731 : }
8732 0 : tree res_op2;
8733 0 : {
8734 0 : tree _o1[2], _r1;
8735 0 : _o1[0] = captures[3];
8736 0 : _o1[1] = captures[6];
8737 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8738 0 : if (EXPR_P (_r1))
8739 0 : goto next_after_fail1440;
8740 0 : res_op2 = _r1;
8741 : }
8742 0 : tree _r;
8743 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8744 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
8745 0 : return _r;
8746 : }
8747 0 : next_after_fail1440:;
8748 : }
8749 : }
8750 : }
8751 : break;
8752 : }
8753 36 : default:;
8754 : }
8755 36 : {
8756 36 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
8757 36 : if (VECTOR_TYPE_P (type)
8758 36 : && (TREE_CODE_CLASS (MULT_EXPR) != tcc_comparison
8759 : || types_match (type, TREE_TYPE (captures[2]))
8760 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8761 : || (optimize_vectors_before_lowering_p ()
8762 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8763 : )
8764 : {
8765 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1441;
8766 36 : {
8767 36 : if (! tree_invariant_p (captures[4])) goto next_after_fail1441;
8768 0 : tree res_op0;
8769 0 : res_op0 = captures[1];
8770 0 : tree res_op1;
8771 0 : {
8772 0 : tree _o1[2], _r1;
8773 0 : _o1[0] = captures[2];
8774 0 : _o1[1] = unshare_expr (captures[4]);
8775 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8776 0 : if (EXPR_P (_r1))
8777 0 : goto next_after_fail1441;
8778 0 : res_op1 = _r1;
8779 : }
8780 0 : tree res_op2;
8781 0 : {
8782 0 : tree _o1[2], _r1;
8783 0 : _o1[0] = captures[3];
8784 0 : _o1[1] = captures[4];
8785 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8786 0 : if (EXPR_P (_r1))
8787 0 : goto next_after_fail1441;
8788 0 : res_op2 = _r1;
8789 : }
8790 0 : tree _r;
8791 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8792 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 900, __FILE__, __LINE__, true);
8793 0 : return _r;
8794 : }
8795 36 : next_after_fail1441:;
8796 : }
8797 : }
8798 36 : break;
8799 : }
8800 67174519 : default:;
8801 : }
8802 67174519 : switch (TREE_CODE (_p1))
8803 : {
8804 0 : case VEC_COND_EXPR:
8805 0 : {
8806 0 : tree _q30 = TREE_OPERAND (_p1, 0);
8807 0 : tree _q31 = TREE_OPERAND (_p1, 1);
8808 0 : tree _q32 = TREE_OPERAND (_p1, 2);
8809 0 : {
8810 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8811 0 : if (VECTOR_TYPE_P (type)
8812 0 : && (TREE_CODE_CLASS (MULT_EXPR) != tcc_comparison
8813 : || types_match (type, TREE_TYPE (captures[3]))
8814 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8815 : || (optimize_vectors_before_lowering_p ()
8816 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8817 : )
8818 : {
8819 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1442;
8820 0 : {
8821 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1442;
8822 0 : tree res_op0;
8823 0 : res_op0 = captures[2];
8824 0 : tree res_op1;
8825 0 : {
8826 0 : tree _o1[2], _r1;
8827 0 : _o1[0] = unshare_expr (captures[0]);
8828 0 : _o1[1] = captures[3];
8829 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8830 0 : if (EXPR_P (_r1))
8831 0 : goto next_after_fail1442;
8832 0 : res_op1 = _r1;
8833 : }
8834 0 : tree res_op2;
8835 0 : {
8836 0 : tree _o1[2], _r1;
8837 0 : _o1[0] = captures[0];
8838 0 : _o1[1] = captures[4];
8839 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8840 0 : if (EXPR_P (_r1))
8841 0 : goto next_after_fail1442;
8842 0 : res_op2 = _r1;
8843 : }
8844 0 : tree _r;
8845 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8846 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 901, __FILE__, __LINE__, true);
8847 0 : return _r;
8848 : }
8849 0 : next_after_fail1442:;
8850 : }
8851 : }
8852 0 : break;
8853 : }
8854 67174519 : default:;
8855 : }
8856 67174519 : switch (TREE_CODE (_p0))
8857 : {
8858 2576 : case REAL_CST:
8859 2576 : {
8860 2576 : switch (TREE_CODE (_p1))
8861 : {
8862 0 : case CALL_EXPR:
8863 0 : switch (get_call_combined_fn (_p1))
8864 : {
8865 0 : case CFN_BUILT_IN_LDEXPF:
8866 0 : if (call_expr_nargs (_p1) == 2)
8867 : {
8868 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
8869 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
8870 0 : {
8871 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
8872 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
8873 0 : if (res) return res;
8874 : }
8875 : }
8876 : break;
8877 0 : case CFN_BUILT_IN_LDEXPL:
8878 0 : if (call_expr_nargs (_p1) == 2)
8879 : {
8880 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
8881 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
8882 0 : {
8883 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
8884 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
8885 0 : if (res) return res;
8886 : }
8887 : }
8888 : break;
8889 0 : case CFN_LDEXP:
8890 0 : if (call_expr_nargs (_p1) == 2)
8891 : {
8892 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
8893 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
8894 0 : {
8895 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
8896 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_LDEXP);
8897 0 : if (res) return res;
8898 : }
8899 : }
8900 : break;
8901 0 : case CFN_BUILT_IN_LDEXP:
8902 0 : if (call_expr_nargs (_p1) == 2)
8903 : {
8904 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
8905 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
8906 0 : {
8907 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
8908 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
8909 0 : if (res) return res;
8910 : }
8911 : }
8912 : break;
8913 : default:;
8914 : }
8915 : break;
8916 : default:;
8917 : }
8918 : break;
8919 : }
8920 2514167 : case CALL_EXPR:
8921 2514167 : switch (get_call_combined_fn (_p0))
8922 : {
8923 55 : case CFN_BUILT_IN_SQRTF:
8924 55 : if (call_expr_nargs (_p0) == 1)
8925 : {
8926 55 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8927 55 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8928 : {
8929 0 : {
8930 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
8931 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF);
8932 0 : if (res) return res;
8933 : }
8934 : }
8935 55 : switch (TREE_CODE (_p1))
8936 : {
8937 13 : case CALL_EXPR:
8938 13 : switch (get_call_combined_fn (_p1))
8939 : {
8940 13 : case CFN_BUILT_IN_SQRTF:
8941 13 : if (call_expr_nargs (_p1) == 1)
8942 : {
8943 13 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8944 13 : {
8945 13 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8946 13 : if (flag_unsafe_math_optimizations
8947 : )
8948 : {
8949 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1443;
8950 13 : {
8951 13 : tree res_op0;
8952 13 : {
8953 13 : tree _o1[2], _r1;
8954 13 : _o1[0] = captures[1];
8955 13 : _o1[1] = captures[3];
8956 13 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8957 13 : res_op0 = _r1;
8958 : }
8959 13 : tree _r;
8960 13 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRTF, type, 1, res_op0);
8961 13 : if (!_r)
8962 0 : goto next_after_fail1443;
8963 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 983, __FILE__, __LINE__, true);
8964 13 : return _r;
8965 : }
8966 0 : next_after_fail1443:;
8967 : }
8968 : }
8969 : }
8970 : break;
8971 : default:;
8972 : }
8973 : break;
8974 : default:;
8975 : }
8976 : }
8977 : break;
8978 48 : case CFN_BUILT_IN_SQRTL:
8979 48 : if (call_expr_nargs (_p0) == 1)
8980 : {
8981 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8982 48 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8983 : {
8984 0 : {
8985 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
8986 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL);
8987 0 : if (res) return res;
8988 : }
8989 : }
8990 48 : switch (TREE_CODE (_p1))
8991 : {
8992 13 : case CALL_EXPR:
8993 13 : switch (get_call_combined_fn (_p1))
8994 : {
8995 13 : case CFN_BUILT_IN_SQRTL:
8996 13 : if (call_expr_nargs (_p1) == 1)
8997 : {
8998 13 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8999 13 : {
9000 13 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9001 13 : if (flag_unsafe_math_optimizations
9002 : )
9003 : {
9004 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1444;
9005 13 : {
9006 13 : tree res_op0;
9007 13 : {
9008 13 : tree _o1[2], _r1;
9009 13 : _o1[0] = captures[1];
9010 13 : _o1[1] = captures[3];
9011 13 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9012 13 : res_op0 = _r1;
9013 : }
9014 13 : tree _r;
9015 13 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRTL, type, 1, res_op0);
9016 13 : if (!_r)
9017 0 : goto next_after_fail1444;
9018 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 983, __FILE__, __LINE__, true);
9019 13 : return _r;
9020 : }
9021 0 : next_after_fail1444:;
9022 : }
9023 : }
9024 : }
9025 : break;
9026 : default:;
9027 : }
9028 : break;
9029 : default:;
9030 : }
9031 : }
9032 : break;
9033 287 : case CFN_BUILT_IN_EXP:
9034 287 : if (call_expr_nargs (_p0) == 1)
9035 : {
9036 287 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9037 287 : switch (TREE_CODE (_p1))
9038 : {
9039 81 : case CALL_EXPR:
9040 81 : switch (get_call_combined_fn (_p1))
9041 : {
9042 31 : case CFN_BUILT_IN_EXP:
9043 31 : if (call_expr_nargs (_p1) == 1)
9044 : {
9045 31 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9046 31 : {
9047 31 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9048 31 : if (flag_unsafe_math_optimizations
9049 : )
9050 : {
9051 27 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1445;
9052 27 : {
9053 27 : tree res_op0;
9054 27 : {
9055 27 : tree _o1[2], _r1;
9056 27 : _o1[0] = captures[1];
9057 27 : _o1[1] = captures[3];
9058 27 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9059 27 : res_op0 = _r1;
9060 : }
9061 27 : tree _r;
9062 27 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP, type, 1, res_op0);
9063 27 : if (!_r)
9064 0 : goto next_after_fail1445;
9065 27 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 984, __FILE__, __LINE__, true);
9066 27 : return _r;
9067 : }
9068 4 : next_after_fail1445:;
9069 : }
9070 : }
9071 : }
9072 : break;
9073 0 : case CFN_BUILT_IN_POW:
9074 0 : if (call_expr_nargs (_p1) == 2)
9075 : {
9076 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9077 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9078 0 : switch (TREE_CODE (_q40))
9079 : {
9080 0 : case REAL_CST:
9081 0 : {
9082 0 : {
9083 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9084 0 : if (flag_unsafe_math_optimizations
9085 : )
9086 : {
9087 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9088 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9089 : )
9090 : {
9091 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1446;
9092 0 : {
9093 0 : tree res_op0;
9094 0 : {
9095 0 : tree _o1[2], _r1;
9096 0 : {
9097 0 : tree _o2[2], _r2;
9098 0 : {
9099 0 : tree _o3[1], _r3;
9100 0 : _o3[0] = captures[1];
9101 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
9102 0 : if (!_r3)
9103 0 : goto next_after_fail1446;
9104 0 : _o2[0] = _r3;
9105 : }
9106 0 : _o2[1] = captures[2];
9107 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9108 0 : _o1[0] = _r2;
9109 : }
9110 0 : _o1[1] = captures[4];
9111 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9112 0 : res_op0 = _r1;
9113 : }
9114 0 : tree _r;
9115 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP, type, 1, res_op0);
9116 0 : if (!_r)
9117 0 : goto next_after_fail1446;
9118 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
9119 0 : return _r;
9120 : }
9121 0 : next_after_fail1446:;
9122 : }
9123 : }
9124 : }
9125 0 : break;
9126 : }
9127 : default:;
9128 : }
9129 : }
9130 : break;
9131 : default:;
9132 : }
9133 : break;
9134 : default:;
9135 : }
9136 : }
9137 : break;
9138 123 : case CFN_BUILT_IN_POW:
9139 123 : if (call_expr_nargs (_p0) == 2)
9140 : {
9141 123 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9142 123 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
9143 123 : switch (TREE_CODE (_q20))
9144 : {
9145 1 : case REAL_CST:
9146 1 : {
9147 1 : switch (TREE_CODE (_p1))
9148 : {
9149 1 : case CALL_EXPR:
9150 1 : switch (get_call_combined_fn (_p1))
9151 : {
9152 0 : case CFN_BUILT_IN_EXP:
9153 0 : if (call_expr_nargs (_p1) == 1)
9154 : {
9155 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9156 0 : {
9157 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9158 0 : if (flag_unsafe_math_optimizations
9159 : )
9160 : {
9161 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9162 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9163 : )
9164 : {
9165 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1447;
9166 0 : {
9167 0 : tree res_op0;
9168 0 : {
9169 0 : tree _o1[2], _r1;
9170 0 : {
9171 0 : tree _o2[2], _r2;
9172 0 : {
9173 0 : tree _o3[1], _r3;
9174 0 : _o3[0] = captures[1];
9175 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
9176 0 : if (!_r3)
9177 0 : goto next_after_fail1447;
9178 0 : _o2[0] = _r3;
9179 : }
9180 0 : _o2[1] = captures[2];
9181 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9182 0 : _o1[0] = _r2;
9183 : }
9184 0 : _o1[1] = captures[4];
9185 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9186 0 : res_op0 = _r1;
9187 : }
9188 0 : tree _r;
9189 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP, type, 1, res_op0);
9190 0 : if (!_r)
9191 0 : goto next_after_fail1447;
9192 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
9193 0 : return _r;
9194 : }
9195 0 : next_after_fail1447:;
9196 : }
9197 : }
9198 : }
9199 : }
9200 : break;
9201 0 : case CFN_BUILT_IN_EXP2:
9202 0 : if (call_expr_nargs (_p1) == 1)
9203 : {
9204 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9205 0 : {
9206 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9207 0 : if (flag_unsafe_math_optimizations
9208 : )
9209 : {
9210 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9211 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9212 : )
9213 : {
9214 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1448;
9215 0 : {
9216 0 : tree res_op0;
9217 0 : {
9218 0 : tree _o1[2], _r1;
9219 0 : {
9220 0 : tree _o2[2], _r2;
9221 0 : {
9222 0 : tree _o3[1], _r3;
9223 0 : _o3[0] = captures[1];
9224 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
9225 0 : if (!_r3)
9226 0 : goto next_after_fail1448;
9227 0 : _o2[0] = _r3;
9228 : }
9229 0 : _o2[1] = captures[2];
9230 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9231 0 : _o1[0] = _r2;
9232 : }
9233 0 : _o1[1] = captures[4];
9234 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9235 0 : res_op0 = _r1;
9236 : }
9237 0 : tree _r;
9238 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2, type, 1, res_op0);
9239 0 : if (!_r)
9240 0 : goto next_after_fail1448;
9241 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
9242 0 : return _r;
9243 : }
9244 0 : next_after_fail1448:;
9245 : }
9246 : }
9247 : }
9248 : }
9249 : break;
9250 0 : case CFN_BUILT_IN_EXP10:
9251 0 : if (call_expr_nargs (_p1) == 1)
9252 : {
9253 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9254 0 : {
9255 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9256 0 : if (flag_unsafe_math_optimizations
9257 : )
9258 : {
9259 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9260 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9261 : )
9262 : {
9263 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1449;
9264 0 : {
9265 0 : tree res_op0;
9266 0 : {
9267 0 : tree _o1[2], _r1;
9268 0 : {
9269 0 : tree _o2[2], _r2;
9270 0 : {
9271 0 : tree _o3[1], _r3;
9272 0 : _o3[0] = captures[1];
9273 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
9274 0 : if (!_r3)
9275 0 : goto next_after_fail1449;
9276 0 : _o2[0] = _r3;
9277 : }
9278 0 : _o2[1] = captures[2];
9279 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9280 0 : _o1[0] = _r2;
9281 : }
9282 0 : _o1[1] = captures[4];
9283 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9284 0 : res_op0 = _r1;
9285 : }
9286 0 : tree _r;
9287 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10, type, 1, res_op0);
9288 0 : if (!_r)
9289 0 : goto next_after_fail1449;
9290 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
9291 0 : return _r;
9292 : }
9293 0 : next_after_fail1449:;
9294 : }
9295 : }
9296 : }
9297 : }
9298 : break;
9299 0 : case CFN_BUILT_IN_POW10:
9300 0 : if (call_expr_nargs (_p1) == 1)
9301 : {
9302 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9303 0 : {
9304 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9305 0 : if (flag_unsafe_math_optimizations
9306 : )
9307 : {
9308 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9309 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9310 : )
9311 : {
9312 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1450;
9313 0 : {
9314 0 : tree res_op0;
9315 0 : {
9316 0 : tree _o1[2], _r1;
9317 0 : {
9318 0 : tree _o2[2], _r2;
9319 0 : {
9320 0 : tree _o3[1], _r3;
9321 0 : _o3[0] = captures[1];
9322 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
9323 0 : if (!_r3)
9324 0 : goto next_after_fail1450;
9325 0 : _o2[0] = _r3;
9326 : }
9327 0 : _o2[1] = captures[2];
9328 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9329 0 : _o1[0] = _r2;
9330 : }
9331 0 : _o1[1] = captures[4];
9332 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9333 0 : res_op0 = _r1;
9334 : }
9335 0 : tree _r;
9336 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10, type, 1, res_op0);
9337 0 : if (!_r)
9338 0 : goto next_after_fail1450;
9339 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
9340 0 : return _r;
9341 : }
9342 0 : next_after_fail1450:;
9343 : }
9344 : }
9345 : }
9346 : }
9347 : break;
9348 : default:;
9349 : }
9350 : break;
9351 : default:;
9352 : }
9353 : break;
9354 : }
9355 123 : default:;
9356 : }
9357 123 : switch (TREE_CODE (_q21))
9358 : {
9359 12 : case REAL_CST:
9360 12 : {
9361 12 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9362 : {
9363 8 : {
9364 8 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
9365 8 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
9366 8 : if (res) return res;
9367 : }
9368 : }
9369 : break;
9370 : }
9371 : default:;
9372 : }
9373 : }
9374 : break;
9375 48 : case CFN_BUILT_IN_EXP10F:
9376 48 : if (call_expr_nargs (_p0) == 1)
9377 : {
9378 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9379 48 : switch (TREE_CODE (_p1))
9380 : {
9381 24 : case CALL_EXPR:
9382 24 : switch (get_call_combined_fn (_p1))
9383 : {
9384 24 : case CFN_BUILT_IN_EXP10F:
9385 24 : if (call_expr_nargs (_p1) == 1)
9386 : {
9387 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9388 24 : {
9389 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9390 24 : if (flag_unsafe_math_optimizations
9391 : )
9392 : {
9393 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1451;
9394 24 : {
9395 24 : tree res_op0;
9396 24 : {
9397 24 : tree _o1[2], _r1;
9398 24 : _o1[0] = captures[1];
9399 24 : _o1[1] = captures[3];
9400 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9401 24 : res_op0 = _r1;
9402 : }
9403 24 : tree _r;
9404 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10F, type, 1, res_op0);
9405 24 : if (!_r)
9406 0 : goto next_after_fail1451;
9407 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 984, __FILE__, __LINE__, true);
9408 24 : return _r;
9409 : }
9410 0 : next_after_fail1451:;
9411 : }
9412 : }
9413 : }
9414 : break;
9415 0 : case CFN_BUILT_IN_POWF:
9416 0 : if (call_expr_nargs (_p1) == 2)
9417 : {
9418 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9419 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9420 0 : switch (TREE_CODE (_q40))
9421 : {
9422 0 : case REAL_CST:
9423 0 : {
9424 0 : {
9425 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9426 0 : if (flag_unsafe_math_optimizations
9427 : )
9428 : {
9429 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9430 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9431 : )
9432 : {
9433 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1452;
9434 0 : {
9435 0 : tree res_op0;
9436 0 : {
9437 0 : tree _o1[2], _r1;
9438 0 : {
9439 0 : tree _o2[2], _r2;
9440 0 : {
9441 0 : tree _o3[1], _r3;
9442 0 : _o3[0] = captures[1];
9443 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
9444 0 : if (!_r3)
9445 0 : goto next_after_fail1452;
9446 0 : _o2[0] = _r3;
9447 : }
9448 0 : _o2[1] = captures[2];
9449 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9450 0 : _o1[0] = _r2;
9451 : }
9452 0 : _o1[1] = captures[4];
9453 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9454 0 : res_op0 = _r1;
9455 : }
9456 0 : tree _r;
9457 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10F, type, 1, res_op0);
9458 0 : if (!_r)
9459 0 : goto next_after_fail1452;
9460 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
9461 0 : return _r;
9462 : }
9463 0 : next_after_fail1452:;
9464 : }
9465 : }
9466 : }
9467 0 : break;
9468 : }
9469 : default:;
9470 : }
9471 : }
9472 : break;
9473 : default:;
9474 : }
9475 : break;
9476 : default:;
9477 : }
9478 : }
9479 : break;
9480 48 : case CFN_BUILT_IN_EXP10L:
9481 48 : if (call_expr_nargs (_p0) == 1)
9482 : {
9483 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9484 48 : switch (TREE_CODE (_p1))
9485 : {
9486 24 : case CALL_EXPR:
9487 24 : switch (get_call_combined_fn (_p1))
9488 : {
9489 24 : case CFN_BUILT_IN_EXP10L:
9490 24 : if (call_expr_nargs (_p1) == 1)
9491 : {
9492 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9493 24 : {
9494 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9495 24 : if (flag_unsafe_math_optimizations
9496 : )
9497 : {
9498 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1453;
9499 24 : {
9500 24 : tree res_op0;
9501 24 : {
9502 24 : tree _o1[2], _r1;
9503 24 : _o1[0] = captures[1];
9504 24 : _o1[1] = captures[3];
9505 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9506 24 : res_op0 = _r1;
9507 : }
9508 24 : tree _r;
9509 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10L, type, 1, res_op0);
9510 24 : if (!_r)
9511 0 : goto next_after_fail1453;
9512 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 984, __FILE__, __LINE__, true);
9513 24 : return _r;
9514 : }
9515 0 : next_after_fail1453:;
9516 : }
9517 : }
9518 : }
9519 : break;
9520 0 : case CFN_BUILT_IN_POWL:
9521 0 : if (call_expr_nargs (_p1) == 2)
9522 : {
9523 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9524 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9525 0 : switch (TREE_CODE (_q40))
9526 : {
9527 0 : case REAL_CST:
9528 0 : {
9529 0 : {
9530 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9531 0 : if (flag_unsafe_math_optimizations
9532 : )
9533 : {
9534 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9535 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9536 : )
9537 : {
9538 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1454;
9539 0 : {
9540 0 : tree res_op0;
9541 0 : {
9542 0 : tree _o1[2], _r1;
9543 0 : {
9544 0 : tree _o2[2], _r2;
9545 0 : {
9546 0 : tree _o3[1], _r3;
9547 0 : _o3[0] = captures[1];
9548 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
9549 0 : if (!_r3)
9550 0 : goto next_after_fail1454;
9551 0 : _o2[0] = _r3;
9552 : }
9553 0 : _o2[1] = captures[2];
9554 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9555 0 : _o1[0] = _r2;
9556 : }
9557 0 : _o1[1] = captures[4];
9558 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9559 0 : res_op0 = _r1;
9560 : }
9561 0 : tree _r;
9562 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10L, type, 1, res_op0);
9563 0 : if (!_r)
9564 0 : goto next_after_fail1454;
9565 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
9566 0 : return _r;
9567 : }
9568 0 : next_after_fail1454:;
9569 : }
9570 : }
9571 : }
9572 0 : break;
9573 : }
9574 : default:;
9575 : }
9576 : }
9577 : break;
9578 : default:;
9579 : }
9580 : break;
9581 : default:;
9582 : }
9583 : }
9584 : break;
9585 18 : case CFN_BUILT_IN_CBRT:
9586 18 : if (call_expr_nargs (_p0) == 1)
9587 : {
9588 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9589 18 : switch (TREE_CODE (_p1))
9590 : {
9591 14 : case CALL_EXPR:
9592 14 : switch (get_call_combined_fn (_p1))
9593 : {
9594 14 : case CFN_BUILT_IN_CBRT:
9595 14 : if (call_expr_nargs (_p1) == 1)
9596 : {
9597 14 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9598 14 : {
9599 14 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9600 14 : if (flag_unsafe_math_optimizations
9601 : )
9602 : {
9603 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1455;
9604 12 : {
9605 12 : tree res_op0;
9606 12 : {
9607 12 : tree _o1[2], _r1;
9608 12 : _o1[0] = captures[1];
9609 12 : _o1[1] = captures[3];
9610 12 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9611 12 : res_op0 = _r1;
9612 : }
9613 12 : tree _r;
9614 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRT, type, 1, res_op0);
9615 12 : if (!_r)
9616 0 : goto next_after_fail1455;
9617 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 983, __FILE__, __LINE__, true);
9618 12 : return _r;
9619 : }
9620 2 : next_after_fail1455:;
9621 : }
9622 : }
9623 : }
9624 : break;
9625 : default:;
9626 : }
9627 : break;
9628 : default:;
9629 : }
9630 : }
9631 : break;
9632 48 : case CFN_BUILT_IN_EXP2:
9633 48 : if (call_expr_nargs (_p0) == 1)
9634 : {
9635 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9636 48 : switch (TREE_CODE (_p1))
9637 : {
9638 24 : case CALL_EXPR:
9639 24 : switch (get_call_combined_fn (_p1))
9640 : {
9641 0 : case CFN_BUILT_IN_POW:
9642 0 : if (call_expr_nargs (_p1) == 2)
9643 : {
9644 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9645 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9646 0 : switch (TREE_CODE (_q40))
9647 : {
9648 0 : case REAL_CST:
9649 0 : {
9650 0 : {
9651 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9652 0 : if (flag_unsafe_math_optimizations
9653 : )
9654 : {
9655 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9656 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9657 : )
9658 : {
9659 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1456;
9660 0 : {
9661 0 : tree res_op0;
9662 0 : {
9663 0 : tree _o1[2], _r1;
9664 0 : {
9665 0 : tree _o2[2], _r2;
9666 0 : {
9667 0 : tree _o3[1], _r3;
9668 0 : _o3[0] = captures[1];
9669 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
9670 0 : if (!_r3)
9671 0 : goto next_after_fail1456;
9672 0 : _o2[0] = _r3;
9673 : }
9674 0 : _o2[1] = captures[2];
9675 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9676 0 : _o1[0] = _r2;
9677 : }
9678 0 : _o1[1] = captures[4];
9679 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9680 0 : res_op0 = _r1;
9681 : }
9682 0 : tree _r;
9683 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2, type, 1, res_op0);
9684 0 : if (!_r)
9685 0 : goto next_after_fail1456;
9686 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
9687 0 : return _r;
9688 : }
9689 0 : next_after_fail1456:;
9690 : }
9691 : }
9692 : }
9693 0 : break;
9694 : }
9695 : default:;
9696 : }
9697 : }
9698 : break;
9699 24 : case CFN_BUILT_IN_EXP2:
9700 24 : if (call_expr_nargs (_p1) == 1)
9701 : {
9702 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9703 24 : {
9704 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9705 24 : if (flag_unsafe_math_optimizations
9706 : )
9707 : {
9708 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1457;
9709 24 : {
9710 24 : tree res_op0;
9711 24 : {
9712 24 : tree _o1[2], _r1;
9713 24 : _o1[0] = captures[1];
9714 24 : _o1[1] = captures[3];
9715 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9716 24 : res_op0 = _r1;
9717 : }
9718 24 : tree _r;
9719 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2, type, 1, res_op0);
9720 24 : if (!_r)
9721 0 : goto next_after_fail1457;
9722 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 984, __FILE__, __LINE__, true);
9723 24 : return _r;
9724 : }
9725 0 : next_after_fail1457:;
9726 : }
9727 : }
9728 : }
9729 : break;
9730 : default:;
9731 : }
9732 : break;
9733 : default:;
9734 : }
9735 : }
9736 : break;
9737 66 : case CFN_BUILT_IN_EXPF:
9738 66 : if (call_expr_nargs (_p0) == 1)
9739 : {
9740 66 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9741 66 : switch (TREE_CODE (_p1))
9742 : {
9743 36 : case CALL_EXPR:
9744 36 : switch (get_call_combined_fn (_p1))
9745 : {
9746 29 : case CFN_BUILT_IN_EXPF:
9747 29 : if (call_expr_nargs (_p1) == 1)
9748 : {
9749 29 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9750 29 : {
9751 29 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9752 29 : if (flag_unsafe_math_optimizations
9753 : )
9754 : {
9755 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1458;
9756 25 : {
9757 25 : tree res_op0;
9758 25 : {
9759 25 : tree _o1[2], _r1;
9760 25 : _o1[0] = captures[1];
9761 25 : _o1[1] = captures[3];
9762 25 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9763 25 : res_op0 = _r1;
9764 : }
9765 25 : tree _r;
9766 25 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPF, type, 1, res_op0);
9767 25 : if (!_r)
9768 0 : goto next_after_fail1458;
9769 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 984, __FILE__, __LINE__, true);
9770 25 : return _r;
9771 : }
9772 4 : next_after_fail1458:;
9773 : }
9774 : }
9775 : }
9776 : break;
9777 0 : case CFN_BUILT_IN_POWF:
9778 0 : if (call_expr_nargs (_p1) == 2)
9779 : {
9780 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9781 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9782 0 : switch (TREE_CODE (_q40))
9783 : {
9784 0 : case REAL_CST:
9785 0 : {
9786 0 : {
9787 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9788 0 : if (flag_unsafe_math_optimizations
9789 : )
9790 : {
9791 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9792 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9793 : )
9794 : {
9795 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1459;
9796 0 : {
9797 0 : tree res_op0;
9798 0 : {
9799 0 : tree _o1[2], _r1;
9800 0 : {
9801 0 : tree _o2[2], _r2;
9802 0 : {
9803 0 : tree _o3[1], _r3;
9804 0 : _o3[0] = captures[1];
9805 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGF, TREE_TYPE (_o3[0]), 1, _o3[0]);
9806 0 : if (!_r3)
9807 0 : goto next_after_fail1459;
9808 0 : _o2[0] = _r3;
9809 : }
9810 0 : _o2[1] = captures[2];
9811 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9812 0 : _o1[0] = _r2;
9813 : }
9814 0 : _o1[1] = captures[4];
9815 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9816 0 : res_op0 = _r1;
9817 : }
9818 0 : tree _r;
9819 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPF, type, 1, res_op0);
9820 0 : if (!_r)
9821 0 : goto next_after_fail1459;
9822 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
9823 0 : return _r;
9824 : }
9825 0 : next_after_fail1459:;
9826 : }
9827 : }
9828 : }
9829 0 : break;
9830 : }
9831 : default:;
9832 : }
9833 : }
9834 : break;
9835 : default:;
9836 : }
9837 : break;
9838 : default:;
9839 : }
9840 : }
9841 : break;
9842 59 : case CFN_BUILT_IN_EXPL:
9843 59 : if (call_expr_nargs (_p0) == 1)
9844 : {
9845 59 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9846 59 : switch (TREE_CODE (_p1))
9847 : {
9848 29 : case CALL_EXPR:
9849 29 : switch (get_call_combined_fn (_p1))
9850 : {
9851 29 : case CFN_BUILT_IN_EXPL:
9852 29 : if (call_expr_nargs (_p1) == 1)
9853 : {
9854 29 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9855 29 : {
9856 29 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9857 29 : if (flag_unsafe_math_optimizations
9858 : )
9859 : {
9860 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1460;
9861 25 : {
9862 25 : tree res_op0;
9863 25 : {
9864 25 : tree _o1[2], _r1;
9865 25 : _o1[0] = captures[1];
9866 25 : _o1[1] = captures[3];
9867 25 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9868 25 : res_op0 = _r1;
9869 : }
9870 25 : tree _r;
9871 25 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPL, type, 1, res_op0);
9872 25 : if (!_r)
9873 0 : goto next_after_fail1460;
9874 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 984, __FILE__, __LINE__, true);
9875 25 : return _r;
9876 : }
9877 4 : next_after_fail1460:;
9878 : }
9879 : }
9880 : }
9881 : break;
9882 0 : case CFN_BUILT_IN_POWL:
9883 0 : if (call_expr_nargs (_p1) == 2)
9884 : {
9885 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9886 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9887 0 : switch (TREE_CODE (_q40))
9888 : {
9889 0 : case REAL_CST:
9890 0 : {
9891 0 : {
9892 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9893 0 : if (flag_unsafe_math_optimizations
9894 : )
9895 : {
9896 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9897 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9898 : )
9899 : {
9900 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1461;
9901 0 : {
9902 0 : tree res_op0;
9903 0 : {
9904 0 : tree _o1[2], _r1;
9905 0 : {
9906 0 : tree _o2[2], _r2;
9907 0 : {
9908 0 : tree _o3[1], _r3;
9909 0 : _o3[0] = captures[1];
9910 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGL, TREE_TYPE (_o3[0]), 1, _o3[0]);
9911 0 : if (!_r3)
9912 0 : goto next_after_fail1461;
9913 0 : _o2[0] = _r3;
9914 : }
9915 0 : _o2[1] = captures[2];
9916 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9917 0 : _o1[0] = _r2;
9918 : }
9919 0 : _o1[1] = captures[4];
9920 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9921 0 : res_op0 = _r1;
9922 : }
9923 0 : tree _r;
9924 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPL, type, 1, res_op0);
9925 0 : if (!_r)
9926 0 : goto next_after_fail1461;
9927 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
9928 0 : return _r;
9929 : }
9930 0 : next_after_fail1461:;
9931 : }
9932 : }
9933 : }
9934 0 : break;
9935 : }
9936 : default:;
9937 : }
9938 : }
9939 : break;
9940 : default:;
9941 : }
9942 : break;
9943 : default:;
9944 : }
9945 : }
9946 : break;
9947 19 : case CFN_BUILT_IN_POWF:
9948 19 : if (call_expr_nargs (_p0) == 2)
9949 : {
9950 19 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9951 19 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
9952 19 : switch (TREE_CODE (_q20))
9953 : {
9954 0 : case REAL_CST:
9955 0 : {
9956 0 : switch (TREE_CODE (_p1))
9957 : {
9958 0 : case CALL_EXPR:
9959 0 : switch (get_call_combined_fn (_p1))
9960 : {
9961 0 : case CFN_BUILT_IN_EXP10F:
9962 0 : if (call_expr_nargs (_p1) == 1)
9963 : {
9964 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9965 0 : {
9966 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9967 0 : if (flag_unsafe_math_optimizations
9968 : )
9969 : {
9970 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9971 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9972 : )
9973 : {
9974 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1462;
9975 0 : {
9976 0 : tree res_op0;
9977 0 : {
9978 0 : tree _o1[2], _r1;
9979 0 : {
9980 0 : tree _o2[2], _r2;
9981 0 : {
9982 0 : tree _o3[1], _r3;
9983 0 : _o3[0] = captures[1];
9984 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
9985 0 : if (!_r3)
9986 0 : goto next_after_fail1462;
9987 0 : _o2[0] = _r3;
9988 : }
9989 0 : _o2[1] = captures[2];
9990 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9991 0 : _o1[0] = _r2;
9992 : }
9993 0 : _o1[1] = captures[4];
9994 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9995 0 : res_op0 = _r1;
9996 : }
9997 0 : tree _r;
9998 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10F, type, 1, res_op0);
9999 0 : if (!_r)
10000 0 : goto next_after_fail1462;
10001 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
10002 0 : return _r;
10003 : }
10004 0 : next_after_fail1462:;
10005 : }
10006 : }
10007 : }
10008 : }
10009 : break;
10010 0 : case CFN_BUILT_IN_EXPF:
10011 0 : if (call_expr_nargs (_p1) == 1)
10012 : {
10013 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10014 0 : {
10015 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10016 0 : if (flag_unsafe_math_optimizations
10017 : )
10018 : {
10019 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10020 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10021 : )
10022 : {
10023 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1463;
10024 0 : {
10025 0 : tree res_op0;
10026 0 : {
10027 0 : tree _o1[2], _r1;
10028 0 : {
10029 0 : tree _o2[2], _r2;
10030 0 : {
10031 0 : tree _o3[1], _r3;
10032 0 : _o3[0] = captures[1];
10033 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGF, TREE_TYPE (_o3[0]), 1, _o3[0]);
10034 0 : if (!_r3)
10035 0 : goto next_after_fail1463;
10036 0 : _o2[0] = _r3;
10037 : }
10038 0 : _o2[1] = captures[2];
10039 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10040 0 : _o1[0] = _r2;
10041 : }
10042 0 : _o1[1] = captures[4];
10043 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10044 0 : res_op0 = _r1;
10045 : }
10046 0 : tree _r;
10047 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPF, type, 1, res_op0);
10048 0 : if (!_r)
10049 0 : goto next_after_fail1463;
10050 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
10051 0 : return _r;
10052 : }
10053 0 : next_after_fail1463:;
10054 : }
10055 : }
10056 : }
10057 : }
10058 : break;
10059 0 : case CFN_BUILT_IN_POW10F:
10060 0 : if (call_expr_nargs (_p1) == 1)
10061 : {
10062 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10063 0 : {
10064 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10065 0 : if (flag_unsafe_math_optimizations
10066 : )
10067 : {
10068 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10069 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10070 : )
10071 : {
10072 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1464;
10073 0 : {
10074 0 : tree res_op0;
10075 0 : {
10076 0 : tree _o1[2], _r1;
10077 0 : {
10078 0 : tree _o2[2], _r2;
10079 0 : {
10080 0 : tree _o3[1], _r3;
10081 0 : _o3[0] = captures[1];
10082 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
10083 0 : if (!_r3)
10084 0 : goto next_after_fail1464;
10085 0 : _o2[0] = _r3;
10086 : }
10087 0 : _o2[1] = captures[2];
10088 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10089 0 : _o1[0] = _r2;
10090 : }
10091 0 : _o1[1] = captures[4];
10092 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10093 0 : res_op0 = _r1;
10094 : }
10095 0 : tree _r;
10096 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10F, type, 1, res_op0);
10097 0 : if (!_r)
10098 0 : goto next_after_fail1464;
10099 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
10100 0 : return _r;
10101 : }
10102 0 : next_after_fail1464:;
10103 : }
10104 : }
10105 : }
10106 : }
10107 : break;
10108 0 : case CFN_BUILT_IN_EXP2F:
10109 0 : if (call_expr_nargs (_p1) == 1)
10110 : {
10111 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10112 0 : {
10113 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10114 0 : if (flag_unsafe_math_optimizations
10115 : )
10116 : {
10117 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10118 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10119 : )
10120 : {
10121 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1465;
10122 0 : {
10123 0 : tree res_op0;
10124 0 : {
10125 0 : tree _o1[2], _r1;
10126 0 : {
10127 0 : tree _o2[2], _r2;
10128 0 : {
10129 0 : tree _o3[1], _r3;
10130 0 : _o3[0] = captures[1];
10131 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2F, TREE_TYPE (_o3[0]), 1, _o3[0]);
10132 0 : if (!_r3)
10133 0 : goto next_after_fail1465;
10134 0 : _o2[0] = _r3;
10135 : }
10136 0 : _o2[1] = captures[2];
10137 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10138 0 : _o1[0] = _r2;
10139 : }
10140 0 : _o1[1] = captures[4];
10141 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10142 0 : res_op0 = _r1;
10143 : }
10144 0 : tree _r;
10145 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2F, type, 1, res_op0);
10146 0 : if (!_r)
10147 0 : goto next_after_fail1465;
10148 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
10149 0 : return _r;
10150 : }
10151 0 : next_after_fail1465:;
10152 : }
10153 : }
10154 : }
10155 : }
10156 : break;
10157 : default:;
10158 : }
10159 : break;
10160 : default:;
10161 : }
10162 : break;
10163 : }
10164 19 : default:;
10165 : }
10166 19 : switch (TREE_CODE (_q21))
10167 : {
10168 5 : case REAL_CST:
10169 5 : {
10170 5 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10171 : {
10172 0 : {
10173 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
10174 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
10175 0 : if (res) return res;
10176 : }
10177 : }
10178 : break;
10179 : }
10180 : default:;
10181 : }
10182 : }
10183 : break;
10184 12 : case CFN_BUILT_IN_POWL:
10185 12 : if (call_expr_nargs (_p0) == 2)
10186 : {
10187 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10188 12 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10189 12 : switch (TREE_CODE (_q20))
10190 : {
10191 0 : case REAL_CST:
10192 0 : {
10193 0 : switch (TREE_CODE (_p1))
10194 : {
10195 0 : case CALL_EXPR:
10196 0 : switch (get_call_combined_fn (_p1))
10197 : {
10198 0 : case CFN_BUILT_IN_EXP10L:
10199 0 : if (call_expr_nargs (_p1) == 1)
10200 : {
10201 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10202 0 : {
10203 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10204 0 : if (flag_unsafe_math_optimizations
10205 : )
10206 : {
10207 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10208 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10209 : )
10210 : {
10211 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1466;
10212 0 : {
10213 0 : tree res_op0;
10214 0 : {
10215 0 : tree _o1[2], _r1;
10216 0 : {
10217 0 : tree _o2[2], _r2;
10218 0 : {
10219 0 : tree _o3[1], _r3;
10220 0 : _o3[0] = captures[1];
10221 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
10222 0 : if (!_r3)
10223 0 : goto next_after_fail1466;
10224 0 : _o2[0] = _r3;
10225 : }
10226 0 : _o2[1] = captures[2];
10227 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10228 0 : _o1[0] = _r2;
10229 : }
10230 0 : _o1[1] = captures[4];
10231 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10232 0 : res_op0 = _r1;
10233 : }
10234 0 : tree _r;
10235 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10L, type, 1, res_op0);
10236 0 : if (!_r)
10237 0 : goto next_after_fail1466;
10238 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
10239 0 : return _r;
10240 : }
10241 0 : next_after_fail1466:;
10242 : }
10243 : }
10244 : }
10245 : }
10246 : break;
10247 0 : case CFN_BUILT_IN_EXPL:
10248 0 : if (call_expr_nargs (_p1) == 1)
10249 : {
10250 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10251 0 : {
10252 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10253 0 : if (flag_unsafe_math_optimizations
10254 : )
10255 : {
10256 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10257 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10258 : )
10259 : {
10260 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1467;
10261 0 : {
10262 0 : tree res_op0;
10263 0 : {
10264 0 : tree _o1[2], _r1;
10265 0 : {
10266 0 : tree _o2[2], _r2;
10267 0 : {
10268 0 : tree _o3[1], _r3;
10269 0 : _o3[0] = captures[1];
10270 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGL, TREE_TYPE (_o3[0]), 1, _o3[0]);
10271 0 : if (!_r3)
10272 0 : goto next_after_fail1467;
10273 0 : _o2[0] = _r3;
10274 : }
10275 0 : _o2[1] = captures[2];
10276 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10277 0 : _o1[0] = _r2;
10278 : }
10279 0 : _o1[1] = captures[4];
10280 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10281 0 : res_op0 = _r1;
10282 : }
10283 0 : tree _r;
10284 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPL, type, 1, res_op0);
10285 0 : if (!_r)
10286 0 : goto next_after_fail1467;
10287 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
10288 0 : return _r;
10289 : }
10290 0 : next_after_fail1467:;
10291 : }
10292 : }
10293 : }
10294 : }
10295 : break;
10296 0 : case CFN_BUILT_IN_POW10L:
10297 0 : if (call_expr_nargs (_p1) == 1)
10298 : {
10299 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10300 0 : {
10301 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10302 0 : if (flag_unsafe_math_optimizations
10303 : )
10304 : {
10305 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10306 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10307 : )
10308 : {
10309 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1468;
10310 0 : {
10311 0 : tree res_op0;
10312 0 : {
10313 0 : tree _o1[2], _r1;
10314 0 : {
10315 0 : tree _o2[2], _r2;
10316 0 : {
10317 0 : tree _o3[1], _r3;
10318 0 : _o3[0] = captures[1];
10319 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
10320 0 : if (!_r3)
10321 0 : goto next_after_fail1468;
10322 0 : _o2[0] = _r3;
10323 : }
10324 0 : _o2[1] = captures[2];
10325 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10326 0 : _o1[0] = _r2;
10327 : }
10328 0 : _o1[1] = captures[4];
10329 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10330 0 : res_op0 = _r1;
10331 : }
10332 0 : tree _r;
10333 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10L, type, 1, res_op0);
10334 0 : if (!_r)
10335 0 : goto next_after_fail1468;
10336 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
10337 0 : return _r;
10338 : }
10339 0 : next_after_fail1468:;
10340 : }
10341 : }
10342 : }
10343 : }
10344 : break;
10345 0 : case CFN_BUILT_IN_EXP2L:
10346 0 : if (call_expr_nargs (_p1) == 1)
10347 : {
10348 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10349 0 : {
10350 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10351 0 : if (flag_unsafe_math_optimizations
10352 : )
10353 : {
10354 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10355 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10356 : )
10357 : {
10358 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1469;
10359 0 : {
10360 0 : tree res_op0;
10361 0 : {
10362 0 : tree _o1[2], _r1;
10363 0 : {
10364 0 : tree _o2[2], _r2;
10365 0 : {
10366 0 : tree _o3[1], _r3;
10367 0 : _o3[0] = captures[1];
10368 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2L, TREE_TYPE (_o3[0]), 1, _o3[0]);
10369 0 : if (!_r3)
10370 0 : goto next_after_fail1469;
10371 0 : _o2[0] = _r3;
10372 : }
10373 0 : _o2[1] = captures[2];
10374 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10375 0 : _o1[0] = _r2;
10376 : }
10377 0 : _o1[1] = captures[4];
10378 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10379 0 : res_op0 = _r1;
10380 : }
10381 0 : tree _r;
10382 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2L, type, 1, res_op0);
10383 0 : if (!_r)
10384 0 : goto next_after_fail1469;
10385 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
10386 0 : return _r;
10387 : }
10388 0 : next_after_fail1469:;
10389 : }
10390 : }
10391 : }
10392 : }
10393 : break;
10394 : default:;
10395 : }
10396 : break;
10397 : default:;
10398 : }
10399 : break;
10400 : }
10401 12 : default:;
10402 : }
10403 12 : switch (TREE_CODE (_q21))
10404 : {
10405 0 : case REAL_CST:
10406 0 : {
10407 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10408 : {
10409 0 : {
10410 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
10411 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
10412 0 : if (res) return res;
10413 : }
10414 : }
10415 : break;
10416 : }
10417 : default:;
10418 : }
10419 : }
10420 : break;
10421 19696 : case CFN_BUILT_IN_SQRT:
10422 19696 : if (call_expr_nargs (_p0) == 1)
10423 : {
10424 19696 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10425 19696 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10426 : {
10427 2 : {
10428 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10429 2 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT);
10430 2 : if (res) return res;
10431 : }
10432 : }
10433 19694 : switch (TREE_CODE (_p1))
10434 : {
10435 100 : case CALL_EXPR:
10436 100 : switch (get_call_combined_fn (_p1))
10437 : {
10438 37 : case CFN_BUILT_IN_SQRT:
10439 37 : if (call_expr_nargs (_p1) == 1)
10440 : {
10441 37 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10442 37 : {
10443 37 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10444 37 : if (flag_unsafe_math_optimizations
10445 : )
10446 : {
10447 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1470;
10448 15 : {
10449 15 : tree res_op0;
10450 15 : {
10451 15 : tree _o1[2], _r1;
10452 15 : _o1[0] = captures[1];
10453 15 : _o1[1] = captures[3];
10454 15 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10455 15 : res_op0 = _r1;
10456 : }
10457 15 : tree _r;
10458 15 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRT, type, 1, res_op0);
10459 15 : if (!_r)
10460 0 : goto next_after_fail1470;
10461 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 983, __FILE__, __LINE__, true);
10462 15 : return _r;
10463 : }
10464 22 : next_after_fail1470:;
10465 : }
10466 : }
10467 : }
10468 : break;
10469 : default:;
10470 : }
10471 : break;
10472 : default:;
10473 : }
10474 : }
10475 : break;
10476 5 : case CFN_BUILT_IN_LDEXPF:
10477 5 : if (call_expr_nargs (_p0) == 2)
10478 : {
10479 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10480 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10481 5 : switch (TREE_CODE (_p1))
10482 : {
10483 2 : case REAL_CST:
10484 2 : {
10485 2 : {
10486 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10487 2 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
10488 2 : if (res) return res;
10489 : }
10490 1 : break;
10491 : }
10492 4 : default:;
10493 : }
10494 4 : switch (TREE_CODE (_q20))
10495 : {
10496 3 : case REAL_CST:
10497 3 : {
10498 3 : {
10499 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10500 3 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
10501 3 : if (res) return res;
10502 : }
10503 0 : break;
10504 : }
10505 : default:;
10506 : }
10507 : }
10508 : break;
10509 5 : case CFN_BUILT_IN_LDEXPL:
10510 5 : if (call_expr_nargs (_p0) == 2)
10511 : {
10512 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10513 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10514 5 : switch (TREE_CODE (_p1))
10515 : {
10516 2 : case REAL_CST:
10517 2 : {
10518 2 : {
10519 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10520 2 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
10521 2 : if (res) return res;
10522 : }
10523 1 : break;
10524 : }
10525 4 : default:;
10526 : }
10527 4 : switch (TREE_CODE (_q20))
10528 : {
10529 3 : case REAL_CST:
10530 3 : {
10531 3 : {
10532 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10533 3 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
10534 3 : if (res) return res;
10535 : }
10536 0 : break;
10537 : }
10538 : default:;
10539 : }
10540 : }
10541 : break;
10542 4 : case CFN_BUILT_IN_SQRTF128:
10543 4 : if (call_expr_nargs (_p0) == 1)
10544 : {
10545 4 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10546 4 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10547 : {
10548 0 : {
10549 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10550 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF128);
10551 0 : if (res) return res;
10552 : }
10553 : }
10554 : }
10555 : break;
10556 0 : case CFN_BUILT_IN_SQRTF32X:
10557 0 : if (call_expr_nargs (_p0) == 1)
10558 : {
10559 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10560 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10561 : {
10562 0 : {
10563 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10564 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF32X);
10565 0 : if (res) return res;
10566 : }
10567 : }
10568 : }
10569 : break;
10570 0 : case CFN_BUILT_IN_SQRTF64X:
10571 0 : if (call_expr_nargs (_p0) == 1)
10572 : {
10573 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10574 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10575 : {
10576 0 : {
10577 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10578 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF64X);
10579 0 : if (res) return res;
10580 : }
10581 : }
10582 : }
10583 : break;
10584 0 : case CFN_BUILT_IN_SQRTF16:
10585 0 : if (call_expr_nargs (_p0) == 1)
10586 : {
10587 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10588 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10589 : {
10590 0 : {
10591 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10592 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF16);
10593 0 : if (res) return res;
10594 : }
10595 : }
10596 : }
10597 : break;
10598 0 : case CFN_BUILT_IN_SQRTF32:
10599 0 : if (call_expr_nargs (_p0) == 1)
10600 : {
10601 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10602 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10603 : {
10604 0 : {
10605 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10606 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF32);
10607 0 : if (res) return res;
10608 : }
10609 : }
10610 : }
10611 : break;
10612 0 : case CFN_BUILT_IN_SQRTF64:
10613 0 : if (call_expr_nargs (_p0) == 1)
10614 : {
10615 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10616 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10617 : {
10618 0 : {
10619 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10620 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF64);
10621 0 : if (res) return res;
10622 : }
10623 : }
10624 : }
10625 : break;
10626 0 : case CFN_EXP:
10627 0 : if (call_expr_nargs (_p0) == 1)
10628 : {
10629 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10630 0 : switch (TREE_CODE (_p1))
10631 : {
10632 0 : case CALL_EXPR:
10633 0 : switch (get_call_combined_fn (_p1))
10634 : {
10635 0 : case CFN_EXP:
10636 0 : if (call_expr_nargs (_p1) == 1)
10637 : {
10638 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10639 0 : {
10640 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10641 0 : if (flag_unsafe_math_optimizations
10642 : )
10643 : {
10644 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1471;
10645 0 : {
10646 0 : tree res_op0;
10647 0 : {
10648 0 : tree _o1[2], _r1;
10649 0 : _o1[0] = captures[1];
10650 0 : _o1[1] = captures[3];
10651 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10652 0 : res_op0 = _r1;
10653 : }
10654 0 : tree _r;
10655 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP, type, 1, res_op0);
10656 0 : if (!_r)
10657 0 : goto next_after_fail1471;
10658 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 984, __FILE__, __LINE__, true);
10659 0 : return _r;
10660 : }
10661 0 : next_after_fail1471:;
10662 : }
10663 : }
10664 : }
10665 : break;
10666 0 : case CFN_POW:
10667 0 : if (call_expr_nargs (_p1) == 2)
10668 : {
10669 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10670 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
10671 0 : switch (TREE_CODE (_q40))
10672 : {
10673 0 : case REAL_CST:
10674 0 : {
10675 0 : {
10676 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
10677 0 : if (flag_unsafe_math_optimizations
10678 : )
10679 : {
10680 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10681 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10682 : )
10683 : {
10684 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1472;
10685 0 : {
10686 0 : tree res_op0;
10687 0 : {
10688 0 : tree _o1[2], _r1;
10689 0 : {
10690 0 : tree _o2[2], _r2;
10691 0 : {
10692 0 : tree _o3[1], _r3;
10693 0 : _o3[0] = captures[1];
10694 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
10695 0 : if (!_r3)
10696 0 : goto next_after_fail1472;
10697 0 : _o2[0] = _r3;
10698 : }
10699 0 : _o2[1] = captures[2];
10700 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10701 0 : _o1[0] = _r2;
10702 : }
10703 0 : _o1[1] = captures[4];
10704 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10705 0 : res_op0 = _r1;
10706 : }
10707 0 : tree _r;
10708 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP, type, 1, res_op0);
10709 0 : if (!_r)
10710 0 : goto next_after_fail1472;
10711 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
10712 0 : return _r;
10713 : }
10714 0 : next_after_fail1472:;
10715 : }
10716 : }
10717 : }
10718 0 : break;
10719 : }
10720 : default:;
10721 : }
10722 : }
10723 : break;
10724 : default:;
10725 : }
10726 : break;
10727 : default:;
10728 : }
10729 : }
10730 : break;
10731 0 : case CFN_POW:
10732 0 : if (call_expr_nargs (_p0) == 2)
10733 : {
10734 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10735 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10736 0 : switch (TREE_CODE (_q20))
10737 : {
10738 0 : case REAL_CST:
10739 0 : {
10740 0 : switch (TREE_CODE (_p1))
10741 : {
10742 0 : case CALL_EXPR:
10743 0 : switch (get_call_combined_fn (_p1))
10744 : {
10745 0 : case CFN_EXP:
10746 0 : if (call_expr_nargs (_p1) == 1)
10747 : {
10748 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10749 0 : {
10750 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10751 0 : if (flag_unsafe_math_optimizations
10752 : )
10753 : {
10754 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10755 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10756 : )
10757 : {
10758 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1473;
10759 0 : {
10760 0 : tree res_op0;
10761 0 : {
10762 0 : tree _o1[2], _r1;
10763 0 : {
10764 0 : tree _o2[2], _r2;
10765 0 : {
10766 0 : tree _o3[1], _r3;
10767 0 : _o3[0] = captures[1];
10768 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
10769 0 : if (!_r3)
10770 0 : goto next_after_fail1473;
10771 0 : _o2[0] = _r3;
10772 : }
10773 0 : _o2[1] = captures[2];
10774 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10775 0 : _o1[0] = _r2;
10776 : }
10777 0 : _o1[1] = captures[4];
10778 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10779 0 : res_op0 = _r1;
10780 : }
10781 0 : tree _r;
10782 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP, type, 1, res_op0);
10783 0 : if (!_r)
10784 0 : goto next_after_fail1473;
10785 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
10786 0 : return _r;
10787 : }
10788 0 : next_after_fail1473:;
10789 : }
10790 : }
10791 : }
10792 : }
10793 : break;
10794 0 : case CFN_EXP2:
10795 0 : if (call_expr_nargs (_p1) == 1)
10796 : {
10797 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10798 0 : {
10799 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10800 0 : if (flag_unsafe_math_optimizations
10801 : )
10802 : {
10803 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10804 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10805 : )
10806 : {
10807 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1474;
10808 0 : {
10809 0 : tree res_op0;
10810 0 : {
10811 0 : tree _o1[2], _r1;
10812 0 : {
10813 0 : tree _o2[2], _r2;
10814 0 : {
10815 0 : tree _o3[1], _r3;
10816 0 : _o3[0] = captures[1];
10817 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
10818 0 : if (!_r3)
10819 0 : goto next_after_fail1474;
10820 0 : _o2[0] = _r3;
10821 : }
10822 0 : _o2[1] = captures[2];
10823 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10824 0 : _o1[0] = _r2;
10825 : }
10826 0 : _o1[1] = captures[4];
10827 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10828 0 : res_op0 = _r1;
10829 : }
10830 0 : tree _r;
10831 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP2, type, 1, res_op0);
10832 0 : if (!_r)
10833 0 : goto next_after_fail1474;
10834 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
10835 0 : return _r;
10836 : }
10837 0 : next_after_fail1474:;
10838 : }
10839 : }
10840 : }
10841 : }
10842 : break;
10843 0 : case CFN_EXP10:
10844 0 : if (call_expr_nargs (_p1) == 1)
10845 : {
10846 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10847 0 : {
10848 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10849 0 : if (flag_unsafe_math_optimizations
10850 : )
10851 : {
10852 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10853 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10854 : )
10855 : {
10856 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1475;
10857 0 : {
10858 0 : tree res_op0;
10859 0 : {
10860 0 : tree _o1[2], _r1;
10861 0 : {
10862 0 : tree _o2[2], _r2;
10863 0 : {
10864 0 : tree _o3[1], _r3;
10865 0 : _o3[0] = captures[1];
10866 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
10867 0 : if (!_r3)
10868 0 : goto next_after_fail1475;
10869 0 : _o2[0] = _r3;
10870 : }
10871 0 : _o2[1] = captures[2];
10872 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10873 0 : _o1[0] = _r2;
10874 : }
10875 0 : _o1[1] = captures[4];
10876 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10877 0 : res_op0 = _r1;
10878 : }
10879 0 : tree _r;
10880 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP10, type, 1, res_op0);
10881 0 : if (!_r)
10882 0 : goto next_after_fail1475;
10883 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
10884 0 : return _r;
10885 : }
10886 0 : next_after_fail1475:;
10887 : }
10888 : }
10889 : }
10890 : }
10891 : break;
10892 : default:;
10893 : }
10894 : break;
10895 : default:;
10896 : }
10897 : break;
10898 : }
10899 0 : default:;
10900 : }
10901 0 : switch (TREE_CODE (_q21))
10902 : {
10903 0 : case REAL_CST:
10904 0 : {
10905 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10906 : {
10907 0 : {
10908 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
10909 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_POW);
10910 0 : if (res) return res;
10911 : }
10912 : }
10913 : break;
10914 : }
10915 : default:;
10916 : }
10917 : }
10918 : break;
10919 24 : case CFN_BUILT_IN_POW10F:
10920 24 : if (call_expr_nargs (_p0) == 1)
10921 : {
10922 24 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10923 24 : switch (TREE_CODE (_p1))
10924 : {
10925 12 : case CALL_EXPR:
10926 12 : switch (get_call_combined_fn (_p1))
10927 : {
10928 0 : case CFN_BUILT_IN_POWF:
10929 0 : if (call_expr_nargs (_p1) == 2)
10930 : {
10931 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10932 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
10933 0 : switch (TREE_CODE (_q40))
10934 : {
10935 0 : case REAL_CST:
10936 0 : {
10937 0 : {
10938 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
10939 0 : if (flag_unsafe_math_optimizations
10940 : )
10941 : {
10942 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10943 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10944 : )
10945 : {
10946 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1476;
10947 0 : {
10948 0 : tree res_op0;
10949 0 : {
10950 0 : tree _o1[2], _r1;
10951 0 : {
10952 0 : tree _o2[2], _r2;
10953 0 : {
10954 0 : tree _o3[1], _r3;
10955 0 : _o3[0] = captures[1];
10956 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
10957 0 : if (!_r3)
10958 0 : goto next_after_fail1476;
10959 0 : _o2[0] = _r3;
10960 : }
10961 0 : _o2[1] = captures[2];
10962 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10963 0 : _o1[0] = _r2;
10964 : }
10965 0 : _o1[1] = captures[4];
10966 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10967 0 : res_op0 = _r1;
10968 : }
10969 0 : tree _r;
10970 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10F, type, 1, res_op0);
10971 0 : if (!_r)
10972 0 : goto next_after_fail1476;
10973 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
10974 0 : return _r;
10975 : }
10976 0 : next_after_fail1476:;
10977 : }
10978 : }
10979 : }
10980 0 : break;
10981 : }
10982 : default:;
10983 : }
10984 : }
10985 : break;
10986 12 : case CFN_BUILT_IN_POW10F:
10987 12 : if (call_expr_nargs (_p1) == 1)
10988 : {
10989 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10990 12 : {
10991 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10992 12 : if (flag_unsafe_math_optimizations
10993 : )
10994 : {
10995 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1477;
10996 12 : {
10997 12 : tree res_op0;
10998 12 : {
10999 12 : tree _o1[2], _r1;
11000 12 : _o1[0] = captures[1];
11001 12 : _o1[1] = captures[3];
11002 12 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11003 12 : res_op0 = _r1;
11004 : }
11005 12 : tree _r;
11006 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10F, type, 1, res_op0);
11007 12 : if (!_r)
11008 12 : goto next_after_fail1477;
11009 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 984, __FILE__, __LINE__, true);
11010 0 : return _r;
11011 : }
11012 12 : next_after_fail1477:;
11013 : }
11014 : }
11015 : }
11016 : break;
11017 : default:;
11018 : }
11019 : break;
11020 : default:;
11021 : }
11022 : }
11023 : break;
11024 24 : case CFN_BUILT_IN_POW10L:
11025 24 : if (call_expr_nargs (_p0) == 1)
11026 : {
11027 24 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11028 24 : switch (TREE_CODE (_p1))
11029 : {
11030 12 : case CALL_EXPR:
11031 12 : switch (get_call_combined_fn (_p1))
11032 : {
11033 0 : case CFN_BUILT_IN_POWL:
11034 0 : if (call_expr_nargs (_p1) == 2)
11035 : {
11036 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11037 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11038 0 : switch (TREE_CODE (_q40))
11039 : {
11040 0 : case REAL_CST:
11041 0 : {
11042 0 : {
11043 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11044 0 : if (flag_unsafe_math_optimizations
11045 : )
11046 : {
11047 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11048 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11049 : )
11050 : {
11051 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1478;
11052 0 : {
11053 0 : tree res_op0;
11054 0 : {
11055 0 : tree _o1[2], _r1;
11056 0 : {
11057 0 : tree _o2[2], _r2;
11058 0 : {
11059 0 : tree _o3[1], _r3;
11060 0 : _o3[0] = captures[1];
11061 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
11062 0 : if (!_r3)
11063 0 : goto next_after_fail1478;
11064 0 : _o2[0] = _r3;
11065 : }
11066 0 : _o2[1] = captures[2];
11067 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11068 0 : _o1[0] = _r2;
11069 : }
11070 0 : _o1[1] = captures[4];
11071 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11072 0 : res_op0 = _r1;
11073 : }
11074 0 : tree _r;
11075 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10L, type, 1, res_op0);
11076 0 : if (!_r)
11077 0 : goto next_after_fail1478;
11078 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
11079 0 : return _r;
11080 : }
11081 0 : next_after_fail1478:;
11082 : }
11083 : }
11084 : }
11085 0 : break;
11086 : }
11087 : default:;
11088 : }
11089 : }
11090 : break;
11091 12 : case CFN_BUILT_IN_POW10L:
11092 12 : if (call_expr_nargs (_p1) == 1)
11093 : {
11094 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11095 12 : {
11096 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11097 12 : if (flag_unsafe_math_optimizations
11098 : )
11099 : {
11100 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1479;
11101 12 : {
11102 12 : tree res_op0;
11103 12 : {
11104 12 : tree _o1[2], _r1;
11105 12 : _o1[0] = captures[1];
11106 12 : _o1[1] = captures[3];
11107 12 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11108 12 : res_op0 = _r1;
11109 : }
11110 12 : tree _r;
11111 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10L, type, 1, res_op0);
11112 12 : if (!_r)
11113 12 : goto next_after_fail1479;
11114 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 984, __FILE__, __LINE__, true);
11115 0 : return _r;
11116 : }
11117 12 : next_after_fail1479:;
11118 : }
11119 : }
11120 : }
11121 : break;
11122 : default:;
11123 : }
11124 : break;
11125 : default:;
11126 : }
11127 : }
11128 : break;
11129 0 : case CFN_BUILT_IN_SQRTF128X:
11130 0 : if (call_expr_nargs (_p0) == 1)
11131 : {
11132 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11133 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11134 : {
11135 0 : {
11136 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
11137 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF128X);
11138 0 : if (res) return res;
11139 : }
11140 : }
11141 : }
11142 : break;
11143 0 : case CFN_EXP2:
11144 0 : if (call_expr_nargs (_p0) == 1)
11145 : {
11146 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11147 0 : switch (TREE_CODE (_p1))
11148 : {
11149 0 : case CALL_EXPR:
11150 0 : switch (get_call_combined_fn (_p1))
11151 : {
11152 0 : case CFN_POW:
11153 0 : if (call_expr_nargs (_p1) == 2)
11154 : {
11155 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11156 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11157 0 : switch (TREE_CODE (_q40))
11158 : {
11159 0 : case REAL_CST:
11160 0 : {
11161 0 : {
11162 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11163 0 : if (flag_unsafe_math_optimizations
11164 : )
11165 : {
11166 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11167 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11168 : )
11169 : {
11170 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1480;
11171 0 : {
11172 0 : tree res_op0;
11173 0 : {
11174 0 : tree _o1[2], _r1;
11175 0 : {
11176 0 : tree _o2[2], _r2;
11177 0 : {
11178 0 : tree _o3[1], _r3;
11179 0 : _o3[0] = captures[1];
11180 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
11181 0 : if (!_r3)
11182 0 : goto next_after_fail1480;
11183 0 : _o2[0] = _r3;
11184 : }
11185 0 : _o2[1] = captures[2];
11186 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11187 0 : _o1[0] = _r2;
11188 : }
11189 0 : _o1[1] = captures[4];
11190 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11191 0 : res_op0 = _r1;
11192 : }
11193 0 : tree _r;
11194 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP2, type, 1, res_op0);
11195 0 : if (!_r)
11196 0 : goto next_after_fail1480;
11197 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
11198 0 : return _r;
11199 : }
11200 0 : next_after_fail1480:;
11201 : }
11202 : }
11203 : }
11204 0 : break;
11205 : }
11206 : default:;
11207 : }
11208 : }
11209 : break;
11210 0 : case CFN_EXP2:
11211 0 : if (call_expr_nargs (_p1) == 1)
11212 : {
11213 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11214 0 : {
11215 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11216 0 : if (flag_unsafe_math_optimizations
11217 : )
11218 : {
11219 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1481;
11220 0 : {
11221 0 : tree res_op0;
11222 0 : {
11223 0 : tree _o1[2], _r1;
11224 0 : _o1[0] = captures[1];
11225 0 : _o1[1] = captures[3];
11226 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11227 0 : res_op0 = _r1;
11228 : }
11229 0 : tree _r;
11230 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP2, type, 1, res_op0);
11231 0 : if (!_r)
11232 0 : goto next_after_fail1481;
11233 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 984, __FILE__, __LINE__, true);
11234 0 : return _r;
11235 : }
11236 0 : next_after_fail1481:;
11237 : }
11238 : }
11239 : }
11240 : break;
11241 : default:;
11242 : }
11243 : break;
11244 : default:;
11245 : }
11246 : }
11247 : break;
11248 0 : case CFN_SQRT:
11249 0 : if (call_expr_nargs (_p0) == 1)
11250 : {
11251 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11252 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11253 : {
11254 0 : {
11255 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
11256 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_SQRT);
11257 0 : if (res) return res;
11258 : }
11259 : }
11260 0 : switch (TREE_CODE (_p1))
11261 : {
11262 0 : case CALL_EXPR:
11263 0 : switch (get_call_combined_fn (_p1))
11264 : {
11265 0 : case CFN_SQRT:
11266 0 : if (call_expr_nargs (_p1) == 1)
11267 : {
11268 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11269 0 : {
11270 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11271 0 : if (flag_unsafe_math_optimizations
11272 : )
11273 : {
11274 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1482;
11275 0 : {
11276 0 : tree res_op0;
11277 0 : {
11278 0 : tree _o1[2], _r1;
11279 0 : _o1[0] = captures[1];
11280 0 : _o1[1] = captures[3];
11281 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11282 0 : res_op0 = _r1;
11283 : }
11284 0 : tree _r;
11285 0 : _r = maybe_build_call_expr_loc (loc, CFN_SQRT, type, 1, res_op0);
11286 0 : if (!_r)
11287 0 : goto next_after_fail1482;
11288 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 983, __FILE__, __LINE__, true);
11289 0 : return _r;
11290 : }
11291 0 : next_after_fail1482:;
11292 : }
11293 : }
11294 : }
11295 : break;
11296 : default:;
11297 : }
11298 : break;
11299 : default:;
11300 : }
11301 : }
11302 : break;
11303 0 : case CFN_EXP10:
11304 0 : if (call_expr_nargs (_p0) == 1)
11305 : {
11306 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11307 0 : switch (TREE_CODE (_p1))
11308 : {
11309 0 : case CALL_EXPR:
11310 0 : switch (get_call_combined_fn (_p1))
11311 : {
11312 0 : case CFN_POW:
11313 0 : if (call_expr_nargs (_p1) == 2)
11314 : {
11315 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11316 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11317 0 : switch (TREE_CODE (_q40))
11318 : {
11319 0 : case REAL_CST:
11320 0 : {
11321 0 : {
11322 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11323 0 : if (flag_unsafe_math_optimizations
11324 : )
11325 : {
11326 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11327 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11328 : )
11329 : {
11330 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1483;
11331 0 : {
11332 0 : tree res_op0;
11333 0 : {
11334 0 : tree _o1[2], _r1;
11335 0 : {
11336 0 : tree _o2[2], _r2;
11337 0 : {
11338 0 : tree _o3[1], _r3;
11339 0 : _o3[0] = captures[1];
11340 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
11341 0 : if (!_r3)
11342 0 : goto next_after_fail1483;
11343 0 : _o2[0] = _r3;
11344 : }
11345 0 : _o2[1] = captures[2];
11346 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11347 0 : _o1[0] = _r2;
11348 : }
11349 0 : _o1[1] = captures[4];
11350 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11351 0 : res_op0 = _r1;
11352 : }
11353 0 : tree _r;
11354 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP10, type, 1, res_op0);
11355 0 : if (!_r)
11356 0 : goto next_after_fail1483;
11357 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
11358 0 : return _r;
11359 : }
11360 0 : next_after_fail1483:;
11361 : }
11362 : }
11363 : }
11364 0 : break;
11365 : }
11366 : default:;
11367 : }
11368 : }
11369 : break;
11370 0 : case CFN_EXP10:
11371 0 : if (call_expr_nargs (_p1) == 1)
11372 : {
11373 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11374 0 : {
11375 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11376 0 : if (flag_unsafe_math_optimizations
11377 : )
11378 : {
11379 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1484;
11380 0 : {
11381 0 : tree res_op0;
11382 0 : {
11383 0 : tree _o1[2], _r1;
11384 0 : _o1[0] = captures[1];
11385 0 : _o1[1] = captures[3];
11386 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11387 0 : res_op0 = _r1;
11388 : }
11389 0 : tree _r;
11390 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP10, type, 1, res_op0);
11391 0 : if (!_r)
11392 0 : goto next_after_fail1484;
11393 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 984, __FILE__, __LINE__, true);
11394 0 : return _r;
11395 : }
11396 0 : next_after_fail1484:;
11397 : }
11398 : }
11399 : }
11400 : break;
11401 : default:;
11402 : }
11403 : break;
11404 : default:;
11405 : }
11406 : }
11407 : break;
11408 12 : case CFN_BUILT_IN_CBRTF:
11409 12 : if (call_expr_nargs (_p0) == 1)
11410 : {
11411 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11412 12 : switch (TREE_CODE (_p1))
11413 : {
11414 12 : case CALL_EXPR:
11415 12 : switch (get_call_combined_fn (_p1))
11416 : {
11417 12 : case CFN_BUILT_IN_CBRTF:
11418 12 : if (call_expr_nargs (_p1) == 1)
11419 : {
11420 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11421 12 : {
11422 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11423 12 : if (flag_unsafe_math_optimizations
11424 : )
11425 : {
11426 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1485;
11427 12 : {
11428 12 : tree res_op0;
11429 12 : {
11430 12 : tree _o1[2], _r1;
11431 12 : _o1[0] = captures[1];
11432 12 : _o1[1] = captures[3];
11433 12 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11434 12 : res_op0 = _r1;
11435 : }
11436 12 : tree _r;
11437 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRTF, type, 1, res_op0);
11438 12 : if (!_r)
11439 0 : goto next_after_fail1485;
11440 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 983, __FILE__, __LINE__, true);
11441 12 : return _r;
11442 : }
11443 0 : next_after_fail1485:;
11444 : }
11445 : }
11446 : }
11447 : break;
11448 : default:;
11449 : }
11450 : break;
11451 : default:;
11452 : }
11453 : }
11454 : break;
11455 12 : case CFN_BUILT_IN_CBRTL:
11456 12 : if (call_expr_nargs (_p0) == 1)
11457 : {
11458 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11459 12 : switch (TREE_CODE (_p1))
11460 : {
11461 12 : case CALL_EXPR:
11462 12 : switch (get_call_combined_fn (_p1))
11463 : {
11464 12 : case CFN_BUILT_IN_CBRTL:
11465 12 : if (call_expr_nargs (_p1) == 1)
11466 : {
11467 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11468 12 : {
11469 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11470 12 : if (flag_unsafe_math_optimizations
11471 : )
11472 : {
11473 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1486;
11474 12 : {
11475 12 : tree res_op0;
11476 12 : {
11477 12 : tree _o1[2], _r1;
11478 12 : _o1[0] = captures[1];
11479 12 : _o1[1] = captures[3];
11480 12 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11481 12 : res_op0 = _r1;
11482 : }
11483 12 : tree _r;
11484 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRTL, type, 1, res_op0);
11485 12 : if (!_r)
11486 0 : goto next_after_fail1486;
11487 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 983, __FILE__, __LINE__, true);
11488 12 : return _r;
11489 : }
11490 0 : next_after_fail1486:;
11491 : }
11492 : }
11493 : }
11494 : break;
11495 : default:;
11496 : }
11497 : break;
11498 : default:;
11499 : }
11500 : }
11501 : break;
11502 0 : case CFN_LDEXP:
11503 0 : if (call_expr_nargs (_p0) == 2)
11504 : {
11505 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11506 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11507 0 : switch (TREE_CODE (_p1))
11508 : {
11509 0 : case REAL_CST:
11510 0 : {
11511 0 : {
11512 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11513 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_LDEXP);
11514 0 : if (res) return res;
11515 : }
11516 0 : break;
11517 : }
11518 0 : default:;
11519 : }
11520 0 : switch (TREE_CODE (_q20))
11521 : {
11522 0 : case REAL_CST:
11523 0 : {
11524 0 : {
11525 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11526 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_LDEXP);
11527 0 : if (res) return res;
11528 : }
11529 0 : break;
11530 : }
11531 : default:;
11532 : }
11533 : }
11534 : break;
11535 48 : case CFN_BUILT_IN_EXP10:
11536 48 : if (call_expr_nargs (_p0) == 1)
11537 : {
11538 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11539 48 : switch (TREE_CODE (_p1))
11540 : {
11541 24 : case CALL_EXPR:
11542 24 : switch (get_call_combined_fn (_p1))
11543 : {
11544 0 : case CFN_BUILT_IN_POW:
11545 0 : if (call_expr_nargs (_p1) == 2)
11546 : {
11547 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11548 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11549 0 : switch (TREE_CODE (_q40))
11550 : {
11551 0 : case REAL_CST:
11552 0 : {
11553 0 : {
11554 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11555 0 : if (flag_unsafe_math_optimizations
11556 : )
11557 : {
11558 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11559 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11560 : )
11561 : {
11562 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1487;
11563 0 : {
11564 0 : tree res_op0;
11565 0 : {
11566 0 : tree _o1[2], _r1;
11567 0 : {
11568 0 : tree _o2[2], _r2;
11569 0 : {
11570 0 : tree _o3[1], _r3;
11571 0 : _o3[0] = captures[1];
11572 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
11573 0 : if (!_r3)
11574 0 : goto next_after_fail1487;
11575 0 : _o2[0] = _r3;
11576 : }
11577 0 : _o2[1] = captures[2];
11578 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11579 0 : _o1[0] = _r2;
11580 : }
11581 0 : _o1[1] = captures[4];
11582 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11583 0 : res_op0 = _r1;
11584 : }
11585 0 : tree _r;
11586 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10, type, 1, res_op0);
11587 0 : if (!_r)
11588 0 : goto next_after_fail1487;
11589 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
11590 0 : return _r;
11591 : }
11592 0 : next_after_fail1487:;
11593 : }
11594 : }
11595 : }
11596 0 : break;
11597 : }
11598 : default:;
11599 : }
11600 : }
11601 : break;
11602 24 : case CFN_BUILT_IN_EXP10:
11603 24 : if (call_expr_nargs (_p1) == 1)
11604 : {
11605 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11606 24 : {
11607 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11608 24 : if (flag_unsafe_math_optimizations
11609 : )
11610 : {
11611 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1488;
11612 24 : {
11613 24 : tree res_op0;
11614 24 : {
11615 24 : tree _o1[2], _r1;
11616 24 : _o1[0] = captures[1];
11617 24 : _o1[1] = captures[3];
11618 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11619 24 : res_op0 = _r1;
11620 : }
11621 24 : tree _r;
11622 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10, type, 1, res_op0);
11623 24 : if (!_r)
11624 0 : goto next_after_fail1488;
11625 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 984, __FILE__, __LINE__, true);
11626 24 : return _r;
11627 : }
11628 0 : next_after_fail1488:;
11629 : }
11630 : }
11631 : }
11632 : break;
11633 : default:;
11634 : }
11635 : break;
11636 : default:;
11637 : }
11638 : }
11639 : break;
11640 48 : case CFN_BUILT_IN_EXP2F:
11641 48 : if (call_expr_nargs (_p0) == 1)
11642 : {
11643 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11644 48 : switch (TREE_CODE (_p1))
11645 : {
11646 24 : case CALL_EXPR:
11647 24 : switch (get_call_combined_fn (_p1))
11648 : {
11649 0 : case CFN_BUILT_IN_POWF:
11650 0 : if (call_expr_nargs (_p1) == 2)
11651 : {
11652 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11653 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11654 0 : switch (TREE_CODE (_q40))
11655 : {
11656 0 : case REAL_CST:
11657 0 : {
11658 0 : {
11659 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11660 0 : if (flag_unsafe_math_optimizations
11661 : )
11662 : {
11663 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11664 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11665 : )
11666 : {
11667 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1489;
11668 0 : {
11669 0 : tree res_op0;
11670 0 : {
11671 0 : tree _o1[2], _r1;
11672 0 : {
11673 0 : tree _o2[2], _r2;
11674 0 : {
11675 0 : tree _o3[1], _r3;
11676 0 : _o3[0] = captures[1];
11677 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2F, TREE_TYPE (_o3[0]), 1, _o3[0]);
11678 0 : if (!_r3)
11679 0 : goto next_after_fail1489;
11680 0 : _o2[0] = _r3;
11681 : }
11682 0 : _o2[1] = captures[2];
11683 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11684 0 : _o1[0] = _r2;
11685 : }
11686 0 : _o1[1] = captures[4];
11687 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11688 0 : res_op0 = _r1;
11689 : }
11690 0 : tree _r;
11691 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2F, type, 1, res_op0);
11692 0 : if (!_r)
11693 0 : goto next_after_fail1489;
11694 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
11695 0 : return _r;
11696 : }
11697 0 : next_after_fail1489:;
11698 : }
11699 : }
11700 : }
11701 0 : break;
11702 : }
11703 : default:;
11704 : }
11705 : }
11706 : break;
11707 24 : case CFN_BUILT_IN_EXP2F:
11708 24 : if (call_expr_nargs (_p1) == 1)
11709 : {
11710 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11711 24 : {
11712 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11713 24 : if (flag_unsafe_math_optimizations
11714 : )
11715 : {
11716 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1490;
11717 24 : {
11718 24 : tree res_op0;
11719 24 : {
11720 24 : tree _o1[2], _r1;
11721 24 : _o1[0] = captures[1];
11722 24 : _o1[1] = captures[3];
11723 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11724 24 : res_op0 = _r1;
11725 : }
11726 24 : tree _r;
11727 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2F, type, 1, res_op0);
11728 24 : if (!_r)
11729 0 : goto next_after_fail1490;
11730 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 984, __FILE__, __LINE__, true);
11731 24 : return _r;
11732 : }
11733 0 : next_after_fail1490:;
11734 : }
11735 : }
11736 : }
11737 : break;
11738 : default:;
11739 : }
11740 : break;
11741 : default:;
11742 : }
11743 : }
11744 : break;
11745 48 : case CFN_BUILT_IN_EXP2L:
11746 48 : if (call_expr_nargs (_p0) == 1)
11747 : {
11748 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11749 48 : switch (TREE_CODE (_p1))
11750 : {
11751 24 : case CALL_EXPR:
11752 24 : switch (get_call_combined_fn (_p1))
11753 : {
11754 0 : case CFN_BUILT_IN_POWL:
11755 0 : if (call_expr_nargs (_p1) == 2)
11756 : {
11757 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11758 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11759 0 : switch (TREE_CODE (_q40))
11760 : {
11761 0 : case REAL_CST:
11762 0 : {
11763 0 : {
11764 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11765 0 : if (flag_unsafe_math_optimizations
11766 : )
11767 : {
11768 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11769 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11770 : )
11771 : {
11772 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1491;
11773 0 : {
11774 0 : tree res_op0;
11775 0 : {
11776 0 : tree _o1[2], _r1;
11777 0 : {
11778 0 : tree _o2[2], _r2;
11779 0 : {
11780 0 : tree _o3[1], _r3;
11781 0 : _o3[0] = captures[1];
11782 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2L, TREE_TYPE (_o3[0]), 1, _o3[0]);
11783 0 : if (!_r3)
11784 0 : goto next_after_fail1491;
11785 0 : _o2[0] = _r3;
11786 : }
11787 0 : _o2[1] = captures[2];
11788 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11789 0 : _o1[0] = _r2;
11790 : }
11791 0 : _o1[1] = captures[4];
11792 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11793 0 : res_op0 = _r1;
11794 : }
11795 0 : tree _r;
11796 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2L, type, 1, res_op0);
11797 0 : if (!_r)
11798 0 : goto next_after_fail1491;
11799 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
11800 0 : return _r;
11801 : }
11802 0 : next_after_fail1491:;
11803 : }
11804 : }
11805 : }
11806 0 : break;
11807 : }
11808 : default:;
11809 : }
11810 : }
11811 : break;
11812 24 : case CFN_BUILT_IN_EXP2L:
11813 24 : if (call_expr_nargs (_p1) == 1)
11814 : {
11815 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11816 24 : {
11817 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11818 24 : if (flag_unsafe_math_optimizations
11819 : )
11820 : {
11821 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1492;
11822 24 : {
11823 24 : tree res_op0;
11824 24 : {
11825 24 : tree _o1[2], _r1;
11826 24 : _o1[0] = captures[1];
11827 24 : _o1[1] = captures[3];
11828 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11829 24 : res_op0 = _r1;
11830 : }
11831 24 : tree _r;
11832 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2L, type, 1, res_op0);
11833 24 : if (!_r)
11834 0 : goto next_after_fail1492;
11835 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 984, __FILE__, __LINE__, true);
11836 24 : return _r;
11837 : }
11838 0 : next_after_fail1492:;
11839 : }
11840 : }
11841 : }
11842 : break;
11843 : default:;
11844 : }
11845 : break;
11846 : default:;
11847 : }
11848 : }
11849 : break;
11850 5 : case CFN_BUILT_IN_LDEXP:
11851 5 : if (call_expr_nargs (_p0) == 2)
11852 : {
11853 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11854 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11855 5 : switch (TREE_CODE (_p1))
11856 : {
11857 2 : case REAL_CST:
11858 2 : {
11859 2 : {
11860 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11861 2 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
11862 2 : if (res) return res;
11863 : }
11864 1 : break;
11865 : }
11866 4 : default:;
11867 : }
11868 4 : switch (TREE_CODE (_q20))
11869 : {
11870 3 : case REAL_CST:
11871 3 : {
11872 3 : {
11873 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11874 3 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
11875 3 : if (res) return res;
11876 : }
11877 0 : break;
11878 : }
11879 : default:;
11880 : }
11881 : }
11882 : break;
11883 24 : case CFN_BUILT_IN_POW10:
11884 24 : if (call_expr_nargs (_p0) == 1)
11885 : {
11886 24 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11887 24 : switch (TREE_CODE (_p1))
11888 : {
11889 12 : case CALL_EXPR:
11890 12 : switch (get_call_combined_fn (_p1))
11891 : {
11892 0 : case CFN_BUILT_IN_POW:
11893 0 : if (call_expr_nargs (_p1) == 2)
11894 : {
11895 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11896 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11897 0 : switch (TREE_CODE (_q40))
11898 : {
11899 0 : case REAL_CST:
11900 0 : {
11901 0 : {
11902 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11903 0 : if (flag_unsafe_math_optimizations
11904 : )
11905 : {
11906 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11907 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11908 : )
11909 : {
11910 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1493;
11911 0 : {
11912 0 : tree res_op0;
11913 0 : {
11914 0 : tree _o1[2], _r1;
11915 0 : {
11916 0 : tree _o2[2], _r2;
11917 0 : {
11918 0 : tree _o3[1], _r3;
11919 0 : _o3[0] = captures[1];
11920 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
11921 0 : if (!_r3)
11922 0 : goto next_after_fail1493;
11923 0 : _o2[0] = _r3;
11924 : }
11925 0 : _o2[1] = captures[2];
11926 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11927 0 : _o1[0] = _r2;
11928 : }
11929 0 : _o1[1] = captures[4];
11930 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11931 0 : res_op0 = _r1;
11932 : }
11933 0 : tree _r;
11934 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10, type, 1, res_op0);
11935 0 : if (!_r)
11936 0 : goto next_after_fail1493;
11937 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 985, __FILE__, __LINE__, true);
11938 0 : return _r;
11939 : }
11940 0 : next_after_fail1493:;
11941 : }
11942 : }
11943 : }
11944 0 : break;
11945 : }
11946 : default:;
11947 : }
11948 : }
11949 : break;
11950 12 : case CFN_BUILT_IN_POW10:
11951 12 : if (call_expr_nargs (_p1) == 1)
11952 : {
11953 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11954 12 : {
11955 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11956 12 : if (flag_unsafe_math_optimizations
11957 : )
11958 : {
11959 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1494;
11960 12 : {
11961 12 : tree res_op0;
11962 12 : {
11963 12 : tree _o1[2], _r1;
11964 12 : _o1[0] = captures[1];
11965 12 : _o1[1] = captures[3];
11966 12 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11967 12 : res_op0 = _r1;
11968 : }
11969 12 : tree _r;
11970 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10, type, 1, res_op0);
11971 12 : if (!_r)
11972 12 : goto next_after_fail1494;
11973 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 984, __FILE__, __LINE__, true);
11974 0 : return _r;
11975 : }
11976 12 : next_after_fail1494:;
11977 : }
11978 : }
11979 : }
11980 : break;
11981 : default:;
11982 : }
11983 : break;
11984 : default:;
11985 : }
11986 : }
11987 : break;
11988 : default:;
11989 : }
11990 : break;
11991 67174199 : default:;
11992 : }
11993 67174199 : switch (TREE_CODE (_p1))
11994 : {
11995 896794 : case CALL_EXPR:
11996 896794 : switch (get_call_combined_fn (_p1))
11997 : {
11998 0 : case CFN_BUILT_IN_LDEXPF:
11999 0 : if (call_expr_nargs (_p1) == 2)
12000 : {
12001 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12002 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12003 0 : switch (TREE_CODE (_q30))
12004 : {
12005 0 : case REAL_CST:
12006 0 : {
12007 0 : {
12008 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
12009 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
12010 0 : if (res) return res;
12011 : }
12012 0 : break;
12013 : }
12014 : default:;
12015 : }
12016 : }
12017 : break;
12018 0 : case CFN_BUILT_IN_LDEXPL:
12019 0 : if (call_expr_nargs (_p1) == 2)
12020 : {
12021 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12022 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12023 0 : switch (TREE_CODE (_q30))
12024 : {
12025 0 : case REAL_CST:
12026 0 : {
12027 0 : {
12028 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
12029 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
12030 0 : if (res) return res;
12031 : }
12032 0 : break;
12033 : }
12034 : default:;
12035 : }
12036 : }
12037 : break;
12038 0 : case CFN_LDEXP:
12039 0 : if (call_expr_nargs (_p1) == 2)
12040 : {
12041 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12042 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12043 0 : switch (TREE_CODE (_q30))
12044 : {
12045 0 : case REAL_CST:
12046 0 : {
12047 0 : {
12048 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
12049 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_LDEXP);
12050 0 : if (res) return res;
12051 : }
12052 0 : break;
12053 : }
12054 : default:;
12055 : }
12056 : }
12057 : break;
12058 0 : case CFN_BUILT_IN_LDEXP:
12059 0 : if (call_expr_nargs (_p1) == 2)
12060 : {
12061 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12062 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12063 0 : switch (TREE_CODE (_q30))
12064 : {
12065 0 : case REAL_CST:
12066 0 : {
12067 0 : {
12068 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
12069 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
12070 0 : if (res) return res;
12071 : }
12072 0 : break;
12073 : }
12074 : default:;
12075 : }
12076 : }
12077 : break;
12078 : default:;
12079 : }
12080 : break;
12081 67174199 : default:;
12082 : }
12083 67174199 : switch (TREE_CODE (_p0))
12084 : {
12085 2513847 : case CALL_EXPR:
12086 2513847 : switch (get_call_combined_fn (_p0))
12087 : {
12088 29 : case CFN_BUILT_IN_COS:
12089 29 : if (call_expr_nargs (_p0) == 1)
12090 : {
12091 29 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12092 29 : switch (TREE_CODE (_p1))
12093 : {
12094 4 : case CALL_EXPR:
12095 4 : switch (get_call_combined_fn (_p1))
12096 : {
12097 2 : case CFN_BUILT_IN_TAN:
12098 2 : if (call_expr_nargs (_p1) == 1)
12099 : {
12100 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12101 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12102 : {
12103 2 : {
12104 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12105 2 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TAN, CFN_BUILT_IN_COS, CFN_BUILT_IN_SIN);
12106 2 : if (res) return res;
12107 : }
12108 : }
12109 : }
12110 : break;
12111 : default:;
12112 : }
12113 : break;
12114 : default:;
12115 : }
12116 : }
12117 : break;
12118 2 : case CFN_BUILT_IN_TAN:
12119 2 : if (call_expr_nargs (_p0) == 1)
12120 : {
12121 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12122 2 : switch (TREE_CODE (_p1))
12123 : {
12124 2 : case CALL_EXPR:
12125 2 : switch (get_call_combined_fn (_p1))
12126 : {
12127 2 : case CFN_BUILT_IN_COS:
12128 2 : if (call_expr_nargs (_p1) == 1)
12129 : {
12130 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12131 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12132 : {
12133 2 : {
12134 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12135 2 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TAN, CFN_BUILT_IN_COS, CFN_BUILT_IN_SIN);
12136 2 : if (res) return res;
12137 : }
12138 : }
12139 : }
12140 : break;
12141 : default:;
12142 : }
12143 : break;
12144 : default:;
12145 : }
12146 : }
12147 : break;
12148 18 : case CFN_BUILT_IN_COSF:
12149 18 : if (call_expr_nargs (_p0) == 1)
12150 : {
12151 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12152 18 : switch (TREE_CODE (_p1))
12153 : {
12154 9 : case CALL_EXPR:
12155 9 : switch (get_call_combined_fn (_p1))
12156 : {
12157 2 : case CFN_BUILT_IN_TANF:
12158 2 : if (call_expr_nargs (_p1) == 1)
12159 : {
12160 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12161 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12162 : {
12163 2 : {
12164 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12165 2 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANF, CFN_BUILT_IN_COSF, CFN_BUILT_IN_SINF);
12166 2 : if (res) return res;
12167 : }
12168 : }
12169 : }
12170 : break;
12171 : default:;
12172 : }
12173 : break;
12174 : default:;
12175 : }
12176 : }
12177 : break;
12178 2 : case CFN_BUILT_IN_COSL:
12179 2 : if (call_expr_nargs (_p0) == 1)
12180 : {
12181 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12182 2 : switch (TREE_CODE (_p1))
12183 : {
12184 2 : case CALL_EXPR:
12185 2 : switch (get_call_combined_fn (_p1))
12186 : {
12187 2 : case CFN_BUILT_IN_TANL:
12188 2 : if (call_expr_nargs (_p1) == 1)
12189 : {
12190 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12191 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12192 : {
12193 2 : {
12194 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12195 2 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANL, CFN_BUILT_IN_COSL, CFN_BUILT_IN_SINL);
12196 2 : if (res) return res;
12197 : }
12198 : }
12199 : }
12200 : break;
12201 : default:;
12202 : }
12203 : break;
12204 : default:;
12205 : }
12206 : }
12207 : break;
12208 2 : case CFN_BUILT_IN_TANF:
12209 2 : if (call_expr_nargs (_p0) == 1)
12210 : {
12211 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12212 2 : switch (TREE_CODE (_p1))
12213 : {
12214 2 : case CALL_EXPR:
12215 2 : switch (get_call_combined_fn (_p1))
12216 : {
12217 2 : case CFN_BUILT_IN_COSF:
12218 2 : if (call_expr_nargs (_p1) == 1)
12219 : {
12220 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12221 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12222 : {
12223 2 : {
12224 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12225 2 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANF, CFN_BUILT_IN_COSF, CFN_BUILT_IN_SINF);
12226 2 : if (res) return res;
12227 : }
12228 : }
12229 : }
12230 : break;
12231 : default:;
12232 : }
12233 : break;
12234 : default:;
12235 : }
12236 : }
12237 : break;
12238 2 : case CFN_BUILT_IN_TANL:
12239 2 : if (call_expr_nargs (_p0) == 1)
12240 : {
12241 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12242 2 : switch (TREE_CODE (_p1))
12243 : {
12244 2 : case CALL_EXPR:
12245 2 : switch (get_call_combined_fn (_p1))
12246 : {
12247 2 : case CFN_BUILT_IN_COSL:
12248 2 : if (call_expr_nargs (_p1) == 1)
12249 : {
12250 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12251 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12252 : {
12253 2 : {
12254 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12255 2 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANL, CFN_BUILT_IN_COSL, CFN_BUILT_IN_SINL);
12256 2 : if (res) return res;
12257 : }
12258 : }
12259 : }
12260 : break;
12261 : default:;
12262 : }
12263 : break;
12264 : default:;
12265 : }
12266 : }
12267 : break;
12268 0 : case CFN_COS:
12269 0 : if (call_expr_nargs (_p0) == 1)
12270 : {
12271 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12272 0 : switch (TREE_CODE (_p1))
12273 : {
12274 0 : case CALL_EXPR:
12275 0 : switch (get_call_combined_fn (_p1))
12276 : {
12277 0 : case CFN_TAN:
12278 0 : if (call_expr_nargs (_p1) == 1)
12279 : {
12280 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12281 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12282 : {
12283 0 : {
12284 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12285 0 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, CFN_TAN, CFN_COS, CFN_SIN);
12286 0 : if (res) return res;
12287 : }
12288 : }
12289 : }
12290 : break;
12291 : default:;
12292 : }
12293 : break;
12294 : default:;
12295 : }
12296 : }
12297 : break;
12298 0 : case CFN_TAN:
12299 0 : if (call_expr_nargs (_p0) == 1)
12300 : {
12301 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12302 0 : switch (TREE_CODE (_p1))
12303 : {
12304 0 : case CALL_EXPR:
12305 0 : switch (get_call_combined_fn (_p1))
12306 : {
12307 0 : case CFN_COS:
12308 0 : if (call_expr_nargs (_p1) == 1)
12309 : {
12310 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12311 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12312 : {
12313 0 : {
12314 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12315 0 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, CFN_TAN, CFN_COS, CFN_SIN);
12316 0 : if (res) return res;
12317 : }
12318 : }
12319 : }
12320 : break;
12321 : default:;
12322 : }
12323 : break;
12324 : default:;
12325 : }
12326 : }
12327 : break;
12328 : default:;
12329 : }
12330 : break;
12331 67174187 : default:;
12332 : }
12333 67174187 : switch (TREE_CODE (_p1))
12334 : {
12335 896782 : case CALL_EXPR:
12336 896782 : switch (get_call_combined_fn (_p1))
12337 : {
12338 60 : case CFN_BUILT_IN_POW:
12339 60 : if (call_expr_nargs (_p1) == 2)
12340 : {
12341 60 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12342 60 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12343 60 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12344 : {
12345 0 : switch (TREE_CODE (_q31))
12346 : {
12347 0 : case REAL_CST:
12348 0 : {
12349 0 : {
12350 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12351 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
12352 0 : if (res) return res;
12353 : }
12354 0 : break;
12355 : }
12356 : default:;
12357 : }
12358 : }
12359 : }
12360 : break;
12361 23 : case CFN_BUILT_IN_POWF:
12362 23 : if (call_expr_nargs (_p1) == 2)
12363 : {
12364 23 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12365 23 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12366 23 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12367 : {
12368 0 : switch (TREE_CODE (_q31))
12369 : {
12370 0 : case REAL_CST:
12371 0 : {
12372 0 : {
12373 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12374 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
12375 0 : if (res) return res;
12376 : }
12377 0 : break;
12378 : }
12379 : default:;
12380 : }
12381 : }
12382 : }
12383 : break;
12384 12 : case CFN_BUILT_IN_POWL:
12385 12 : if (call_expr_nargs (_p1) == 2)
12386 : {
12387 12 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12388 12 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12389 12 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12390 : {
12391 0 : switch (TREE_CODE (_q31))
12392 : {
12393 0 : case REAL_CST:
12394 0 : {
12395 0 : {
12396 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12397 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
12398 0 : if (res) return res;
12399 : }
12400 0 : break;
12401 : }
12402 : default:;
12403 : }
12404 : }
12405 : }
12406 : break;
12407 0 : case CFN_POW:
12408 0 : if (call_expr_nargs (_p1) == 2)
12409 : {
12410 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12411 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12412 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12413 : {
12414 0 : switch (TREE_CODE (_q31))
12415 : {
12416 0 : case REAL_CST:
12417 0 : {
12418 0 : {
12419 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12420 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_POW);
12421 0 : if (res) return res;
12422 : }
12423 0 : break;
12424 : }
12425 : default:;
12426 : }
12427 : }
12428 : }
12429 : break;
12430 : default:;
12431 : }
12432 : break;
12433 67174187 : default:;
12434 : }
12435 67174187 : switch (TREE_CODE (_p0))
12436 : {
12437 1 : case VEC_PERM_EXPR:
12438 1 : {
12439 1 : tree _q20 = TREE_OPERAND (_p0, 0);
12440 1 : tree _q21 = TREE_OPERAND (_p0, 1);
12441 1 : tree _q22 = TREE_OPERAND (_p0, 2);
12442 1 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
12443 : {
12444 1 : switch (TREE_CODE (_p1))
12445 : {
12446 0 : case VEC_PERM_EXPR:
12447 0 : {
12448 0 : tree _q60 = TREE_OPERAND (_p1, 0);
12449 0 : tree _q61 = TREE_OPERAND (_p1, 1);
12450 0 : tree _q62 = TREE_OPERAND (_p1, 2);
12451 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
12452 : {
12453 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
12454 : {
12455 0 : {
12456 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
12457 0 : if (VECTOR_INTEGER_TYPE_P (type)
12458 : )
12459 : {
12460 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1495;
12461 0 : {
12462 0 : tree res_op0;
12463 0 : {
12464 0 : tree _o1[2], _r1;
12465 0 : _o1[0] = captures[0];
12466 0 : _o1[1] = captures[2];
12467 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12468 0 : captures[3] = _r1;
12469 : }
12470 0 : res_op0 = unshare_expr (captures[3]);
12471 0 : tree res_op1;
12472 0 : res_op1 = captures[3];
12473 0 : tree res_op2;
12474 0 : res_op2 = captures[1];
12475 0 : tree _r;
12476 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
12477 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 902, __FILE__, __LINE__, true);
12478 0 : return _r;
12479 : }
12480 0 : next_after_fail1495:;
12481 : }
12482 : }
12483 : }
12484 : }
12485 : break;
12486 : }
12487 1 : default:;
12488 : }
12489 1 : switch (TREE_CODE (_q22))
12490 : {
12491 0 : case VECTOR_CST:
12492 0 : {
12493 0 : switch (TREE_CODE (_p1))
12494 : {
12495 0 : case VEC_PERM_EXPR:
12496 0 : {
12497 0 : tree _q60 = TREE_OPERAND (_p1, 0);
12498 0 : tree _q61 = TREE_OPERAND (_p1, 1);
12499 0 : tree _q62 = TREE_OPERAND (_p1, 2);
12500 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
12501 : {
12502 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
12503 : {
12504 0 : switch (TREE_CODE (_q62))
12505 : {
12506 0 : case VECTOR_CST:
12507 0 : {
12508 0 : {
12509 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
12510 0 : tree res = generic_simplify_85 (loc, type, _p0, _p1, captures, MULT_EXPR);
12511 0 : if (res) return res;
12512 : }
12513 0 : break;
12514 : }
12515 : default:;
12516 : }
12517 : }
12518 : }
12519 : break;
12520 : }
12521 : default:;
12522 : }
12523 : break;
12524 : }
12525 : default:;
12526 : }
12527 : }
12528 : break;
12529 : }
12530 2513835 : case CALL_EXPR:
12531 2513835 : switch (get_call_combined_fn (_p0))
12532 : {
12533 115 : case CFN_BUILT_IN_POW:
12534 115 : if (call_expr_nargs (_p0) == 2)
12535 : {
12536 115 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12537 115 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12538 115 : switch (TREE_CODE (_p1))
12539 : {
12540 80 : case CALL_EXPR:
12541 80 : switch (get_call_combined_fn (_p1))
12542 : {
12543 20 : case CFN_BUILT_IN_POW:
12544 20 : if (call_expr_nargs (_p1) == 2)
12545 : {
12546 20 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12547 20 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12548 20 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12549 : {
12550 14 : {
12551 14 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12552 14 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
12553 14 : if (res) return res;
12554 : }
12555 : }
12556 6 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12557 : {
12558 2 : {
12559 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12560 2 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
12561 2 : if (res) return res;
12562 : }
12563 : }
12564 : }
12565 : break;
12566 : default:;
12567 : }
12568 : break;
12569 : default:;
12570 : }
12571 : }
12572 : break;
12573 19 : case CFN_BUILT_IN_POWF:
12574 19 : if (call_expr_nargs (_p0) == 2)
12575 : {
12576 19 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12577 19 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12578 19 : switch (TREE_CODE (_p1))
12579 : {
12580 13 : case CALL_EXPR:
12581 13 : switch (get_call_combined_fn (_p1))
12582 : {
12583 13 : case CFN_BUILT_IN_POWF:
12584 13 : if (call_expr_nargs (_p1) == 2)
12585 : {
12586 13 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12587 13 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12588 13 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12589 : {
12590 12 : {
12591 12 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12592 12 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
12593 12 : if (res) return res;
12594 : }
12595 : }
12596 1 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12597 : {
12598 0 : {
12599 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12600 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
12601 0 : if (res) return res;
12602 : }
12603 : }
12604 : }
12605 : break;
12606 : default:;
12607 : }
12608 : break;
12609 : default:;
12610 : }
12611 : }
12612 : break;
12613 26 : case CFN_BUILT_IN_POWI:
12614 26 : if (call_expr_nargs (_p0) == 2)
12615 : {
12616 26 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12617 26 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12618 26 : switch (TREE_CODE (_p1))
12619 : {
12620 0 : case CALL_EXPR:
12621 0 : switch (get_call_combined_fn (_p1))
12622 : {
12623 0 : case CFN_BUILT_IN_POWI:
12624 0 : if (call_expr_nargs (_p1) == 2)
12625 : {
12626 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12627 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12628 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12629 : {
12630 0 : {
12631 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12632 0 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
12633 : )
12634 : {
12635 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1496;
12636 0 : {
12637 0 : tree res_op0;
12638 0 : {
12639 0 : tree _o1[2], _r1;
12640 0 : _o1[0] = captures[1];
12641 0 : _o1[1] = captures[4];
12642 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12643 0 : res_op0 = _r1;
12644 : }
12645 0 : tree res_op1;
12646 0 : res_op1 = captures[2];
12647 0 : tree _r;
12648 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POWI, type, 2, res_op0, res_op1);
12649 0 : if (!_r)
12650 0 : goto next_after_fail1496;
12651 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 986, __FILE__, __LINE__, true);
12652 0 : return _r;
12653 : }
12654 0 : next_after_fail1496:;
12655 : }
12656 : }
12657 : }
12658 : }
12659 : break;
12660 : default:;
12661 : }
12662 : break;
12663 : default:;
12664 : }
12665 : }
12666 : break;
12667 12 : case CFN_BUILT_IN_POWL:
12668 12 : if (call_expr_nargs (_p0) == 2)
12669 : {
12670 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12671 12 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12672 12 : switch (TREE_CODE (_p1))
12673 : {
12674 12 : case CALL_EXPR:
12675 12 : switch (get_call_combined_fn (_p1))
12676 : {
12677 12 : case CFN_BUILT_IN_POWL:
12678 12 : if (call_expr_nargs (_p1) == 2)
12679 : {
12680 12 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12681 12 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12682 12 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12683 : {
12684 12 : {
12685 12 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12686 12 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
12687 12 : if (res) return res;
12688 : }
12689 : }
12690 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12691 : {
12692 0 : {
12693 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12694 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
12695 0 : if (res) return res;
12696 : }
12697 : }
12698 : }
12699 : break;
12700 : default:;
12701 : }
12702 : break;
12703 : default:;
12704 : }
12705 : }
12706 : break;
12707 0 : case CFN_POW:
12708 0 : if (call_expr_nargs (_p0) == 2)
12709 : {
12710 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12711 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12712 0 : switch (TREE_CODE (_p1))
12713 : {
12714 0 : case CALL_EXPR:
12715 0 : switch (get_call_combined_fn (_p1))
12716 : {
12717 0 : case CFN_POW:
12718 0 : if (call_expr_nargs (_p1) == 2)
12719 : {
12720 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12721 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12722 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12723 : {
12724 0 : {
12725 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12726 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, CFN_POW);
12727 0 : if (res) return res;
12728 : }
12729 : }
12730 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12731 : {
12732 0 : {
12733 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12734 0 : tree res = generic_simplify_206 (loc, type, _p0, _p1, captures, CFN_POW);
12735 0 : if (res) return res;
12736 : }
12737 : }
12738 : }
12739 : break;
12740 : default:;
12741 : }
12742 : break;
12743 : default:;
12744 : }
12745 : }
12746 : break;
12747 14 : case CFN_BUILT_IN_POWIF:
12748 14 : if (call_expr_nargs (_p0) == 2)
12749 : {
12750 14 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12751 14 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12752 14 : switch (TREE_CODE (_p1))
12753 : {
12754 0 : case CALL_EXPR:
12755 0 : switch (get_call_combined_fn (_p1))
12756 : {
12757 0 : case CFN_BUILT_IN_POWIF:
12758 0 : if (call_expr_nargs (_p1) == 2)
12759 : {
12760 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12761 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12762 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12763 : {
12764 0 : {
12765 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12766 0 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
12767 : )
12768 : {
12769 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1497;
12770 0 : {
12771 0 : tree res_op0;
12772 0 : {
12773 0 : tree _o1[2], _r1;
12774 0 : _o1[0] = captures[1];
12775 0 : _o1[1] = captures[4];
12776 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12777 0 : res_op0 = _r1;
12778 : }
12779 0 : tree res_op1;
12780 0 : res_op1 = captures[2];
12781 0 : tree _r;
12782 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POWIF, type, 2, res_op0, res_op1);
12783 0 : if (!_r)
12784 0 : goto next_after_fail1497;
12785 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 986, __FILE__, __LINE__, true);
12786 0 : return _r;
12787 : }
12788 0 : next_after_fail1497:;
12789 : }
12790 : }
12791 : }
12792 : }
12793 : break;
12794 : default:;
12795 : }
12796 : break;
12797 : default:;
12798 : }
12799 : }
12800 : break;
12801 5 : case CFN_BUILT_IN_POWIL:
12802 5 : if (call_expr_nargs (_p0) == 2)
12803 : {
12804 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12805 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12806 5 : switch (TREE_CODE (_p1))
12807 : {
12808 0 : case CALL_EXPR:
12809 0 : switch (get_call_combined_fn (_p1))
12810 : {
12811 0 : case CFN_BUILT_IN_POWIL:
12812 0 : if (call_expr_nargs (_p1) == 2)
12813 : {
12814 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12815 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12816 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12817 : {
12818 0 : {
12819 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12820 0 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
12821 : )
12822 : {
12823 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1498;
12824 0 : {
12825 0 : tree res_op0;
12826 0 : {
12827 0 : tree _o1[2], _r1;
12828 0 : _o1[0] = captures[1];
12829 0 : _o1[1] = captures[4];
12830 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12831 0 : res_op0 = _r1;
12832 : }
12833 0 : tree res_op1;
12834 0 : res_op1 = captures[2];
12835 0 : tree _r;
12836 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POWIL, type, 2, res_op0, res_op1);
12837 0 : if (!_r)
12838 0 : goto next_after_fail1498;
12839 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 986, __FILE__, __LINE__, true);
12840 0 : return _r;
12841 : }
12842 0 : next_after_fail1498:;
12843 : }
12844 : }
12845 : }
12846 : }
12847 : break;
12848 : default:;
12849 : }
12850 : break;
12851 : default:;
12852 : }
12853 : }
12854 : break;
12855 : default:;
12856 : }
12857 : break;
12858 : default:;
12859 : }
12860 : return NULL_TREE;
12861 : }
12862 : #pragma GCC diagnostic pop
|