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 107288066 : tree_maybe_cmp (tree t, tree *res_ops)
11 : {
12 107288066 : const tree type = TREE_TYPE (t);
13 107288066 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 107288066 : if (TREE_SIDE_EFFECTS (t)) return false;
15 107288066 : switch (TREE_CODE (t))
16 : {
17 451568 : case LT_EXPR:
18 451568 : case LE_EXPR:
19 451568 : case EQ_EXPR:
20 451568 : case NE_EXPR:
21 451568 : case GE_EXPR:
22 451568 : case GT_EXPR:
23 451568 : case UNORDERED_EXPR:
24 451568 : case ORDERED_EXPR:
25 451568 : case UNLT_EXPR:
26 451568 : case UNLE_EXPR:
27 451568 : case UNGT_EXPR:
28 451568 : case UNGE_EXPR:
29 451568 : case UNEQ_EXPR:
30 451568 : case LTGT_EXPR:
31 451568 : {
32 451568 : tree _p0 = TREE_OPERAND (t, 0);
33 451568 : tree _p1 = TREE_OPERAND (t, 1);
34 451568 : {
35 451568 : tree captures[3] ATTRIBUTE_UNUSED = { t, _p0, _p1 };
36 451568 : {
37 451568 : res_ops[0] = captures[0];
38 451568 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 5, __FILE__, __LINE__, false);
39 451568 : return true;
40 : }
41 : }
42 21330378 : break;
43 : }
44 21330378 : CASE_CONVERT:
45 21330378 : {
46 21330378 : tree _p0 = TREE_OPERAND (t, 0);
47 21330378 : switch (TREE_CODE (_p0))
48 : {
49 1437 : case LT_EXPR:
50 1437 : case LE_EXPR:
51 1437 : case EQ_EXPR:
52 1437 : case NE_EXPR:
53 1437 : case GE_EXPR:
54 1437 : case GT_EXPR:
55 1437 : case UNORDERED_EXPR:
56 1437 : case ORDERED_EXPR:
57 1437 : case UNLT_EXPR:
58 1437 : case UNLE_EXPR:
59 1437 : case UNGT_EXPR:
60 1437 : case UNGE_EXPR:
61 1437 : case UNEQ_EXPR:
62 1437 : case LTGT_EXPR:
63 1437 : {
64 1437 : tree _q20 = TREE_OPERAND (_p0, 0);
65 1437 : tree _q21 = TREE_OPERAND (_p0, 1);
66 1437 : {
67 1437 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
68 1437 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
69 : )
70 : {
71 774 : {
72 774 : res_ops[0] = captures[0];
73 774 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 6, __FILE__, __LINE__, false);
74 774 : return true;
75 : }
76 : }
77 : }
78 : break;
79 : }
80 : default:;
81 : }
82 : break;
83 : }
84 181890 : case BIT_XOR_EXPR:
85 181890 : {
86 181890 : tree _p0 = TREE_OPERAND (t, 0);
87 181890 : tree _p1 = TREE_OPERAND (t, 1);
88 181890 : {
89 181890 : tree captures[3] ATTRIBUTE_UNUSED = { t, _p0, _p1 };
90 181890 : if (INTEGRAL_TYPE_P (type)
91 181890 : && TYPE_PRECISION (type) == 1
92 : )
93 : {
94 87362 : {
95 87362 : res_ops[0] = captures[0];
96 87362 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 7, __FILE__, __LINE__, false);
97 87362 : return true;
98 : }
99 : }
100 : }
101 : break;
102 : }
103 : default:;
104 : }
105 : return false;
106 : }
107 :
108 : bool
109 0 : tree_float_value_p (tree t)
110 : {
111 0 : const tree type = TREE_TYPE (t);
112 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
113 0 : if (TREE_SIDE_EFFECTS (t)) return false;
114 0 : {
115 0 : tree captures[1] ATTRIBUTE_UNUSED = { t };
116 0 : if (TYPE_MAIN_VARIANT (TREE_TYPE (captures[0])) == float_type_node
117 : )
118 : {
119 0 : {
120 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 45, __FILE__, __LINE__, false);
121 0 : return true;
122 : }
123 : }
124 : }
125 : return false;
126 : }
127 :
128 : tree
129 0 : generic_simplify_7 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
130 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
131 : {
132 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
133 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail78;
134 0 : {
135 0 : tree res_op0;
136 0 : res_op0 = captures[1];
137 0 : tree res_op1;
138 0 : res_op1 = captures[2];
139 0 : tree _r;
140 0 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
141 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 55, __FILE__, __LINE__, true);
142 : return _r;
143 : }
144 0 : next_after_fail78:;
145 0 : return NULL_TREE;
146 : }
147 :
148 : tree
149 589 : generic_simplify_13 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
150 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
151 : {
152 589 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
153 589 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail88;
154 589 : {
155 589 : if (! tree_invariant_p (captures[3])) goto next_after_fail88;
156 1 : tree res_op0;
157 1 : {
158 1 : tree _o1[2], _r1;
159 1 : _o1[0] = captures[2];
160 1 : _o1[1] = unshare_expr (captures[3]);
161 1 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
162 1 : res_op0 = _r1;
163 : }
164 1 : tree res_op1;
165 1 : {
166 1 : tree _o1[2], _r1;
167 1 : {
168 1 : tree _o2[1], _r2;
169 1 : _o2[0] = captures[4];
170 1 : _r2 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
171 1 : if (EXPR_P (_r2))
172 0 : goto next_after_fail88;
173 1 : _o1[0] = _r2;
174 : }
175 1 : _o1[1] = captures[3];
176 1 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
177 1 : if (EXPR_P (_r1))
178 0 : goto next_after_fail88;
179 1 : res_op1 = _r1;
180 : }
181 1 : tree _r;
182 1 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
183 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 61, __FILE__, __LINE__, true);
184 : return _r;
185 : }
186 : next_after_fail88:;
187 : return NULL_TREE;
188 : }
189 :
190 : tree
191 10 : generic_simplify_26 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
192 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
193 : {
194 10 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
195 10 : if (element_precision (type) <= element_precision (TREE_TYPE (captures[0]))
196 10 : && element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
197 : )
198 : {
199 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail101;
200 10 : {
201 10 : tree res_op0;
202 10 : {
203 10 : tree _o1[1], _r1;
204 10 : _o1[0] = captures[0];
205 10 : if (TREE_TYPE (_o1[0]) != type)
206 : {
207 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
208 : }
209 : else
210 : _r1 = _o1[0];
211 10 : res_op0 = _r1;
212 : }
213 10 : tree res_op1;
214 10 : {
215 10 : tree _o1[1], _r1;
216 10 : _o1[0] = captures[1];
217 10 : if (TREE_TYPE (_o1[0]) != type)
218 : {
219 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
220 : }
221 : else
222 : _r1 = _o1[0];
223 10 : res_op1 = _r1;
224 : }
225 10 : tree _r;
226 10 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
227 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 74, __FILE__, __LINE__, true);
228 10 : return _r;
229 : }
230 0 : next_after_fail101:;
231 : }
232 : return NULL_TREE;
233 : }
234 :
235 : tree
236 0 : generic_simplify_37 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
237 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
238 : const enum tree_code ARG_UNUSED (op),
239 : const enum tree_code ARG_UNUSED (cmp),
240 : const enum tree_code ARG_UNUSED (icmp))
241 : {
242 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
243 0 : if (INTEGRAL_TYPE_P (type)
244 0 : && invert_tree_comparison (cmp, HONOR_NANS (captures[1])) == icmp
245 0 : && canonicalize_math_after_vectorization_p ()
246 : )
247 : {
248 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail114;
249 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail114;
250 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail114;
251 : {
252 : tree res_op0;
253 : res_op0 = captures[0];
254 : tree res_op1;
255 : res_op1 = captures[3];
256 : tree res_op2;
257 : res_op2 = captures[5];
258 : tree _r;
259 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
260 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 86, __FILE__, __LINE__, true);
261 : return _r;
262 : }
263 0 : next_after_fail114:;
264 : }
265 0 : return NULL_TREE;
266 : }
267 :
268 : tree
269 19 : generic_simplify_44 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
270 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
271 : const enum tree_code ARG_UNUSED (op))
272 : {
273 19 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
274 38 : if (INTEGRAL_TYPE_P (type)
275 19 : && operand_equal_p (captures[2], captures[6], 0)
276 38 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[4])) == 0
277 : )
278 : {
279 0 : {
280 0 : tree t = type;
281 0 : if (!TYPE_OVERFLOW_WRAPS (t))
282 0 : t = unsigned_type_for (t);
283 0 : wide_int c = wi::add (wi::to_wide (captures[3]), wi::to_wide (captures[7]));
284 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail122;
285 0 : if (TREE_SIDE_EFFECTS (captures[7])) goto next_after_fail122;
286 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail122;
287 0 : {
288 0 : tree res_op0;
289 0 : {
290 0 : tree _o1[2], _r1;
291 0 : {
292 0 : tree _o2[1], _r2;
293 0 : _o2[0] = captures[2];
294 0 : if (TREE_TYPE (_o2[0]) != t)
295 : {
296 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
297 : }
298 : else
299 : _r2 = _o2[0];
300 0 : _o1[0] = _r2;
301 : }
302 0 : _o1[1] = wide_int_to_tree (t, c);
303 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
304 0 : res_op0 = _r1;
305 : }
306 0 : tree _r;
307 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
308 0 : if (TREE_SIDE_EFFECTS (captures[6]))
309 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[6]), _r);
310 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 88, __FILE__, __LINE__, true);
311 0 : return _r;
312 : }
313 0 : next_after_fail122:;
314 0 : }
315 : }
316 : return NULL_TREE;
317 : }
318 :
319 : tree
320 5301 : generic_simplify_54 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
321 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
322 : {
323 5301 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
324 5301 : if (fold_real_zero_addition_p (type, captures[0], captures[1], 0)
325 : )
326 : {
327 95 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail134;
328 95 : {
329 95 : tree res_op0;
330 95 : res_op0 = captures[0];
331 95 : tree _r;
332 95 : _r = non_lvalue_loc (loc, res_op0);
333 95 : if (TREE_SIDE_EFFECTS (captures[1]))
334 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
335 95 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 102, __FILE__, __LINE__, true);
336 95 : return _r;
337 : }
338 0 : next_after_fail134:;
339 : }
340 : return NULL_TREE;
341 : }
342 :
343 : tree
344 0 : generic_simplify_59 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
345 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
346 : {
347 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
348 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail140;
349 0 : {
350 0 : tree res_op0;
351 0 : res_op0 = captures[0];
352 0 : tree res_op1;
353 0 : res_op1 = captures[1];
354 0 : tree _r;
355 0 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
356 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, true);
357 : return _r;
358 : }
359 0 : next_after_fail140:;
360 0 : return NULL_TREE;
361 : }
362 :
363 : tree
364 10 : generic_simplify_66 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
365 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
366 : {
367 10 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
368 10 : if (!TYPE_SATURATING (type)
369 : )
370 : {
371 10 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
372 20 : && !FIXED_POINT_TYPE_P (type)
373 : )
374 : {
375 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail155;
376 10 : {
377 10 : tree res_op0;
378 10 : res_op0 = captures[2];
379 10 : tree res_op1;
380 10 : res_op1 = captures[1];
381 10 : tree _r;
382 10 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
383 10 : if (TREE_SIDE_EFFECTS (captures[0]))
384 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
385 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 123, __FILE__, __LINE__, true);
386 10 : return _r;
387 : }
388 0 : next_after_fail155:;
389 : }
390 : }
391 : return NULL_TREE;
392 : }
393 :
394 : tree
395 420988 : generic_simplify_73 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
396 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
397 : const enum tree_code ARG_UNUSED (plusminus))
398 : {
399 420988 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
400 420988 : if (!TYPE_SATURATING (type)
401 420988 : && (!FLOAT_TYPE_P (type) || flag_associative_math)
402 : )
403 : {
404 420448 : if (!ALL_FRACT_MODE_P (TYPE_MODE (type))
405 : )
406 : {
407 55 : if ((!ANY_INTEGRAL_TYPE_P (type)
408 420407 : || TYPE_OVERFLOW_WRAPS (type)
409 87271 : || (INTEGRAL_TYPE_P (type)
410 87257 : && ((tree_expr_nonzero_p (captures[1])
411 59762 : && (plusminus == MINUS_EXPR
412 59621 : || expr_not_equal_to (captures[1],
413 480069 : wi::minus_one (TYPE_PRECISION (type)),
414 : gimple_match_ctx (captures[0]))))
415 27495 : || expr_not_equal_to (captures[2],
416 : (plusminus == PLUS_EXPR
417 447943 : ? wi::max_value (TYPE_PRECISION (type), SIGNED)
418 1759 : : wi::min_value (TYPE_PRECISION (type), SIGNED)),
419 : gimple_match_ctx (captures[0])))))
420 420448 : && single_use (captures[0])
421 : )
422 : {
423 418889 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail163;
424 418889 : {
425 418889 : tree res_op0;
426 418889 : {
427 418889 : tree _o1[2], _r1;
428 418889 : _o1[0] = captures[2];
429 418889 : _o1[1] = build_one_cst (type);
430 418889 : _r1 = fold_build2_loc (loc, plusminus, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
431 418889 : res_op0 = _r1;
432 : }
433 418889 : tree res_op1;
434 418889 : res_op1 = captures[1];
435 418889 : tree _r;
436 418889 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
437 418889 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 131, __FILE__, __LINE__, true);
438 418889 : return _r;
439 : }
440 0 : next_after_fail163:;
441 : }
442 : }
443 : }
444 : return NULL_TREE;
445 : }
446 :
447 : tree
448 116 : generic_simplify_81 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
449 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
450 : const combined_fn ARG_UNUSED (POPCOUNT))
451 : {
452 116 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
453 232 : if (INTEGRAL_TYPE_P (type)
454 580 : && (wi::bit_and (widest_int::from (tree_nonzero_bits (captures[1]), UNSIGNED),
455 464 : widest_int::from (tree_nonzero_bits (captures[3]), UNSIGNED))
456 348 : == 0)
457 : )
458 : {
459 1 : {
460 1 : tree utype = TREE_TYPE (captures[1]);
461 1 : if (TYPE_PRECISION (utype) < TYPE_PRECISION (TREE_TYPE (captures[3])))
462 0 : utype = TREE_TYPE (captures[3]);
463 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail172;
464 1 : {
465 1 : tree res_op0;
466 1 : {
467 1 : tree _o1[2], _r1;
468 1 : {
469 1 : tree _o2[1], _r2;
470 1 : _o2[0] = captures[1];
471 1 : if (TREE_TYPE (_o2[0]) != utype)
472 : {
473 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
474 : }
475 : else
476 : _r2 = _o2[0];
477 1 : _o1[0] = _r2;
478 : }
479 1 : {
480 1 : tree _o2[1], _r2;
481 1 : _o2[0] = captures[3];
482 1 : if (TREE_TYPE (_o2[0]) != utype)
483 : {
484 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
485 : }
486 : else
487 : _r2 = _o2[0];
488 1 : _o1[1] = _r2;
489 : }
490 1 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
491 1 : res_op0 = _r1;
492 : }
493 1 : tree _r;
494 1 : _r = maybe_build_call_expr_loc (loc, POPCOUNT, type, 1, res_op0);
495 1 : if (!_r)
496 0 : goto next_after_fail172;
497 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 140, __FILE__, __LINE__, true);
498 1 : return _r;
499 : }
500 : next_after_fail172:;
501 : }
502 : }
503 : return NULL_TREE;
504 : }
505 :
506 : tree
507 276 : generic_simplify_94 (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 276 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
511 276 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
512 276 : && tree_nop_conversion_p (type, TREE_TYPE (captures[3]))
513 : )
514 : {
515 276 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail185;
516 276 : {
517 276 : tree res_op0;
518 276 : {
519 276 : tree _o1[2], _r1;
520 276 : {
521 276 : tree _o2[1], _r2;
522 276 : _o2[0] = captures[3];
523 276 : _r2 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
524 276 : _o1[0] = _r2;
525 : }
526 276 : _o1[1] = captures[0];
527 276 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
528 276 : res_op0 = _r1;
529 : }
530 276 : tree _r;
531 276 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
532 276 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 152, __FILE__, __LINE__, true);
533 276 : return _r;
534 : }
535 0 : next_after_fail185:;
536 : }
537 : return NULL_TREE;
538 : }
539 :
540 : tree
541 10229 : generic_simplify_104 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
542 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
543 : {
544 10229 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
545 10229 : if (!TYPE_SATURATING (type)
546 : )
547 : {
548 10229 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
549 20458 : && !FIXED_POINT_TYPE_P (type)
550 : )
551 : {
552 10229 : if (INTEGRAL_TYPE_P (type)
553 10229 : && TYPE_OVERFLOW_UNDEFINED (type)
554 3277 : && TREE_CODE (captures[1]) != INTEGER_CST
555 11430 : && element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
556 : )
557 : {
558 1201 : {
559 1201 : tree utype = unsigned_type_for (type);
560 1201 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail199;
561 1201 : {
562 1201 : tree res_op0;
563 1201 : {
564 1201 : tree _o1[1], _r1;
565 1201 : {
566 1201 : tree _o2[1], _r2;
567 1201 : _o2[0] = captures[1];
568 1201 : if (TREE_TYPE (_o2[0]) != utype)
569 : {
570 1201 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
571 : }
572 : else
573 : _r2 = _o2[0];
574 1201 : _o1[0] = _r2;
575 : }
576 1201 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
577 1201 : res_op0 = _r1;
578 : }
579 1201 : tree _r;
580 1201 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
581 1201 : if (TREE_SIDE_EFFECTS (captures[2]))
582 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
583 1201 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 166, __FILE__, __LINE__, true);
584 1201 : return _r;
585 : }
586 0 : next_after_fail199:;
587 : }
588 : }
589 : else
590 : {
591 9028 : if (element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
592 9028 : || (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
593 2343 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))
594 : )
595 : {
596 8759 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail200;
597 8759 : {
598 8759 : tree res_op0;
599 8759 : {
600 8759 : tree _o1[1], _r1;
601 8759 : _o1[0] = captures[1];
602 8759 : if (TREE_TYPE (_o1[0]) != type)
603 : {
604 8759 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
605 : }
606 : else
607 : _r1 = _o1[0];
608 8759 : res_op0 = _r1;
609 : }
610 8759 : tree _r;
611 8759 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
612 8759 : if (TREE_SIDE_EFFECTS (captures[2]))
613 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
614 8759 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 167, __FILE__, __LINE__, true);
615 8759 : return _r;
616 : }
617 0 : next_after_fail200:;
618 : }
619 : }
620 : }
621 : }
622 : return NULL_TREE;
623 : }
624 :
625 : tree
626 0 : generic_simplify_117 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
627 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
628 : {
629 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
630 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail214;
631 0 : {
632 0 : tree res_op0;
633 0 : res_op0 = captures[0];
634 0 : tree res_op1;
635 0 : {
636 0 : tree _o1[1], _r1;
637 0 : _o1[0] = captures[2];
638 0 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
639 0 : res_op1 = _r1;
640 : }
641 0 : tree _r;
642 0 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
643 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 180, __FILE__, __LINE__, true);
644 : return _r;
645 : }
646 0 : next_after_fail214:;
647 0 : return NULL_TREE;
648 : }
649 :
650 : tree
651 0 : generic_simplify_125 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
652 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
653 : {
654 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
655 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail222;
656 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail222;
657 0 : {
658 0 : tree res_op0;
659 0 : res_op0 = captures[0];
660 0 : tree res_op1;
661 0 : res_op1 = captures[3];
662 0 : tree _r;
663 0 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
664 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 186, __FILE__, __LINE__, true);
665 : return _r;
666 : }
667 : next_after_fail222:;
668 : return NULL_TREE;
669 : }
670 :
671 : tree
672 18399 : generic_simplify_136 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
673 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
674 : {
675 18399 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
676 18399 : {
677 18399 : bool wascmp;
678 18399 : if ((bitwise_inverted_equal_p (captures[0], captures[2], wascmp)
679 18399 : || bitwise_inverted_equal_p (captures[1], captures[2], wascmp))
680 18399 : && (!wascmp || element_precision (type) == 1)
681 : )
682 : {
683 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail233;
684 0 : {
685 0 : tree _r;
686 0 : _r = build_all_ones_cst (TREE_TYPE (captures[0]));
687 0 : if (TREE_SIDE_EFFECTS (captures[0]))
688 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
689 0 : if (TREE_SIDE_EFFECTS (captures[1]))
690 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
691 0 : if (TREE_SIDE_EFFECTS (captures[2]))
692 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
693 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 193, __FILE__, __LINE__, true);
694 0 : return _r;
695 : }
696 0 : next_after_fail233:;
697 : }
698 : }
699 18399 : return NULL_TREE;
700 : }
701 :
702 : tree
703 82 : generic_simplify_147 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
704 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
705 : const enum tree_code ARG_UNUSED (op))
706 : {
707 82 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
708 82 : if (bitwise_equal_p (captures[4], captures[7])
709 : )
710 : {
711 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail249;
712 16 : {
713 16 : tree res_op0;
714 16 : {
715 16 : tree _o1[2], _r1;
716 16 : {
717 16 : tree _o2[2], _r2;
718 16 : _o2[0] = captures[5];
719 16 : {
720 16 : tree _o3[1], _r3;
721 16 : _o3[0] = captures[6];
722 16 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o2[0]))
723 : {
724 16 : _r3 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o2[0]), _o3[0]);
725 : }
726 : else
727 : _r3 = _o3[0];
728 16 : _o2[1] = _r3;
729 : }
730 16 : _r2 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
731 16 : _o1[0] = _r2;
732 : }
733 16 : {
734 16 : tree _o2[1], _r2;
735 16 : _o2[0] = captures[4];
736 16 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
737 : {
738 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
739 : }
740 : else
741 : _r2 = _o2[0];
742 16 : _o1[1] = _r2;
743 : }
744 16 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
745 16 : res_op0 = _r1;
746 : }
747 16 : tree _r;
748 16 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
749 16 : if (TREE_SIDE_EFFECTS (captures[7]))
750 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[7]), _r);
751 16 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 201, __FILE__, __LINE__, true);
752 16 : return _r;
753 : }
754 0 : next_after_fail249:;
755 : }
756 : return NULL_TREE;
757 : }
758 :
759 : tree
760 441 : generic_simplify_158 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
761 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
762 : const enum tree_code ARG_UNUSED (code2),
763 : const enum tree_code ARG_UNUSED (code1))
764 : {
765 441 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
766 441 : if ((TREE_CODE (captures[2]) == INTEGER_CST
767 410 : && TREE_CODE (captures[5]) == INTEGER_CST)
768 441 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
769 3 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2])))
770 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
771 31 : && bitwise_equal_p (captures[2], captures[5]))
772 : )
773 : {
774 412 : {
775 412 : bool one_before = false;
776 412 : bool one_after = false;
777 412 : int cmp = 0;
778 412 : bool allbits = true;
779 412 : if (TREE_CODE (captures[2]) == INTEGER_CST
780 410 : && TREE_CODE (captures[5]) == INTEGER_CST)
781 : {
782 410 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
783 410 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
784 410 : auto t2 = wi::to_wide (captures[5]);
785 410 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
786 410 : if (cmp < 0
787 410 : && t1 == t2 - 1)
788 : one_before = true;
789 410 : if (cmp > 0
790 410 : && t1 == t2 + 1)
791 : one_after = true;
792 : }
793 412 : bool val;
794 412 : switch (code2)
795 : {
796 396 : case EQ_EXPR: val = (cmp == 0); break;
797 0 : case NE_EXPR: val = (cmp != 0); break;
798 2 : case LT_EXPR: val = (cmp < 0); break;
799 0 : case GT_EXPR: val = (cmp > 0); break;
800 14 : case LE_EXPR: val = (cmp <= 0); break;
801 0 : case GE_EXPR: val = (cmp >= 0); break;
802 0 : default: gcc_unreachable ();
803 : }
804 412 : if (code1 == EQ_EXPR && val
805 : )
806 : {
807 7 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail269;
808 7 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail269;
809 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail269;
810 7 : {
811 7 : tree _r;
812 7 : _r = captures[3];
813 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 211, __FILE__, __LINE__, true);
814 7 : return _r;
815 : }
816 : next_after_fail269:;
817 : }
818 : else
819 : {
820 405 : if (code1 == NE_EXPR && val && allbits
821 : )
822 : {
823 7 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail270;
824 7 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail270;
825 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail270;
826 7 : {
827 7 : tree _r;
828 7 : _r = constant_boolean_node (true, type);
829 7 : if (TREE_SIDE_EFFECTS (captures[4]))
830 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
831 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 212, __FILE__, __LINE__, true);
832 7 : return _r;
833 : }
834 : next_after_fail270:;
835 : }
836 : else
837 : {
838 398 : if (code1 == NE_EXPR && !val && allbits
839 : )
840 : {
841 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail271;
842 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail271;
843 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail271;
844 0 : {
845 0 : tree _r;
846 0 : _r = captures[0];
847 0 : if (TREE_SIDE_EFFECTS (captures[4]))
848 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
849 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 213, __FILE__, __LINE__, true);
850 0 : return _r;
851 : }
852 : next_after_fail271:;
853 : }
854 : else
855 : {
856 398 : if (code1 == EQ_EXPR
857 398 : && code2 == GT_EXPR
858 0 : && cmp == 0
859 0 : && allbits
860 398 : && ((VECTOR_BOOLEAN_TYPE_P (type)
861 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
862 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
863 : )
864 : {
865 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail272;
866 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail272;
867 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail272;
868 0 : {
869 0 : tree res_op0;
870 0 : res_op0 = captures[4];
871 0 : tree res_op1;
872 0 : res_op1 = captures[5];
873 0 : tree _r;
874 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
875 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 214, __FILE__, __LINE__, true);
876 0 : return _r;
877 : }
878 : next_after_fail272:;
879 : }
880 : else
881 : {
882 398 : if (code1 == EQ_EXPR
883 398 : && code2 == LT_EXPR
884 2 : && cmp == 0
885 2 : && allbits
886 400 : && ((VECTOR_BOOLEAN_TYPE_P (type)
887 2 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
888 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
889 : )
890 : {
891 2 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail273;
892 2 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail273;
893 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail273;
894 2 : {
895 2 : tree res_op0;
896 2 : res_op0 = captures[4];
897 2 : tree res_op1;
898 2 : res_op1 = captures[5];
899 2 : tree _r;
900 2 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
901 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 215, __FILE__, __LINE__, true);
902 2 : return _r;
903 : }
904 : next_after_fail273:;
905 : }
906 : else
907 : {
908 396 : if (code1 == EQ_EXPR
909 396 : && code2 == GE_EXPR
910 : && one_before
911 0 : && allbits
912 396 : && ((VECTOR_BOOLEAN_TYPE_P (type)
913 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
914 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
915 : )
916 : {
917 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail274;
918 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail274;
919 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail274;
920 0 : {
921 0 : tree res_op0;
922 0 : res_op0 = captures[4];
923 0 : tree res_op1;
924 0 : {
925 0 : tree _o1[1], _r1;
926 0 : _o1[0] = captures[2];
927 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
928 : {
929 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
930 : }
931 : else
932 : _r1 = _o1[0];
933 0 : res_op1 = _r1;
934 : }
935 0 : tree _r;
936 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
937 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 216, __FILE__, __LINE__, true);
938 0 : return _r;
939 : }
940 : next_after_fail274:;
941 : }
942 : else
943 : {
944 396 : if (code1 == EQ_EXPR
945 396 : && code2 == LE_EXPR
946 : && one_after
947 0 : && allbits
948 396 : && ((VECTOR_BOOLEAN_TYPE_P (type)
949 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
950 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
951 : )
952 : {
953 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail275;
954 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail275;
955 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail275;
956 0 : {
957 0 : tree res_op0;
958 0 : res_op0 = captures[4];
959 0 : tree res_op1;
960 0 : {
961 0 : tree _o1[1], _r1;
962 0 : _o1[0] = captures[2];
963 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
964 : {
965 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
966 : }
967 : else
968 : _r1 = _o1[0];
969 0 : res_op1 = _r1;
970 : }
971 0 : tree _r;
972 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
973 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 217, __FILE__, __LINE__, true);
974 0 : return _r;
975 : }
976 : next_after_fail275:;
977 : }
978 : }
979 : }
980 : }
981 : }
982 : }
983 : }
984 : }
985 : }
986 : return NULL_TREE;
987 : }
988 :
989 : tree
990 171 : generic_simplify_203 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
991 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
992 : const enum tree_code ARG_UNUSED (cmp))
993 : {
994 171 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
995 342 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
996 338 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE(captures[0]))
997 : )
998 : {
999 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail343;
1000 3 : {
1001 3 : tree res_op0;
1002 3 : res_op0 = captures[0];
1003 3 : tree res_op1;
1004 3 : res_op1 = build_zero_cst (TREE_TYPE(captures[0]));
1005 3 : tree _r;
1006 3 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1007 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 258, __FILE__, __LINE__, true);
1008 3 : return _r;
1009 : }
1010 0 : next_after_fail343:;
1011 : }
1012 : return NULL_TREE;
1013 : }
1014 :
1015 : tree
1016 4 : generic_simplify_210 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1017 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1018 : {
1019 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1020 8 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1021 8 : && TYPE_PRECISION (TREE_TYPE (captures[1])) == 1
1022 : )
1023 : {
1024 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail353;
1025 0 : {
1026 0 : tree res_op0;
1027 0 : {
1028 0 : tree _o1[2], _r1;
1029 0 : _o1[0] = captures[1];
1030 0 : _o1[1] = captures[2];
1031 0 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1032 0 : res_op0 = _r1;
1033 : }
1034 0 : tree _r;
1035 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1036 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 267, __FILE__, __LINE__, true);
1037 0 : return _r;
1038 : }
1039 0 : next_after_fail353:;
1040 : }
1041 : return NULL_TREE;
1042 : }
1043 :
1044 : tree
1045 1598 : generic_simplify_215 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1046 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1047 : const enum tree_code ARG_UNUSED (cmp))
1048 : {
1049 1598 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1050 3196 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1051 1598 : && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0]))
1052 3196 : && (TREE_INT_CST_LOW (captures[1]) & 1) != 0
1053 : )
1054 : {
1055 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail358;
1056 10 : {
1057 10 : tree res_op0;
1058 10 : res_op0 = captures[0];
1059 10 : tree res_op1;
1060 10 : res_op1 = captures[2];
1061 10 : tree _r;
1062 10 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1063 10 : if (TREE_SIDE_EFFECTS (captures[1]))
1064 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1065 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 272, __FILE__, __LINE__, true);
1066 10 : return _r;
1067 : }
1068 0 : next_after_fail358:;
1069 : }
1070 : return NULL_TREE;
1071 : }
1072 :
1073 : tree
1074 59757 : generic_simplify_223 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1075 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1076 : const enum tree_code ARG_UNUSED (neeq))
1077 : {
1078 59757 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1079 59757 : {
1080 59757 : poly_int64 diff; tree inner_type = TREE_TYPE (captures[1]);
1081 59757 : if (ptr_difference_const (captures[2], captures[0], &diff)
1082 : )
1083 : {
1084 15041 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail379;
1085 15041 : {
1086 15041 : tree res_op0;
1087 15041 : res_op0 = build_int_cst_type (inner_type, diff);
1088 15041 : tree res_op1;
1089 15041 : res_op1 = captures[1];
1090 15041 : tree _r;
1091 15041 : _r = fold_build2_loc (loc, neeq, type, res_op0, res_op1);
1092 15041 : if (TREE_SIDE_EFFECTS (captures[0]))
1093 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1094 15041 : if (TREE_SIDE_EFFECTS (captures[2]))
1095 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1096 15041 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 292, __FILE__, __LINE__, true);
1097 15041 : return _r;
1098 : }
1099 0 : next_after_fail379:;
1100 : }
1101 : }
1102 44716 : return NULL_TREE;
1103 : }
1104 :
1105 : tree
1106 726 : generic_simplify_231 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1107 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1108 : const enum tree_code ARG_UNUSED (cmp))
1109 : {
1110 726 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1111 726 : if (wi::gt_p (wi::to_wide (captures[1]), wi::to_wide (captures[2]),
1112 726 : TYPE_SIGN (TREE_TYPE (captures[0])))
1113 : )
1114 : {
1115 42 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail388;
1116 42 : {
1117 42 : tree _r;
1118 42 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1119 42 : if (TREE_SIDE_EFFECTS (captures[0]))
1120 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1121 42 : if (TREE_SIDE_EFFECTS (captures[1]))
1122 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1123 42 : if (TREE_SIDE_EFFECTS (captures[2]))
1124 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1125 42 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 301, __FILE__, __LINE__, true);
1126 42 : return _r;
1127 : }
1128 0 : next_after_fail388:;
1129 : }
1130 : else
1131 : {
1132 684 : if (wi::lt_p (wi::to_wide (captures[1]), wi::to_wide (captures[2]),
1133 684 : TYPE_SIGN (TREE_TYPE (captures[0])))
1134 : )
1135 : {
1136 684 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail389;
1137 684 : {
1138 684 : tree res_op0;
1139 684 : res_op0 = captures[0];
1140 684 : tree res_op1;
1141 684 : res_op1 = captures[2];
1142 684 : tree _r;
1143 684 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1144 684 : if (TREE_SIDE_EFFECTS (captures[1]))
1145 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1146 684 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 302, __FILE__, __LINE__, true);
1147 684 : return _r;
1148 : }
1149 0 : next_after_fail389:;
1150 : }
1151 : }
1152 : return NULL_TREE;
1153 : }
1154 :
1155 : tree
1156 47 : generic_simplify_242 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1157 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1158 : {
1159 47 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1160 47 : if (TREE_CODE (TREE_TYPE (captures[1])) != COMPLEX_TYPE
1161 47 : && (!VECTOR_MODE_P (TYPE_MODE (TREE_TYPE (captures[1])))
1162 7 : || !target_supports_op_p (TREE_TYPE (captures[1]), TRUNC_DIV_EXPR,
1163 : optab_vector)
1164 0 : || target_supports_op_p (TREE_TYPE (captures[1]), TRUNC_MOD_EXPR,
1165 : optab_vector))
1166 : )
1167 : {
1168 47 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail410;
1169 47 : {
1170 47 : tree res_op0;
1171 47 : {
1172 47 : tree _o1[2], _r1;
1173 47 : _o1[0] = captures[1];
1174 47 : _o1[1] = captures[2];
1175 47 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1176 47 : res_op0 = _r1;
1177 : }
1178 47 : tree res_op1;
1179 47 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
1180 47 : tree _r;
1181 47 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
1182 47 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 323, __FILE__, __LINE__, true);
1183 47 : return _r;
1184 : }
1185 0 : next_after_fail410:;
1186 : }
1187 : return NULL_TREE;
1188 : }
1189 :
1190 : tree
1191 59941 : generic_simplify_250 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1192 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1193 : const enum tree_code ARG_UNUSED (cmp))
1194 : {
1195 59941 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1196 119882 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1197 119882 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
1198 136294 : && wi::to_wide (captures[1]) != 0
1199 : )
1200 : {
1201 16412 : {
1202 16412 : widest_int quot;
1203 16412 : if (wi::multiple_of_p (wi::to_widest (captures[2]), wi::to_widest (captures[1]),
1204 16412 : TYPE_SIGN (TREE_TYPE (captures[0])), ")
1205 : )
1206 : {
1207 12401 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail421;
1208 12401 : {
1209 12401 : tree res_op0;
1210 12401 : res_op0 = captures[0];
1211 12401 : tree res_op1;
1212 12401 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[0]), quot);
1213 12401 : tree _r;
1214 12401 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1215 12401 : if (TREE_SIDE_EFFECTS (captures[1]))
1216 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1217 12401 : if (TREE_SIDE_EFFECTS (captures[2]))
1218 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1219 12401 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 333, __FILE__, __LINE__, true);
1220 12401 : return _r;
1221 : }
1222 0 : next_after_fail421:;
1223 : }
1224 : else
1225 : {
1226 4011 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail422;
1227 4011 : {
1228 4011 : tree _r;
1229 4011 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1230 4011 : if (TREE_SIDE_EFFECTS (captures[0]))
1231 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1232 4011 : if (TREE_SIDE_EFFECTS (captures[1]))
1233 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1234 4011 : if (TREE_SIDE_EFFECTS (captures[2]))
1235 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1236 4011 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 334, __FILE__, __LINE__, true);
1237 4011 : return _r;
1238 : }
1239 0 : next_after_fail422:;
1240 : }
1241 16412 : }
1242 : }
1243 : else
1244 : {
1245 87058 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1246 43529 : && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0]))
1247 87058 : && (wi::bit_and (wi::to_wide (captures[1]), 1) == 1)
1248 : )
1249 : {
1250 1079 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail423;
1251 1079 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail423;
1252 1079 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail423;
1253 1079 : {
1254 1079 : tree res_op0;
1255 1079 : res_op0 = captures[0];
1256 1079 : tree res_op1;
1257 1079 : tree itype = TREE_TYPE (captures[0]);
1258 1079 : int p = TYPE_PRECISION (itype);
1259 1079 : wide_int m = wi::one (p + 1) << p;
1260 1079 : wide_int a = wide_int::from (wi::to_wide (captures[1]), p + 1, UNSIGNED);
1261 1079 : wide_int i = wide_int::from (wi::mod_inv (a, m),
1262 2158 : p, TYPE_SIGN (itype)); res_op1 =
1263 1079 : wide_int_to_tree (itype, wi::mul (i, wi::to_wide (captures[2])));
1264 1079 : tree _r;
1265 1079 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1266 1079 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 335, __FILE__, __LINE__, true);
1267 1079 : return _r;
1268 1079 : }
1269 : next_after_fail423:;
1270 : }
1271 : }
1272 : return NULL_TREE;
1273 : }
1274 :
1275 : tree
1276 5980463 : generic_simplify_266 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1277 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1278 : const enum tree_code ARG_UNUSED (cmp))
1279 : {
1280 5980463 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1281 11960902 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1282 2494762 : && !(targetm.have_canonicalize_funcptr_for_compare ()
1283 0 : && ((POINTER_TYPE_P (TREE_TYPE (captures[1]))
1284 0 : && FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[1]))))
1285 0 : || (POINTER_TYPE_P (TREE_TYPE (captures[3]))
1286 0 : && FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[3]))))))
1287 5980463 : && single_use (captures[0])
1288 : )
1289 : {
1290 2494762 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[0]))
1291 1753359 : && (TREE_CODE (captures[3]) == INTEGER_CST
1292 1753359 : || captures[2] != captures[3])
1293 1753359 : && (TYPE_UNSIGNED (TREE_TYPE (captures[1])) == TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1294 : || cmp == NE_EXPR
1295 994338 : || cmp == EQ_EXPR)
1296 797980 : && !POINTER_TYPE_P (TREE_TYPE (captures[1]))
1297 3179976 : && (TREE_CODE (TREE_TYPE (captures[1])) != BOOLEAN_TYPE
1298 390 : || TREE_CODE (TREE_TYPE (captures[3])) == BOOLEAN_TYPE)
1299 : )
1300 : {
1301 685214 : if (TREE_CODE (captures[2]) == INTEGER_CST
1302 : )
1303 : {
1304 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail481;
1305 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail481;
1306 0 : {
1307 0 : tree res_op0;
1308 0 : res_op0 = captures[1];
1309 0 : tree res_op1;
1310 0 : res_op1 = force_fit_type (TREE_TYPE (captures[1]),
1311 0 : wide_int::from (wi::to_wide (captures[2]),
1312 0 : MAX (TYPE_PRECISION (TREE_TYPE (captures[2])),
1313 : TYPE_PRECISION (TREE_TYPE (captures[1]))),
1314 0 : TYPE_SIGN (TREE_TYPE (captures[2]))),
1315 0 : 0, TREE_OVERFLOW (captures[2]));
1316 0 : tree _r;
1317 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1318 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1319 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1320 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 392, __FILE__, __LINE__, true);
1321 0 : return _r;
1322 : }
1323 : next_after_fail481:;
1324 : }
1325 : else
1326 : {
1327 685214 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail482;
1328 592813 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail482;
1329 592813 : {
1330 592813 : tree res_op0;
1331 592813 : res_op0 = captures[1];
1332 592813 : tree res_op1;
1333 592813 : {
1334 592813 : tree _o1[1], _r1;
1335 592813 : _o1[0] = captures[2];
1336 592813 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1337 : {
1338 592691 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1339 : }
1340 : else
1341 : _r1 = _o1[0];
1342 592813 : res_op1 = _r1;
1343 : }
1344 592813 : tree _r;
1345 592813 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1346 592813 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 393, __FILE__, __LINE__, true);
1347 592813 : return _r;
1348 : }
1349 : next_after_fail482:;
1350 : }
1351 : }
1352 : else
1353 : {
1354 1809548 : if (TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))
1355 : )
1356 : {
1357 688810 : if ((cmp == EQ_EXPR || cmp == NE_EXPR
1358 223745 : || TYPE_UNSIGNED (TREE_TYPE (captures[0])) == TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1359 115399 : || (!TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1360 114338 : && TYPE_UNSIGNED (TREE_TYPE (captures[1]))))
1361 911494 : && (types_match (TREE_TYPE (captures[3]), TREE_TYPE (captures[1]))
1362 115295 : || ((TYPE_PRECISION (TREE_TYPE (captures[1]))
1363 115295 : >= TYPE_PRECISION (TREE_TYPE (captures[3])))
1364 49606 : && (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1365 49606 : == TYPE_UNSIGNED (TREE_TYPE (captures[3]))))
1366 77531 : || (TREE_CODE (captures[2]) == INTEGER_CST
1367 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1368 0 : && int_fits_type_p (captures[2], TREE_TYPE (captures[1]))))
1369 : )
1370 : {
1371 610218 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail483;
1372 610218 : {
1373 610218 : tree res_op0;
1374 610218 : res_op0 = captures[1];
1375 610218 : tree res_op1;
1376 610218 : {
1377 610218 : tree _o1[1], _r1;
1378 610218 : _o1[0] = captures[3];
1379 610218 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1380 : {
1381 132628 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1382 : }
1383 : else
1384 : _r1 = _o1[0];
1385 610218 : res_op1 = _r1;
1386 : }
1387 610218 : tree _r;
1388 610218 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1389 610218 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 394, __FILE__, __LINE__, true);
1390 610218 : return _r;
1391 : }
1392 0 : next_after_fail483:;
1393 : }
1394 : else
1395 : {
1396 78592 : if (TREE_CODE (captures[2]) == INTEGER_CST
1397 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1398 78592 : && !int_fits_type_p (captures[2], TREE_TYPE (captures[1]))
1399 : )
1400 : {
1401 0 : {
1402 0 : tree min = lower_bound_in_type (TREE_TYPE (captures[3]), TREE_TYPE (captures[1]));
1403 0 : tree max = upper_bound_in_type (TREE_TYPE (captures[3]), TREE_TYPE (captures[1]));
1404 0 : bool above = integer_nonzerop (const_binop (LT_EXPR, type, max, captures[2]));
1405 0 : bool below = integer_nonzerop (const_binop (LT_EXPR, type, captures[2], min));
1406 0 : if (above || below
1407 : )
1408 : {
1409 0 : if (cmp == EQ_EXPR || cmp == NE_EXPR
1410 : )
1411 : {
1412 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail484;
1413 0 : {
1414 0 : tree _r;
1415 0 : _r = constant_boolean_node (cmp == EQ_EXPR ? false : true, type);
1416 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1417 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1418 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1419 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1420 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 395, __FILE__, __LINE__, true);
1421 0 : return _r;
1422 : }
1423 0 : next_after_fail484:;
1424 : }
1425 : else
1426 : {
1427 0 : if (cmp == LT_EXPR || cmp == LE_EXPR
1428 : )
1429 : {
1430 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail485;
1431 0 : {
1432 0 : tree _r;
1433 0 : _r = constant_boolean_node (above ? true : false, type);
1434 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1435 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1436 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1437 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1438 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 396, __FILE__, __LINE__, true);
1439 0 : return _r;
1440 : }
1441 0 : next_after_fail485:;
1442 : }
1443 : else
1444 : {
1445 0 : if (cmp == GT_EXPR || cmp == GE_EXPR
1446 : )
1447 : {
1448 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail486;
1449 0 : {
1450 0 : tree _r;
1451 0 : _r = constant_boolean_node (above ? false : true, type);
1452 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1453 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1454 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1455 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1456 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 397, __FILE__, __LINE__, true);
1457 0 : return _r;
1458 : }
1459 0 : next_after_fail486:;
1460 : }
1461 : }
1462 : }
1463 : }
1464 : }
1465 : }
1466 : }
1467 : }
1468 : else
1469 : {
1470 2241457 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1471 1005319 : && (TYPE_PRECISION (TREE_TYPE (captures[0]))
1472 1005319 : < TYPE_PRECISION (TREE_TYPE (captures[1])))
1473 52554 : && (cmp == EQ_EXPR || cmp == NE_EXPR)
1474 1122773 : && types_match (TREE_TYPE (captures[1]),
1475 2035 : TREE_TYPE (captures[3]))
1476 : )
1477 : {
1478 1617 : {
1479 1617 : tree itype = TREE_TYPE (captures[0]);
1480 1617 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail487;
1481 1617 : {
1482 1617 : tree res_op0;
1483 1617 : {
1484 1617 : tree _o1[1], _r1;
1485 1617 : {
1486 1617 : tree _o2[2], _r2;
1487 1617 : _o2[0] = captures[1];
1488 1617 : _o2[1] = captures[3];
1489 1617 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1490 1617 : _o1[0] = _r2;
1491 : }
1492 1617 : if (TREE_TYPE (_o1[0]) != itype)
1493 : {
1494 1617 : _r1 = fold_build1_loc (loc, NOP_EXPR, itype, _o1[0]);
1495 : }
1496 : else
1497 : _r1 = _o1[0];
1498 1617 : res_op0 = _r1;
1499 : }
1500 1617 : tree res_op1;
1501 1617 : res_op1 = build_zero_cst (itype);
1502 1617 : tree _r;
1503 1617 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1504 1617 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 398, __FILE__, __LINE__, true);
1505 1617 : return _r;
1506 : }
1507 0 : next_after_fail487:;
1508 : }
1509 : }
1510 : }
1511 : }
1512 : }
1513 : else
1514 : {
1515 6928666 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
1516 85554 : && (DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1517 42777 : == DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[1])))
1518 3571247 : && (DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1519 42773 : == DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[3])))
1520 : )
1521 : {
1522 42769 : {
1523 42769 : tree type1 = TREE_TYPE (captures[3]);
1524 42769 : if (TREE_CODE (captures[3]) == REAL_CST && !DECIMAL_FLOAT_TYPE_P (type1))
1525 : {
1526 0 : REAL_VALUE_TYPE orig = TREE_REAL_CST (captures[3]);
1527 0 : if (TYPE_PRECISION (type1) > TYPE_PRECISION (float_type_node)
1528 0 : && exact_real_truncate (TYPE_MODE (float_type_node), &orig))
1529 0 : type1 = float_type_node;
1530 0 : if (TYPE_PRECISION (type1) > TYPE_PRECISION (double_type_node)
1531 0 : && exact_real_truncate (TYPE_MODE (double_type_node), &orig))
1532 0 : type1 = double_type_node;
1533 : }
1534 42769 : tree newtype
1535 42769 : = (element_precision (TREE_TYPE (captures[1])) > element_precision (type1)
1536 42769 : ? TREE_TYPE (captures[1]) : type1);
1537 42769 : if (element_precision (TREE_TYPE (captures[0])) > element_precision (newtype)
1538 42769 : && (!VECTOR_TYPE_P (type) || is_truth_type_for (newtype, type))
1539 : )
1540 : {
1541 1527 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail488;
1542 1527 : {
1543 1527 : tree res_op0;
1544 1527 : {
1545 1527 : tree _o1[1], _r1;
1546 1527 : _o1[0] = captures[1];
1547 1527 : if (TREE_TYPE (_o1[0]) != newtype)
1548 : {
1549 9 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
1550 : }
1551 : else
1552 : _r1 = _o1[0];
1553 1527 : res_op0 = _r1;
1554 : }
1555 1527 : tree res_op1;
1556 1527 : {
1557 1527 : tree _o1[1], _r1;
1558 1527 : _o1[0] = captures[3];
1559 1527 : if (TREE_TYPE (_o1[0]) != newtype)
1560 : {
1561 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
1562 : }
1563 : else
1564 : _r1 = _o1[0];
1565 1527 : res_op1 = _r1;
1566 : }
1567 1527 : tree _r;
1568 1527 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1569 1527 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 399, __FILE__, __LINE__, true);
1570 1527 : return _r;
1571 : }
1572 0 : next_after_fail488:;
1573 : }
1574 : }
1575 : }
1576 : }
1577 : return NULL_TREE;
1578 : }
1579 :
1580 : tree
1581 17 : generic_simplify_298 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1582 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1583 : const enum tree_code ARG_UNUSED (cmp),
1584 : const combined_fn ARG_UNUSED (ffs))
1585 : {
1586 17 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1587 17 : {
1588 17 : int prec = TYPE_PRECISION (TREE_TYPE (captures[1]));
1589 17 : if (integer_zerop (captures[2])
1590 : )
1591 : {
1592 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail561;
1593 9 : {
1594 9 : tree res_op0;
1595 9 : res_op0 = captures[1];
1596 9 : tree res_op1;
1597 9 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
1598 9 : tree _r;
1599 9 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1600 9 : if (TREE_SIDE_EFFECTS (captures[2]))
1601 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1602 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 454, __FILE__, __LINE__, true);
1603 17 : return _r;
1604 : }
1605 0 : next_after_fail561:;
1606 : }
1607 : else
1608 : {
1609 8 : if (tree_int_cst_sgn (captures[2]) < 0 || wi::to_widest (captures[2]) > prec
1610 : )
1611 : {
1612 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail562;
1613 4 : {
1614 4 : tree _r;
1615 4 : _r = constant_boolean_node (cmp == NE_EXPR ? true : false, type);
1616 4 : if (TREE_SIDE_EFFECTS (captures[1]))
1617 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1618 4 : if (TREE_SIDE_EFFECTS (captures[2]))
1619 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1620 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 455, __FILE__, __LINE__, true);
1621 4 : return _r;
1622 : }
1623 0 : next_after_fail562:;
1624 : }
1625 : else
1626 : {
1627 4 : if (single_use (captures[0])
1628 : )
1629 : {
1630 4 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail563;
1631 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail563;
1632 4 : {
1633 4 : tree res_op0;
1634 4 : {
1635 4 : tree _o1[2], _r1;
1636 4 : _o1[0] = captures[1];
1637 4 : _o1[1] = wide_int_to_tree (TREE_TYPE (captures[1]),
1638 4 : wi::mask (tree_to_uhwi (captures[2]),
1639 : false, prec));
1640 4 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1641 4 : res_op0 = _r1;
1642 : }
1643 4 : tree res_op1;
1644 4 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[1]),
1645 4 : wi::shifted_mask (tree_to_uhwi (captures[2]) - 1, 1,
1646 : false, prec));
1647 4 : tree _r;
1648 4 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1649 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 456, __FILE__, __LINE__, true);
1650 4 : return _r;
1651 : }
1652 0 : next_after_fail563:;
1653 : }
1654 : }
1655 : }
1656 : }
1657 0 : return NULL_TREE;
1658 : }
1659 :
1660 : tree
1661 1 : generic_simplify_316 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1662 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1663 : const enum tree_code ARG_UNUSED (div))
1664 : {
1665 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1666 0 : if ((INTEGRAL_TYPE_P (type) || VECTOR_INTEGER_TYPE_P (type))
1667 1 : && TYPE_OVERFLOW_UNDEFINED (type)
1668 1 : && !integer_zerop (captures[0])
1669 2 : && (!flag_non_call_exceptions || tree_expr_nonzero_p (captures[0]))
1670 : )
1671 : {
1672 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail584;
1673 1 : {
1674 1 : tree _r;
1675 1 : _r = build_minus_one_cst (type);
1676 1 : if (TREE_SIDE_EFFECTS (captures[0]))
1677 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1678 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 475, __FILE__, __LINE__, true);
1679 1 : return _r;
1680 : }
1681 0 : next_after_fail584:;
1682 : }
1683 : return NULL_TREE;
1684 : }
1685 :
1686 : tree
1687 3 : generic_simplify_321 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1688 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1689 : const enum tree_code ARG_UNUSED (div))
1690 : {
1691 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1692 3 : if (INTEGRAL_TYPE_P (type)
1693 3 : && wi::multiple_of_p (wi::to_widest (captures[2]), wi::to_widest (captures[3]), SIGNED)
1694 : )
1695 : {
1696 3 : if (TYPE_OVERFLOW_UNDEFINED (type) && !TYPE_OVERFLOW_SANITIZED (type)
1697 : )
1698 : {
1699 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail590;
1700 3 : {
1701 3 : tree res_op0;
1702 3 : res_op0 = captures[2];
1703 3 : tree res_op1;
1704 3 : res_op1 = captures[3];
1705 3 : tree _r;
1706 3 : _r = fold_build2_loc (loc, div, type, res_op0, res_op1);
1707 3 : if (TREE_SIDE_EFFECTS (captures[1]))
1708 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1709 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 481, __FILE__, __LINE__, true);
1710 3 : return _r;
1711 : }
1712 0 : next_after_fail590:;
1713 : }
1714 : }
1715 : return NULL_TREE;
1716 : }
1717 :
1718 : tree
1719 0 : generic_simplify_331 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1720 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1721 : {
1722 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1723 0 : if (SCALAR_FLOAT_TYPE_P (type)
1724 0 : && ! HONOR_NANS (type)
1725 0 : && ! HONOR_INFINITIES (type)
1726 : )
1727 : {
1728 0 : if (types_match (type, float_type_node)
1729 : )
1730 : {
1731 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail600;
1732 0 : {
1733 0 : tree res_op0;
1734 0 : res_op0 = build_one_cst (type);
1735 0 : tree res_op1;
1736 0 : {
1737 0 : tree _o1[1], _r1;
1738 0 : _o1[0] = captures[0];
1739 0 : if (TREE_TYPE (_o1[0]) != type)
1740 : {
1741 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1742 : }
1743 : else
1744 : _r1 = _o1[0];
1745 0 : res_op1 = _r1;
1746 : }
1747 0 : tree _r;
1748 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_COPYSIGNF, type, 2, res_op0, res_op1);
1749 0 : if (!_r)
1750 0 : goto next_after_fail600;
1751 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 491, __FILE__, __LINE__, true);
1752 0 : return _r;
1753 : }
1754 : next_after_fail600:;
1755 : }
1756 : else
1757 : {
1758 0 : if (types_match (type, double_type_node)
1759 : )
1760 : {
1761 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail601;
1762 0 : {
1763 0 : tree res_op0;
1764 0 : res_op0 = build_one_cst (type);
1765 0 : tree res_op1;
1766 0 : {
1767 0 : tree _o1[1], _r1;
1768 0 : _o1[0] = captures[0];
1769 0 : if (TREE_TYPE (_o1[0]) != type)
1770 : {
1771 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1772 : }
1773 : else
1774 : _r1 = _o1[0];
1775 0 : res_op1 = _r1;
1776 : }
1777 0 : tree _r;
1778 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_COPYSIGN, type, 2, res_op0, res_op1);
1779 0 : if (!_r)
1780 0 : goto next_after_fail601;
1781 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 492, __FILE__, __LINE__, true);
1782 0 : return _r;
1783 : }
1784 : next_after_fail601:;
1785 : }
1786 : else
1787 : {
1788 0 : if (types_match (type, long_double_type_node)
1789 : )
1790 : {
1791 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail602;
1792 0 : {
1793 0 : tree res_op0;
1794 0 : res_op0 = build_one_cst (type);
1795 0 : tree res_op1;
1796 0 : {
1797 0 : tree _o1[1], _r1;
1798 0 : _o1[0] = captures[0];
1799 0 : if (TREE_TYPE (_o1[0]) != type)
1800 : {
1801 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1802 : }
1803 : else
1804 : _r1 = _o1[0];
1805 0 : res_op1 = _r1;
1806 : }
1807 0 : tree _r;
1808 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_COPYSIGNL, type, 2, res_op0, res_op1);
1809 0 : if (!_r)
1810 0 : goto next_after_fail602;
1811 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 493, __FILE__, __LINE__, true);
1812 0 : return _r;
1813 : }
1814 : next_after_fail602:;
1815 : }
1816 : }
1817 : }
1818 : }
1819 : return NULL_TREE;
1820 : }
1821 :
1822 : tree
1823 3 : generic_simplify_351 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1824 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1825 : const enum tree_code ARG_UNUSED (op))
1826 : {
1827 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1828 3 : if (INTEGRAL_TYPE_P (type)
1829 3 : && TYPE_PRECISION (type) > 1
1830 3 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1831 6 : && expr_no_side_effects_p (captures[2])
1832 : )
1833 : {
1834 3 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail628;
1835 3 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail628;
1836 3 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail628;
1837 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail628;
1838 3 : {
1839 3 : tree res_op0;
1840 3 : {
1841 3 : tree _o1[2], _r1;
1842 3 : {
1843 3 : tree _o2[1], _r2;
1844 3 : _o2[0] = captures[0];
1845 3 : if (TREE_TYPE (_o2[0]) != type)
1846 : {
1847 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
1848 : }
1849 : else
1850 : _r2 = _o2[0];
1851 3 : _o1[0] = _r2;
1852 : }
1853 3 : _o1[1] = captures[2];
1854 3 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1855 3 : res_op0 = _r1;
1856 : }
1857 3 : tree res_op1;
1858 3 : res_op1 = captures[1];
1859 3 : tree _r;
1860 3 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1861 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 519, __FILE__, __LINE__, true);
1862 3 : return _r;
1863 : }
1864 : next_after_fail628:;
1865 : }
1866 : return NULL_TREE;
1867 : }
1868 :
1869 : tree
1870 0 : generic_simplify_362 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1871 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
1872 : {
1873 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1874 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail639;
1875 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail639;
1876 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail639;
1877 0 : {
1878 0 : tree _r;
1879 0 : _r = captures[2];
1880 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 530, __FILE__, __LINE__, true);
1881 : return _r;
1882 : }
1883 : next_after_fail639:;
1884 : return NULL_TREE;
1885 : }
1886 :
1887 : tree
1888 0 : generic_simplify_367 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1889 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1890 : const enum tree_code ARG_UNUSED (cmp))
1891 : {
1892 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1893 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail645;
1894 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail645;
1895 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail645;
1896 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail645;
1897 0 : {
1898 0 : tree _r;
1899 0 : _r = captures[0];
1900 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 536, __FILE__, __LINE__, true);
1901 : return _r;
1902 : }
1903 : next_after_fail645:;
1904 : return NULL_TREE;
1905 : }
1906 :
1907 : tree
1908 396 : generic_simplify_375 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1909 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1910 : const enum tree_code ARG_UNUSED (op),
1911 : const enum tree_code ARG_UNUSED (neg_op))
1912 : {
1913 396 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1914 396 : if (flag_unsafe_math_optimizations
1915 : )
1916 : {
1917 4 : if (!HONOR_SIGNED_ZEROS (captures[1]) && !HONOR_INFINITIES (captures[1])
1918 : )
1919 : {
1920 4 : if (real_less (&dconst0, TREE_REAL_CST_PTR (captures[0]))
1921 : )
1922 : {
1923 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail655;
1924 2 : {
1925 2 : tree res_op0;
1926 2 : res_op0 = captures[1];
1927 2 : tree res_op1;
1928 2 : res_op1 = captures[2];
1929 2 : tree _r;
1930 2 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1931 2 : if (TREE_SIDE_EFFECTS (captures[0]))
1932 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1933 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 544, __FILE__, __LINE__, true);
1934 2 : return _r;
1935 : }
1936 0 : next_after_fail655:;
1937 : }
1938 : else
1939 : {
1940 2 : if (real_less (TREE_REAL_CST_PTR (captures[0]), &dconst0)
1941 : )
1942 : {
1943 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail656;
1944 2 : {
1945 2 : tree res_op0;
1946 2 : res_op0 = captures[1];
1947 2 : tree res_op1;
1948 2 : res_op1 = captures[2];
1949 2 : tree _r;
1950 2 : _r = fold_build2_loc (loc, neg_op, type, res_op0, res_op1);
1951 2 : if (TREE_SIDE_EFFECTS (captures[0]))
1952 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1953 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 545, __FILE__, __LINE__, true);
1954 2 : return _r;
1955 : }
1956 0 : next_after_fail656:;
1957 : }
1958 : }
1959 : }
1960 : }
1961 : return NULL_TREE;
1962 : }
1963 :
1964 : tree
1965 0 : generic_simplify_385 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1966 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1967 : const enum tree_code ARG_UNUSED (ltge),
1968 : const enum tree_code ARG_UNUSED (neeq))
1969 : {
1970 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1971 0 : if (!HONOR_NANS (captures[0])
1972 : )
1973 : {
1974 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail668;
1975 0 : {
1976 0 : tree res_op0;
1977 0 : res_op0 = captures[0];
1978 0 : tree res_op1;
1979 0 : res_op1 = captures[1];
1980 0 : tree _r;
1981 0 : _r = fold_build2_loc (loc, neeq, type, res_op0, res_op1);
1982 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 557, __FILE__, __LINE__, true);
1983 0 : return _r;
1984 : }
1985 0 : next_after_fail668:;
1986 : }
1987 : return NULL_TREE;
1988 : }
1989 :
1990 : tree
1991 1208286 : generic_simplify_393 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1992 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1993 : const enum tree_code ARG_UNUSED (cmp))
1994 : {
1995 1208286 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1996 2416572 : if ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
1997 469 : || POINTER_TYPE_P (TREE_TYPE (captures[2]))
1998 94 : || VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[2])))
1999 2416572 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
2000 : )
2001 : {
2002 1031413 : {
2003 1031413 : tree cst = uniform_integer_cst_p (captures[2]);
2004 1031413 : tree arg1_type = TREE_TYPE (cst);
2005 1031413 : unsigned int prec = TYPE_PRECISION (arg1_type);
2006 1031413 : wide_int max = wi::max_value (arg1_type);
2007 1031413 : wide_int signed_max = wi::max_value (prec, SIGNED);
2008 1031413 : wide_int min = wi::min_value (arg1_type);
2009 1031413 : if (wi::to_wide (cst) == max
2010 : )
2011 : {
2012 672 : if (cmp == GT_EXPR
2013 : )
2014 : {
2015 450 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail678;
2016 450 : {
2017 450 : tree _r;
2018 450 : _r = constant_boolean_node (false, type);
2019 450 : if (TREE_SIDE_EFFECTS (captures[1]))
2020 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2021 450 : if (TREE_SIDE_EFFECTS (captures[2]))
2022 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2023 450 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 567, __FILE__, __LINE__, true);
2024 450 : return _r;
2025 : }
2026 0 : next_after_fail678:;
2027 : }
2028 : else
2029 : {
2030 222 : if (cmp == GE_EXPR
2031 : )
2032 : {
2033 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail679;
2034 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail679;
2035 0 : {
2036 0 : tree res_op0;
2037 0 : res_op0 = captures[0];
2038 0 : tree res_op1;
2039 0 : res_op1 = captures[2];
2040 0 : tree _r;
2041 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2042 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 568, __FILE__, __LINE__, true);
2043 0 : return _r;
2044 : }
2045 967126 : next_after_fail679:;
2046 : }
2047 : else
2048 : {
2049 222 : if (cmp == LE_EXPR
2050 : )
2051 : {
2052 222 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail680;
2053 222 : {
2054 222 : tree _r;
2055 222 : _r = constant_boolean_node (true, type);
2056 222 : if (TREE_SIDE_EFFECTS (captures[1]))
2057 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2058 222 : if (TREE_SIDE_EFFECTS (captures[2]))
2059 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2060 222 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 569, __FILE__, __LINE__, true);
2061 222 : return _r;
2062 : }
2063 0 : next_after_fail680:;
2064 : }
2065 : else
2066 : {
2067 0 : if (cmp == LT_EXPR
2068 : )
2069 : {
2070 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail681;
2071 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail681;
2072 0 : {
2073 0 : tree res_op0;
2074 0 : res_op0 = captures[0];
2075 0 : tree res_op1;
2076 0 : res_op1 = captures[2];
2077 0 : tree _r;
2078 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
2079 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 570, __FILE__, __LINE__, true);
2080 0 : return _r;
2081 : }
2082 967126 : next_after_fail681:;
2083 : }
2084 : }
2085 : }
2086 : }
2087 : }
2088 : else
2089 : {
2090 1030741 : if (wi::to_wide (cst) == min
2091 : )
2092 : {
2093 58600 : if (cmp == LT_EXPR
2094 : )
2095 : {
2096 2800 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail682;
2097 2800 : {
2098 2800 : tree _r;
2099 2800 : _r = constant_boolean_node (false, type);
2100 2800 : if (TREE_SIDE_EFFECTS (captures[1]))
2101 6 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2102 2800 : if (TREE_SIDE_EFFECTS (captures[2]))
2103 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2104 2800 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 571, __FILE__, __LINE__, true);
2105 2800 : return _r;
2106 : }
2107 0 : next_after_fail682:;
2108 : }
2109 : else
2110 : {
2111 55800 : if (cmp == LE_EXPR
2112 : )
2113 : {
2114 15913 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail683;
2115 14795 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail683;
2116 14795 : {
2117 14795 : tree res_op0;
2118 14795 : res_op0 = captures[0];
2119 14795 : tree res_op1;
2120 14795 : res_op1 = captures[2];
2121 14795 : tree _r;
2122 14795 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2123 14795 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 572, __FILE__, __LINE__, true);
2124 14795 : return _r;
2125 : }
2126 967126 : next_after_fail683:;
2127 : }
2128 : else
2129 : {
2130 39887 : if (cmp == GE_EXPR
2131 : )
2132 : {
2133 8473 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail684;
2134 8473 : {
2135 8473 : tree _r;
2136 8473 : _r = constant_boolean_node (true, type);
2137 8473 : if (TREE_SIDE_EFFECTS (captures[1]))
2138 51 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2139 8473 : if (TREE_SIDE_EFFECTS (captures[2]))
2140 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2141 8473 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 573, __FILE__, __LINE__, true);
2142 8473 : return _r;
2143 : }
2144 0 : next_after_fail684:;
2145 : }
2146 : else
2147 : {
2148 31414 : if (cmp == GT_EXPR
2149 : )
2150 : {
2151 31414 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail685;
2152 25824 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail685;
2153 25824 : {
2154 25824 : tree res_op0;
2155 25824 : res_op0 = captures[0];
2156 25824 : tree res_op1;
2157 25824 : res_op1 = captures[2];
2158 25824 : tree _r;
2159 25824 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
2160 25824 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 574, __FILE__, __LINE__, true);
2161 25824 : return _r;
2162 : }
2163 967126 : next_after_fail685:;
2164 : }
2165 : }
2166 : }
2167 : }
2168 : }
2169 : else
2170 : {
2171 972141 : if (wi::to_wide (cst) == max - 1
2172 : )
2173 : {
2174 6699 : if (cmp == GT_EXPR
2175 : )
2176 : {
2177 1404 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail686;
2178 1404 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail686;
2179 1404 : {
2180 1404 : tree res_op0;
2181 1404 : res_op0 = captures[0];
2182 1404 : tree res_op1;
2183 1404 : res_op1 = build_uniform_cst (TREE_TYPE (captures[2]),
2184 1404 : wide_int_to_tree (TREE_TYPE (cst),
2185 1404 : wi::to_wide (cst)
2186 2808 : + 1));
2187 1404 : tree _r;
2188 1404 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2189 1404 : if (TREE_SIDE_EFFECTS (captures[2]))
2190 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2191 1404 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 575, __FILE__, __LINE__, true);
2192 1404 : return _r;
2193 : }
2194 967126 : next_after_fail686:;
2195 : }
2196 : else
2197 : {
2198 5295 : if (cmp == LE_EXPR
2199 : )
2200 : {
2201 5295 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail687;
2202 5295 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail687;
2203 5295 : {
2204 5295 : tree res_op0;
2205 5295 : res_op0 = captures[0];
2206 5295 : tree res_op1;
2207 5295 : res_op1 = build_uniform_cst (TREE_TYPE (captures[2]),
2208 5295 : wide_int_to_tree (TREE_TYPE (cst),
2209 5295 : wi::to_wide (cst)
2210 10590 : + 1));
2211 5295 : tree _r;
2212 5295 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
2213 5295 : if (TREE_SIDE_EFFECTS (captures[2]))
2214 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2215 5295 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 576, __FILE__, __LINE__, true);
2216 5295 : return _r;
2217 : }
2218 967126 : next_after_fail687:;
2219 : }
2220 : }
2221 : }
2222 : else
2223 : {
2224 965442 : if (wi::to_wide (cst) == min + 1
2225 : )
2226 : {
2227 55429 : if (cmp == GE_EXPR
2228 : )
2229 : {
2230 1805 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail688;
2231 1805 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail688;
2232 1805 : {
2233 1805 : tree res_op0;
2234 1805 : res_op0 = captures[0];
2235 1805 : tree res_op1;
2236 1805 : res_op1 = build_uniform_cst (TREE_TYPE (captures[2]),
2237 1805 : wide_int_to_tree (TREE_TYPE (cst),
2238 1805 : wi::to_wide (cst)
2239 3610 : - 1));
2240 1805 : tree _r;
2241 1805 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
2242 1805 : if (TREE_SIDE_EFFECTS (captures[2]))
2243 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2244 1805 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 577, __FILE__, __LINE__, true);
2245 1805 : return _r;
2246 : }
2247 967126 : next_after_fail688:;
2248 : }
2249 : else
2250 : {
2251 53624 : if (cmp == LT_EXPR
2252 : )
2253 : {
2254 334 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail689;
2255 334 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail689;
2256 334 : {
2257 334 : tree res_op0;
2258 334 : res_op0 = captures[0];
2259 334 : tree res_op1;
2260 334 : res_op1 = build_uniform_cst (TREE_TYPE (captures[2]),
2261 334 : wide_int_to_tree (TREE_TYPE (cst),
2262 334 : wi::to_wide (cst)
2263 668 : - 1));
2264 334 : tree _r;
2265 334 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
2266 334 : if (TREE_SIDE_EFFECTS (captures[2]))
2267 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2268 334 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 578, __FILE__, __LINE__, true);
2269 334 : return _r;
2270 : }
2271 967126 : next_after_fail689:;
2272 : }
2273 : }
2274 : }
2275 : else
2276 : {
2277 910013 : if (wi::to_wide (cst) == signed_max
2278 2885 : && TYPE_UNSIGNED (arg1_type)
2279 2885 : && TYPE_MODE (arg1_type) != BLKmode
2280 910013 : && prec == GET_MODE_PRECISION (SCALAR_INT_TYPE_MODE (arg1_type))
2281 912898 : && INTEGRAL_TYPE_P (arg1_type)
2282 : )
2283 : {
2284 2885 : if (cmp == LE_EXPR || cmp == GT_EXPR
2285 : )
2286 : {
2287 2885 : {
2288 2885 : tree st = signed_type_for (TREE_TYPE (captures[2]));
2289 2885 : if (cst == captures[2] && cmp == LE_EXPR
2290 : )
2291 : {
2292 2848 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail690;
2293 2848 : {
2294 2848 : tree res_op0;
2295 2848 : {
2296 2848 : tree _o1[1], _r1;
2297 2848 : _o1[0] = captures[1];
2298 2848 : if (TREE_TYPE (_o1[0]) != st)
2299 : {
2300 2844 : _r1 = fold_build1_loc (loc, NOP_EXPR, st, _o1[0]);
2301 : }
2302 : else
2303 : _r1 = _o1[0];
2304 2848 : res_op0 = _r1;
2305 : }
2306 2848 : tree res_op1;
2307 2848 : res_op1 = build_zero_cst (st);
2308 2848 : tree _r;
2309 2848 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
2310 2848 : if (TREE_SIDE_EFFECTS (captures[2]))
2311 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2312 2848 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 579, __FILE__, __LINE__, true);
2313 2848 : return _r;
2314 : }
2315 0 : next_after_fail690:;
2316 0 : }
2317 : else
2318 : {
2319 37 : if (cst == captures[2] && cmp == GT_EXPR
2320 : )
2321 : {
2322 37 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail691;
2323 37 : {
2324 37 : tree res_op0;
2325 37 : {
2326 37 : tree _o1[1], _r1;
2327 37 : _o1[0] = captures[1];
2328 37 : if (TREE_TYPE (_o1[0]) != st)
2329 : {
2330 37 : _r1 = fold_build1_loc (loc, NOP_EXPR, st, _o1[0]);
2331 : }
2332 : else
2333 : _r1 = _o1[0];
2334 37 : res_op0 = _r1;
2335 : }
2336 37 : tree res_op1;
2337 37 : res_op1 = build_zero_cst (st);
2338 37 : tree _r;
2339 37 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2340 37 : if (TREE_SIDE_EFFECTS (captures[2]))
2341 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2342 37 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 580, __FILE__, __LINE__, true);
2343 37 : return _r;
2344 : }
2345 0 : next_after_fail691:;
2346 0 : }
2347 : else
2348 : {
2349 0 : if (cmp == LE_EXPR
2350 : )
2351 : {
2352 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail692;
2353 0 : {
2354 0 : tree res_op0;
2355 0 : {
2356 0 : tree _o1[1], _r1;
2357 0 : _o1[0] = captures[1];
2358 0 : if (TREE_TYPE (_o1[0]) != st)
2359 : {
2360 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, st, _o1[0]);
2361 : }
2362 : else
2363 : _r1 = _o1[0];
2364 0 : res_op0 = _r1;
2365 : }
2366 0 : tree res_op1;
2367 0 : res_op1 = build_zero_cst (st);
2368 0 : tree _r;
2369 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
2370 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2371 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2372 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 581, __FILE__, __LINE__, true);
2373 0 : return _r;
2374 : }
2375 0 : next_after_fail692:;
2376 : }
2377 : else
2378 : {
2379 0 : if (cmp == GT_EXPR
2380 : )
2381 : {
2382 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail693;
2383 0 : {
2384 0 : tree res_op0;
2385 0 : {
2386 0 : tree _o1[1], _r1;
2387 0 : _o1[0] = captures[1];
2388 0 : if (TREE_TYPE (_o1[0]) != st)
2389 : {
2390 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, st, _o1[0]);
2391 : }
2392 : else
2393 : _r1 = _o1[0];
2394 0 : res_op0 = _r1;
2395 : }
2396 0 : tree res_op1;
2397 0 : res_op1 = build_zero_cst (st);
2398 0 : tree _r;
2399 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2400 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2401 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2402 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 582, __FILE__, __LINE__, true);
2403 0 : return _r;
2404 : }
2405 0 : next_after_fail693:;
2406 : }
2407 : }
2408 : }
2409 : }
2410 : }
2411 : }
2412 : }
2413 : }
2414 : }
2415 : }
2416 : }
2417 1031413 : }
2418 : }
2419 : return NULL_TREE;
2420 : }
2421 :
2422 : tree
2423 2 : generic_simplify_455 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2424 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2425 : {
2426 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2427 2 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail802;
2428 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail802;
2429 2 : {
2430 2 : tree res_op0;
2431 2 : res_op0 = captures[0];
2432 2 : tree res_op1;
2433 2 : {
2434 2 : tree _o1[1], _r1;
2435 2 : _o1[0] = captures[5];
2436 2 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2437 2 : res_op1 = _r1;
2438 : }
2439 2 : tree _r;
2440 2 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2441 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 656, __FILE__, __LINE__, true);
2442 : return _r;
2443 : }
2444 : next_after_fail802:;
2445 : return NULL_TREE;
2446 : }
2447 :
2448 : tree
2449 65 : generic_simplify_461 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2450 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2451 : {
2452 65 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2453 65 : if (INTEGRAL_TYPE_P (type)
2454 65 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2455 65 : && TREE_CODE (TREE_TYPE (captures[0])) != BOOLEAN_TYPE
2456 130 : && (!TYPE_UNSIGNED (TREE_TYPE (captures[0]))
2457 19 : || TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0])))
2458 : )
2459 : {
2460 65 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail808;
2461 65 : {
2462 65 : tree res_op0;
2463 65 : {
2464 65 : tree _o1[1], _r1;
2465 65 : _o1[0] = captures[0];
2466 65 : if (TREE_TYPE (_o1[0]) != type)
2467 : {
2468 20 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2469 : }
2470 : else
2471 : _r1 = _o1[0];
2472 65 : res_op0 = _r1;
2473 : }
2474 65 : tree res_op1;
2475 65 : res_op1 = captures[1];
2476 65 : tree _r;
2477 65 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
2478 65 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 661, __FILE__, __LINE__, true);
2479 65 : return _r;
2480 : }
2481 0 : next_after_fail808:;
2482 : }
2483 : return NULL_TREE;
2484 : }
2485 :
2486 : tree
2487 5316755 : generic_simplify_469 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2488 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2489 : {
2490 5316755 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2491 10451314 : if (POINTER_TYPE_P (TREE_TYPE (captures[0]))
2492 5316775 : && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
2493 : )
2494 : {
2495 182216 : {
2496 182216 : unsigned int align;
2497 182216 : unsigned HOST_WIDE_INT bitpos;
2498 182216 : get_pointer_alignment_1 (captures[0], &align, &bitpos);
2499 182216 : if (wi::ltu_p (wi::to_wide (captures[1]), align / BITS_PER_UNIT)
2500 : )
2501 : {
2502 5461 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail816;
2503 5461 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail816;
2504 5461 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail816;
2505 5461 : {
2506 5461 : tree _r;
2507 10922 : _r = wide_int_to_tree (type, (wi::to_wide (captures[1])
2508 10922 : & (bitpos / BITS_PER_UNIT)));
2509 5461 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 668, __FILE__, __LINE__, true);
2510 5461 : return _r;
2511 : }
2512 176755 : next_after_fail816:;
2513 : }
2514 : }
2515 : }
2516 : return NULL_TREE;
2517 : }
2518 :
2519 : tree
2520 0 : generic_simplify_479 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2521 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2522 : const enum tree_code ARG_UNUSED (code2),
2523 : const enum tree_code ARG_UNUSED (code1))
2524 : {
2525 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2526 0 : if ((TREE_CODE (captures[2]) == INTEGER_CST
2527 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
2528 0 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2529 0 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2]))
2530 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, code2))
2531 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
2532 0 : && bitwise_equal_p (captures[2], captures[5]))
2533 : )
2534 : {
2535 0 : {
2536 0 : bool one_before = false;
2537 0 : bool one_after = false;
2538 0 : int cmp = 0;
2539 0 : bool allbits = true;
2540 0 : if (TREE_CODE (captures[2]) == INTEGER_CST
2541 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
2542 : {
2543 0 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
2544 0 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
2545 0 : auto t2 = wi::to_wide (captures[5]);
2546 0 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
2547 0 : if (cmp < 0
2548 0 : && t1 == t2 - 1)
2549 : one_before = true;
2550 0 : if (cmp > 0
2551 0 : && t1 == t2 + 1)
2552 : one_after = true;
2553 : }
2554 0 : bool val;
2555 0 : switch (code2)
2556 : {
2557 0 : case EQ_EXPR: val = (cmp == 0); break;
2558 0 : case NE_EXPR: val = (cmp != 0); break;
2559 0 : case LT_EXPR: val = (cmp < 0); break;
2560 0 : case GT_EXPR: val = (cmp > 0); break;
2561 0 : case LE_EXPR: val = (cmp <= 0); break;
2562 0 : case GE_EXPR: val = (cmp >= 0); break;
2563 0 : default: gcc_unreachable ();
2564 : }
2565 0 : if (code1 == EQ_EXPR && val
2566 : )
2567 : {
2568 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail848;
2569 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail848;
2570 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail848;
2571 0 : {
2572 0 : tree _r;
2573 0 : _r = captures[0];
2574 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 673, __FILE__, __LINE__, true);
2575 0 : return _r;
2576 : }
2577 : next_after_fail848:;
2578 : }
2579 : else
2580 : {
2581 0 : if (code1 == EQ_EXPR && !val
2582 : )
2583 : {
2584 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail849;
2585 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail849;
2586 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail849;
2587 0 : {
2588 0 : tree _r;
2589 0 : _r = constant_boolean_node (false, type);
2590 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2591 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2592 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 674, __FILE__, __LINE__, true);
2593 0 : return _r;
2594 : }
2595 : next_after_fail849:;
2596 : }
2597 : else
2598 : {
2599 0 : if (code1 == NE_EXPR && !val && allbits
2600 : )
2601 : {
2602 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail850;
2603 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail850;
2604 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail850;
2605 0 : {
2606 0 : tree _r;
2607 0 : _r = captures[3];
2608 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 675, __FILE__, __LINE__, true);
2609 0 : return _r;
2610 : }
2611 : next_after_fail850:;
2612 : }
2613 : else
2614 : {
2615 0 : if ((code1 == NE_EXPR
2616 0 : && code2 == GE_EXPR
2617 0 : && cmp == 0
2618 0 : && allbits)
2619 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2620 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2621 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2622 : )
2623 : {
2624 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail851;
2625 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail851;
2626 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail851;
2627 0 : {
2628 0 : tree res_op0;
2629 0 : res_op0 = captures[4];
2630 0 : tree res_op1;
2631 0 : {
2632 0 : tree _o1[1], _r1;
2633 0 : _o1[0] = captures[2];
2634 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2635 : {
2636 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2637 : }
2638 : else
2639 : _r1 = _o1[0];
2640 0 : res_op1 = _r1;
2641 : }
2642 0 : tree _r;
2643 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2644 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 676, __FILE__, __LINE__, true);
2645 0 : return _r;
2646 : }
2647 : next_after_fail851:;
2648 : }
2649 : else
2650 : {
2651 0 : if ((code1 == NE_EXPR
2652 0 : && code2 == LE_EXPR
2653 0 : && cmp == 0
2654 0 : && allbits)
2655 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2656 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2657 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2658 : )
2659 : {
2660 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail852;
2661 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail852;
2662 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail852;
2663 0 : {
2664 0 : tree res_op0;
2665 0 : res_op0 = captures[4];
2666 0 : tree res_op1;
2667 0 : {
2668 0 : tree _o1[1], _r1;
2669 0 : _o1[0] = captures[2];
2670 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2671 : {
2672 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2673 : }
2674 : else
2675 : _r1 = _o1[0];
2676 0 : res_op1 = _r1;
2677 : }
2678 0 : tree _r;
2679 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2680 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 677, __FILE__, __LINE__, true);
2681 0 : return _r;
2682 : }
2683 : next_after_fail852:;
2684 : }
2685 : else
2686 : {
2687 0 : if ((code1 == NE_EXPR
2688 0 : && code2 == GT_EXPR
2689 : && one_after
2690 0 : && allbits)
2691 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2692 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GT_EXPR))
2693 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2694 : )
2695 : {
2696 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail853;
2697 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail853;
2698 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail853;
2699 0 : {
2700 0 : tree res_op0;
2701 0 : res_op0 = captures[4];
2702 0 : tree res_op1;
2703 0 : {
2704 0 : tree _o1[1], _r1;
2705 0 : _o1[0] = captures[2];
2706 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2707 : {
2708 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2709 : }
2710 : else
2711 : _r1 = _o1[0];
2712 0 : res_op1 = _r1;
2713 : }
2714 0 : tree _r;
2715 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2716 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 678, __FILE__, __LINE__, true);
2717 0 : return _r;
2718 : }
2719 : next_after_fail853:;
2720 : }
2721 : else
2722 : {
2723 0 : if ((code1 == NE_EXPR
2724 0 : && code2 == LT_EXPR
2725 : && one_before
2726 0 : && allbits)
2727 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
2728 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LT_EXPR))
2729 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
2730 : )
2731 : {
2732 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail854;
2733 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail854;
2734 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail854;
2735 0 : {
2736 0 : tree res_op0;
2737 0 : res_op0 = captures[4];
2738 0 : tree res_op1;
2739 0 : {
2740 0 : tree _o1[1], _r1;
2741 0 : _o1[0] = captures[2];
2742 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
2743 : {
2744 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
2745 : }
2746 : else
2747 : _r1 = _o1[0];
2748 0 : res_op1 = _r1;
2749 : }
2750 0 : tree _r;
2751 0 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
2752 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 679, __FILE__, __LINE__, true);
2753 0 : return _r;
2754 : }
2755 : next_after_fail854:;
2756 : }
2757 : }
2758 : }
2759 : }
2760 : }
2761 : }
2762 : }
2763 : }
2764 : }
2765 : return NULL_TREE;
2766 : }
2767 :
2768 : tree
2769 0 : generic_simplify_508 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2770 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2771 : const enum tree_code ARG_UNUSED (minmax),
2772 : const enum tree_code ARG_UNUSED (maxmin))
2773 : {
2774 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2775 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail899;
2776 0 : {
2777 0 : tree res_op0;
2778 0 : res_op0 = captures[1];
2779 0 : tree res_op1;
2780 0 : {
2781 0 : tree _o1[1], _r1;
2782 0 : _o1[0] = captures[2];
2783 0 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2784 0 : res_op1 = _r1;
2785 : }
2786 0 : tree _r;
2787 0 : _r = fold_build2_loc (loc, maxmin, type, res_op0, res_op1);
2788 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 712, __FILE__, __LINE__, true);
2789 : return _r;
2790 : }
2791 0 : next_after_fail899:;
2792 0 : return NULL_TREE;
2793 : }
2794 :
2795 : tree
2796 409 : generic_simplify_516 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2797 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2798 : {
2799 409 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2800 409 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
2801 409 : && wi::to_wide (captures[1]) == element_precision (type) - 1
2802 : )
2803 : {
2804 44 : {
2805 44 : tree stype = TREE_TYPE (captures[0]);
2806 44 : tree ntype = TYPE_UNSIGNED (stype) ? signed_type_for (stype)
2807 9 : : unsigned_type_for (stype);
2808 44 : if (VECTOR_TYPE_P (type)
2809 : )
2810 : {
2811 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail908;
2812 0 : {
2813 0 : tree res_op0;
2814 0 : {
2815 0 : tree _o1[2], _r1;
2816 0 : {
2817 0 : tree _o2[1], _r2;
2818 0 : _o2[0] = captures[0];
2819 0 : if (TREE_TYPE (_o2[0]) != ntype)
2820 : {
2821 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, ntype, _o2[0]);
2822 : }
2823 : else
2824 : _r2 = _o2[0];
2825 0 : _o1[0] = _r2;
2826 : }
2827 0 : _o1[1] = captures[1];
2828 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2829 0 : res_op0 = _r1;
2830 : }
2831 0 : tree _r;
2832 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
2833 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 720, __FILE__, __LINE__, true);
2834 0 : return _r;
2835 : }
2836 0 : next_after_fail908:;
2837 : }
2838 : else
2839 : {
2840 44 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail909;
2841 44 : {
2842 44 : tree res_op0;
2843 44 : {
2844 44 : tree _o1[2], _r1;
2845 44 : {
2846 44 : tree _o2[1], _r2;
2847 44 : _o2[0] = captures[0];
2848 44 : if (TREE_TYPE (_o2[0]) != ntype)
2849 : {
2850 44 : _r2 = fold_build1_loc (loc, NOP_EXPR, ntype, _o2[0]);
2851 : }
2852 : else
2853 : _r2 = _o2[0];
2854 44 : _o1[0] = _r2;
2855 : }
2856 44 : _o1[1] = captures[1];
2857 44 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2858 44 : res_op0 = _r1;
2859 : }
2860 44 : tree _r;
2861 44 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2862 44 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 721, __FILE__, __LINE__, true);
2863 44 : return _r;
2864 : }
2865 0 : next_after_fail909:;
2866 : }
2867 : }
2868 : }
2869 : return NULL_TREE;
2870 : }
2871 :
2872 : tree
2873 2 : generic_simplify_534 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2874 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2875 : {
2876 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2877 2 : if (TREE_CODE (type) != COMPLEX_TYPE
2878 2 : && (! ANY_INTEGRAL_TYPE_P (type)
2879 1 : || TYPE_OVERFLOW_UNDEFINED (type))
2880 : )
2881 : {
2882 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail941;
2883 2 : {
2884 2 : tree res_op0;
2885 2 : res_op0 = captures[0];
2886 2 : tree _r;
2887 2 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
2888 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 740, __FILE__, __LINE__, true);
2889 2 : return _r;
2890 : }
2891 0 : next_after_fail941:;
2892 : }
2893 : return NULL_TREE;
2894 : }
2895 :
2896 : tree
2897 12 : generic_simplify_541 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2898 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2899 : const enum tree_code ARG_UNUSED (op))
2900 : {
2901 12 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2902 12 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail948;
2903 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail948;
2904 12 : {
2905 12 : tree _r;
2906 12 : _r = captures[2];
2907 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 532, __FILE__, __LINE__, true);
2908 : return _r;
2909 : }
2910 : next_after_fail948:;
2911 : return NULL_TREE;
2912 : }
2913 :
2914 : tree
2915 0 : generic_simplify_547 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2916 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2917 : const combined_fn ARG_UNUSED (cond_op))
2918 : {
2919 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2920 0 : {
2921 0 : tree op_type = TREE_TYPE (captures[6]);
2922 0 : if (inverse_conditions_p (captures[0], captures[2])
2923 0 : && element_precision (type) == element_precision (op_type)
2924 : )
2925 : {
2926 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail954;
2927 0 : {
2928 0 : tree res_op0;
2929 0 : {
2930 0 : tree _o1[5], _r1;
2931 0 : _o1[0] = captures[2];
2932 0 : _o1[1] = captures[3];
2933 0 : _o1[2] = captures[4];
2934 0 : _o1[3] = captures[5];
2935 0 : {
2936 0 : tree _o2[1], _r2;
2937 0 : _o2[0] = captures[1];
2938 0 : if (TREE_TYPE (_o2[0]) != op_type)
2939 : {
2940 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, op_type, _o2[0]);
2941 : }
2942 : else
2943 : _r2 = _o2[0];
2944 0 : _o1[4] = _r2;
2945 : }
2946 0 : _r1 = maybe_build_call_expr_loc (loc, cond_op, TREE_TYPE (_o1[1]), 5, _o1[0], _o1[1], _o1[2], _o1[3], _o1[4]);
2947 0 : if (!_r1)
2948 0 : goto next_after_fail954;
2949 0 : res_op0 = _r1;
2950 : }
2951 0 : tree _r;
2952 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
2953 0 : if (TREE_SIDE_EFFECTS (captures[0]))
2954 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2955 0 : if (TREE_SIDE_EFFECTS (captures[6]))
2956 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[6]), _r);
2957 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 748, __FILE__, __LINE__, true);
2958 0 : return _r;
2959 : }
2960 : next_after_fail954:;
2961 : }
2962 : }
2963 : return NULL_TREE;
2964 : }
2965 :
2966 : tree
2967 0 : generic_simplify_560 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2968 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2969 : const enum tree_code ARG_UNUSED (bitop),
2970 : const combined_fn ARG_UNUSED (bswap))
2971 : {
2972 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2973 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail970;
2974 0 : {
2975 0 : tree res_op0;
2976 0 : res_op0 = captures[0];
2977 0 : tree res_op1;
2978 0 : {
2979 0 : tree _o1[1], _r1;
2980 0 : _o1[0] = captures[1];
2981 0 : _r1 = maybe_build_call_expr_loc (loc, bswap, TREE_TYPE (_o1[0]), 1, _o1[0]);
2982 0 : if (!_r1)
2983 0 : goto next_after_fail970;
2984 0 : res_op1 = _r1;
2985 : }
2986 0 : tree _r;
2987 0 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
2988 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 764, __FILE__, __LINE__, true);
2989 : return _r;
2990 : }
2991 : next_after_fail970:;
2992 : return NULL_TREE;
2993 : }
2994 :
2995 : tree
2996 0 : generic_simplify_569 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2997 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2998 : const combined_fn ARG_UNUSED (tans),
2999 : const combined_fn ARG_UNUSED (atans))
3000 : {
3001 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3002 0 : if (flag_unsafe_math_optimizations
3003 : )
3004 : {
3005 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail979;
3006 0 : {
3007 0 : tree _r;
3008 0 : _r = captures[0];
3009 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 773, __FILE__, __LINE__, true);
3010 0 : return _r;
3011 : }
3012 0 : next_after_fail979:;
3013 : }
3014 : return NULL_TREE;
3015 : }
3016 :
3017 : tree
3018 0 : generic_simplify_574 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3019 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3020 : const combined_fn ARG_UNUSED (froms),
3021 : const combined_fn ARG_UNUSED (tos))
3022 : {
3023 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3024 0 : if (optimize && canonicalize_math_p ()
3025 0 : && targetm.libc_has_function (function_c99_misc, NULL_TREE)
3026 : )
3027 : {
3028 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail984;
3029 0 : {
3030 0 : tree res_op0;
3031 0 : {
3032 0 : tree _o1[1], _r1;
3033 0 : _o1[0] = captures[0];
3034 0 : _r1 = maybe_build_call_expr_loc (loc, tos, TREE_TYPE (_o1[0]), 1, _o1[0]);
3035 0 : if (!_r1)
3036 0 : goto next_after_fail984;
3037 0 : res_op0 = _r1;
3038 : }
3039 0 : tree _r;
3040 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3041 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 778, __FILE__, __LINE__, true);
3042 0 : return _r;
3043 : }
3044 : next_after_fail984:;
3045 : }
3046 : return NULL_TREE;
3047 : }
3048 :
3049 : tree
3050 0 : generic_simplify_581 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3051 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3052 : const combined_fn ARG_UNUSED (floors))
3053 : {
3054 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3055 0 : if (canonicalize_math_p ()
3056 : )
3057 : {
3058 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail991;
3059 0 : {
3060 0 : tree res_op0;
3061 0 : res_op0 = captures[0];
3062 0 : tree _r;
3063 0 : _r = fold_build1_loc (loc, FIX_TRUNC_EXPR, type, res_op0);
3064 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 785, __FILE__, __LINE__, true);
3065 0 : return _r;
3066 : }
3067 0 : next_after_fail991:;
3068 : }
3069 : return NULL_TREE;
3070 : }
3071 :
3072 : tree
3073 0 : generic_simplify_589 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3074 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3075 : const combined_fn ARG_UNUSED (fmas))
3076 : {
3077 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3078 0 : if (canonicalize_math_after_vectorization_p ()
3079 : )
3080 : {
3081 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail999;
3082 : {
3083 : tree res_op0;
3084 : res_op0 = captures[0];
3085 : tree res_op1;
3086 : res_op1 = captures[1];
3087 : tree res_op2;
3088 : res_op2 = captures[2];
3089 : tree _r;
3090 : _r = maybe_build_call_expr_loc (loc, CFN_FNMS, type, 3, res_op0, res_op1, res_op2);
3091 : if (!_r)
3092 : goto next_after_fail999;
3093 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 793, __FILE__, __LINE__, true);
3094 : return _r;
3095 : }
3096 0 : next_after_fail999:;
3097 : }
3098 0 : return NULL_TREE;
3099 : }
3100 :
3101 : tree
3102 0 : generic_simplify_599 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3103 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree ARG_UNUSED (_p3), tree ARG_UNUSED (_p4), tree *ARG_UNUSED (captures),
3104 : const combined_fn ARG_UNUSED (fmas))
3105 : {
3106 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3107 0 : if (canonicalize_math_after_vectorization_p ()
3108 : )
3109 : {
3110 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1009;
3111 : {
3112 : tree res_op0;
3113 : res_op0 = captures[0];
3114 : tree res_op1;
3115 : res_op1 = captures[1];
3116 : tree res_op2;
3117 : res_op2 = captures[2];
3118 : tree res_op3;
3119 : res_op3 = captures[3];
3120 : tree res_op4;
3121 : res_op4 = captures[4];
3122 : tree _r;
3123 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FNMS, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3124 : if (!_r)
3125 : goto next_after_fail1009;
3126 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 803, __FILE__, __LINE__, true);
3127 : return _r;
3128 : }
3129 0 : next_after_fail1009:;
3130 : }
3131 0 : return NULL_TREE;
3132 : }
3133 :
3134 : tree
3135 0 : generic_simplify_608 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3136 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3137 : const combined_fn ARG_UNUSED (ctz))
3138 : {
3139 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3140 0 : {
3141 0 : tree t = TREE_TYPE (captures[0]);
3142 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1018;
3143 0 : {
3144 0 : tree res_op0;
3145 0 : {
3146 0 : tree _o1[1], _r1;
3147 0 : _o1[0] = captures[1];
3148 0 : if (TREE_TYPE (_o1[0]) != t)
3149 : {
3150 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, t, _o1[0]);
3151 : }
3152 : else
3153 : _r1 = _o1[0];
3154 0 : res_op0 = _r1;
3155 : }
3156 0 : tree _r;
3157 0 : _r = maybe_build_call_expr_loc (loc, ctz, type, 1, res_op0);
3158 0 : if (!_r)
3159 0 : goto next_after_fail1018;
3160 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 810, __FILE__, __LINE__, true);
3161 : return _r;
3162 : }
3163 : next_after_fail1018:;
3164 : }
3165 : return NULL_TREE;
3166 : }
3167 :
3168 : tree
3169 0 : generic_simplify_618 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3170 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3171 : const enum tree_code ARG_UNUSED (rot),
3172 : const combined_fn ARG_UNUSED (parity))
3173 : {
3174 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3175 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3176 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3177 0 : && (
3178 :
3179 0 : || !TREE_SIDE_EFFECTS (captures[3]))
3180 0 : && TYPE_PRECISION (TREE_TYPE (captures[0]))
3181 0 : >= TYPE_PRECISION (TREE_TYPE (captures[1]))
3182 : )
3183 : {
3184 0 : {
3185 0 : tree type0 = TREE_TYPE (captures[0]);
3186 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1029;
3187 0 : {
3188 0 : tree res_op0;
3189 0 : {
3190 0 : tree _o1[1], _r1;
3191 0 : _o1[0] = captures[2];
3192 0 : if (TREE_TYPE (_o1[0]) != type0)
3193 : {
3194 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3195 : }
3196 : else
3197 : _r1 = _o1[0];
3198 0 : res_op0 = _r1;
3199 : }
3200 0 : tree _r;
3201 0 : _r = maybe_build_call_expr_loc (loc, parity, type, 1, res_op0);
3202 0 : if (!_r)
3203 0 : goto next_after_fail1029;
3204 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3205 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3206 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 818, __FILE__, __LINE__, true);
3207 0 : return _r;
3208 : }
3209 : next_after_fail1029:;
3210 : }
3211 : }
3212 : return NULL_TREE;
3213 : }
3214 :
3215 : tree
3216 942 : generic_simplify_ABSU_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3217 : {
3218 942 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3219 942 : switch (TREE_CODE (_p0))
3220 : {
3221 541 : CASE_CONVERT:
3222 541 : {
3223 541 : tree _q20 = TREE_OPERAND (_p0, 0);
3224 541 : switch (TREE_CODE (_q20))
3225 : {
3226 0 : case ABSU_EXPR:
3227 0 : {
3228 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3229 0 : {
3230 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
3231 0 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
3232 : )
3233 : {
3234 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1073;
3235 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1073;
3236 0 : {
3237 0 : tree _r;
3238 0 : _r = captures[1];
3239 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 852, __FILE__, __LINE__, true);
3240 0 : return _r;
3241 : }
3242 0 : next_after_fail1073:;
3243 : }
3244 : }
3245 0 : break;
3246 : }
3247 : default:;
3248 : }
3249 : break;
3250 : }
3251 6 : case NEGATE_EXPR:
3252 6 : {
3253 6 : tree _q20 = TREE_OPERAND (_p0, 0);
3254 6 : {
3255 6 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3256 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1074;
3257 6 : {
3258 6 : tree res_op0;
3259 6 : res_op0 = captures[0];
3260 6 : tree _r;
3261 6 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
3262 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 853, __FILE__, __LINE__, true);
3263 942 : return _r;
3264 : }
3265 0 : next_after_fail1074:;
3266 : }
3267 0 : break;
3268 : }
3269 0 : case VEC_COND_EXPR:
3270 0 : {
3271 0 : tree _q20 = TREE_OPERAND (_p0, 0);
3272 0 : tree _q21 = TREE_OPERAND (_p0, 1);
3273 0 : tree _q22 = TREE_OPERAND (_p0, 2);
3274 0 : {
3275 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3276 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1075;
3277 0 : {
3278 0 : tree res_op0;
3279 0 : res_op0 = captures[1];
3280 0 : tree res_op1;
3281 0 : {
3282 0 : tree _o1[1], _r1;
3283 0 : _o1[0] = captures[2];
3284 0 : _r1 = fold_build1_loc (loc, ABSU_EXPR, type, _o1[0]);
3285 0 : if (EXPR_P (_r1))
3286 0 : goto next_after_fail1075;
3287 0 : res_op1 = _r1;
3288 : }
3289 0 : tree res_op2;
3290 0 : {
3291 0 : tree _o1[1], _r1;
3292 0 : _o1[0] = captures[3];
3293 0 : _r1 = fold_build1_loc (loc, ABSU_EXPR, type, _o1[0]);
3294 0 : if (EXPR_P (_r1))
3295 0 : goto next_after_fail1075;
3296 0 : res_op2 = _r1;
3297 : }
3298 0 : tree _r;
3299 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
3300 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 827, __FILE__, __LINE__, true);
3301 0 : return _r;
3302 : }
3303 0 : next_after_fail1075:;
3304 : }
3305 0 : break;
3306 : }
3307 936 : default:;
3308 : }
3309 936 : if (tree_expr_nonnegative_p (_p0))
3310 : {
3311 0 : {
3312 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3313 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1076;
3314 0 : {
3315 0 : tree res_op0;
3316 0 : res_op0 = captures[0];
3317 0 : tree _r;
3318 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3319 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 854, __FILE__, __LINE__, true);
3320 0 : return _r;
3321 : }
3322 0 : next_after_fail1076:;
3323 : }
3324 : }
3325 : return NULL_TREE;
3326 : }
3327 :
3328 : tree
3329 1918374 : generic_simplify_IMAGPART_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3330 : {
3331 1918374 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3332 1918374 : switch (TREE_CODE (_p0))
3333 : {
3334 1731 : case COMPLEX_EXPR:
3335 1731 : {
3336 1731 : tree _q20 = TREE_OPERAND (_p0, 0);
3337 1731 : tree _q21 = TREE_OPERAND (_p0, 1);
3338 1731 : {
3339 1731 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3340 1731 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1145;
3341 1731 : {
3342 1731 : tree _r;
3343 1731 : _r = captures[1];
3344 1731 : if (TREE_SIDE_EFFECTS (captures[0]))
3345 522 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3346 1731 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 881, __FILE__, __LINE__, true);
3347 1731 : return _r;
3348 : }
3349 0 : next_after_fail1145:;
3350 : }
3351 0 : break;
3352 : }
3353 45598 : CASE_CONVERT:
3354 45598 : {
3355 45598 : tree _q20 = TREE_OPERAND (_p0, 0);
3356 45598 : switch (TREE_CODE (_q20))
3357 : {
3358 0 : case CONJ_EXPR:
3359 0 : {
3360 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3361 0 : {
3362 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
3363 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1146;
3364 0 : {
3365 0 : tree res_op0;
3366 0 : {
3367 0 : tree _o1[1], _r1;
3368 0 : {
3369 0 : tree _o2[1], _r2;
3370 0 : _o2[0] = captures[2];
3371 0 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3372 0 : _o1[0] = _r2;
3373 : }
3374 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3375 0 : res_op0 = _r1;
3376 : }
3377 0 : tree _r;
3378 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3379 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 882, __FILE__, __LINE__, true);
3380 0 : return _r;
3381 : }
3382 0 : next_after_fail1146:;
3383 : }
3384 0 : break;
3385 : }
3386 0 : case PLUS_EXPR:
3387 0 : {
3388 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3389 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3390 0 : {
3391 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3392 0 : const enum tree_code op = PLUS_EXPR;
3393 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1147;
3394 0 : {
3395 0 : tree res_op0;
3396 0 : {
3397 0 : tree _o1[2], _r1;
3398 0 : {
3399 0 : tree _o2[1], _r2;
3400 0 : _o2[0] = captures[2];
3401 0 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3402 0 : _o1[0] = _r2;
3403 : }
3404 0 : {
3405 0 : tree _o2[1], _r2;
3406 0 : _o2[0] = captures[3];
3407 0 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3408 0 : _o1[1] = _r2;
3409 : }
3410 0 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3411 0 : res_op0 = _r1;
3412 : }
3413 0 : tree _r;
3414 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3415 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 879, __FILE__, __LINE__, true);
3416 0 : return _r;
3417 : }
3418 0 : next_after_fail1147:;
3419 : }
3420 0 : break;
3421 : }
3422 0 : case MINUS_EXPR:
3423 0 : {
3424 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3425 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3426 0 : {
3427 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3428 0 : const enum tree_code op = MINUS_EXPR;
3429 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1148;
3430 0 : {
3431 0 : tree res_op0;
3432 0 : {
3433 0 : tree _o1[2], _r1;
3434 0 : {
3435 0 : tree _o2[1], _r2;
3436 0 : _o2[0] = captures[2];
3437 0 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3438 0 : _o1[0] = _r2;
3439 : }
3440 0 : {
3441 0 : tree _o2[1], _r2;
3442 0 : _o2[0] = captures[3];
3443 0 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3444 0 : _o1[1] = _r2;
3445 : }
3446 0 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3447 0 : res_op0 = _r1;
3448 : }
3449 0 : tree _r;
3450 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3451 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 879, __FILE__, __LINE__, true);
3452 0 : return _r;
3453 : }
3454 0 : next_after_fail1148:;
3455 : }
3456 0 : break;
3457 : }
3458 0 : case CALL_EXPR:
3459 0 : switch (get_call_combined_fn (_q20))
3460 : {
3461 0 : case CFN_BUILT_IN_CEXPIF:
3462 0 : if (call_expr_nargs (_q20) == 1)
3463 : {
3464 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
3465 0 : {
3466 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
3467 0 : if (single_use (captures[1]) && single_use (captures[0])
3468 : )
3469 : {
3470 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1149;
3471 0 : {
3472 0 : tree res_op0;
3473 0 : {
3474 0 : tree _o1[1], _r1;
3475 0 : _o1[0] = captures[2];
3476 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SINF, TREE_TYPE (_o1[0]), 1, _o1[0]);
3477 0 : if (!_r1)
3478 0 : goto next_after_fail1149;
3479 0 : res_op0 = _r1;
3480 : }
3481 0 : tree _r;
3482 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3483 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 883, __FILE__, __LINE__, true);
3484 0 : return _r;
3485 : }
3486 0 : next_after_fail1149:;
3487 : }
3488 : }
3489 : }
3490 : break;
3491 0 : case CFN_BUILT_IN_CEXPIL:
3492 0 : if (call_expr_nargs (_q20) == 1)
3493 : {
3494 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
3495 0 : {
3496 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
3497 0 : if (single_use (captures[1]) && single_use (captures[0])
3498 : )
3499 : {
3500 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1150;
3501 0 : {
3502 0 : tree res_op0;
3503 0 : {
3504 0 : tree _o1[1], _r1;
3505 0 : _o1[0] = captures[2];
3506 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SINL, TREE_TYPE (_o1[0]), 1, _o1[0]);
3507 0 : if (!_r1)
3508 0 : goto next_after_fail1150;
3509 0 : res_op0 = _r1;
3510 : }
3511 0 : tree _r;
3512 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3513 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 883, __FILE__, __LINE__, true);
3514 0 : return _r;
3515 : }
3516 0 : next_after_fail1150:;
3517 : }
3518 : }
3519 : }
3520 : break;
3521 0 : case CFN_BUILT_IN_CEXPI:
3522 0 : if (call_expr_nargs (_q20) == 1)
3523 : {
3524 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
3525 0 : {
3526 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
3527 0 : if (single_use (captures[1]) && single_use (captures[0])
3528 : )
3529 : {
3530 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1151;
3531 0 : {
3532 0 : tree res_op0;
3533 0 : {
3534 0 : tree _o1[1], _r1;
3535 0 : _o1[0] = captures[2];
3536 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SIN, TREE_TYPE (_o1[0]), 1, _o1[0]);
3537 0 : if (!_r1)
3538 0 : goto next_after_fail1151;
3539 0 : res_op0 = _r1;
3540 : }
3541 0 : tree _r;
3542 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3543 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 883, __FILE__, __LINE__, true);
3544 0 : return _r;
3545 : }
3546 0 : next_after_fail1151:;
3547 : }
3548 : }
3549 : }
3550 : break;
3551 : default:;
3552 : }
3553 : break;
3554 : default:;
3555 : }
3556 : break;
3557 : }
3558 16 : case CONJ_EXPR:
3559 16 : {
3560 16 : tree _q20 = TREE_OPERAND (_p0, 0);
3561 16 : {
3562 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
3563 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1152;
3564 16 : {
3565 16 : tree res_op0;
3566 16 : {
3567 16 : tree _o1[1], _r1;
3568 16 : {
3569 16 : tree _o2[1], _r2;
3570 16 : _o2[0] = captures[2];
3571 16 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3572 16 : _o1[0] = _r2;
3573 : }
3574 16 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3575 16 : res_op0 = _r1;
3576 : }
3577 16 : tree _r;
3578 16 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3579 16 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 882, __FILE__, __LINE__, true);
3580 16 : return _r;
3581 : }
3582 0 : next_after_fail1152:;
3583 : }
3584 0 : break;
3585 : }
3586 365 : case PLUS_EXPR:
3587 365 : {
3588 365 : tree _q20 = TREE_OPERAND (_p0, 0);
3589 365 : tree _q21 = TREE_OPERAND (_p0, 1);
3590 365 : {
3591 365 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
3592 365 : const enum tree_code op = PLUS_EXPR;
3593 365 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1153;
3594 365 : {
3595 365 : tree res_op0;
3596 365 : {
3597 365 : tree _o1[2], _r1;
3598 365 : {
3599 365 : tree _o2[1], _r2;
3600 365 : _o2[0] = captures[2];
3601 365 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3602 365 : _o1[0] = _r2;
3603 : }
3604 365 : {
3605 365 : tree _o2[1], _r2;
3606 365 : _o2[0] = captures[3];
3607 365 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3608 365 : _o1[1] = _r2;
3609 : }
3610 365 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3611 365 : res_op0 = _r1;
3612 : }
3613 365 : tree _r;
3614 365 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3615 365 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 879, __FILE__, __LINE__, true);
3616 365 : return _r;
3617 : }
3618 0 : next_after_fail1153:;
3619 : }
3620 0 : break;
3621 : }
3622 47 : case MINUS_EXPR:
3623 47 : {
3624 47 : tree _q20 = TREE_OPERAND (_p0, 0);
3625 47 : tree _q21 = TREE_OPERAND (_p0, 1);
3626 47 : {
3627 47 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
3628 47 : const enum tree_code op = MINUS_EXPR;
3629 47 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1154;
3630 47 : {
3631 47 : tree res_op0;
3632 47 : {
3633 47 : tree _o1[2], _r1;
3634 47 : {
3635 47 : tree _o2[1], _r2;
3636 47 : _o2[0] = captures[2];
3637 47 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3638 47 : _o1[0] = _r2;
3639 : }
3640 47 : {
3641 47 : tree _o2[1], _r2;
3642 47 : _o2[0] = captures[3];
3643 47 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3644 47 : _o1[1] = _r2;
3645 : }
3646 47 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3647 47 : res_op0 = _r1;
3648 : }
3649 47 : tree _r;
3650 47 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3651 47 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 879, __FILE__, __LINE__, true);
3652 47 : return _r;
3653 : }
3654 0 : next_after_fail1154:;
3655 : }
3656 0 : break;
3657 : }
3658 54944 : case CALL_EXPR:
3659 54944 : switch (get_call_combined_fn (_p0))
3660 : {
3661 20602 : case CFN_MUL_OVERFLOW:
3662 20602 : if (call_expr_nargs (_p0) == 2)
3663 : {
3664 20602 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3665 20602 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3666 20602 : if (integer_nonzerop (_q21))
3667 : {
3668 2784 : {
3669 2784 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3670 2784 : tree res = generic_simplify_556 (loc, type, _p0, captures);
3671 2784 : if (res) return res;
3672 : }
3673 : }
3674 19649 : if (integer_nonzerop (_q20))
3675 : {
3676 3002 : {
3677 3002 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
3678 3002 : tree res = generic_simplify_556 (loc, type, _p0, captures);
3679 3002 : if (res) return res;
3680 : }
3681 : }
3682 : }
3683 : break;
3684 0 : case CFN_BUILT_IN_CEXPIF:
3685 0 : if (call_expr_nargs (_p0) == 1)
3686 : {
3687 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3688 0 : {
3689 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
3690 0 : if (single_use (captures[1]) && single_use (captures[0])
3691 : )
3692 : {
3693 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1155;
3694 0 : {
3695 0 : tree res_op0;
3696 0 : {
3697 0 : tree _o1[1], _r1;
3698 0 : _o1[0] = captures[2];
3699 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SINF, TREE_TYPE (_o1[0]), 1, _o1[0]);
3700 0 : if (!_r1)
3701 0 : goto next_after_fail1155;
3702 0 : res_op0 = _r1;
3703 : }
3704 0 : tree _r;
3705 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3706 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 883, __FILE__, __LINE__, true);
3707 0 : return _r;
3708 : }
3709 0 : next_after_fail1155:;
3710 : }
3711 : }
3712 : }
3713 : break;
3714 0 : case CFN_BUILT_IN_CEXPIL:
3715 0 : if (call_expr_nargs (_p0) == 1)
3716 : {
3717 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3718 0 : {
3719 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
3720 0 : if (single_use (captures[1]) && single_use (captures[0])
3721 : )
3722 : {
3723 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1156;
3724 0 : {
3725 0 : tree res_op0;
3726 0 : {
3727 0 : tree _o1[1], _r1;
3728 0 : _o1[0] = captures[2];
3729 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SINL, TREE_TYPE (_o1[0]), 1, _o1[0]);
3730 0 : if (!_r1)
3731 0 : goto next_after_fail1156;
3732 0 : res_op0 = _r1;
3733 : }
3734 0 : tree _r;
3735 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3736 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 883, __FILE__, __LINE__, true);
3737 0 : return _r;
3738 : }
3739 0 : next_after_fail1156:;
3740 : }
3741 : }
3742 : }
3743 : break;
3744 1 : case CFN_BUILT_IN_CEXPI:
3745 1 : if (call_expr_nargs (_p0) == 1)
3746 : {
3747 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3748 1 : {
3749 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
3750 1 : if (single_use (captures[1]) && single_use (captures[0])
3751 : )
3752 : {
3753 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1157;
3754 1 : {
3755 1 : tree res_op0;
3756 1 : {
3757 1 : tree _o1[1], _r1;
3758 1 : _o1[0] = captures[2];
3759 1 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SIN, TREE_TYPE (_o1[0]), 1, _o1[0]);
3760 1 : if (!_r1)
3761 0 : goto next_after_fail1157;
3762 1 : res_op0 = _r1;
3763 : }
3764 1 : tree _r;
3765 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3766 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 883, __FILE__, __LINE__, true);
3767 1 : return _r;
3768 : }
3769 0 : next_after_fail1157:;
3770 : }
3771 : }
3772 : }
3773 : break;
3774 : default:;
3775 : }
3776 : break;
3777 : default:;
3778 : }
3779 : return NULL_TREE;
3780 : }
3781 :
3782 : tree
3783 70287781 : generic_simplify_MULT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
3784 : {
3785 70287781 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3786 70287781 : switch (TREE_CODE (_p1))
3787 : {
3788 380 : case VECTOR_CST:
3789 380 : {
3790 380 : {
3791 380 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
3792 380 : if (initializer_each_zero_or_onep (captures[1])
3793 5 : && !HONOR_SNANS (type)
3794 385 : && !HONOR_SIGNED_ZEROS (type)
3795 : )
3796 : {
3797 5 : {
3798 5 : tree itype = FLOAT_TYPE_P (type) ? unsigned_type_for (type) : type;
3799 5 : if (itype
3800 5 : && (!VECTOR_MODE_P (TYPE_MODE (type))
3801 5 : || (VECTOR_MODE_P (TYPE_MODE (itype))
3802 5 : && optab_handler (and_optab,
3803 5 : TYPE_MODE (itype)) != CODE_FOR_nothing))
3804 : )
3805 : {
3806 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1390;
3807 5 : {
3808 5 : tree res_op0;
3809 5 : {
3810 5 : tree _o1[2], _r1;
3811 5 : {
3812 5 : tree _o2[1], _r2;
3813 5 : _o2[0] = captures[0];
3814 5 : if (TREE_TYPE (_o2[0]) != itype)
3815 : {
3816 1 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, itype, _o2[0]);
3817 : }
3818 : else
3819 : _r2 = _o2[0];
3820 5 : _o1[0] = _r2;
3821 : }
3822 5 : {
3823 5 : tree _o2[2], _r2;
3824 5 : _o2[0] = captures[1];
3825 5 : _o2[1] = build_zero_cst (type);
3826 5 : _r2 = fold_build2_loc (loc, NE_EXPR, itype, _o2[0], _o2[1]);
3827 5 : _o1[1] = _r2;
3828 : }
3829 5 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, itype, _o1[0], _o1[1]);
3830 5 : res_op0 = _r1;
3831 : }
3832 5 : tree _r;
3833 5 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3834 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 958, __FILE__, __LINE__, true);
3835 5 : return _r;
3836 : }
3837 0 : next_after_fail1390:;
3838 : }
3839 : }
3840 : }
3841 : }
3842 375 : break;
3843 : }
3844 70287776 : default:;
3845 : }
3846 70287776 : if (integer_zerop (_p1))
3847 : {
3848 33591 : {
3849 33591 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
3850 33591 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1391;
3851 33591 : {
3852 33591 : tree _r;
3853 33591 : _r = captures[1];
3854 33591 : if (TREE_SIDE_EFFECTS (captures[0]))
3855 2459 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3856 33591 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 959, __FILE__, __LINE__, true);
3857 33591 : return _r;
3858 : }
3859 0 : next_after_fail1391:;
3860 : }
3861 : }
3862 70254185 : if (real_zerop (_p1))
3863 : {
3864 330 : {
3865 330 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
3866 330 : if (!tree_expr_maybe_nan_p (captures[0])
3867 122 : && (!HONOR_NANS (type) || !tree_expr_maybe_infinite_p (captures[0]))
3868 340 : && (!HONOR_SIGNED_ZEROS (type) || tree_expr_nonnegative_p (captures[0]))
3869 : )
3870 : {
3871 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1392;
3872 4 : {
3873 4 : tree _r;
3874 4 : _r = captures[1];
3875 4 : if (TREE_SIDE_EFFECTS (captures[0]))
3876 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3877 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
3878 4 : return _r;
3879 : }
3880 0 : next_after_fail1392:;
3881 : }
3882 : }
3883 : }
3884 70254181 : if (real_onep (_p1))
3885 : {
3886 1237 : {
3887 1237 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3888 1237 : if (!tree_expr_maybe_signaling_nan_p (captures[0])
3889 1237 : && (!HONOR_SIGNED_ZEROS (type)
3890 1116 : || !COMPLEX_FLOAT_TYPE_P (type))
3891 : )
3892 : {
3893 754 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1393;
3894 754 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1393;
3895 754 : {
3896 754 : tree res_op0;
3897 754 : res_op0 = captures[0];
3898 754 : tree _r;
3899 754 : _r = non_lvalue_loc (loc, res_op0);
3900 754 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 961, __FILE__, __LINE__, true);
3901 754 : return _r;
3902 : }
3903 : next_after_fail1393:;
3904 : }
3905 : }
3906 : }
3907 70253427 : if (real_minus_onep (_p1))
3908 : {
3909 42483 : {
3910 42483 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3911 42483 : if (!tree_expr_maybe_signaling_nan_p (captures[0])
3912 42483 : && (!HONOR_SIGNED_ZEROS (type)
3913 39575 : || !COMPLEX_FLOAT_TYPE_P (type))
3914 : )
3915 : {
3916 42099 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1394;
3917 42099 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1394;
3918 42099 : {
3919 42099 : tree res_op0;
3920 42099 : res_op0 = captures[0];
3921 42099 : tree _r;
3922 42099 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
3923 42099 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 962, __FILE__, __LINE__, true);
3924 42099 : return _r;
3925 : }
3926 : next_after_fail1394:;
3927 : }
3928 : }
3929 : }
3930 70211328 : switch (TREE_CODE (_p0))
3931 : {
3932 60515 : case BIT_AND_EXPR:
3933 60515 : {
3934 60515 : tree _q20 = TREE_OPERAND (_p0, 0);
3935 60515 : tree _q21 = TREE_OPERAND (_p0, 1);
3936 60515 : switch (TREE_CODE (_q20))
3937 : {
3938 275 : case RSHIFT_EXPR:
3939 275 : {
3940 275 : tree _q30 = TREE_OPERAND (_q20, 0);
3941 275 : tree _q31 = TREE_OPERAND (_q20, 1);
3942 275 : if (uniform_integer_cst_p (_q31))
3943 : {
3944 14 : if (uniform_integer_cst_p (_q21))
3945 : {
3946 14 : if (uniform_integer_cst_p (_p1))
3947 : {
3948 14 : {
3949 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
3950 14 : {
3951 14 : tree rshift_cst = uniform_integer_cst_p (captures[1]);
3952 14 : tree bit_and_cst = uniform_integer_cst_p (captures[2]);
3953 14 : tree mult_cst = uniform_integer_cst_p (captures[3]);
3954 14 : if (VECTOR_TYPE_P (type)
3955 0 : && tree_fits_uhwi_p (rshift_cst)
3956 0 : && tree_fits_uhwi_p (mult_cst)
3957 0 : && tree_fits_uhwi_p (bit_and_cst)
3958 : )
3959 : {
3960 0 : {
3961 0 : HOST_WIDE_INT vec_elem_bits = vector_element_bits (type);
3962 0 : poly_int64 vec_nelts = TYPE_VECTOR_SUBPARTS (type);
3963 0 : poly_int64 vec_bits = vec_elem_bits * vec_nelts;
3964 0 : unsigned HOST_WIDE_INT cmp_bits_i, bit_and_i, mult_i;
3965 0 : unsigned HOST_WIDE_INT target_mult_i, target_bit_and_i;
3966 0 : cmp_bits_i = tree_to_uhwi (rshift_cst) + 1;
3967 0 : mult_i = tree_to_uhwi (mult_cst);
3968 0 : target_mult_i = (HOST_WIDE_INT_1U << cmp_bits_i) - 1;
3969 0 : bit_and_i = tree_to_uhwi (bit_and_cst);
3970 0 : target_bit_and_i = 0;
3971 0 : for (unsigned i = 0; i < vec_elem_bits / cmp_bits_i; i++)
3972 0 : target_bit_and_i = (target_bit_and_i << cmp_bits_i) | 1U;
3973 0 : if ((exact_log2 (cmp_bits_i)) >= 0
3974 0 : && cmp_bits_i < HOST_BITS_PER_WIDE_INT
3975 0 : && multiple_p (vec_bits, cmp_bits_i)
3976 0 : && vec_elem_bits <= HOST_BITS_PER_WIDE_INT
3977 0 : && target_mult_i == mult_i
3978 0 : && target_bit_and_i == bit_and_i
3979 : )
3980 : {
3981 0 : {
3982 0 : tree cmp_type = build_nonstandard_integer_type (cmp_bits_i, 0);
3983 0 : poly_int64 vector_type_nelts = exact_div (vec_bits, cmp_bits_i);
3984 0 : tree vec_cmp_type = build_vector_type (cmp_type, vector_type_nelts);
3985 0 : tree vec_truth_type = truth_type_for (vec_cmp_type);
3986 0 : tree zeros = build_zero_cst (vec_cmp_type);
3987 0 : tree ones = build_all_ones_cst (vec_cmp_type);
3988 0 : if (expand_vec_cmp_expr_p (vec_cmp_type, vec_truth_type, LT_EXPR)
3989 0 : && expand_vec_cond_expr_p (vec_cmp_type, vec_truth_type)
3990 : )
3991 : {
3992 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1395;
3993 0 : {
3994 0 : tree res_op0;
3995 0 : {
3996 0 : tree _o1[3], _r1;
3997 0 : {
3998 0 : tree _o2[2], _r2;
3999 0 : {
4000 0 : tree _o3[1], _r3;
4001 0 : _o3[0] = captures[0];
4002 0 : if (TREE_TYPE (_o3[0]) != vec_cmp_type)
4003 : {
4004 0 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, vec_cmp_type, _o3[0]);
4005 : }
4006 : else
4007 : _r3 = _o3[0];
4008 0 : _o2[0] = _r3;
4009 : }
4010 0 : _o2[1] = zeros;
4011 0 : _r2 = fold_build2_loc (loc, LT_EXPR, vec_truth_type, _o2[0], _o2[1]);
4012 0 : _o1[0] = _r2;
4013 : }
4014 0 : _o1[1] = ones;
4015 0 : _o1[2] = zeros;
4016 0 : _r1 = fold_build3_loc (loc, VEC_COND_EXPR, TREE_TYPE (_o1[1]), _o1[0], _o1[1], _o1[2]);
4017 0 : res_op0 = _r1;
4018 : }
4019 0 : tree _r;
4020 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
4021 0 : if (TREE_SIDE_EFFECTS (captures[1]))
4022 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4023 0 : if (TREE_SIDE_EFFECTS (captures[2]))
4024 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
4025 0 : if (TREE_SIDE_EFFECTS (captures[3]))
4026 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
4027 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 963, __FILE__, __LINE__, true);
4028 0 : return _r;
4029 : }
4030 0 : next_after_fail1395:;
4031 : }
4032 : }
4033 : }
4034 : }
4035 : }
4036 : }
4037 : }
4038 : }
4039 : }
4040 : }
4041 : break;
4042 : }
4043 : default:;
4044 : }
4045 : break;
4046 : }
4047 70211328 : default:;
4048 : }
4049 70211328 : switch (TREE_CODE (_p1))
4050 : {
4051 3062 : case COND_EXPR:
4052 3062 : {
4053 3062 : tree _q30 = TREE_OPERAND (_p1, 0);
4054 3062 : tree _q31 = TREE_OPERAND (_p1, 1);
4055 3062 : tree _q32 = TREE_OPERAND (_p1, 2);
4056 3062 : switch (TREE_CODE (_q30))
4057 : {
4058 546 : case GT_EXPR:
4059 546 : {
4060 546 : tree _q40 = TREE_OPERAND (_q30, 0);
4061 546 : tree _q41 = TREE_OPERAND (_q30, 1);
4062 546 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4063 : {
4064 0 : if (real_zerop (_q41))
4065 : {
4066 0 : if (real_onep (_q31))
4067 : {
4068 0 : if (real_minus_onep (_q32))
4069 : {
4070 0 : {
4071 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4072 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4073 : )
4074 : {
4075 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1396;
4076 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1396;
4077 0 : {
4078 0 : tree res_op0;
4079 0 : {
4080 0 : tree _o1[1], _r1;
4081 0 : _o1[0] = captures[0];
4082 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4083 0 : res_op0 = _r1;
4084 : }
4085 0 : tree _r;
4086 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4087 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 964, __FILE__, __LINE__, true);
4088 0 : return _r;
4089 : }
4090 0 : next_after_fail1396:;
4091 : }
4092 : }
4093 : }
4094 : }
4095 : }
4096 : }
4097 : break;
4098 : }
4099 24 : case GE_EXPR:
4100 24 : {
4101 24 : tree _q40 = TREE_OPERAND (_q30, 0);
4102 24 : tree _q41 = TREE_OPERAND (_q30, 1);
4103 24 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4104 : {
4105 0 : if (real_zerop (_q41))
4106 : {
4107 0 : if (real_onep (_q31))
4108 : {
4109 0 : if (real_minus_onep (_q32))
4110 : {
4111 0 : {
4112 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4113 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4114 : )
4115 : {
4116 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1397;
4117 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1397;
4118 0 : {
4119 0 : tree res_op0;
4120 0 : {
4121 0 : tree _o1[1], _r1;
4122 0 : _o1[0] = captures[0];
4123 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4124 0 : res_op0 = _r1;
4125 : }
4126 0 : tree _r;
4127 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4128 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 964, __FILE__, __LINE__, true);
4129 0 : return _r;
4130 : }
4131 0 : next_after_fail1397:;
4132 : }
4133 : }
4134 : }
4135 : }
4136 : }
4137 : }
4138 : break;
4139 : }
4140 51 : case LT_EXPR:
4141 51 : {
4142 51 : tree _q40 = TREE_OPERAND (_q30, 0);
4143 51 : tree _q41 = TREE_OPERAND (_q30, 1);
4144 51 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4145 : {
4146 0 : if (real_zerop (_q41))
4147 : {
4148 0 : if (real_onep (_q31))
4149 : {
4150 0 : if (real_minus_onep (_q32))
4151 : {
4152 0 : {
4153 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4154 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4155 : )
4156 : {
4157 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1398;
4158 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1398;
4159 0 : {
4160 0 : tree res_op0;
4161 0 : {
4162 0 : tree _o1[1], _r1;
4163 0 : _o1[0] = captures[0];
4164 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4165 0 : res_op0 = _r1;
4166 : }
4167 0 : tree _r;
4168 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4169 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 964, __FILE__, __LINE__, true);
4170 0 : return _r;
4171 : }
4172 0 : next_after_fail1398:;
4173 : }
4174 : }
4175 : }
4176 : }
4177 : }
4178 : }
4179 : break;
4180 : }
4181 5 : case LE_EXPR:
4182 5 : {
4183 5 : tree _q40 = TREE_OPERAND (_q30, 0);
4184 5 : tree _q41 = TREE_OPERAND (_q30, 1);
4185 5 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4186 : {
4187 0 : if (real_zerop (_q41))
4188 : {
4189 0 : if (real_onep (_q31))
4190 : {
4191 0 : if (real_minus_onep (_q32))
4192 : {
4193 0 : {
4194 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4195 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4196 : )
4197 : {
4198 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1399;
4199 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1399;
4200 0 : {
4201 0 : tree res_op0;
4202 0 : {
4203 0 : tree _o1[1], _r1;
4204 0 : _o1[0] = captures[0];
4205 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4206 0 : res_op0 = _r1;
4207 : }
4208 0 : tree _r;
4209 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4210 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 964, __FILE__, __LINE__, true);
4211 0 : return _r;
4212 : }
4213 0 : next_after_fail1399:;
4214 : }
4215 : }
4216 : }
4217 : }
4218 : }
4219 : }
4220 : break;
4221 : }
4222 : default:;
4223 : }
4224 : break;
4225 : }
4226 70211328 : default:;
4227 : }
4228 70211328 : switch (TREE_CODE (_p0))
4229 : {
4230 87132 : case COND_EXPR:
4231 87132 : {
4232 87132 : tree _q20 = TREE_OPERAND (_p0, 0);
4233 87132 : tree _q21 = TREE_OPERAND (_p0, 1);
4234 87132 : tree _q22 = TREE_OPERAND (_p0, 2);
4235 87132 : switch (TREE_CODE (_q20))
4236 : {
4237 22108 : case GT_EXPR:
4238 22108 : {
4239 22108 : tree _q30 = TREE_OPERAND (_q20, 0);
4240 22108 : tree _q31 = TREE_OPERAND (_q20, 1);
4241 22108 : if (real_zerop (_q31))
4242 : {
4243 4 : if (real_onep (_q21))
4244 : {
4245 3 : if (real_minus_onep (_q22))
4246 : {
4247 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4248 : {
4249 1 : {
4250 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4251 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4252 : )
4253 : {
4254 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1400;
4255 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1400;
4256 1 : {
4257 1 : tree res_op0;
4258 1 : {
4259 1 : tree _o1[1], _r1;
4260 1 : _o1[0] = captures[0];
4261 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4262 1 : res_op0 = _r1;
4263 : }
4264 1 : tree _r;
4265 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4266 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 964, __FILE__, __LINE__, true);
4267 1 : return _r;
4268 : }
4269 0 : next_after_fail1400:;
4270 : }
4271 : }
4272 : }
4273 : }
4274 : }
4275 3 : if (real_minus_onep (_q21))
4276 : {
4277 1 : if (real_onep (_q22))
4278 : {
4279 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4280 : {
4281 1 : {
4282 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4283 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4284 : )
4285 : {
4286 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1401;
4287 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1401;
4288 1 : {
4289 1 : tree res_op0;
4290 1 : {
4291 1 : tree _o1[1], _r1;
4292 1 : _o1[0] = captures[0];
4293 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4294 1 : res_op0 = _r1;
4295 : }
4296 1 : tree _r;
4297 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4298 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 965, __FILE__, __LINE__, true);
4299 1 : return _r;
4300 : }
4301 0 : next_after_fail1401:;
4302 : }
4303 : }
4304 : }
4305 : }
4306 : }
4307 : }
4308 : break;
4309 : }
4310 8245 : case GE_EXPR:
4311 8245 : {
4312 8245 : tree _q30 = TREE_OPERAND (_q20, 0);
4313 8245 : tree _q31 = TREE_OPERAND (_q20, 1);
4314 8245 : if (real_zerop (_q31))
4315 : {
4316 2 : if (real_onep (_q21))
4317 : {
4318 1 : if (real_minus_onep (_q22))
4319 : {
4320 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4321 : {
4322 1 : {
4323 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4324 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4325 : )
4326 : {
4327 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1402;
4328 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1402;
4329 1 : {
4330 1 : tree res_op0;
4331 1 : {
4332 1 : tree _o1[1], _r1;
4333 1 : _o1[0] = captures[0];
4334 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4335 1 : res_op0 = _r1;
4336 : }
4337 1 : tree _r;
4338 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4339 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 964, __FILE__, __LINE__, true);
4340 1 : return _r;
4341 : }
4342 0 : next_after_fail1402:;
4343 : }
4344 : }
4345 : }
4346 : }
4347 : }
4348 1 : if (real_minus_onep (_q21))
4349 : {
4350 1 : if (real_onep (_q22))
4351 : {
4352 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4353 : {
4354 1 : {
4355 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4356 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4357 : )
4358 : {
4359 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1403;
4360 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1403;
4361 1 : {
4362 1 : tree res_op0;
4363 1 : {
4364 1 : tree _o1[1], _r1;
4365 1 : _o1[0] = captures[0];
4366 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4367 1 : res_op0 = _r1;
4368 : }
4369 1 : tree _r;
4370 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4371 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 965, __FILE__, __LINE__, true);
4372 1 : return _r;
4373 : }
4374 0 : next_after_fail1403:;
4375 : }
4376 : }
4377 : }
4378 : }
4379 : }
4380 : }
4381 : break;
4382 : }
4383 7743 : case LT_EXPR:
4384 7743 : {
4385 7743 : tree _q30 = TREE_OPERAND (_q20, 0);
4386 7743 : tree _q31 = TREE_OPERAND (_q20, 1);
4387 7743 : if (real_zerop (_q31))
4388 : {
4389 2 : if (real_onep (_q21))
4390 : {
4391 1 : if (real_minus_onep (_q22))
4392 : {
4393 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4394 : {
4395 1 : {
4396 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4397 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4398 : )
4399 : {
4400 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1404;
4401 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1404;
4402 1 : {
4403 1 : tree res_op0;
4404 1 : {
4405 1 : tree _o1[1], _r1;
4406 1 : _o1[0] = captures[0];
4407 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4408 1 : res_op0 = _r1;
4409 : }
4410 1 : tree _r;
4411 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4412 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 964, __FILE__, __LINE__, true);
4413 1 : return _r;
4414 : }
4415 0 : next_after_fail1404:;
4416 : }
4417 : }
4418 : }
4419 : }
4420 : }
4421 1 : if (real_minus_onep (_q21))
4422 : {
4423 1 : if (real_onep (_q22))
4424 : {
4425 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4426 : {
4427 1 : {
4428 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4429 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4430 : )
4431 : {
4432 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1405;
4433 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1405;
4434 1 : {
4435 1 : tree res_op0;
4436 1 : {
4437 1 : tree _o1[1], _r1;
4438 1 : _o1[0] = captures[0];
4439 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4440 1 : res_op0 = _r1;
4441 : }
4442 1 : tree _r;
4443 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4444 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 965, __FILE__, __LINE__, true);
4445 1 : return _r;
4446 : }
4447 0 : next_after_fail1405:;
4448 : }
4449 : }
4450 : }
4451 : }
4452 : }
4453 : }
4454 : break;
4455 : }
4456 3233 : case LE_EXPR:
4457 3233 : {
4458 3233 : tree _q30 = TREE_OPERAND (_q20, 0);
4459 3233 : tree _q31 = TREE_OPERAND (_q20, 1);
4460 3233 : if (real_zerop (_q31))
4461 : {
4462 2 : if (real_onep (_q21))
4463 : {
4464 1 : if (real_minus_onep (_q22))
4465 : {
4466 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4467 : {
4468 1 : {
4469 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4470 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4471 : )
4472 : {
4473 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1406;
4474 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1406;
4475 1 : {
4476 1 : tree res_op0;
4477 1 : {
4478 1 : tree _o1[1], _r1;
4479 1 : _o1[0] = captures[0];
4480 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4481 1 : res_op0 = _r1;
4482 : }
4483 1 : tree _r;
4484 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4485 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 964, __FILE__, __LINE__, true);
4486 1 : return _r;
4487 : }
4488 0 : next_after_fail1406:;
4489 : }
4490 : }
4491 : }
4492 : }
4493 : }
4494 1 : if (real_minus_onep (_q21))
4495 : {
4496 1 : if (real_onep (_q22))
4497 : {
4498 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4499 : {
4500 1 : {
4501 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4502 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4503 : )
4504 : {
4505 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1407;
4506 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1407;
4507 1 : {
4508 1 : tree res_op0;
4509 1 : {
4510 1 : tree _o1[1], _r1;
4511 1 : _o1[0] = captures[0];
4512 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4513 1 : res_op0 = _r1;
4514 : }
4515 1 : tree _r;
4516 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4517 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 965, __FILE__, __LINE__, true);
4518 1 : return _r;
4519 : }
4520 0 : next_after_fail1407:;
4521 : }
4522 : }
4523 : }
4524 : }
4525 : }
4526 : }
4527 : break;
4528 : }
4529 : default:;
4530 : }
4531 : break;
4532 : }
4533 70211320 : default:;
4534 : }
4535 70211320 : switch (TREE_CODE (_p1))
4536 : {
4537 3062 : case COND_EXPR:
4538 3062 : {
4539 3062 : tree _q30 = TREE_OPERAND (_p1, 0);
4540 3062 : tree _q31 = TREE_OPERAND (_p1, 1);
4541 3062 : tree _q32 = TREE_OPERAND (_p1, 2);
4542 3062 : switch (TREE_CODE (_q30))
4543 : {
4544 546 : case GT_EXPR:
4545 546 : {
4546 546 : tree _q40 = TREE_OPERAND (_q30, 0);
4547 546 : tree _q41 = TREE_OPERAND (_q30, 1);
4548 546 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4549 : {
4550 0 : if (real_zerop (_q41))
4551 : {
4552 0 : if (real_minus_onep (_q31))
4553 : {
4554 0 : if (real_onep (_q32))
4555 : {
4556 0 : {
4557 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4558 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4559 : )
4560 : {
4561 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1408;
4562 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1408;
4563 0 : {
4564 0 : tree res_op0;
4565 0 : {
4566 0 : tree _o1[1], _r1;
4567 0 : _o1[0] = captures[0];
4568 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4569 0 : res_op0 = _r1;
4570 : }
4571 0 : tree _r;
4572 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4573 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 965, __FILE__, __LINE__, true);
4574 0 : return _r;
4575 : }
4576 0 : next_after_fail1408:;
4577 : }
4578 : }
4579 : }
4580 : }
4581 : }
4582 : }
4583 : break;
4584 : }
4585 24 : case GE_EXPR:
4586 24 : {
4587 24 : tree _q40 = TREE_OPERAND (_q30, 0);
4588 24 : tree _q41 = TREE_OPERAND (_q30, 1);
4589 24 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4590 : {
4591 0 : if (real_zerop (_q41))
4592 : {
4593 0 : if (real_minus_onep (_q31))
4594 : {
4595 0 : if (real_onep (_q32))
4596 : {
4597 0 : {
4598 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4599 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4600 : )
4601 : {
4602 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1409;
4603 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1409;
4604 0 : {
4605 0 : tree res_op0;
4606 0 : {
4607 0 : tree _o1[1], _r1;
4608 0 : _o1[0] = captures[0];
4609 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4610 0 : res_op0 = _r1;
4611 : }
4612 0 : tree _r;
4613 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4614 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 965, __FILE__, __LINE__, true);
4615 0 : return _r;
4616 : }
4617 0 : next_after_fail1409:;
4618 : }
4619 : }
4620 : }
4621 : }
4622 : }
4623 : }
4624 : break;
4625 : }
4626 51 : case LT_EXPR:
4627 51 : {
4628 51 : tree _q40 = TREE_OPERAND (_q30, 0);
4629 51 : tree _q41 = TREE_OPERAND (_q30, 1);
4630 51 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4631 : {
4632 0 : if (real_zerop (_q41))
4633 : {
4634 0 : if (real_minus_onep (_q31))
4635 : {
4636 0 : if (real_onep (_q32))
4637 : {
4638 0 : {
4639 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4640 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4641 : )
4642 : {
4643 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1410;
4644 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1410;
4645 0 : {
4646 0 : tree res_op0;
4647 0 : {
4648 0 : tree _o1[1], _r1;
4649 0 : _o1[0] = captures[0];
4650 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4651 0 : res_op0 = _r1;
4652 : }
4653 0 : tree _r;
4654 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4655 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 965, __FILE__, __LINE__, true);
4656 0 : return _r;
4657 : }
4658 0 : next_after_fail1410:;
4659 : }
4660 : }
4661 : }
4662 : }
4663 : }
4664 : }
4665 : break;
4666 : }
4667 5 : case LE_EXPR:
4668 5 : {
4669 5 : tree _q40 = TREE_OPERAND (_q30, 0);
4670 5 : tree _q41 = TREE_OPERAND (_q30, 1);
4671 5 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4672 : {
4673 0 : if (real_zerop (_q41))
4674 : {
4675 0 : if (real_minus_onep (_q31))
4676 : {
4677 0 : if (real_onep (_q32))
4678 : {
4679 0 : {
4680 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4681 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4682 : )
4683 : {
4684 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1411;
4685 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1411;
4686 0 : {
4687 0 : tree res_op0;
4688 0 : {
4689 0 : tree _o1[1], _r1;
4690 0 : _o1[0] = captures[0];
4691 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4692 0 : res_op0 = _r1;
4693 : }
4694 0 : tree _r;
4695 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4696 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 965, __FILE__, __LINE__, true);
4697 0 : return _r;
4698 : }
4699 0 : next_after_fail1411:;
4700 : }
4701 : }
4702 : }
4703 : }
4704 : }
4705 : }
4706 : break;
4707 : }
4708 : default:;
4709 : }
4710 : break;
4711 : }
4712 870586 : case CALL_EXPR:
4713 870586 : switch (get_call_combined_fn (_p1))
4714 : {
4715 20 : case CFN_BUILT_IN_COPYSIGNF16:
4716 20 : if (call_expr_nargs (_p1) == 2)
4717 : {
4718 20 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4719 20 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4720 20 : if (real_onep (_q30))
4721 : {
4722 20 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4723 : {
4724 0 : {
4725 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4726 0 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
4727 0 : if (res) return res;
4728 : }
4729 : }
4730 : }
4731 : }
4732 : break;
4733 0 : case CFN_BUILT_IN_COPYSIGNF32:
4734 0 : if (call_expr_nargs (_p1) == 2)
4735 : {
4736 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4737 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4738 0 : if (real_onep (_q30))
4739 : {
4740 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4741 : {
4742 0 : {
4743 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4744 0 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
4745 0 : if (res) return res;
4746 : }
4747 : }
4748 : }
4749 : }
4750 : break;
4751 0 : case CFN_BUILT_IN_COPYSIGNF64:
4752 0 : if (call_expr_nargs (_p1) == 2)
4753 : {
4754 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4755 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4756 0 : if (real_onep (_q30))
4757 : {
4758 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4759 : {
4760 0 : {
4761 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4762 0 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
4763 0 : if (res) return res;
4764 : }
4765 : }
4766 : }
4767 : }
4768 : break;
4769 0 : case CFN_BUILT_IN_COPYSIGNF128X:
4770 0 : if (call_expr_nargs (_p1) == 2)
4771 : {
4772 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4773 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4774 0 : if (real_onep (_q30))
4775 : {
4776 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4777 : {
4778 0 : {
4779 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4780 0 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
4781 0 : if (res) return res;
4782 : }
4783 : }
4784 : }
4785 : }
4786 : break;
4787 0 : case CFN_BUILT_IN_COPYSIGNF128:
4788 0 : if (call_expr_nargs (_p1) == 2)
4789 : {
4790 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4791 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4792 0 : if (real_onep (_q30))
4793 : {
4794 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4795 : {
4796 0 : {
4797 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4798 0 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
4799 0 : if (res) return res;
4800 : }
4801 : }
4802 : }
4803 : }
4804 : break;
4805 0 : case CFN_BUILT_IN_COPYSIGNF32X:
4806 0 : if (call_expr_nargs (_p1) == 2)
4807 : {
4808 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4809 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4810 0 : if (real_onep (_q30))
4811 : {
4812 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4813 : {
4814 0 : {
4815 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4816 0 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
4817 0 : if (res) return res;
4818 : }
4819 : }
4820 : }
4821 : }
4822 : break;
4823 0 : case CFN_BUILT_IN_COPYSIGNF64X:
4824 0 : if (call_expr_nargs (_p1) == 2)
4825 : {
4826 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4827 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4828 0 : if (real_onep (_q30))
4829 : {
4830 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4831 : {
4832 0 : {
4833 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4834 0 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
4835 0 : if (res) return res;
4836 : }
4837 : }
4838 : }
4839 : }
4840 : break;
4841 18 : case CFN_BUILT_IN_COPYSIGN:
4842 18 : if (call_expr_nargs (_p1) == 2)
4843 : {
4844 18 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4845 18 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4846 18 : if (real_onep (_q30))
4847 : {
4848 14 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4849 : {
4850 0 : {
4851 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4852 0 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
4853 0 : if (res) return res;
4854 : }
4855 : }
4856 : }
4857 : }
4858 : break;
4859 14 : case CFN_BUILT_IN_COPYSIGNF:
4860 14 : if (call_expr_nargs (_p1) == 2)
4861 : {
4862 14 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4863 14 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4864 14 : if (real_onep (_q30))
4865 : {
4866 12 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4867 : {
4868 0 : {
4869 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4870 0 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
4871 0 : if (res) return res;
4872 : }
4873 : }
4874 : }
4875 : }
4876 : break;
4877 0 : case CFN_BUILT_IN_COPYSIGNL:
4878 0 : if (call_expr_nargs (_p1) == 2)
4879 : {
4880 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4881 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4882 0 : if (real_onep (_q30))
4883 : {
4884 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4885 : {
4886 0 : {
4887 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4888 0 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
4889 0 : if (res) return res;
4890 : }
4891 : }
4892 : }
4893 : }
4894 : break;
4895 0 : case CFN_COPYSIGN:
4896 0 : if (call_expr_nargs (_p1) == 2)
4897 : {
4898 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4899 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4900 0 : if (real_onep (_q30))
4901 : {
4902 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4903 : {
4904 0 : {
4905 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4906 0 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
4907 0 : if (res) return res;
4908 : }
4909 : }
4910 : }
4911 : }
4912 : break;
4913 : default:;
4914 : }
4915 : break;
4916 70211320 : default:;
4917 : }
4918 70211320 : switch (TREE_CODE (_p0))
4919 : {
4920 2642581 : case CALL_EXPR:
4921 2642581 : switch (get_call_combined_fn (_p0))
4922 : {
4923 1 : case CFN_BUILT_IN_COPYSIGNF16:
4924 1 : if (call_expr_nargs (_p0) == 2)
4925 : {
4926 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4927 1 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4928 1 : if (real_onep (_q20))
4929 : {
4930 1 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4931 : {
4932 0 : {
4933 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
4934 0 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
4935 0 : if (res) return res;
4936 : }
4937 : }
4938 1 : switch (TREE_CODE (_q21))
4939 : {
4940 0 : case NEGATE_EXPR:
4941 0 : {
4942 0 : tree _q40 = TREE_OPERAND (_q21, 0);
4943 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
4944 : {
4945 0 : {
4946 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
4947 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
4948 0 : if (res) return res;
4949 : }
4950 : }
4951 : break;
4952 : }
4953 : default:;
4954 : }
4955 : }
4956 : }
4957 : break;
4958 0 : case CFN_BUILT_IN_COPYSIGNF32:
4959 0 : if (call_expr_nargs (_p0) == 2)
4960 : {
4961 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4962 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4963 0 : if (real_onep (_q20))
4964 : {
4965 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4966 : {
4967 0 : {
4968 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
4969 0 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
4970 0 : if (res) return res;
4971 : }
4972 : }
4973 0 : switch (TREE_CODE (_q21))
4974 : {
4975 0 : case NEGATE_EXPR:
4976 0 : {
4977 0 : tree _q40 = TREE_OPERAND (_q21, 0);
4978 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
4979 : {
4980 0 : {
4981 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
4982 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
4983 0 : if (res) return res;
4984 : }
4985 : }
4986 : break;
4987 : }
4988 : default:;
4989 : }
4990 : }
4991 : }
4992 : break;
4993 0 : case CFN_BUILT_IN_COPYSIGNF64:
4994 0 : if (call_expr_nargs (_p0) == 2)
4995 : {
4996 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4997 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4998 0 : if (real_onep (_q20))
4999 : {
5000 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5001 : {
5002 0 : {
5003 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5004 0 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
5005 0 : if (res) return res;
5006 : }
5007 : }
5008 0 : switch (TREE_CODE (_q21))
5009 : {
5010 0 : case NEGATE_EXPR:
5011 0 : {
5012 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5013 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5014 : {
5015 0 : {
5016 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5017 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
5018 0 : if (res) return res;
5019 : }
5020 : }
5021 : break;
5022 : }
5023 : default:;
5024 : }
5025 : }
5026 : }
5027 : break;
5028 0 : case CFN_BUILT_IN_COPYSIGNF128X:
5029 0 : if (call_expr_nargs (_p0) == 2)
5030 : {
5031 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5032 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5033 0 : if (real_onep (_q20))
5034 : {
5035 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5036 : {
5037 0 : {
5038 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5039 0 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5040 0 : if (res) return res;
5041 : }
5042 : }
5043 0 : switch (TREE_CODE (_q21))
5044 : {
5045 0 : case NEGATE_EXPR:
5046 0 : {
5047 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5048 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5049 : {
5050 0 : {
5051 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5052 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5053 0 : if (res) return res;
5054 : }
5055 : }
5056 : break;
5057 : }
5058 : default:;
5059 : }
5060 : }
5061 : }
5062 : break;
5063 8 : case CFN_BUILT_IN_COPYSIGNF128:
5064 8 : if (call_expr_nargs (_p0) == 2)
5065 : {
5066 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5067 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5068 8 : if (real_onep (_q20))
5069 : {
5070 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5071 : {
5072 0 : {
5073 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5074 0 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5075 0 : if (res) return res;
5076 : }
5077 : }
5078 0 : switch (TREE_CODE (_q21))
5079 : {
5080 0 : case NEGATE_EXPR:
5081 0 : {
5082 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5083 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5084 : {
5085 0 : {
5086 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5087 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5088 0 : if (res) return res;
5089 : }
5090 : }
5091 : break;
5092 : }
5093 : default:;
5094 : }
5095 : }
5096 : }
5097 : break;
5098 0 : case CFN_BUILT_IN_COPYSIGNF32X:
5099 0 : if (call_expr_nargs (_p0) == 2)
5100 : {
5101 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5102 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5103 0 : if (real_onep (_q20))
5104 : {
5105 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5106 : {
5107 0 : {
5108 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5109 0 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5110 0 : if (res) return res;
5111 : }
5112 : }
5113 0 : switch (TREE_CODE (_q21))
5114 : {
5115 0 : case NEGATE_EXPR:
5116 0 : {
5117 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5118 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5119 : {
5120 0 : {
5121 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5122 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5123 0 : if (res) return res;
5124 : }
5125 : }
5126 : break;
5127 : }
5128 : default:;
5129 : }
5130 : }
5131 : }
5132 : break;
5133 0 : case CFN_BUILT_IN_COPYSIGNF64X:
5134 0 : if (call_expr_nargs (_p0) == 2)
5135 : {
5136 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5137 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5138 0 : if (real_onep (_q20))
5139 : {
5140 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5141 : {
5142 0 : {
5143 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5144 0 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5145 0 : if (res) return res;
5146 : }
5147 : }
5148 0 : switch (TREE_CODE (_q21))
5149 : {
5150 0 : case NEGATE_EXPR:
5151 0 : {
5152 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5153 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5154 : {
5155 0 : {
5156 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5157 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5158 0 : if (res) return res;
5159 : }
5160 : }
5161 : break;
5162 : }
5163 : default:;
5164 : }
5165 : }
5166 : }
5167 : break;
5168 18 : case CFN_BUILT_IN_COPYSIGN:
5169 18 : if (call_expr_nargs (_p0) == 2)
5170 : {
5171 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5172 18 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5173 18 : if (real_onep (_q20))
5174 : {
5175 3 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5176 : {
5177 0 : {
5178 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5179 0 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
5180 0 : if (res) return res;
5181 : }
5182 : }
5183 3 : switch (TREE_CODE (_q21))
5184 : {
5185 0 : case NEGATE_EXPR:
5186 0 : {
5187 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5188 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5189 : {
5190 0 : {
5191 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5192 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
5193 0 : if (res) return res;
5194 : }
5195 : }
5196 : break;
5197 : }
5198 : default:;
5199 : }
5200 : }
5201 : }
5202 : break;
5203 36 : case CFN_BUILT_IN_COPYSIGNF:
5204 36 : if (call_expr_nargs (_p0) == 2)
5205 : {
5206 36 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5207 36 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5208 36 : if (real_onep (_q20))
5209 : {
5210 12 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5211 : {
5212 4 : {
5213 4 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5214 4 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
5215 4 : if (res) return res;
5216 : }
5217 : }
5218 12 : switch (TREE_CODE (_q21))
5219 : {
5220 0 : case NEGATE_EXPR:
5221 0 : {
5222 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5223 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5224 : {
5225 0 : {
5226 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5227 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
5228 0 : if (res) return res;
5229 : }
5230 : }
5231 : break;
5232 : }
5233 : default:;
5234 : }
5235 : }
5236 : }
5237 : break;
5238 8 : case CFN_BUILT_IN_COPYSIGNL:
5239 8 : if (call_expr_nargs (_p0) == 2)
5240 : {
5241 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5242 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5243 8 : if (real_onep (_q20))
5244 : {
5245 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5246 : {
5247 0 : {
5248 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5249 0 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
5250 0 : if (res) return res;
5251 : }
5252 : }
5253 0 : switch (TREE_CODE (_q21))
5254 : {
5255 0 : case NEGATE_EXPR:
5256 0 : {
5257 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5258 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5259 : {
5260 0 : {
5261 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5262 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
5263 0 : if (res) return res;
5264 : }
5265 : }
5266 : break;
5267 : }
5268 : default:;
5269 : }
5270 : }
5271 : }
5272 : break;
5273 0 : case CFN_COPYSIGN:
5274 0 : if (call_expr_nargs (_p0) == 2)
5275 : {
5276 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5277 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5278 0 : if (real_onep (_q20))
5279 : {
5280 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5281 : {
5282 0 : {
5283 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5284 0 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
5285 0 : if (res) return res;
5286 : }
5287 : }
5288 0 : switch (TREE_CODE (_q21))
5289 : {
5290 0 : case NEGATE_EXPR:
5291 0 : {
5292 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5293 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5294 : {
5295 0 : {
5296 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5297 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
5298 0 : if (res) return res;
5299 : }
5300 : }
5301 : break;
5302 : }
5303 : default:;
5304 : }
5305 : }
5306 : }
5307 : break;
5308 : default:;
5309 : }
5310 : break;
5311 70211320 : default:;
5312 : }
5313 70211320 : switch (TREE_CODE (_p1))
5314 : {
5315 870586 : case CALL_EXPR:
5316 870586 : switch (get_call_combined_fn (_p1))
5317 : {
5318 20 : case CFN_BUILT_IN_COPYSIGNF16:
5319 20 : if (call_expr_nargs (_p1) == 2)
5320 : {
5321 20 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5322 20 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5323 20 : if (real_onep (_q30))
5324 : {
5325 20 : switch (TREE_CODE (_q31))
5326 : {
5327 0 : case NEGATE_EXPR:
5328 0 : {
5329 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5330 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5331 : {
5332 0 : {
5333 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5334 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
5335 0 : if (res) return res;
5336 : }
5337 : }
5338 : break;
5339 : }
5340 : default:;
5341 : }
5342 : }
5343 : }
5344 : break;
5345 0 : case CFN_BUILT_IN_COPYSIGNF32:
5346 0 : if (call_expr_nargs (_p1) == 2)
5347 : {
5348 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5349 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5350 0 : if (real_onep (_q30))
5351 : {
5352 0 : switch (TREE_CODE (_q31))
5353 : {
5354 0 : case NEGATE_EXPR:
5355 0 : {
5356 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5357 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5358 : {
5359 0 : {
5360 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5361 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
5362 0 : if (res) return res;
5363 : }
5364 : }
5365 : break;
5366 : }
5367 : default:;
5368 : }
5369 : }
5370 : }
5371 : break;
5372 0 : case CFN_BUILT_IN_COPYSIGNF64:
5373 0 : if (call_expr_nargs (_p1) == 2)
5374 : {
5375 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5376 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5377 0 : if (real_onep (_q30))
5378 : {
5379 0 : switch (TREE_CODE (_q31))
5380 : {
5381 0 : case NEGATE_EXPR:
5382 0 : {
5383 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5384 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5385 : {
5386 0 : {
5387 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5388 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
5389 0 : if (res) return res;
5390 : }
5391 : }
5392 : break;
5393 : }
5394 : default:;
5395 : }
5396 : }
5397 : }
5398 : break;
5399 0 : case CFN_BUILT_IN_COPYSIGNF128X:
5400 0 : if (call_expr_nargs (_p1) == 2)
5401 : {
5402 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5403 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5404 0 : if (real_onep (_q30))
5405 : {
5406 0 : switch (TREE_CODE (_q31))
5407 : {
5408 0 : case NEGATE_EXPR:
5409 0 : {
5410 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5411 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5412 : {
5413 0 : {
5414 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5415 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5416 0 : if (res) return res;
5417 : }
5418 : }
5419 : break;
5420 : }
5421 : default:;
5422 : }
5423 : }
5424 : }
5425 : break;
5426 0 : case CFN_BUILT_IN_COPYSIGNF128:
5427 0 : if (call_expr_nargs (_p1) == 2)
5428 : {
5429 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5430 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5431 0 : if (real_onep (_q30))
5432 : {
5433 0 : switch (TREE_CODE (_q31))
5434 : {
5435 0 : case NEGATE_EXPR:
5436 0 : {
5437 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5438 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5439 : {
5440 0 : {
5441 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5442 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5443 0 : if (res) return res;
5444 : }
5445 : }
5446 : break;
5447 : }
5448 : default:;
5449 : }
5450 : }
5451 : }
5452 : break;
5453 0 : case CFN_BUILT_IN_COPYSIGNF32X:
5454 0 : if (call_expr_nargs (_p1) == 2)
5455 : {
5456 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5457 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5458 0 : if (real_onep (_q30))
5459 : {
5460 0 : switch (TREE_CODE (_q31))
5461 : {
5462 0 : case NEGATE_EXPR:
5463 0 : {
5464 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5465 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5466 : {
5467 0 : {
5468 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5469 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5470 0 : if (res) return res;
5471 : }
5472 : }
5473 : break;
5474 : }
5475 : default:;
5476 : }
5477 : }
5478 : }
5479 : break;
5480 0 : case CFN_BUILT_IN_COPYSIGNF64X:
5481 0 : if (call_expr_nargs (_p1) == 2)
5482 : {
5483 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5484 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5485 0 : if (real_onep (_q30))
5486 : {
5487 0 : switch (TREE_CODE (_q31))
5488 : {
5489 0 : case NEGATE_EXPR:
5490 0 : {
5491 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5492 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5493 : {
5494 0 : {
5495 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5496 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5497 0 : if (res) return res;
5498 : }
5499 : }
5500 : break;
5501 : }
5502 : default:;
5503 : }
5504 : }
5505 : }
5506 : break;
5507 18 : case CFN_BUILT_IN_COPYSIGN:
5508 18 : if (call_expr_nargs (_p1) == 2)
5509 : {
5510 18 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5511 18 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5512 18 : if (real_onep (_q30))
5513 : {
5514 14 : switch (TREE_CODE (_q31))
5515 : {
5516 0 : case NEGATE_EXPR:
5517 0 : {
5518 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5519 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5520 : {
5521 0 : {
5522 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5523 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
5524 0 : if (res) return res;
5525 : }
5526 : }
5527 : break;
5528 : }
5529 : default:;
5530 : }
5531 : }
5532 : }
5533 : break;
5534 14 : case CFN_BUILT_IN_COPYSIGNF:
5535 14 : if (call_expr_nargs (_p1) == 2)
5536 : {
5537 14 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5538 14 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5539 14 : if (real_onep (_q30))
5540 : {
5541 12 : switch (TREE_CODE (_q31))
5542 : {
5543 0 : case NEGATE_EXPR:
5544 0 : {
5545 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5546 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5547 : {
5548 0 : {
5549 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5550 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
5551 0 : if (res) return res;
5552 : }
5553 : }
5554 : break;
5555 : }
5556 : default:;
5557 : }
5558 : }
5559 : }
5560 : break;
5561 0 : case CFN_BUILT_IN_COPYSIGNL:
5562 0 : if (call_expr_nargs (_p1) == 2)
5563 : {
5564 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5565 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5566 0 : if (real_onep (_q30))
5567 : {
5568 0 : switch (TREE_CODE (_q31))
5569 : {
5570 0 : case NEGATE_EXPR:
5571 0 : {
5572 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5573 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5574 : {
5575 0 : {
5576 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5577 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
5578 0 : if (res) return res;
5579 : }
5580 : }
5581 : break;
5582 : }
5583 : default:;
5584 : }
5585 : }
5586 : }
5587 : break;
5588 0 : case CFN_COPYSIGN:
5589 0 : if (call_expr_nargs (_p1) == 2)
5590 : {
5591 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5592 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5593 0 : if (real_onep (_q30))
5594 : {
5595 0 : switch (TREE_CODE (_q31))
5596 : {
5597 0 : case NEGATE_EXPR:
5598 0 : {
5599 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5600 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5601 : {
5602 0 : {
5603 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5604 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
5605 0 : if (res) return res;
5606 : }
5607 : }
5608 : break;
5609 : }
5610 : default:;
5611 : }
5612 : }
5613 : }
5614 : break;
5615 : default:;
5616 : }
5617 : break;
5618 70211320 : default:;
5619 : }
5620 70211320 : if (integer_onep (_p1))
5621 : {
5622 3316411 : {
5623 3316411 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5624 3316411 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, MULT_EXPR);
5625 3316411 : if (res) return res;
5626 : }
5627 : }
5628 66894909 : switch (TREE_CODE (_p0))
5629 : {
5630 5627844 : case MULT_EXPR:
5631 5627844 : {
5632 5627844 : tree _q20 = TREE_OPERAND (_p0, 0);
5633 5627844 : tree _q21 = TREE_OPERAND (_p0, 1);
5634 5627844 : switch (TREE_CODE (_q21))
5635 : {
5636 1108609 : case INTEGER_CST:
5637 1108609 : {
5638 1108609 : switch (TREE_CODE (_p1))
5639 : {
5640 980179 : case INTEGER_CST:
5641 980179 : {
5642 980179 : {
5643 980179 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5644 980179 : {
5645 980179 : wi::overflow_type overflow;
5646 980179 : wide_int mul = wi::mul (wi::to_wide (captures[1]), wi::to_wide (captures[2]),
5647 1960358 : TYPE_SIGN (type), &overflow);
5648 980179 : if (!overflow || TYPE_OVERFLOW_WRAPS (type)
5649 : )
5650 : {
5651 980149 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1412;
5652 980149 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1412;
5653 980149 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1412;
5654 980149 : {
5655 980149 : tree res_op0;
5656 980149 : res_op0 = captures[0];
5657 980149 : tree res_op1;
5658 980149 : res_op1 = wide_int_to_tree (type, mul);
5659 980149 : tree _r;
5660 980149 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5661 980149 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 966, __FILE__, __LINE__, true);
5662 980149 : return _r;
5663 : }
5664 30 : next_after_fail1412:;
5665 : }
5666 980149 : }
5667 : }
5668 30 : break;
5669 : }
5670 : default:;
5671 : }
5672 : break;
5673 : }
5674 : default:;
5675 : }
5676 : break;
5677 : }
5678 7210293 : case PLUS_EXPR:
5679 7210293 : {
5680 7210293 : tree _q20 = TREE_OPERAND (_p0, 0);
5681 7210293 : tree _q21 = TREE_OPERAND (_p0, 1);
5682 7210293 : switch (TREE_CODE (_q20))
5683 : {
5684 1134378 : case MULT_EXPR:
5685 1134378 : {
5686 1134378 : tree _q30 = TREE_OPERAND (_q20, 0);
5687 1134378 : tree _q31 = TREE_OPERAND (_q20, 1);
5688 1134378 : switch (TREE_CODE (_q31))
5689 : {
5690 308301 : case INTEGER_CST:
5691 308301 : {
5692 308301 : switch (TREE_CODE (_q21))
5693 : {
5694 37151 : case INTEGER_CST:
5695 37151 : {
5696 37151 : switch (TREE_CODE (_p1))
5697 : {
5698 13498 : case INTEGER_CST:
5699 13498 : {
5700 13498 : {
5701 13498 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
5702 13498 : {
5703 13498 : bool overflowed = true;
5704 13498 : wi::overflow_type ovf1, ovf2;
5705 13498 : wide_int mul = wi::mul (wi::to_wide (captures[3]), wi::to_wide (captures[5]),
5706 26996 : TYPE_SIGN (type), &ovf1);
5707 13498 : wide_int add = wi::mul (wi::to_wide (captures[4]), wi::to_wide (captures[5]),
5708 26996 : TYPE_SIGN (type), &ovf2);
5709 13498 : if (TYPE_OVERFLOW_UNDEFINED (type))
5710 : {
5711 : }
5712 : else
5713 5579 : overflowed = false;
5714 5579 : if (!overflowed
5715 : )
5716 : {
5717 5579 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1413;
5718 5579 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1413;
5719 5579 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1413;
5720 5579 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1413;
5721 5579 : {
5722 5579 : tree res_op0;
5723 5579 : {
5724 5579 : tree _o1[2], _r1;
5725 5579 : _o1[0] = captures[2];
5726 5579 : _o1[1] = wide_int_to_tree (type, mul);
5727 5579 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5728 5579 : res_op0 = _r1;
5729 : }
5730 5579 : tree res_op1;
5731 5579 : res_op1 = wide_int_to_tree (type, add);
5732 5579 : tree _r;
5733 5579 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
5734 5579 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 967, __FILE__, __LINE__, true);
5735 5579 : return _r;
5736 : }
5737 7919 : next_after_fail1413:;
5738 : }
5739 13498 : }
5740 : }
5741 7919 : break;
5742 : }
5743 : default:;
5744 : }
5745 : break;
5746 : }
5747 : default:;
5748 : }
5749 : break;
5750 : }
5751 : default:;
5752 : }
5753 : break;
5754 : }
5755 : default:;
5756 : }
5757 : break;
5758 : }
5759 84406 : case TRUNC_DIV_EXPR:
5760 84406 : {
5761 84406 : tree _q20 = TREE_OPERAND (_p0, 0);
5762 84406 : tree _q21 = TREE_OPERAND (_p0, 1);
5763 84406 : if (integer_pow2p (_q21))
5764 : {
5765 63438 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5766 : {
5767 41609 : {
5768 41609 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5769 41609 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
5770 : )
5771 : {
5772 41545 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1414;
5773 41545 : {
5774 41545 : tree res_op0;
5775 41545 : res_op0 = captures[0];
5776 41545 : tree res_op1;
5777 41545 : {
5778 41545 : tree _o1[1], _r1;
5779 41545 : _o1[0] = captures[1];
5780 41545 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
5781 41545 : res_op1 = _r1;
5782 : }
5783 41545 : tree _r;
5784 41545 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
5785 41545 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 968, __FILE__, __LINE__, true);
5786 41545 : return _r;
5787 : }
5788 0 : next_after_fail1414:;
5789 : }
5790 : }
5791 : }
5792 : }
5793 : break;
5794 : }
5795 260 : case ABS_EXPR:
5796 260 : {
5797 260 : tree _q20 = TREE_OPERAND (_p0, 0);
5798 260 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5799 : {
5800 2 : {
5801 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
5802 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1415;
5803 2 : {
5804 2 : if (! tree_invariant_p (captures[1])) goto next_after_fail1415;
5805 0 : tree res_op0;
5806 0 : res_op0 = unshare_expr (captures[1]);
5807 0 : tree res_op1;
5808 0 : res_op1 = captures[1];
5809 0 : tree _r;
5810 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5811 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 969, __FILE__, __LINE__, true);
5812 0 : return _r;
5813 : }
5814 2 : next_after_fail1415:;
5815 : }
5816 : }
5817 : break;
5818 : }
5819 0 : case ABSU_EXPR:
5820 0 : {
5821 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5822 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5823 : {
5824 0 : {
5825 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20 };
5826 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1416;
5827 0 : {
5828 0 : tree res_op0;
5829 0 : {
5830 0 : tree _o1[1], _r1;
5831 0 : _o1[0] = captures[1];
5832 0 : if (TREE_TYPE (_o1[0]) != type)
5833 : {
5834 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
5835 : }
5836 : else
5837 : _r1 = _o1[0];
5838 0 : captures[2] = _r1;
5839 : }
5840 0 : res_op0 = unshare_expr (captures[2]);
5841 0 : tree res_op1;
5842 0 : res_op1 = captures[2];
5843 0 : tree _r;
5844 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5845 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 970, __FILE__, __LINE__, true);
5846 0 : return _r;
5847 : }
5848 0 : next_after_fail1416:;
5849 : }
5850 : }
5851 : break;
5852 : }
5853 2427349 : case CALL_EXPR:
5854 2427349 : switch (get_call_combined_fn (_p0))
5855 : {
5856 1 : case CFN_BUILT_IN_COPYSIGNF16:
5857 1 : if (call_expr_nargs (_p0) == 2)
5858 : {
5859 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5860 1 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5861 1 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5862 : {
5863 0 : {
5864 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5865 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
5866 0 : if (res) return res;
5867 : }
5868 : }
5869 : }
5870 : break;
5871 0 : case CFN_BUILT_IN_COPYSIGNF32:
5872 0 : if (call_expr_nargs (_p0) == 2)
5873 : {
5874 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5875 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5876 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5877 : {
5878 0 : {
5879 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5880 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
5881 0 : if (res) return res;
5882 : }
5883 : }
5884 : }
5885 : break;
5886 0 : case CFN_BUILT_IN_COPYSIGNF64:
5887 0 : if (call_expr_nargs (_p0) == 2)
5888 : {
5889 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5890 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5891 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5892 : {
5893 0 : {
5894 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5895 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
5896 0 : if (res) return res;
5897 : }
5898 : }
5899 : }
5900 : break;
5901 0 : case CFN_BUILT_IN_COPYSIGNF128X:
5902 0 : if (call_expr_nargs (_p0) == 2)
5903 : {
5904 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5905 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5906 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5907 : {
5908 0 : {
5909 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5910 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5911 0 : if (res) return res;
5912 : }
5913 : }
5914 : }
5915 : break;
5916 8 : case CFN_BUILT_IN_COPYSIGNF128:
5917 8 : if (call_expr_nargs (_p0) == 2)
5918 : {
5919 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5920 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5921 8 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5922 : {
5923 0 : {
5924 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5925 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5926 0 : if (res) return res;
5927 : }
5928 : }
5929 : }
5930 : break;
5931 0 : case CFN_BUILT_IN_COPYSIGNF32X:
5932 0 : if (call_expr_nargs (_p0) == 2)
5933 : {
5934 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5935 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5936 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5937 : {
5938 0 : {
5939 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5940 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5941 0 : if (res) return res;
5942 : }
5943 : }
5944 : }
5945 : break;
5946 0 : case CFN_BUILT_IN_COPYSIGNF64X:
5947 0 : if (call_expr_nargs (_p0) == 2)
5948 : {
5949 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5950 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5951 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5952 : {
5953 0 : {
5954 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5955 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5956 0 : if (res) return res;
5957 : }
5958 : }
5959 : }
5960 : break;
5961 18 : case CFN_BUILT_IN_COPYSIGN:
5962 18 : if (call_expr_nargs (_p0) == 2)
5963 : {
5964 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5965 18 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5966 18 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5967 : {
5968 0 : {
5969 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5970 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
5971 0 : if (res) return res;
5972 : }
5973 : }
5974 : }
5975 : break;
5976 36 : case CFN_BUILT_IN_COPYSIGNF:
5977 36 : if (call_expr_nargs (_p0) == 2)
5978 : {
5979 36 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5980 36 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5981 36 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5982 : {
5983 0 : {
5984 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5985 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
5986 0 : if (res) return res;
5987 : }
5988 : }
5989 : }
5990 : break;
5991 8 : case CFN_BUILT_IN_COPYSIGNL:
5992 8 : if (call_expr_nargs (_p0) == 2)
5993 : {
5994 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5995 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5996 8 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5997 : {
5998 0 : {
5999 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6000 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
6001 0 : if (res) return res;
6002 : }
6003 : }
6004 : }
6005 : break;
6006 0 : case CFN_COPYSIGN:
6007 0 : if (call_expr_nargs (_p0) == 2)
6008 : {
6009 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6010 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6011 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6012 : {
6013 0 : {
6014 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6015 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
6016 0 : if (res) return res;
6017 : }
6018 : }
6019 : }
6020 : break;
6021 : default:;
6022 : }
6023 : break;
6024 65867636 : default:;
6025 : }
6026 65867636 : switch (TREE_CODE (_p1))
6027 : {
6028 7023797 : CASE_CONVERT:
6029 7023797 : {
6030 7023797 : tree _q30 = TREE_OPERAND (_p1, 0);
6031 7023797 : switch (TREE_CODE (_q30))
6032 : {
6033 0 : case LSHIFT_EXPR:
6034 0 : {
6035 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6036 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6037 0 : if (integer_onep (_q40))
6038 : {
6039 0 : {
6040 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q41 };
6041 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures);
6042 0 : if (res) return res;
6043 : }
6044 : }
6045 : break;
6046 : }
6047 : default:;
6048 : }
6049 : break;
6050 : }
6051 65867636 : default:;
6052 : }
6053 65867636 : switch (TREE_CODE (_p0))
6054 : {
6055 31646021 : CASE_CONVERT:
6056 31646021 : {
6057 31646021 : tree _q20 = TREE_OPERAND (_p0, 0);
6058 31646021 : switch (TREE_CODE (_q20))
6059 : {
6060 20 : case LSHIFT_EXPR:
6061 20 : {
6062 20 : tree _q30 = TREE_OPERAND (_q20, 0);
6063 20 : tree _q31 = TREE_OPERAND (_q20, 1);
6064 20 : if (integer_onep (_q30))
6065 : {
6066 1 : {
6067 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _q31 };
6068 1 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures);
6069 1 : if (res) return res;
6070 : }
6071 : }
6072 : break;
6073 : }
6074 1 : case EQ_EXPR:
6075 1 : {
6076 1 : tree _q30 = TREE_OPERAND (_q20, 0);
6077 1 : tree _q31 = TREE_OPERAND (_q20, 1);
6078 1 : if (integer_zerop (_q31))
6079 : {
6080 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6081 : {
6082 0 : {
6083 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
6084 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures);
6085 0 : if (res) return res;
6086 : }
6087 : }
6088 : }
6089 : break;
6090 : }
6091 : default:;
6092 : }
6093 : break;
6094 : }
6095 65867636 : default:;
6096 : }
6097 65867636 : switch (TREE_CODE (_p1))
6098 : {
6099 844 : case LSHIFT_EXPR:
6100 844 : {
6101 844 : tree _q30 = TREE_OPERAND (_p1, 0);
6102 844 : tree _q31 = TREE_OPERAND (_p1, 1);
6103 844 : if (integer_onep (_q30))
6104 : {
6105 165 : {
6106 165 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
6107 165 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures);
6108 165 : if (res) return res;
6109 : }
6110 : }
6111 : break;
6112 : }
6113 65867471 : default:;
6114 : }
6115 65867471 : switch (TREE_CODE (_p0))
6116 : {
6117 3699 : case LSHIFT_EXPR:
6118 3699 : {
6119 3699 : tree _q20 = TREE_OPERAND (_p0, 0);
6120 3699 : tree _q21 = TREE_OPERAND (_p0, 1);
6121 3699 : if (integer_onep (_q20))
6122 : {
6123 3477 : {
6124 3477 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
6125 3477 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures);
6126 3477 : if (res) return res;
6127 : }
6128 : }
6129 : break;
6130 : }
6131 65863994 : default:;
6132 : }
6133 65863994 : switch (TREE_CODE (_p1))
6134 : {
6135 7023406 : CASE_CONVERT:
6136 7023406 : {
6137 7023406 : tree _q30 = TREE_OPERAND (_p1, 0);
6138 7023406 : switch (TREE_CODE (_q30))
6139 : {
6140 0 : case EQ_EXPR:
6141 0 : {
6142 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6143 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6144 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6145 : {
6146 0 : if (integer_zerop (_q41))
6147 : {
6148 0 : {
6149 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6150 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
6151 0 : if (res) return res;
6152 : }
6153 : }
6154 : }
6155 : break;
6156 : }
6157 : default:;
6158 : }
6159 : break;
6160 : }
6161 0 : case EQ_EXPR:
6162 0 : {
6163 0 : tree _q30 = TREE_OPERAND (_p1, 0);
6164 0 : tree _q31 = TREE_OPERAND (_p1, 1);
6165 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6166 : {
6167 0 : if (integer_zerop (_q31))
6168 : {
6169 0 : {
6170 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6171 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
6172 0 : if (res) return res;
6173 : }
6174 : }
6175 : }
6176 : break;
6177 : }
6178 65863994 : default:;
6179 : }
6180 65863994 : switch (TREE_CODE (_p0))
6181 : {
6182 183 : case EQ_EXPR:
6183 183 : {
6184 183 : tree _q20 = TREE_OPERAND (_p0, 0);
6185 183 : tree _q21 = TREE_OPERAND (_p0, 1);
6186 183 : if (integer_zerop (_q21))
6187 : {
6188 59 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6189 : {
6190 3 : {
6191 3 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6192 3 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures);
6193 3 : if (res) return res;
6194 : }
6195 : }
6196 : }
6197 : break;
6198 : }
6199 65863991 : default:;
6200 : }
6201 65863991 : switch (TREE_CODE (_p1))
6202 : {
6203 0 : case VEC_COND_EXPR:
6204 0 : {
6205 0 : tree _q30 = TREE_OPERAND (_p1, 0);
6206 0 : tree _q31 = TREE_OPERAND (_p1, 1);
6207 0 : tree _q32 = TREE_OPERAND (_p1, 2);
6208 0 : switch (TREE_CODE (_q30))
6209 : {
6210 0 : case EQ_EXPR:
6211 0 : {
6212 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6213 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6214 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6215 : {
6216 0 : if (integer_zerop (_q41))
6217 : {
6218 0 : if (integer_zerop (_q32))
6219 : {
6220 0 : {
6221 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
6222 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1417;
6223 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1417;
6224 0 : {
6225 0 : tree _r;
6226 0 : _r = build_zero_cst (type);
6227 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 971, __FILE__, __LINE__, true);
6228 0 : return _r;
6229 : }
6230 0 : next_after_fail1417:;
6231 : }
6232 : }
6233 : }
6234 : }
6235 : break;
6236 : }
6237 : default:;
6238 : }
6239 : break;
6240 : }
6241 65863991 : default:;
6242 : }
6243 65863991 : switch (TREE_CODE (_p0))
6244 : {
6245 37 : case VEC_COND_EXPR:
6246 37 : {
6247 37 : tree _q20 = TREE_OPERAND (_p0, 0);
6248 37 : tree _q21 = TREE_OPERAND (_p0, 1);
6249 37 : tree _q22 = TREE_OPERAND (_p0, 2);
6250 37 : switch (TREE_CODE (_q20))
6251 : {
6252 1 : case EQ_EXPR:
6253 1 : {
6254 1 : tree _q30 = TREE_OPERAND (_q20, 0);
6255 1 : tree _q31 = TREE_OPERAND (_q20, 1);
6256 1 : if (integer_zerop (_q31))
6257 : {
6258 1 : if (integer_zerop (_q22))
6259 : {
6260 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6261 : {
6262 1 : {
6263 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
6264 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1418;
6265 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1418;
6266 1 : {
6267 1 : tree _r;
6268 1 : _r = build_zero_cst (type);
6269 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 971, __FILE__, __LINE__, true);
6270 1 : return _r;
6271 : }
6272 0 : next_after_fail1418:;
6273 : }
6274 : }
6275 : }
6276 : }
6277 : break;
6278 : }
6279 0 : case NE_EXPR:
6280 0 : {
6281 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6282 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6283 0 : if (integer_zerop (_q31))
6284 : {
6285 0 : if (integer_zerop (_q21))
6286 : {
6287 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6288 : {
6289 0 : {
6290 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
6291 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1419;
6292 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1419;
6293 0 : {
6294 0 : tree _r;
6295 0 : _r = build_zero_cst (type);
6296 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 972, __FILE__, __LINE__, true);
6297 0 : return _r;
6298 : }
6299 0 : next_after_fail1419:;
6300 : }
6301 : }
6302 : }
6303 : }
6304 : break;
6305 : }
6306 : default:;
6307 : }
6308 : break;
6309 : }
6310 65863990 : default:;
6311 : }
6312 65863990 : switch (TREE_CODE (_p1))
6313 : {
6314 0 : case VEC_COND_EXPR:
6315 0 : {
6316 0 : tree _q30 = TREE_OPERAND (_p1, 0);
6317 0 : tree _q31 = TREE_OPERAND (_p1, 1);
6318 0 : tree _q32 = TREE_OPERAND (_p1, 2);
6319 0 : switch (TREE_CODE (_q30))
6320 : {
6321 0 : case NE_EXPR:
6322 0 : {
6323 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6324 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6325 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6326 : {
6327 0 : if (integer_zerop (_q41))
6328 : {
6329 0 : if (integer_zerop (_q31))
6330 : {
6331 0 : {
6332 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
6333 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1420;
6334 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1420;
6335 0 : {
6336 0 : tree _r;
6337 0 : _r = build_zero_cst (type);
6338 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 972, __FILE__, __LINE__, true);
6339 0 : return _r;
6340 : }
6341 0 : next_after_fail1420:;
6342 : }
6343 : }
6344 : }
6345 : }
6346 : break;
6347 : }
6348 : default:;
6349 : }
6350 : break;
6351 : }
6352 65863990 : default:;
6353 : }
6354 65863990 : switch (TREE_CODE (_p0))
6355 : {
6356 740973 : case RDIV_EXPR:
6357 740973 : {
6358 740973 : tree _q20 = TREE_OPERAND (_p0, 0);
6359 740973 : tree _q21 = TREE_OPERAND (_p0, 1);
6360 740973 : switch (TREE_CODE (_q20))
6361 : {
6362 56503 : case REAL_CST:
6363 56503 : {
6364 56503 : switch (TREE_CODE (_p1))
6365 : {
6366 1 : case REAL_CST:
6367 1 : {
6368 1 : {
6369 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
6370 1 : if (flag_associative_math
6371 1 : && single_use (captures[0])
6372 : )
6373 : {
6374 1 : {
6375 1 : tree tem = const_binop (MULT_EXPR, type, captures[1], captures[3]);
6376 1 : if (tem
6377 : )
6378 : {
6379 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1421;
6380 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1421;
6381 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1421;
6382 1 : {
6383 1 : tree res_op0;
6384 1 : res_op0 = tem;
6385 1 : tree res_op1;
6386 1 : res_op1 = captures[2];
6387 1 : tree _r;
6388 1 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
6389 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 973, __FILE__, __LINE__, true);
6390 1 : return _r;
6391 : }
6392 0 : next_after_fail1421:;
6393 : }
6394 : }
6395 : }
6396 : }
6397 0 : break;
6398 : }
6399 : default:;
6400 : }
6401 : break;
6402 : }
6403 : default:;
6404 : }
6405 : break;
6406 : }
6407 65863989 : default:;
6408 : }
6409 65863989 : {
6410 65863989 : tree _p0_pops[1];
6411 65863989 : if (tree_nop_convert (_p0, _p0_pops))
6412 : {
6413 22888041 : tree _q20 = _p0_pops[0];
6414 22888041 : switch (TREE_CODE (_q20))
6415 : {
6416 4 : case BIT_IOR_EXPR:
6417 4 : {
6418 4 : tree _q30 = TREE_OPERAND (_q20, 0);
6419 4 : tree _q31 = TREE_OPERAND (_q20, 1);
6420 4 : switch (TREE_CODE (_q30))
6421 : {
6422 4 : case NEGATE_EXPR:
6423 4 : {
6424 4 : tree _q40 = TREE_OPERAND (_q30, 0);
6425 4 : switch (TREE_CODE (_q40))
6426 : {
6427 0 : CASE_CONVERT:
6428 0 : {
6429 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6430 0 : switch (TREE_CODE (_q50))
6431 : {
6432 0 : case LT_EXPR:
6433 0 : {
6434 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6435 0 : tree _q61 = TREE_OPERAND (_q50, 1);
6436 0 : if (integer_zerop (_q61))
6437 : {
6438 0 : if (integer_onep (_q31))
6439 : {
6440 0 : {
6441 0 : tree _p1_pops[1];
6442 0 : if (tree_nop_convert (_p1, _p1_pops))
6443 : {
6444 0 : tree _q100 = _p1_pops[0];
6445 0 : if ((_q100 == _q60 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q60, 0) && types_match (_q100, _q60)))
6446 : {
6447 0 : {
6448 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6449 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6450 0 : if (res) return res;
6451 : }
6452 : }
6453 : }
6454 : }
6455 0 : if ((_p1 == _q60 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q60, 0) && types_match (_p1, _q60)))
6456 : {
6457 0 : {
6458 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6459 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6460 0 : if (res) return res;
6461 : }
6462 : }
6463 : }
6464 : }
6465 : break;
6466 : }
6467 : default:;
6468 : }
6469 : break;
6470 : }
6471 4 : case LT_EXPR:
6472 4 : {
6473 4 : tree _q50 = TREE_OPERAND (_q40, 0);
6474 4 : tree _q51 = TREE_OPERAND (_q40, 1);
6475 4 : if (integer_zerop (_q51))
6476 : {
6477 4 : if (integer_onep (_q31))
6478 : {
6479 4 : {
6480 4 : tree _p1_pops[1];
6481 4 : if (tree_nop_convert (_p1, _p1_pops))
6482 : {
6483 4 : tree _q90 = _p1_pops[0];
6484 4 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
6485 : {
6486 4 : {
6487 4 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
6488 4 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6489 4 : if (res) return res;
6490 : }
6491 : }
6492 : }
6493 : }
6494 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
6495 : {
6496 0 : {
6497 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
6498 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6499 0 : if (res) return res;
6500 : }
6501 : }
6502 : }
6503 : }
6504 : break;
6505 : }
6506 : default:;
6507 : }
6508 : break;
6509 : }
6510 0 : default:;
6511 : }
6512 0 : {
6513 0 : tree _q30_pops[1];
6514 0 : if (tree_nop_convert (_q30, _q30_pops))
6515 : {
6516 0 : tree _q40 = _q30_pops[0];
6517 0 : switch (TREE_CODE (_q40))
6518 : {
6519 0 : case NEGATE_EXPR:
6520 0 : {
6521 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6522 0 : switch (TREE_CODE (_q50))
6523 : {
6524 0 : CASE_CONVERT:
6525 0 : {
6526 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6527 0 : switch (TREE_CODE (_q60))
6528 : {
6529 0 : case LT_EXPR:
6530 0 : {
6531 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6532 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6533 0 : if (integer_zerop (_q71))
6534 : {
6535 0 : if (integer_onep (_q31))
6536 : {
6537 0 : {
6538 0 : tree _p1_pops[1];
6539 0 : if (tree_nop_convert (_p1, _p1_pops))
6540 : {
6541 0 : tree _q110 = _p1_pops[0];
6542 0 : if ((_q110 == _q70 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q70, 0) && types_match (_q110, _q70)))
6543 : {
6544 0 : {
6545 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q70 };
6546 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6547 0 : if (res) return res;
6548 : }
6549 : }
6550 : }
6551 : }
6552 0 : if ((_p1 == _q70 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q70, 0) && types_match (_p1, _q70)))
6553 : {
6554 0 : {
6555 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q70 };
6556 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6557 0 : if (res) return res;
6558 : }
6559 : }
6560 : }
6561 : }
6562 : break;
6563 : }
6564 : default:;
6565 : }
6566 : break;
6567 : }
6568 0 : case LT_EXPR:
6569 0 : {
6570 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6571 0 : tree _q61 = TREE_OPERAND (_q50, 1);
6572 0 : if (integer_zerop (_q61))
6573 : {
6574 0 : if (integer_onep (_q31))
6575 : {
6576 0 : {
6577 0 : tree _p1_pops[1];
6578 0 : if (tree_nop_convert (_p1, _p1_pops))
6579 : {
6580 0 : tree _q100 = _p1_pops[0];
6581 0 : if ((_q100 == _q60 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q60, 0) && types_match (_q100, _q60)))
6582 : {
6583 0 : {
6584 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6585 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6586 0 : if (res) return res;
6587 : }
6588 : }
6589 : }
6590 : }
6591 0 : if ((_p1 == _q60 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q60, 0) && types_match (_p1, _q60)))
6592 : {
6593 0 : {
6594 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6595 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6596 0 : if (res) return res;
6597 : }
6598 : }
6599 : }
6600 : }
6601 : break;
6602 : }
6603 : default:;
6604 : }
6605 : break;
6606 : }
6607 : default:;
6608 : }
6609 : }
6610 : }
6611 0 : break;
6612 : }
6613 22888037 : default:;
6614 : }
6615 22888037 : switch (TREE_CODE (_p1))
6616 : {
6617 0 : case BIT_IOR_EXPR:
6618 0 : {
6619 0 : tree _q40 = TREE_OPERAND (_p1, 0);
6620 0 : tree _q41 = TREE_OPERAND (_p1, 1);
6621 0 : switch (TREE_CODE (_q40))
6622 : {
6623 0 : case NEGATE_EXPR:
6624 0 : {
6625 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6626 0 : switch (TREE_CODE (_q50))
6627 : {
6628 0 : CASE_CONVERT:
6629 0 : {
6630 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6631 0 : switch (TREE_CODE (_q60))
6632 : {
6633 0 : case LT_EXPR:
6634 0 : {
6635 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6636 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6637 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6638 : {
6639 0 : if (integer_zerop (_q71))
6640 : {
6641 0 : if (integer_onep (_q41))
6642 : {
6643 0 : {
6644 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6645 0 : tree res = generic_simplify_187 (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 0 : case LT_EXPR:
6658 0 : {
6659 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6660 0 : tree _q61 = TREE_OPERAND (_q50, 1);
6661 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6662 : {
6663 0 : if (integer_zerop (_q61))
6664 : {
6665 0 : if (integer_onep (_q41))
6666 : {
6667 0 : {
6668 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6669 0 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
6670 0 : if (res) return res;
6671 : }
6672 : }
6673 : }
6674 : }
6675 : break;
6676 : }
6677 : default:;
6678 : }
6679 : break;
6680 : }
6681 0 : default:;
6682 : }
6683 0 : {
6684 0 : tree _q40_pops[1];
6685 0 : if (tree_nop_convert (_q40, _q40_pops))
6686 : {
6687 0 : tree _q50 = _q40_pops[0];
6688 0 : switch (TREE_CODE (_q50))
6689 : {
6690 0 : case NEGATE_EXPR:
6691 0 : {
6692 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6693 0 : switch (TREE_CODE (_q60))
6694 : {
6695 0 : CASE_CONVERT:
6696 0 : {
6697 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6698 0 : switch (TREE_CODE (_q70))
6699 : {
6700 0 : case LT_EXPR:
6701 0 : {
6702 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6703 0 : tree _q81 = TREE_OPERAND (_q70, 1);
6704 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
6705 : {
6706 0 : if (integer_zerop (_q81))
6707 : {
6708 0 : if (integer_onep (_q41))
6709 : {
6710 0 : {
6711 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6712 0 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
6713 0 : if (res) return res;
6714 : }
6715 : }
6716 : }
6717 : }
6718 : break;
6719 : }
6720 : default:;
6721 : }
6722 : break;
6723 : }
6724 0 : case LT_EXPR:
6725 0 : {
6726 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6727 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6728 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6729 : {
6730 0 : if (integer_zerop (_q71))
6731 : {
6732 0 : if (integer_onep (_q41))
6733 : {
6734 0 : {
6735 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6736 0 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
6737 0 : if (res) return res;
6738 : }
6739 : }
6740 : }
6741 : }
6742 : break;
6743 : }
6744 : default:;
6745 : }
6746 : break;
6747 : }
6748 : default:;
6749 : }
6750 : }
6751 : }
6752 0 : break;
6753 : }
6754 22888037 : default:;
6755 : }
6756 22888037 : {
6757 22888037 : tree _p1_pops[1];
6758 22888037 : if (tree_nop_convert (_p1, _p1_pops))
6759 : {
6760 2422847 : tree _q40 = _p1_pops[0];
6761 2422847 : switch (TREE_CODE (_q40))
6762 : {
6763 0 : case BIT_IOR_EXPR:
6764 0 : {
6765 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6766 0 : tree _q51 = TREE_OPERAND (_q40, 1);
6767 0 : switch (TREE_CODE (_q50))
6768 : {
6769 0 : case NEGATE_EXPR:
6770 0 : {
6771 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6772 0 : switch (TREE_CODE (_q60))
6773 : {
6774 0 : CASE_CONVERT:
6775 0 : {
6776 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6777 0 : switch (TREE_CODE (_q70))
6778 : {
6779 0 : case LT_EXPR:
6780 0 : {
6781 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6782 0 : tree _q81 = TREE_OPERAND (_q70, 1);
6783 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
6784 : {
6785 0 : if (integer_zerop (_q81))
6786 : {
6787 0 : if (integer_onep (_q51))
6788 : {
6789 0 : {
6790 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6791 0 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
6792 0 : if (res) return res;
6793 : }
6794 : }
6795 : }
6796 : }
6797 : break;
6798 : }
6799 : default:;
6800 : }
6801 : break;
6802 : }
6803 0 : case LT_EXPR:
6804 0 : {
6805 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6806 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6807 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6808 : {
6809 0 : if (integer_zerop (_q71))
6810 : {
6811 0 : if (integer_onep (_q51))
6812 : {
6813 0 : {
6814 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6815 0 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
6816 0 : if (res) return res;
6817 : }
6818 : }
6819 : }
6820 : }
6821 : break;
6822 : }
6823 : default:;
6824 : }
6825 : break;
6826 : }
6827 0 : default:;
6828 : }
6829 0 : {
6830 0 : tree _q50_pops[1];
6831 0 : if (tree_nop_convert (_q50, _q50_pops))
6832 : {
6833 0 : tree _q60 = _q50_pops[0];
6834 0 : switch (TREE_CODE (_q60))
6835 : {
6836 0 : case NEGATE_EXPR:
6837 0 : {
6838 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6839 0 : switch (TREE_CODE (_q70))
6840 : {
6841 0 : CASE_CONVERT:
6842 0 : {
6843 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6844 0 : switch (TREE_CODE (_q80))
6845 : {
6846 0 : case LT_EXPR:
6847 0 : {
6848 0 : tree _q90 = TREE_OPERAND (_q80, 0);
6849 0 : tree _q91 = TREE_OPERAND (_q80, 1);
6850 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
6851 : {
6852 0 : if (integer_zerop (_q91))
6853 : {
6854 0 : if (integer_onep (_q51))
6855 : {
6856 0 : {
6857 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6858 0 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
6859 0 : if (res) return res;
6860 : }
6861 : }
6862 : }
6863 : }
6864 : break;
6865 : }
6866 : default:;
6867 : }
6868 : break;
6869 : }
6870 0 : case LT_EXPR:
6871 0 : {
6872 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6873 0 : tree _q81 = TREE_OPERAND (_q70, 1);
6874 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
6875 : {
6876 0 : if (integer_zerop (_q81))
6877 : {
6878 0 : if (integer_onep (_q51))
6879 : {
6880 0 : {
6881 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6882 0 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
6883 0 : if (res) return res;
6884 : }
6885 : }
6886 : }
6887 : }
6888 : break;
6889 : }
6890 : default:;
6891 : }
6892 : break;
6893 : }
6894 : default:;
6895 : }
6896 : }
6897 : }
6898 0 : break;
6899 : }
6900 : default:;
6901 : }
6902 : }
6903 : }
6904 : }
6905 : }
6906 65863985 : {
6907 65863985 : tree _p1_pops[1];
6908 65863985 : if (tree_nop_convert (_p1, _p1_pops))
6909 : {
6910 6937805 : tree _q30 = _p1_pops[0];
6911 6937805 : switch (TREE_CODE (_q30))
6912 : {
6913 0 : case BIT_IOR_EXPR:
6914 0 : {
6915 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6916 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6917 0 : switch (TREE_CODE (_q40))
6918 : {
6919 0 : case NEGATE_EXPR:
6920 0 : {
6921 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6922 0 : switch (TREE_CODE (_q50))
6923 : {
6924 0 : CASE_CONVERT:
6925 0 : {
6926 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6927 0 : switch (TREE_CODE (_q60))
6928 : {
6929 0 : case LT_EXPR:
6930 0 : {
6931 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6932 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6933 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
6934 : {
6935 0 : if (integer_zerop (_q71))
6936 : {
6937 0 : if (integer_onep (_q41))
6938 : {
6939 0 : {
6940 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6941 0 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
6942 0 : if (res) return res;
6943 : }
6944 : }
6945 : }
6946 : }
6947 : break;
6948 : }
6949 : default:;
6950 : }
6951 : break;
6952 : }
6953 : default:;
6954 : }
6955 : break;
6956 : }
6957 0 : default:;
6958 : }
6959 0 : {
6960 0 : tree _q40_pops[1];
6961 0 : if (tree_nop_convert (_q40, _q40_pops))
6962 : {
6963 0 : tree _q50 = _q40_pops[0];
6964 0 : switch (TREE_CODE (_q50))
6965 : {
6966 0 : case NEGATE_EXPR:
6967 0 : {
6968 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6969 0 : switch (TREE_CODE (_q60))
6970 : {
6971 0 : CASE_CONVERT:
6972 0 : {
6973 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6974 0 : switch (TREE_CODE (_q70))
6975 : {
6976 0 : case LT_EXPR:
6977 0 : {
6978 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6979 0 : tree _q81 = TREE_OPERAND (_q70, 1);
6980 0 : if ((_q80 == _p0 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _p0, 0) && types_match (_q80, _p0)))
6981 : {
6982 0 : if (integer_zerop (_q81))
6983 : {
6984 0 : if (integer_onep (_q41))
6985 : {
6986 0 : {
6987 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6988 0 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
6989 0 : if (res) return res;
6990 : }
6991 : }
6992 : }
6993 : }
6994 : break;
6995 : }
6996 : default:;
6997 : }
6998 : break;
6999 : }
7000 : default:;
7001 : }
7002 : break;
7003 : }
7004 : default:;
7005 : }
7006 : }
7007 : }
7008 0 : break;
7009 : }
7010 : default:;
7011 : }
7012 : }
7013 : }
7014 65863985 : switch (TREE_CODE (_p0))
7015 : {
7016 299 : case BIT_IOR_EXPR:
7017 299 : {
7018 299 : tree _q20 = TREE_OPERAND (_p0, 0);
7019 299 : tree _q21 = TREE_OPERAND (_p0, 1);
7020 299 : switch (TREE_CODE (_q20))
7021 : {
7022 1 : case NEGATE_EXPR:
7023 1 : {
7024 1 : tree _q30 = TREE_OPERAND (_q20, 0);
7025 1 : switch (TREE_CODE (_q30))
7026 : {
7027 0 : CASE_CONVERT:
7028 0 : {
7029 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7030 0 : switch (TREE_CODE (_q40))
7031 : {
7032 0 : case LT_EXPR:
7033 0 : {
7034 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7035 0 : tree _q51 = TREE_OPERAND (_q40, 1);
7036 0 : if (integer_zerop (_q51))
7037 : {
7038 0 : if (integer_onep (_q21))
7039 : {
7040 0 : {
7041 0 : tree _p1_pops[1];
7042 0 : if (tree_nop_convert (_p1, _p1_pops))
7043 : {
7044 0 : tree _q90 = _p1_pops[0];
7045 0 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
7046 : {
7047 0 : {
7048 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7049 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
7050 0 : if (res) return res;
7051 : }
7052 : }
7053 : }
7054 : }
7055 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
7056 : {
7057 0 : {
7058 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7059 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
7060 0 : if (res) return res;
7061 : }
7062 : }
7063 : }
7064 : }
7065 : break;
7066 : }
7067 : default:;
7068 : }
7069 : break;
7070 : }
7071 1 : case LT_EXPR:
7072 1 : {
7073 1 : tree _q40 = TREE_OPERAND (_q30, 0);
7074 1 : tree _q41 = TREE_OPERAND (_q30, 1);
7075 1 : if (integer_zerop (_q41))
7076 : {
7077 1 : if (integer_onep (_q21))
7078 : {
7079 1 : {
7080 1 : tree _p1_pops[1];
7081 1 : if (tree_nop_convert (_p1, _p1_pops))
7082 : {
7083 0 : tree _q80 = _p1_pops[0];
7084 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
7085 : {
7086 0 : {
7087 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
7088 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
7089 0 : if (res) return res;
7090 : }
7091 : }
7092 : }
7093 : }
7094 1 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
7095 : {
7096 1 : {
7097 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
7098 1 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
7099 1 : if (res) return res;
7100 : }
7101 : }
7102 : }
7103 : }
7104 : break;
7105 : }
7106 : default:;
7107 : }
7108 : break;
7109 : }
7110 298 : default:;
7111 : }
7112 298 : {
7113 298 : tree _q20_pops[1];
7114 298 : if (tree_nop_convert (_q20, _q20_pops))
7115 : {
7116 1 : tree _q30 = _q20_pops[0];
7117 1 : switch (TREE_CODE (_q30))
7118 : {
7119 1 : case NEGATE_EXPR:
7120 1 : {
7121 1 : tree _q40 = TREE_OPERAND (_q30, 0);
7122 1 : switch (TREE_CODE (_q40))
7123 : {
7124 0 : CASE_CONVERT:
7125 0 : {
7126 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7127 0 : switch (TREE_CODE (_q50))
7128 : {
7129 0 : case LT_EXPR:
7130 0 : {
7131 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7132 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7133 0 : if (integer_zerop (_q61))
7134 : {
7135 0 : if (integer_onep (_q21))
7136 : {
7137 0 : {
7138 0 : tree _p1_pops[1];
7139 0 : if (tree_nop_convert (_p1, _p1_pops))
7140 : {
7141 0 : tree _q100 = _p1_pops[0];
7142 0 : if ((_q100 == _q60 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q60, 0) && types_match (_q100, _q60)))
7143 : {
7144 0 : {
7145 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
7146 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
7147 0 : if (res) return res;
7148 : }
7149 : }
7150 : }
7151 : }
7152 0 : if ((_p1 == _q60 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q60, 0) && types_match (_p1, _q60)))
7153 : {
7154 0 : {
7155 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
7156 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
7157 0 : if (res) return res;
7158 : }
7159 : }
7160 : }
7161 : }
7162 : break;
7163 : }
7164 : default:;
7165 : }
7166 : break;
7167 : }
7168 1 : case LT_EXPR:
7169 1 : {
7170 1 : tree _q50 = TREE_OPERAND (_q40, 0);
7171 1 : tree _q51 = TREE_OPERAND (_q40, 1);
7172 1 : if (integer_zerop (_q51))
7173 : {
7174 1 : if (integer_onep (_q21))
7175 : {
7176 1 : {
7177 1 : tree _p1_pops[1];
7178 1 : if (tree_nop_convert (_p1, _p1_pops))
7179 : {
7180 1 : tree _q90 = _p1_pops[0];
7181 1 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
7182 : {
7183 1 : {
7184 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7185 1 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
7186 1 : if (res) return res;
7187 : }
7188 : }
7189 : }
7190 : }
7191 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
7192 : {
7193 0 : {
7194 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7195 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
7196 0 : if (res) return res;
7197 : }
7198 : }
7199 : }
7200 : }
7201 : break;
7202 : }
7203 : default:;
7204 : }
7205 : break;
7206 : }
7207 : default:;
7208 : }
7209 : }
7210 : }
7211 297 : break;
7212 : }
7213 65863983 : default:;
7214 : }
7215 65863983 : switch (TREE_CODE (_p1))
7216 : {
7217 1 : case BIT_IOR_EXPR:
7218 1 : {
7219 1 : tree _q30 = TREE_OPERAND (_p1, 0);
7220 1 : tree _q31 = TREE_OPERAND (_p1, 1);
7221 1 : switch (TREE_CODE (_q30))
7222 : {
7223 0 : case NEGATE_EXPR:
7224 0 : {
7225 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7226 0 : switch (TREE_CODE (_q40))
7227 : {
7228 0 : CASE_CONVERT:
7229 0 : {
7230 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7231 0 : switch (TREE_CODE (_q50))
7232 : {
7233 0 : case LT_EXPR:
7234 0 : {
7235 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7236 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7237 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
7238 : {
7239 0 : if (integer_zerop (_q61))
7240 : {
7241 0 : if (integer_onep (_q31))
7242 : {
7243 0 : {
7244 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7245 0 : tree res = generic_simplify_187 (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 0 : case LT_EXPR:
7258 0 : {
7259 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7260 0 : tree _q51 = TREE_OPERAND (_q40, 1);
7261 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
7262 : {
7263 0 : if (integer_zerop (_q51))
7264 : {
7265 0 : if (integer_onep (_q31))
7266 : {
7267 0 : {
7268 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7269 0 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
7270 0 : if (res) return res;
7271 : }
7272 : }
7273 : }
7274 : }
7275 : break;
7276 : }
7277 : default:;
7278 : }
7279 : break;
7280 : }
7281 1 : default:;
7282 : }
7283 1 : {
7284 1 : tree _q30_pops[1];
7285 1 : if (tree_nop_convert (_q30, _q30_pops))
7286 : {
7287 0 : tree _q40 = _q30_pops[0];
7288 0 : switch (TREE_CODE (_q40))
7289 : {
7290 0 : case NEGATE_EXPR:
7291 0 : {
7292 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7293 0 : switch (TREE_CODE (_q50))
7294 : {
7295 0 : CASE_CONVERT:
7296 0 : {
7297 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7298 0 : switch (TREE_CODE (_q60))
7299 : {
7300 0 : case LT_EXPR:
7301 0 : {
7302 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7303 0 : tree _q71 = TREE_OPERAND (_q60, 1);
7304 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
7305 : {
7306 0 : if (integer_zerop (_q71))
7307 : {
7308 0 : if (integer_onep (_q31))
7309 : {
7310 0 : {
7311 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7312 0 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
7313 0 : if (res) return res;
7314 : }
7315 : }
7316 : }
7317 : }
7318 : break;
7319 : }
7320 : default:;
7321 : }
7322 : break;
7323 : }
7324 0 : case LT_EXPR:
7325 0 : {
7326 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7327 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7328 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
7329 : {
7330 0 : if (integer_zerop (_q61))
7331 : {
7332 0 : if (integer_onep (_q31))
7333 : {
7334 0 : {
7335 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7336 0 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
7337 0 : if (res) return res;
7338 : }
7339 : }
7340 : }
7341 : }
7342 : break;
7343 : }
7344 : default:;
7345 : }
7346 : break;
7347 : }
7348 : default:;
7349 : }
7350 : }
7351 : }
7352 1 : break;
7353 : }
7354 65863983 : default:;
7355 : }
7356 65863983 : {
7357 65863983 : tree _p1_pops[1];
7358 65863983 : if (tree_nop_convert (_p1, _p1_pops))
7359 : {
7360 6937804 : tree _q30 = _p1_pops[0];
7361 6937804 : switch (TREE_CODE (_q30))
7362 : {
7363 0 : case BIT_IOR_EXPR:
7364 0 : {
7365 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7366 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7367 0 : switch (TREE_CODE (_q40))
7368 : {
7369 0 : case NEGATE_EXPR:
7370 0 : {
7371 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7372 0 : switch (TREE_CODE (_q50))
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 (_q41))
7383 : {
7384 0 : {
7385 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7386 0 : tree res = generic_simplify_187 (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 0 : default:;
7399 : }
7400 0 : {
7401 0 : tree _q40_pops[1];
7402 0 : if (tree_nop_convert (_q40, _q40_pops))
7403 : {
7404 0 : tree _q50 = _q40_pops[0];
7405 0 : switch (TREE_CODE (_q50))
7406 : {
7407 0 : case NEGATE_EXPR:
7408 0 : {
7409 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7410 0 : switch (TREE_CODE (_q60))
7411 : {
7412 0 : case LT_EXPR:
7413 0 : {
7414 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7415 0 : tree _q71 = TREE_OPERAND (_q60, 1);
7416 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
7417 : {
7418 0 : if (integer_zerop (_q71))
7419 : {
7420 0 : if (integer_onep (_q41))
7421 : {
7422 0 : {
7423 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7424 0 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
7425 0 : if (res) return res;
7426 : }
7427 : }
7428 : }
7429 : }
7430 : break;
7431 : }
7432 : default:;
7433 : }
7434 : break;
7435 : }
7436 : default:;
7437 : }
7438 : }
7439 : }
7440 0 : break;
7441 : }
7442 : default:;
7443 : }
7444 : }
7445 : }
7446 65863983 : switch (TREE_CODE (_p0))
7447 : {
7448 31645885 : CASE_CONVERT:
7449 31645885 : {
7450 31645885 : tree _q20 = TREE_OPERAND (_p0, 0);
7451 31645885 : switch (TREE_CODE (_q20))
7452 : {
7453 6182 : case NEGATE_EXPR:
7454 6182 : {
7455 6182 : tree _q30 = TREE_OPERAND (_q20, 0);
7456 6182 : switch (TREE_CODE (_p1))
7457 : {
7458 473 : CASE_CONVERT:
7459 473 : {
7460 473 : tree _q50 = TREE_OPERAND (_p1, 0);
7461 473 : if (tree_negate_expr_p (_q50))
7462 : {
7463 0 : {
7464 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q50 };
7465 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
7466 0 : if (res) return res;
7467 : }
7468 : }
7469 : break;
7470 : }
7471 6182 : default:;
7472 : }
7473 6182 : if (tree_negate_expr_p (_p1))
7474 : {
7475 3362 : {
7476 3362 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p1 };
7477 3362 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
7478 3362 : if (res) return res;
7479 : }
7480 : }
7481 : break;
7482 : }
7483 4 : case LT_EXPR:
7484 4 : {
7485 4 : tree _q30 = TREE_OPERAND (_q20, 0);
7486 4 : tree _q31 = TREE_OPERAND (_q20, 1);
7487 4 : {
7488 4 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7489 4 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, LT_EXPR);
7490 4 : if (res) return res;
7491 : }
7492 4 : break;
7493 : }
7494 6 : case LE_EXPR:
7495 6 : {
7496 6 : tree _q30 = TREE_OPERAND (_q20, 0);
7497 6 : tree _q31 = TREE_OPERAND (_q20, 1);
7498 6 : {
7499 6 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7500 6 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, LE_EXPR);
7501 6 : if (res) return res;
7502 : }
7503 6 : break;
7504 : }
7505 1 : case EQ_EXPR:
7506 1 : {
7507 1 : tree _q30 = TREE_OPERAND (_q20, 0);
7508 1 : tree _q31 = TREE_OPERAND (_q20, 1);
7509 1 : {
7510 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7511 1 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, EQ_EXPR);
7512 1 : if (res) return res;
7513 : }
7514 1 : break;
7515 : }
7516 1157 : case NE_EXPR:
7517 1157 : {
7518 1157 : tree _q30 = TREE_OPERAND (_q20, 0);
7519 1157 : tree _q31 = TREE_OPERAND (_q20, 1);
7520 1157 : {
7521 1157 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7522 1157 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, NE_EXPR);
7523 1157 : if (res) return res;
7524 : }
7525 1157 : break;
7526 : }
7527 19 : case GE_EXPR:
7528 19 : {
7529 19 : tree _q30 = TREE_OPERAND (_q20, 0);
7530 19 : tree _q31 = TREE_OPERAND (_q20, 1);
7531 19 : {
7532 19 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7533 19 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, GE_EXPR);
7534 19 : if (res) return res;
7535 : }
7536 19 : break;
7537 : }
7538 19 : case GT_EXPR:
7539 19 : {
7540 19 : tree _q30 = TREE_OPERAND (_q20, 0);
7541 19 : tree _q31 = TREE_OPERAND (_q20, 1);
7542 19 : {
7543 19 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7544 19 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, GT_EXPR);
7545 19 : if (res) return res;
7546 : }
7547 19 : break;
7548 : }
7549 0 : case UNORDERED_EXPR:
7550 0 : {
7551 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7552 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7553 0 : {
7554 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7555 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, UNORDERED_EXPR);
7556 0 : if (res) return res;
7557 : }
7558 0 : break;
7559 : }
7560 0 : case ORDERED_EXPR:
7561 0 : {
7562 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7563 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7564 0 : {
7565 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7566 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, ORDERED_EXPR);
7567 0 : if (res) return res;
7568 : }
7569 0 : break;
7570 : }
7571 0 : case UNLT_EXPR:
7572 0 : {
7573 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7574 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7575 0 : {
7576 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7577 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, UNLT_EXPR);
7578 0 : if (res) return res;
7579 : }
7580 0 : break;
7581 : }
7582 0 : case UNLE_EXPR:
7583 0 : {
7584 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7585 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7586 0 : {
7587 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7588 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, UNLE_EXPR);
7589 0 : if (res) return res;
7590 : }
7591 0 : break;
7592 : }
7593 0 : case UNGT_EXPR:
7594 0 : {
7595 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7596 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7597 0 : {
7598 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7599 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, UNGT_EXPR);
7600 0 : if (res) return res;
7601 : }
7602 0 : break;
7603 : }
7604 0 : case UNGE_EXPR:
7605 0 : {
7606 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7607 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7608 0 : {
7609 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7610 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, UNGE_EXPR);
7611 0 : if (res) return res;
7612 : }
7613 0 : break;
7614 : }
7615 0 : case UNEQ_EXPR:
7616 0 : {
7617 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7618 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7619 0 : {
7620 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7621 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, UNEQ_EXPR);
7622 0 : if (res) return res;
7623 : }
7624 0 : break;
7625 : }
7626 0 : case LTGT_EXPR:
7627 0 : {
7628 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7629 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7630 0 : {
7631 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7632 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, LTGT_EXPR);
7633 0 : if (res) return res;
7634 : }
7635 0 : break;
7636 : }
7637 31645142 : default:;
7638 : }
7639 31645142 : if (tree_negate_expr_p (_q20))
7640 : {
7641 21784 : switch (TREE_CODE (_p1))
7642 : {
7643 2642 : CASE_CONVERT:
7644 2642 : {
7645 2642 : tree _q40 = TREE_OPERAND (_p1, 0);
7646 2642 : switch (TREE_CODE (_q40))
7647 : {
7648 0 : case NEGATE_EXPR:
7649 0 : {
7650 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7651 0 : {
7652 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q20 };
7653 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
7654 0 : if (res) return res;
7655 : }
7656 0 : break;
7657 : }
7658 : default:;
7659 : }
7660 : break;
7661 : }
7662 6 : case NEGATE_EXPR:
7663 6 : {
7664 6 : tree _q40 = TREE_OPERAND (_p1, 0);
7665 6 : {
7666 6 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
7667 6 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
7668 6 : if (res) return res;
7669 : }
7670 0 : break;
7671 : }
7672 : default:;
7673 : }
7674 : }
7675 : break;
7676 : }
7677 428348 : case NEGATE_EXPR:
7678 428348 : {
7679 428348 : tree _q20 = TREE_OPERAND (_p0, 0);
7680 428348 : switch (TREE_CODE (_p1))
7681 : {
7682 150686 : CASE_CONVERT:
7683 150686 : {
7684 150686 : tree _q40 = TREE_OPERAND (_p1, 0);
7685 150686 : if (tree_negate_expr_p (_q40))
7686 : {
7687 0 : {
7688 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
7689 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
7690 0 : if (res) return res;
7691 : }
7692 : }
7693 : break;
7694 : }
7695 428348 : default:;
7696 : }
7697 428348 : if (tree_negate_expr_p (_p1))
7698 : {
7699 33287 : {
7700 33287 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7701 33287 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
7702 33287 : if (res) return res;
7703 : }
7704 : }
7705 : break;
7706 : }
7707 65829947 : default:;
7708 : }
7709 65829947 : if (tree_negate_expr_p (_p0))
7710 : {
7711 666978 : switch (TREE_CODE (_p1))
7712 : {
7713 155035 : CASE_CONVERT:
7714 155035 : {
7715 155035 : tree _q30 = TREE_OPERAND (_p1, 0);
7716 155035 : switch (TREE_CODE (_q30))
7717 : {
7718 0 : case NEGATE_EXPR:
7719 0 : {
7720 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7721 0 : {
7722 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
7723 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
7724 0 : if (res) return res;
7725 : }
7726 0 : break;
7727 : }
7728 : default:;
7729 : }
7730 : break;
7731 : }
7732 6 : case NEGATE_EXPR:
7733 6 : {
7734 6 : tree _q30 = TREE_OPERAND (_p1, 0);
7735 6 : {
7736 6 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
7737 6 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
7738 6 : if (res) return res;
7739 : }
7740 0 : break;
7741 : }
7742 : default:;
7743 : }
7744 : }
7745 65829941 : if (tree_zero_one_valued_p (_p0))
7746 : {
7747 184269 : if (tree_zero_one_valued_p (_p1))
7748 : {
7749 12204 : {
7750 12204 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
7751 12204 : if (INTEGRAL_TYPE_P (type)
7752 : )
7753 : {
7754 12204 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1422;
7755 12204 : {
7756 12204 : tree res_op0;
7757 12204 : res_op0 = captures[0];
7758 12204 : tree res_op1;
7759 12204 : res_op1 = captures[1];
7760 12204 : tree _r;
7761 12204 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
7762 12204 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 974, __FILE__, __LINE__, true);
7763 12204 : return _r;
7764 : }
7765 0 : next_after_fail1422:;
7766 : }
7767 : }
7768 : }
7769 : }
7770 65817737 : switch (TREE_CODE (_p1))
7771 : {
7772 7011200 : CASE_CONVERT:
7773 7011200 : {
7774 7011200 : tree _q30 = TREE_OPERAND (_p1, 0);
7775 7011200 : switch (TREE_CODE (_q30))
7776 : {
7777 0 : case LT_EXPR:
7778 0 : {
7779 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7780 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7781 0 : {
7782 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7783 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures, LT_EXPR);
7784 0 : if (res) return res;
7785 : }
7786 0 : break;
7787 : }
7788 0 : case LE_EXPR:
7789 0 : {
7790 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7791 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7792 0 : {
7793 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7794 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures, LE_EXPR);
7795 0 : if (res) return res;
7796 : }
7797 0 : break;
7798 : }
7799 0 : case EQ_EXPR:
7800 0 : {
7801 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7802 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7803 0 : {
7804 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7805 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures, EQ_EXPR);
7806 0 : if (res) return res;
7807 : }
7808 0 : break;
7809 : }
7810 0 : case NE_EXPR:
7811 0 : {
7812 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7813 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7814 0 : {
7815 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7816 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures, NE_EXPR);
7817 0 : if (res) return res;
7818 : }
7819 0 : break;
7820 : }
7821 0 : case GE_EXPR:
7822 0 : {
7823 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7824 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7825 0 : {
7826 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7827 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures, GE_EXPR);
7828 0 : if (res) return res;
7829 : }
7830 0 : break;
7831 : }
7832 0 : case GT_EXPR:
7833 0 : {
7834 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7835 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7836 0 : {
7837 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7838 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures, GT_EXPR);
7839 0 : if (res) return res;
7840 : }
7841 0 : break;
7842 : }
7843 0 : case UNORDERED_EXPR:
7844 0 : {
7845 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7846 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7847 0 : {
7848 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7849 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures, UNORDERED_EXPR);
7850 0 : if (res) return res;
7851 : }
7852 0 : break;
7853 : }
7854 0 : case ORDERED_EXPR:
7855 0 : {
7856 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7857 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7858 0 : {
7859 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7860 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures, ORDERED_EXPR);
7861 0 : if (res) return res;
7862 : }
7863 0 : break;
7864 : }
7865 0 : case UNLT_EXPR:
7866 0 : {
7867 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7868 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7869 0 : {
7870 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7871 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures, UNLT_EXPR);
7872 0 : if (res) return res;
7873 : }
7874 0 : break;
7875 : }
7876 0 : case UNLE_EXPR:
7877 0 : {
7878 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7879 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7880 0 : {
7881 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7882 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures, UNLE_EXPR);
7883 0 : if (res) return res;
7884 : }
7885 0 : break;
7886 : }
7887 0 : case UNGT_EXPR:
7888 0 : {
7889 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7890 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7891 0 : {
7892 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7893 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures, UNGT_EXPR);
7894 0 : if (res) return res;
7895 : }
7896 0 : break;
7897 : }
7898 0 : case UNGE_EXPR:
7899 0 : {
7900 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7901 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7902 0 : {
7903 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7904 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures, UNGE_EXPR);
7905 0 : if (res) return res;
7906 : }
7907 0 : break;
7908 : }
7909 0 : case UNEQ_EXPR:
7910 0 : {
7911 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7912 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7913 0 : {
7914 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7915 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures, UNEQ_EXPR);
7916 0 : if (res) return res;
7917 : }
7918 0 : break;
7919 : }
7920 0 : case LTGT_EXPR:
7921 0 : {
7922 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7923 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7924 0 : {
7925 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7926 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures, LTGT_EXPR);
7927 0 : if (res) return res;
7928 : }
7929 0 : break;
7930 : }
7931 : default:;
7932 : }
7933 : break;
7934 : }
7935 65817737 : default:;
7936 : }
7937 65817737 : switch (TREE_CODE (_p0))
7938 : {
7939 3 : case MIN_EXPR:
7940 3 : {
7941 3 : tree _q20 = TREE_OPERAND (_p0, 0);
7942 3 : tree _q21 = TREE_OPERAND (_p0, 1);
7943 3 : switch (TREE_CODE (_p1))
7944 : {
7945 0 : case MAX_EXPR:
7946 0 : {
7947 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7948 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7949 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7950 : {
7951 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7952 : {
7953 0 : {
7954 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7955 0 : if (!HONOR_NANS (captures[0])
7956 : )
7957 : {
7958 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1423;
7959 0 : {
7960 0 : tree res_op0;
7961 0 : res_op0 = captures[0];
7962 0 : tree res_op1;
7963 0 : res_op1 = captures[1];
7964 0 : tree _r;
7965 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
7966 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
7967 0 : return _r;
7968 : }
7969 0 : next_after_fail1423:;
7970 : }
7971 : }
7972 : }
7973 : }
7974 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7975 : {
7976 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7977 : {
7978 0 : {
7979 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7980 0 : if (!HONOR_NANS (captures[0])
7981 : )
7982 : {
7983 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1424;
7984 0 : {
7985 0 : tree res_op0;
7986 0 : res_op0 = captures[0];
7987 0 : tree res_op1;
7988 0 : res_op1 = captures[1];
7989 0 : tree _r;
7990 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
7991 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
7992 0 : return _r;
7993 : }
7994 0 : next_after_fail1424:;
7995 : }
7996 : }
7997 : }
7998 : }
7999 : break;
8000 : }
8001 : default:;
8002 : }
8003 : break;
8004 : }
8005 146 : case MAX_EXPR:
8006 146 : {
8007 146 : tree _q20 = TREE_OPERAND (_p0, 0);
8008 146 : tree _q21 = TREE_OPERAND (_p0, 1);
8009 146 : switch (TREE_CODE (_p1))
8010 : {
8011 0 : case MIN_EXPR:
8012 0 : {
8013 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8014 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8015 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8016 : {
8017 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8018 : {
8019 0 : {
8020 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8021 0 : if (!HONOR_NANS (captures[0])
8022 : )
8023 : {
8024 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1425;
8025 0 : {
8026 0 : tree res_op0;
8027 0 : res_op0 = captures[0];
8028 0 : tree res_op1;
8029 0 : res_op1 = captures[1];
8030 0 : tree _r;
8031 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
8032 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
8033 0 : return _r;
8034 : }
8035 0 : next_after_fail1425:;
8036 : }
8037 : }
8038 : }
8039 : }
8040 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8041 : {
8042 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8043 : {
8044 0 : {
8045 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8046 0 : if (!HONOR_NANS (captures[0])
8047 : )
8048 : {
8049 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1426;
8050 0 : {
8051 0 : tree res_op0;
8052 0 : res_op0 = captures[0];
8053 0 : tree res_op1;
8054 0 : res_op1 = captures[1];
8055 0 : tree _r;
8056 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
8057 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
8058 0 : return _r;
8059 : }
8060 0 : next_after_fail1426:;
8061 : }
8062 : }
8063 : }
8064 : }
8065 : break;
8066 : }
8067 : default:;
8068 : }
8069 : break;
8070 : }
8071 31632935 : CASE_CONVERT:
8072 31632935 : {
8073 31632935 : tree _q20 = TREE_OPERAND (_p0, 0);
8074 31632935 : switch (TREE_CODE (_q20))
8075 : {
8076 82 : case BIT_AND_EXPR:
8077 82 : {
8078 82 : tree _q30 = TREE_OPERAND (_q20, 0);
8079 82 : tree _q31 = TREE_OPERAND (_q20, 1);
8080 82 : switch (TREE_CODE (_q30))
8081 : {
8082 0 : CASE_CONVERT:
8083 0 : {
8084 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8085 0 : switch (TREE_CODE (_q40))
8086 : {
8087 0 : case RSHIFT_EXPR:
8088 0 : {
8089 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8090 0 : tree _q51 = TREE_OPERAND (_q40, 1);
8091 0 : switch (TREE_CODE (_q51))
8092 : {
8093 0 : case INTEGER_CST:
8094 0 : {
8095 0 : switch (TREE_CODE (_q31))
8096 : {
8097 0 : case INTEGER_CST:
8098 0 : {
8099 0 : switch (TREE_CODE (_p1))
8100 : {
8101 0 : case INTEGER_CST:
8102 0 : {
8103 0 : {
8104 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q50, _q51, _q31, _p1 };
8105 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
8106 0 : if (res) return res;
8107 : }
8108 0 : break;
8109 : }
8110 : default:;
8111 : }
8112 : break;
8113 : }
8114 : default:;
8115 : }
8116 : break;
8117 : }
8118 : default:;
8119 : }
8120 : break;
8121 : }
8122 : default:;
8123 : }
8124 : break;
8125 : }
8126 : default:;
8127 : }
8128 : break;
8129 : }
8130 30447 : case EXACT_DIV_EXPR:
8131 30447 : {
8132 30447 : tree _q30 = TREE_OPERAND (_q20, 0);
8133 30447 : tree _q31 = TREE_OPERAND (_q20, 1);
8134 30447 : switch (TREE_CODE (_p1))
8135 : {
8136 0 : CASE_CONVERT:
8137 0 : {
8138 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8139 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _q31, 0))
8140 : {
8141 0 : {
8142 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q31 };
8143 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
8144 0 : if (res) return res;
8145 : }
8146 : }
8147 : break;
8148 : }
8149 30447 : default:;
8150 : }
8151 30447 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q31, 0))
8152 : {
8153 20612 : {
8154 20612 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q31 };
8155 20612 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
8156 20612 : if (res) return res;
8157 : }
8158 : }
8159 9835 : switch (TREE_CODE (_q31))
8160 : {
8161 9835 : case INTEGER_CST:
8162 9835 : {
8163 9835 : if (poly_int_tree_p (_p1))
8164 : {
8165 9835 : {
8166 9835 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
8167 9835 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures);
8168 9835 : if (res) return res;
8169 : }
8170 : }
8171 : break;
8172 : }
8173 : default:;
8174 : }
8175 : break;
8176 : }
8177 1346351 : case PLUS_EXPR:
8178 1346351 : {
8179 1346351 : tree _q30 = TREE_OPERAND (_q20, 0);
8180 1346351 : tree _q31 = TREE_OPERAND (_q20, 1);
8181 1346351 : switch (TREE_CODE (_q30))
8182 : {
8183 175592 : CASE_CONVERT:
8184 175592 : {
8185 175592 : tree _q40 = TREE_OPERAND (_q30, 0);
8186 175592 : switch (TREE_CODE (_q40))
8187 : {
8188 0 : case EXACT_DIV_EXPR:
8189 0 : {
8190 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8191 0 : tree _q51 = TREE_OPERAND (_q40, 1);
8192 0 : switch (TREE_CODE (_q51))
8193 : {
8194 0 : case INTEGER_CST:
8195 0 : {
8196 0 : if (poly_int_tree_p (_q31))
8197 : {
8198 0 : if (poly_int_tree_p (_p1))
8199 : {
8200 0 : {
8201 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q50, _q51, _q31, _p1 };
8202 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8203 0 : if (res) return res;
8204 : }
8205 : }
8206 : }
8207 : break;
8208 : }
8209 : default:;
8210 : }
8211 : break;
8212 : }
8213 : default:;
8214 : }
8215 : break;
8216 : }
8217 112 : case EXACT_DIV_EXPR:
8218 112 : {
8219 112 : tree _q40 = TREE_OPERAND (_q30, 0);
8220 112 : tree _q41 = TREE_OPERAND (_q30, 1);
8221 112 : switch (TREE_CODE (_q41))
8222 : {
8223 112 : case INTEGER_CST:
8224 112 : {
8225 112 : if (poly_int_tree_p (_q31))
8226 : {
8227 112 : if (poly_int_tree_p (_p1))
8228 : {
8229 112 : {
8230 112 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q31, _p1 };
8231 112 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8232 112 : if (res) return res;
8233 : }
8234 : }
8235 : }
8236 : break;
8237 : }
8238 : default:;
8239 : }
8240 : break;
8241 : }
8242 : default:;
8243 : }
8244 : break;
8245 : }
8246 101104 : case MINUS_EXPR:
8247 101104 : {
8248 101104 : tree _q30 = TREE_OPERAND (_q20, 0);
8249 101104 : tree _q31 = TREE_OPERAND (_q20, 1);
8250 101104 : switch (TREE_CODE (_q30))
8251 : {
8252 25510 : CASE_CONVERT:
8253 25510 : {
8254 25510 : tree _q40 = TREE_OPERAND (_q30, 0);
8255 25510 : switch (TREE_CODE (_q40))
8256 : {
8257 0 : case EXACT_DIV_EXPR:
8258 0 : {
8259 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8260 0 : tree _q51 = TREE_OPERAND (_q40, 1);
8261 0 : switch (TREE_CODE (_q51))
8262 : {
8263 0 : case INTEGER_CST:
8264 0 : {
8265 0 : if (poly_int_tree_p (_q31))
8266 : {
8267 0 : if (poly_int_tree_p (_p1))
8268 : {
8269 0 : {
8270 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q50, _q51, _q31, _p1 };
8271 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8272 0 : if (res) return res;
8273 : }
8274 : }
8275 : }
8276 : break;
8277 : }
8278 : default:;
8279 : }
8280 : break;
8281 : }
8282 : default:;
8283 : }
8284 : break;
8285 : }
8286 0 : case EXACT_DIV_EXPR:
8287 0 : {
8288 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8289 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8290 0 : switch (TREE_CODE (_q41))
8291 : {
8292 0 : case INTEGER_CST:
8293 0 : {
8294 0 : if (poly_int_tree_p (_q31))
8295 : {
8296 0 : if (poly_int_tree_p (_p1))
8297 : {
8298 0 : {
8299 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q31, _p1 };
8300 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8301 0 : if (res) return res;
8302 : }
8303 : }
8304 : }
8305 : break;
8306 : }
8307 : default:;
8308 : }
8309 : break;
8310 : }
8311 : default:;
8312 : }
8313 : break;
8314 : }
8315 : default:;
8316 : }
8317 : break;
8318 : }
8319 59392 : case BIT_AND_EXPR:
8320 59392 : {
8321 59392 : tree _q20 = TREE_OPERAND (_p0, 0);
8322 59392 : tree _q21 = TREE_OPERAND (_p0, 1);
8323 59392 : switch (TREE_CODE (_q20))
8324 : {
8325 275 : case RSHIFT_EXPR:
8326 275 : {
8327 275 : tree _q30 = TREE_OPERAND (_q20, 0);
8328 275 : tree _q31 = TREE_OPERAND (_q20, 1);
8329 275 : switch (TREE_CODE (_q31))
8330 : {
8331 14 : case INTEGER_CST:
8332 14 : {
8333 14 : switch (TREE_CODE (_q21))
8334 : {
8335 14 : case INTEGER_CST:
8336 14 : {
8337 14 : switch (TREE_CODE (_p1))
8338 : {
8339 14 : case INTEGER_CST:
8340 14 : {
8341 14 : {
8342 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
8343 14 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
8344 14 : if (res) return res;
8345 : }
8346 8 : break;
8347 : }
8348 : default:;
8349 : }
8350 : break;
8351 : }
8352 : default:;
8353 : }
8354 : break;
8355 : }
8356 : default:;
8357 : }
8358 : break;
8359 : }
8360 : default:;
8361 : }
8362 : break;
8363 : }
8364 180712 : case EXACT_DIV_EXPR:
8365 180712 : {
8366 180712 : tree _q20 = TREE_OPERAND (_p0, 0);
8367 180712 : tree _q21 = TREE_OPERAND (_p0, 1);
8368 180712 : switch (TREE_CODE (_p1))
8369 : {
8370 104 : CASE_CONVERT:
8371 104 : {
8372 104 : tree _q50 = TREE_OPERAND (_p1, 0);
8373 104 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q21, 0))
8374 : {
8375 0 : {
8376 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q21 };
8377 0 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
8378 0 : if (res) return res;
8379 : }
8380 : }
8381 : break;
8382 : }
8383 180712 : default:;
8384 : }
8385 180712 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q21, 0))
8386 : {
8387 19899 : {
8388 19899 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q21 };
8389 19899 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
8390 19899 : if (res) return res;
8391 : }
8392 : }
8393 160813 : switch (TREE_CODE (_q21))
8394 : {
8395 160813 : case INTEGER_CST:
8396 160813 : {
8397 160813 : if (poly_int_tree_p (_p1))
8398 : {
8399 160709 : {
8400 160709 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8401 160709 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures);
8402 160709 : if (res) return res;
8403 : }
8404 : }
8405 : break;
8406 : }
8407 : default:;
8408 : }
8409 : break;
8410 : }
8411 7204687 : case PLUS_EXPR:
8412 7204687 : {
8413 7204687 : tree _q20 = TREE_OPERAND (_p0, 0);
8414 7204687 : tree _q21 = TREE_OPERAND (_p0, 1);
8415 7204687 : switch (TREE_CODE (_q20))
8416 : {
8417 3376530 : CASE_CONVERT:
8418 3376530 : {
8419 3376530 : tree _q30 = TREE_OPERAND (_q20, 0);
8420 3376530 : switch (TREE_CODE (_q30))
8421 : {
8422 5044 : case EXACT_DIV_EXPR:
8423 5044 : {
8424 5044 : tree _q40 = TREE_OPERAND (_q30, 0);
8425 5044 : tree _q41 = TREE_OPERAND (_q30, 1);
8426 5044 : switch (TREE_CODE (_q41))
8427 : {
8428 5044 : case INTEGER_CST:
8429 5044 : {
8430 5044 : if (poly_int_tree_p (_q21))
8431 : {
8432 5044 : if (poly_int_tree_p (_p1))
8433 : {
8434 5044 : {
8435 5044 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q21, _p1 };
8436 5044 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8437 5044 : if (res) return res;
8438 : }
8439 : }
8440 : }
8441 : break;
8442 : }
8443 : default:;
8444 : }
8445 : break;
8446 : }
8447 : default:;
8448 : }
8449 : break;
8450 : }
8451 0 : case EXACT_DIV_EXPR:
8452 0 : {
8453 0 : tree _q30 = TREE_OPERAND (_q20, 0);
8454 0 : tree _q31 = TREE_OPERAND (_q20, 1);
8455 0 : switch (TREE_CODE (_q31))
8456 : {
8457 0 : case INTEGER_CST:
8458 0 : {
8459 0 : if (poly_int_tree_p (_q21))
8460 : {
8461 0 : if (poly_int_tree_p (_p1))
8462 : {
8463 0 : {
8464 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
8465 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8466 0 : if (res) return res;
8467 : }
8468 : }
8469 : }
8470 : break;
8471 : }
8472 : default:;
8473 : }
8474 : break;
8475 : }
8476 : default:;
8477 : }
8478 : break;
8479 : }
8480 1119400 : case MINUS_EXPR:
8481 1119400 : {
8482 1119400 : tree _q20 = TREE_OPERAND (_p0, 0);
8483 1119400 : tree _q21 = TREE_OPERAND (_p0, 1);
8484 1119400 : switch (TREE_CODE (_q20))
8485 : {
8486 261354 : CASE_CONVERT:
8487 261354 : {
8488 261354 : tree _q30 = TREE_OPERAND (_q20, 0);
8489 261354 : switch (TREE_CODE (_q30))
8490 : {
8491 0 : case EXACT_DIV_EXPR:
8492 0 : {
8493 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8494 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8495 0 : switch (TREE_CODE (_q41))
8496 : {
8497 0 : case INTEGER_CST:
8498 0 : {
8499 0 : if (poly_int_tree_p (_q21))
8500 : {
8501 0 : if (poly_int_tree_p (_p1))
8502 : {
8503 0 : {
8504 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q21, _p1 };
8505 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8506 0 : if (res) return res;
8507 : }
8508 : }
8509 : }
8510 : break;
8511 : }
8512 : default:;
8513 : }
8514 : break;
8515 : }
8516 : default:;
8517 : }
8518 : break;
8519 : }
8520 0 : case EXACT_DIV_EXPR:
8521 0 : {
8522 0 : tree _q30 = TREE_OPERAND (_q20, 0);
8523 0 : tree _q31 = TREE_OPERAND (_q20, 1);
8524 0 : switch (TREE_CODE (_q31))
8525 : {
8526 0 : case INTEGER_CST:
8527 0 : {
8528 0 : if (poly_int_tree_p (_q21))
8529 : {
8530 0 : if (poly_int_tree_p (_p1))
8531 : {
8532 0 : {
8533 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
8534 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8535 0 : if (res) return res;
8536 : }
8537 : }
8538 : }
8539 : break;
8540 : }
8541 : default:;
8542 : }
8543 : break;
8544 : }
8545 : default:;
8546 : }
8547 : break;
8548 : }
8549 65720009 : default:;
8550 : }
8551 65720009 : if (integer_minus_onep (_p1))
8552 : {
8553 434648 : {
8554 434648 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8555 434648 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1427;
8556 434648 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1427;
8557 434648 : {
8558 434648 : tree res_op0;
8559 434648 : res_op0 = captures[0];
8560 434648 : tree _r;
8561 434648 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
8562 434648 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
8563 434648 : return _r;
8564 : }
8565 : next_after_fail1427:;
8566 : }
8567 : }
8568 65285361 : switch (TREE_CODE (_p0))
8569 : {
8570 4647518 : case MULT_EXPR:
8571 4647518 : {
8572 4647518 : tree _q20 = TREE_OPERAND (_p0, 0);
8573 4647518 : tree _q21 = TREE_OPERAND (_p0, 1);
8574 4647518 : switch (TREE_CODE (_q21))
8575 : {
8576 128460 : case INTEGER_CST:
8577 128460 : {
8578 128460 : {
8579 128460 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
8580 128460 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures);
8581 128460 : if (res) return res;
8582 : }
8583 30 : break;
8584 : }
8585 : default:;
8586 : }
8587 : break;
8588 : }
8589 65156931 : default:;
8590 : }
8591 65156931 : switch (TREE_CODE (_p1))
8592 : {
8593 23577 : case MULT_EXPR:
8594 23577 : {
8595 23577 : tree _q30 = TREE_OPERAND (_p1, 0);
8596 23577 : tree _q31 = TREE_OPERAND (_p1, 1);
8597 23577 : switch (TREE_CODE (_q31))
8598 : {
8599 17214 : case INTEGER_CST:
8600 17214 : {
8601 17214 : {
8602 17214 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q31, _p0 };
8603 17214 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures);
8604 17214 : if (res) return res;
8605 : }
8606 0 : break;
8607 : }
8608 : default:;
8609 : }
8610 : break;
8611 : }
8612 65139717 : default:;
8613 : }
8614 65139717 : switch (TREE_CODE (_p0))
8615 : {
8616 36 : case VEC_COND_EXPR:
8617 36 : {
8618 36 : tree _q20 = TREE_OPERAND (_p0, 0);
8619 36 : tree _q21 = TREE_OPERAND (_p0, 1);
8620 36 : tree _q22 = TREE_OPERAND (_p0, 2);
8621 36 : switch (TREE_CODE (_p1))
8622 : {
8623 0 : case VEC_COND_EXPR:
8624 0 : {
8625 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8626 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8627 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8628 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
8629 : {
8630 0 : {
8631 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
8632 0 : if (VECTOR_TYPE_P (type)
8633 0 : && (TREE_CODE_CLASS (MULT_EXPR) != tcc_comparison
8634 : || types_match (type, TREE_TYPE (captures[2]))
8635 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8636 : || (optimize_vectors_before_lowering_p ()
8637 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8638 : )
8639 : {
8640 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1428;
8641 0 : {
8642 0 : tree res_op0;
8643 0 : res_op0 = captures[1];
8644 0 : tree res_op1;
8645 0 : {
8646 0 : tree _o1[2], _r1;
8647 0 : _o1[0] = captures[2];
8648 0 : _o1[1] = captures[5];
8649 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8650 0 : if (EXPR_P (_r1))
8651 0 : goto next_after_fail1428;
8652 0 : res_op1 = _r1;
8653 : }
8654 0 : tree res_op2;
8655 0 : {
8656 0 : tree _o1[2], _r1;
8657 0 : _o1[0] = captures[3];
8658 0 : _o1[1] = captures[6];
8659 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8660 0 : if (EXPR_P (_r1))
8661 0 : goto next_after_fail1428;
8662 0 : res_op2 = _r1;
8663 : }
8664 0 : tree _r;
8665 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8666 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
8667 0 : return _r;
8668 : }
8669 0 : next_after_fail1428:;
8670 : }
8671 : }
8672 : }
8673 : break;
8674 : }
8675 36 : default:;
8676 : }
8677 36 : {
8678 36 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
8679 36 : if (VECTOR_TYPE_P (type)
8680 36 : && (TREE_CODE_CLASS (MULT_EXPR) != tcc_comparison
8681 : || types_match (type, TREE_TYPE (captures[2]))
8682 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8683 : || (optimize_vectors_before_lowering_p ()
8684 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8685 : )
8686 : {
8687 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1429;
8688 36 : {
8689 36 : if (! tree_invariant_p (captures[4])) goto next_after_fail1429;
8690 0 : tree res_op0;
8691 0 : res_op0 = captures[1];
8692 0 : tree res_op1;
8693 0 : {
8694 0 : tree _o1[2], _r1;
8695 0 : _o1[0] = captures[2];
8696 0 : _o1[1] = unshare_expr (captures[4]);
8697 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8698 0 : if (EXPR_P (_r1))
8699 0 : goto next_after_fail1429;
8700 0 : res_op1 = _r1;
8701 : }
8702 0 : tree res_op2;
8703 0 : {
8704 0 : tree _o1[2], _r1;
8705 0 : _o1[0] = captures[3];
8706 0 : _o1[1] = captures[4];
8707 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8708 0 : if (EXPR_P (_r1))
8709 0 : goto next_after_fail1429;
8710 0 : res_op2 = _r1;
8711 : }
8712 0 : tree _r;
8713 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8714 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
8715 0 : return _r;
8716 : }
8717 36 : next_after_fail1429:;
8718 : }
8719 : }
8720 36 : break;
8721 : }
8722 65139717 : default:;
8723 : }
8724 65139717 : switch (TREE_CODE (_p1))
8725 : {
8726 0 : case VEC_COND_EXPR:
8727 0 : {
8728 0 : tree _q30 = TREE_OPERAND (_p1, 0);
8729 0 : tree _q31 = TREE_OPERAND (_p1, 1);
8730 0 : tree _q32 = TREE_OPERAND (_p1, 2);
8731 0 : {
8732 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8733 0 : if (VECTOR_TYPE_P (type)
8734 0 : && (TREE_CODE_CLASS (MULT_EXPR) != tcc_comparison
8735 : || types_match (type, TREE_TYPE (captures[3]))
8736 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8737 : || (optimize_vectors_before_lowering_p ()
8738 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8739 : )
8740 : {
8741 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1430;
8742 0 : {
8743 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1430;
8744 0 : tree res_op0;
8745 0 : res_op0 = captures[2];
8746 0 : tree res_op1;
8747 0 : {
8748 0 : tree _o1[2], _r1;
8749 0 : _o1[0] = unshare_expr (captures[0]);
8750 0 : _o1[1] = captures[3];
8751 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8752 0 : if (EXPR_P (_r1))
8753 0 : goto next_after_fail1430;
8754 0 : res_op1 = _r1;
8755 : }
8756 0 : tree res_op2;
8757 0 : {
8758 0 : tree _o1[2], _r1;
8759 0 : _o1[0] = captures[0];
8760 0 : _o1[1] = captures[4];
8761 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8762 0 : if (EXPR_P (_r1))
8763 0 : goto next_after_fail1430;
8764 0 : res_op2 = _r1;
8765 : }
8766 0 : tree _r;
8767 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8768 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8769 0 : return _r;
8770 : }
8771 0 : next_after_fail1430:;
8772 : }
8773 : }
8774 0 : break;
8775 : }
8776 65139717 : default:;
8777 : }
8778 65139717 : switch (TREE_CODE (_p0))
8779 : {
8780 2384 : case REAL_CST:
8781 2384 : {
8782 2384 : switch (TREE_CODE (_p1))
8783 : {
8784 0 : case CALL_EXPR:
8785 0 : switch (get_call_combined_fn (_p1))
8786 : {
8787 0 : case CFN_BUILT_IN_LDEXPF:
8788 0 : if (call_expr_nargs (_p1) == 2)
8789 : {
8790 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
8791 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
8792 0 : {
8793 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
8794 0 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
8795 0 : if (res) return res;
8796 : }
8797 : }
8798 : break;
8799 0 : case CFN_BUILT_IN_LDEXPL:
8800 0 : if (call_expr_nargs (_p1) == 2)
8801 : {
8802 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
8803 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
8804 0 : {
8805 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
8806 0 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
8807 0 : if (res) return res;
8808 : }
8809 : }
8810 : break;
8811 0 : case CFN_LDEXP:
8812 0 : if (call_expr_nargs (_p1) == 2)
8813 : {
8814 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
8815 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
8816 0 : {
8817 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
8818 0 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, CFN_LDEXP);
8819 0 : if (res) return res;
8820 : }
8821 : }
8822 : break;
8823 0 : case CFN_BUILT_IN_LDEXP:
8824 0 : if (call_expr_nargs (_p1) == 2)
8825 : {
8826 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
8827 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
8828 0 : {
8829 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
8830 0 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
8831 0 : if (res) return res;
8832 : }
8833 : }
8834 : break;
8835 : default:;
8836 : }
8837 : break;
8838 : default:;
8839 : }
8840 : break;
8841 : }
8842 2427349 : case CALL_EXPR:
8843 2427349 : switch (get_call_combined_fn (_p0))
8844 : {
8845 55 : case CFN_BUILT_IN_SQRTF:
8846 55 : if (call_expr_nargs (_p0) == 1)
8847 : {
8848 55 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8849 55 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8850 : {
8851 0 : {
8852 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
8853 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF);
8854 0 : if (res) return res;
8855 : }
8856 : }
8857 55 : switch (TREE_CODE (_p1))
8858 : {
8859 13 : case CALL_EXPR:
8860 13 : switch (get_call_combined_fn (_p1))
8861 : {
8862 13 : case CFN_BUILT_IN_SQRTF:
8863 13 : if (call_expr_nargs (_p1) == 1)
8864 : {
8865 13 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8866 13 : {
8867 13 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8868 13 : if (flag_unsafe_math_optimizations
8869 : )
8870 : {
8871 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1431;
8872 13 : {
8873 13 : tree res_op0;
8874 13 : {
8875 13 : tree _o1[2], _r1;
8876 13 : _o1[0] = captures[1];
8877 13 : _o1[1] = captures[3];
8878 13 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8879 13 : res_op0 = _r1;
8880 : }
8881 13 : tree _r;
8882 13 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRTF, type, 1, res_op0);
8883 13 : if (!_r)
8884 0 : goto next_after_fail1431;
8885 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 976, __FILE__, __LINE__, true);
8886 13 : return _r;
8887 : }
8888 0 : next_after_fail1431:;
8889 : }
8890 : }
8891 : }
8892 : break;
8893 : default:;
8894 : }
8895 : break;
8896 : default:;
8897 : }
8898 : }
8899 : break;
8900 48 : case CFN_BUILT_IN_SQRTL:
8901 48 : if (call_expr_nargs (_p0) == 1)
8902 : {
8903 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8904 48 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8905 : {
8906 0 : {
8907 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
8908 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL);
8909 0 : if (res) return res;
8910 : }
8911 : }
8912 48 : switch (TREE_CODE (_p1))
8913 : {
8914 13 : case CALL_EXPR:
8915 13 : switch (get_call_combined_fn (_p1))
8916 : {
8917 13 : case CFN_BUILT_IN_SQRTL:
8918 13 : if (call_expr_nargs (_p1) == 1)
8919 : {
8920 13 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8921 13 : {
8922 13 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8923 13 : if (flag_unsafe_math_optimizations
8924 : )
8925 : {
8926 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1432;
8927 13 : {
8928 13 : tree res_op0;
8929 13 : {
8930 13 : tree _o1[2], _r1;
8931 13 : _o1[0] = captures[1];
8932 13 : _o1[1] = captures[3];
8933 13 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8934 13 : res_op0 = _r1;
8935 : }
8936 13 : tree _r;
8937 13 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRTL, type, 1, res_op0);
8938 13 : if (!_r)
8939 0 : goto next_after_fail1432;
8940 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 976, __FILE__, __LINE__, true);
8941 13 : return _r;
8942 : }
8943 0 : next_after_fail1432:;
8944 : }
8945 : }
8946 : }
8947 : break;
8948 : default:;
8949 : }
8950 : break;
8951 : default:;
8952 : }
8953 : }
8954 : break;
8955 287 : case CFN_BUILT_IN_EXP:
8956 287 : if (call_expr_nargs (_p0) == 1)
8957 : {
8958 287 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8959 287 : switch (TREE_CODE (_p1))
8960 : {
8961 81 : case CALL_EXPR:
8962 81 : switch (get_call_combined_fn (_p1))
8963 : {
8964 31 : case CFN_BUILT_IN_EXP:
8965 31 : if (call_expr_nargs (_p1) == 1)
8966 : {
8967 31 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8968 31 : {
8969 31 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8970 31 : if (flag_unsafe_math_optimizations
8971 : )
8972 : {
8973 27 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1433;
8974 27 : {
8975 27 : tree res_op0;
8976 27 : {
8977 27 : tree _o1[2], _r1;
8978 27 : _o1[0] = captures[1];
8979 27 : _o1[1] = captures[3];
8980 27 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8981 27 : res_op0 = _r1;
8982 : }
8983 27 : tree _r;
8984 27 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP, type, 1, res_op0);
8985 27 : if (!_r)
8986 0 : goto next_after_fail1433;
8987 27 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
8988 27 : return _r;
8989 : }
8990 4 : next_after_fail1433:;
8991 : }
8992 : }
8993 : }
8994 : break;
8995 0 : case CFN_BUILT_IN_POW:
8996 0 : if (call_expr_nargs (_p1) == 2)
8997 : {
8998 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8999 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9000 0 : switch (TREE_CODE (_q40))
9001 : {
9002 0 : case REAL_CST:
9003 0 : {
9004 0 : {
9005 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9006 0 : if (flag_unsafe_math_optimizations
9007 : )
9008 : {
9009 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9010 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9011 : )
9012 : {
9013 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1434;
9014 0 : {
9015 0 : tree res_op0;
9016 0 : {
9017 0 : tree _o1[2], _r1;
9018 0 : {
9019 0 : tree _o2[2], _r2;
9020 0 : {
9021 0 : tree _o3[1], _r3;
9022 0 : _o3[0] = captures[1];
9023 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
9024 0 : if (!_r3)
9025 0 : goto next_after_fail1434;
9026 0 : _o2[0] = _r3;
9027 : }
9028 0 : _o2[1] = captures[2];
9029 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9030 0 : _o1[0] = _r2;
9031 : }
9032 0 : _o1[1] = captures[4];
9033 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9034 0 : res_op0 = _r1;
9035 : }
9036 0 : tree _r;
9037 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP, type, 1, res_op0);
9038 0 : if (!_r)
9039 0 : goto next_after_fail1434;
9040 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
9041 0 : return _r;
9042 : }
9043 0 : next_after_fail1434:;
9044 : }
9045 : }
9046 : }
9047 0 : break;
9048 : }
9049 : default:;
9050 : }
9051 : }
9052 : break;
9053 : default:;
9054 : }
9055 : break;
9056 : default:;
9057 : }
9058 : }
9059 : break;
9060 123 : case CFN_BUILT_IN_POW:
9061 123 : if (call_expr_nargs (_p0) == 2)
9062 : {
9063 123 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9064 123 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
9065 123 : switch (TREE_CODE (_q20))
9066 : {
9067 1 : case REAL_CST:
9068 1 : {
9069 1 : switch (TREE_CODE (_p1))
9070 : {
9071 1 : case CALL_EXPR:
9072 1 : switch (get_call_combined_fn (_p1))
9073 : {
9074 0 : case CFN_BUILT_IN_EXP:
9075 0 : if (call_expr_nargs (_p1) == 1)
9076 : {
9077 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9078 0 : {
9079 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9080 0 : if (flag_unsafe_math_optimizations
9081 : )
9082 : {
9083 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9084 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9085 : )
9086 : {
9087 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1435;
9088 0 : {
9089 0 : tree res_op0;
9090 0 : {
9091 0 : tree _o1[2], _r1;
9092 0 : {
9093 0 : tree _o2[2], _r2;
9094 0 : {
9095 0 : tree _o3[1], _r3;
9096 0 : _o3[0] = captures[1];
9097 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
9098 0 : if (!_r3)
9099 0 : goto next_after_fail1435;
9100 0 : _o2[0] = _r3;
9101 : }
9102 0 : _o2[1] = captures[2];
9103 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9104 0 : _o1[0] = _r2;
9105 : }
9106 0 : _o1[1] = captures[4];
9107 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9108 0 : res_op0 = _r1;
9109 : }
9110 0 : tree _r;
9111 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP, type, 1, res_op0);
9112 0 : if (!_r)
9113 0 : goto next_after_fail1435;
9114 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
9115 0 : return _r;
9116 : }
9117 0 : next_after_fail1435:;
9118 : }
9119 : }
9120 : }
9121 : }
9122 : break;
9123 0 : case CFN_BUILT_IN_EXP2:
9124 0 : if (call_expr_nargs (_p1) == 1)
9125 : {
9126 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9127 0 : {
9128 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9129 0 : if (flag_unsafe_math_optimizations
9130 : )
9131 : {
9132 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9133 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9134 : )
9135 : {
9136 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1436;
9137 0 : {
9138 0 : tree res_op0;
9139 0 : {
9140 0 : tree _o1[2], _r1;
9141 0 : {
9142 0 : tree _o2[2], _r2;
9143 0 : {
9144 0 : tree _o3[1], _r3;
9145 0 : _o3[0] = captures[1];
9146 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
9147 0 : if (!_r3)
9148 0 : goto next_after_fail1436;
9149 0 : _o2[0] = _r3;
9150 : }
9151 0 : _o2[1] = captures[2];
9152 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9153 0 : _o1[0] = _r2;
9154 : }
9155 0 : _o1[1] = captures[4];
9156 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9157 0 : res_op0 = _r1;
9158 : }
9159 0 : tree _r;
9160 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2, type, 1, res_op0);
9161 0 : if (!_r)
9162 0 : goto next_after_fail1436;
9163 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
9164 0 : return _r;
9165 : }
9166 0 : next_after_fail1436:;
9167 : }
9168 : }
9169 : }
9170 : }
9171 : break;
9172 0 : case CFN_BUILT_IN_EXP10:
9173 0 : if (call_expr_nargs (_p1) == 1)
9174 : {
9175 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9176 0 : {
9177 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9178 0 : if (flag_unsafe_math_optimizations
9179 : )
9180 : {
9181 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9182 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9183 : )
9184 : {
9185 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1437;
9186 0 : {
9187 0 : tree res_op0;
9188 0 : {
9189 0 : tree _o1[2], _r1;
9190 0 : {
9191 0 : tree _o2[2], _r2;
9192 0 : {
9193 0 : tree _o3[1], _r3;
9194 0 : _o3[0] = captures[1];
9195 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
9196 0 : if (!_r3)
9197 0 : goto next_after_fail1437;
9198 0 : _o2[0] = _r3;
9199 : }
9200 0 : _o2[1] = captures[2];
9201 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9202 0 : _o1[0] = _r2;
9203 : }
9204 0 : _o1[1] = captures[4];
9205 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9206 0 : res_op0 = _r1;
9207 : }
9208 0 : tree _r;
9209 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10, type, 1, res_op0);
9210 0 : if (!_r)
9211 0 : goto next_after_fail1437;
9212 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
9213 0 : return _r;
9214 : }
9215 0 : next_after_fail1437:;
9216 : }
9217 : }
9218 : }
9219 : }
9220 : break;
9221 0 : case CFN_BUILT_IN_POW10:
9222 0 : if (call_expr_nargs (_p1) == 1)
9223 : {
9224 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9225 0 : {
9226 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9227 0 : if (flag_unsafe_math_optimizations
9228 : )
9229 : {
9230 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9231 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9232 : )
9233 : {
9234 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1438;
9235 0 : {
9236 0 : tree res_op0;
9237 0 : {
9238 0 : tree _o1[2], _r1;
9239 0 : {
9240 0 : tree _o2[2], _r2;
9241 0 : {
9242 0 : tree _o3[1], _r3;
9243 0 : _o3[0] = captures[1];
9244 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
9245 0 : if (!_r3)
9246 0 : goto next_after_fail1438;
9247 0 : _o2[0] = _r3;
9248 : }
9249 0 : _o2[1] = captures[2];
9250 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9251 0 : _o1[0] = _r2;
9252 : }
9253 0 : _o1[1] = captures[4];
9254 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9255 0 : res_op0 = _r1;
9256 : }
9257 0 : tree _r;
9258 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10, type, 1, res_op0);
9259 0 : if (!_r)
9260 0 : goto next_after_fail1438;
9261 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
9262 0 : return _r;
9263 : }
9264 0 : next_after_fail1438:;
9265 : }
9266 : }
9267 : }
9268 : }
9269 : break;
9270 : default:;
9271 : }
9272 : break;
9273 : default:;
9274 : }
9275 : break;
9276 : }
9277 123 : default:;
9278 : }
9279 123 : switch (TREE_CODE (_q21))
9280 : {
9281 12 : case REAL_CST:
9282 12 : {
9283 12 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9284 : {
9285 8 : {
9286 8 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
9287 8 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
9288 8 : if (res) return res;
9289 : }
9290 : }
9291 : break;
9292 : }
9293 : default:;
9294 : }
9295 : }
9296 : break;
9297 48 : case CFN_BUILT_IN_EXP10F:
9298 48 : if (call_expr_nargs (_p0) == 1)
9299 : {
9300 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9301 48 : switch (TREE_CODE (_p1))
9302 : {
9303 24 : case CALL_EXPR:
9304 24 : switch (get_call_combined_fn (_p1))
9305 : {
9306 24 : case CFN_BUILT_IN_EXP10F:
9307 24 : if (call_expr_nargs (_p1) == 1)
9308 : {
9309 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9310 24 : {
9311 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9312 24 : if (flag_unsafe_math_optimizations
9313 : )
9314 : {
9315 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1439;
9316 24 : {
9317 24 : tree res_op0;
9318 24 : {
9319 24 : tree _o1[2], _r1;
9320 24 : _o1[0] = captures[1];
9321 24 : _o1[1] = captures[3];
9322 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9323 24 : res_op0 = _r1;
9324 : }
9325 24 : tree _r;
9326 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10F, type, 1, res_op0);
9327 24 : if (!_r)
9328 0 : goto next_after_fail1439;
9329 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
9330 24 : return _r;
9331 : }
9332 0 : next_after_fail1439:;
9333 : }
9334 : }
9335 : }
9336 : break;
9337 0 : case CFN_BUILT_IN_POWF:
9338 0 : if (call_expr_nargs (_p1) == 2)
9339 : {
9340 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9341 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9342 0 : switch (TREE_CODE (_q40))
9343 : {
9344 0 : case REAL_CST:
9345 0 : {
9346 0 : {
9347 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9348 0 : if (flag_unsafe_math_optimizations
9349 : )
9350 : {
9351 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9352 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9353 : )
9354 : {
9355 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1440;
9356 0 : {
9357 0 : tree res_op0;
9358 0 : {
9359 0 : tree _o1[2], _r1;
9360 0 : {
9361 0 : tree _o2[2], _r2;
9362 0 : {
9363 0 : tree _o3[1], _r3;
9364 0 : _o3[0] = captures[1];
9365 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
9366 0 : if (!_r3)
9367 0 : goto next_after_fail1440;
9368 0 : _o2[0] = _r3;
9369 : }
9370 0 : _o2[1] = captures[2];
9371 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9372 0 : _o1[0] = _r2;
9373 : }
9374 0 : _o1[1] = captures[4];
9375 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9376 0 : res_op0 = _r1;
9377 : }
9378 0 : tree _r;
9379 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10F, type, 1, res_op0);
9380 0 : if (!_r)
9381 0 : goto next_after_fail1440;
9382 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
9383 0 : return _r;
9384 : }
9385 0 : next_after_fail1440:;
9386 : }
9387 : }
9388 : }
9389 0 : break;
9390 : }
9391 : default:;
9392 : }
9393 : }
9394 : break;
9395 : default:;
9396 : }
9397 : break;
9398 : default:;
9399 : }
9400 : }
9401 : break;
9402 48 : case CFN_BUILT_IN_EXP10L:
9403 48 : if (call_expr_nargs (_p0) == 1)
9404 : {
9405 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9406 48 : switch (TREE_CODE (_p1))
9407 : {
9408 24 : case CALL_EXPR:
9409 24 : switch (get_call_combined_fn (_p1))
9410 : {
9411 24 : case CFN_BUILT_IN_EXP10L:
9412 24 : if (call_expr_nargs (_p1) == 1)
9413 : {
9414 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9415 24 : {
9416 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9417 24 : if (flag_unsafe_math_optimizations
9418 : )
9419 : {
9420 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1441;
9421 24 : {
9422 24 : tree res_op0;
9423 24 : {
9424 24 : tree _o1[2], _r1;
9425 24 : _o1[0] = captures[1];
9426 24 : _o1[1] = captures[3];
9427 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9428 24 : res_op0 = _r1;
9429 : }
9430 24 : tree _r;
9431 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10L, type, 1, res_op0);
9432 24 : if (!_r)
9433 0 : goto next_after_fail1441;
9434 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
9435 24 : return _r;
9436 : }
9437 0 : next_after_fail1441:;
9438 : }
9439 : }
9440 : }
9441 : break;
9442 0 : case CFN_BUILT_IN_POWL:
9443 0 : if (call_expr_nargs (_p1) == 2)
9444 : {
9445 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9446 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9447 0 : switch (TREE_CODE (_q40))
9448 : {
9449 0 : case REAL_CST:
9450 0 : {
9451 0 : {
9452 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9453 0 : if (flag_unsafe_math_optimizations
9454 : )
9455 : {
9456 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9457 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9458 : )
9459 : {
9460 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1442;
9461 0 : {
9462 0 : tree res_op0;
9463 0 : {
9464 0 : tree _o1[2], _r1;
9465 0 : {
9466 0 : tree _o2[2], _r2;
9467 0 : {
9468 0 : tree _o3[1], _r3;
9469 0 : _o3[0] = captures[1];
9470 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
9471 0 : if (!_r3)
9472 0 : goto next_after_fail1442;
9473 0 : _o2[0] = _r3;
9474 : }
9475 0 : _o2[1] = captures[2];
9476 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9477 0 : _o1[0] = _r2;
9478 : }
9479 0 : _o1[1] = captures[4];
9480 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9481 0 : res_op0 = _r1;
9482 : }
9483 0 : tree _r;
9484 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10L, type, 1, res_op0);
9485 0 : if (!_r)
9486 0 : goto next_after_fail1442;
9487 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
9488 0 : return _r;
9489 : }
9490 0 : next_after_fail1442:;
9491 : }
9492 : }
9493 : }
9494 0 : break;
9495 : }
9496 : default:;
9497 : }
9498 : }
9499 : break;
9500 : default:;
9501 : }
9502 : break;
9503 : default:;
9504 : }
9505 : }
9506 : break;
9507 18 : case CFN_BUILT_IN_CBRT:
9508 18 : if (call_expr_nargs (_p0) == 1)
9509 : {
9510 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9511 18 : switch (TREE_CODE (_p1))
9512 : {
9513 14 : case CALL_EXPR:
9514 14 : switch (get_call_combined_fn (_p1))
9515 : {
9516 14 : case CFN_BUILT_IN_CBRT:
9517 14 : if (call_expr_nargs (_p1) == 1)
9518 : {
9519 14 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9520 14 : {
9521 14 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9522 14 : if (flag_unsafe_math_optimizations
9523 : )
9524 : {
9525 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1443;
9526 12 : {
9527 12 : tree res_op0;
9528 12 : {
9529 12 : tree _o1[2], _r1;
9530 12 : _o1[0] = captures[1];
9531 12 : _o1[1] = captures[3];
9532 12 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9533 12 : res_op0 = _r1;
9534 : }
9535 12 : tree _r;
9536 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRT, type, 1, res_op0);
9537 12 : if (!_r)
9538 0 : goto next_after_fail1443;
9539 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 976, __FILE__, __LINE__, true);
9540 12 : return _r;
9541 : }
9542 2 : next_after_fail1443:;
9543 : }
9544 : }
9545 : }
9546 : break;
9547 : default:;
9548 : }
9549 : break;
9550 : default:;
9551 : }
9552 : }
9553 : break;
9554 48 : case CFN_BUILT_IN_EXP2:
9555 48 : if (call_expr_nargs (_p0) == 1)
9556 : {
9557 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9558 48 : switch (TREE_CODE (_p1))
9559 : {
9560 24 : case CALL_EXPR:
9561 24 : switch (get_call_combined_fn (_p1))
9562 : {
9563 0 : case CFN_BUILT_IN_POW:
9564 0 : if (call_expr_nargs (_p1) == 2)
9565 : {
9566 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9567 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9568 0 : switch (TREE_CODE (_q40))
9569 : {
9570 0 : case REAL_CST:
9571 0 : {
9572 0 : {
9573 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9574 0 : if (flag_unsafe_math_optimizations
9575 : )
9576 : {
9577 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9578 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9579 : )
9580 : {
9581 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1444;
9582 0 : {
9583 0 : tree res_op0;
9584 0 : {
9585 0 : tree _o1[2], _r1;
9586 0 : {
9587 0 : tree _o2[2], _r2;
9588 0 : {
9589 0 : tree _o3[1], _r3;
9590 0 : _o3[0] = captures[1];
9591 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
9592 0 : if (!_r3)
9593 0 : goto next_after_fail1444;
9594 0 : _o2[0] = _r3;
9595 : }
9596 0 : _o2[1] = captures[2];
9597 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9598 0 : _o1[0] = _r2;
9599 : }
9600 0 : _o1[1] = captures[4];
9601 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9602 0 : res_op0 = _r1;
9603 : }
9604 0 : tree _r;
9605 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2, type, 1, res_op0);
9606 0 : if (!_r)
9607 0 : goto next_after_fail1444;
9608 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
9609 0 : return _r;
9610 : }
9611 0 : next_after_fail1444:;
9612 : }
9613 : }
9614 : }
9615 0 : break;
9616 : }
9617 : default:;
9618 : }
9619 : }
9620 : break;
9621 24 : case CFN_BUILT_IN_EXP2:
9622 24 : if (call_expr_nargs (_p1) == 1)
9623 : {
9624 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9625 24 : {
9626 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9627 24 : if (flag_unsafe_math_optimizations
9628 : )
9629 : {
9630 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1445;
9631 24 : {
9632 24 : tree res_op0;
9633 24 : {
9634 24 : tree _o1[2], _r1;
9635 24 : _o1[0] = captures[1];
9636 24 : _o1[1] = captures[3];
9637 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9638 24 : res_op0 = _r1;
9639 : }
9640 24 : tree _r;
9641 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2, type, 1, res_op0);
9642 24 : if (!_r)
9643 0 : goto next_after_fail1445;
9644 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
9645 24 : return _r;
9646 : }
9647 0 : next_after_fail1445:;
9648 : }
9649 : }
9650 : }
9651 : break;
9652 : default:;
9653 : }
9654 : break;
9655 : default:;
9656 : }
9657 : }
9658 : break;
9659 66 : case CFN_BUILT_IN_EXPF:
9660 66 : if (call_expr_nargs (_p0) == 1)
9661 : {
9662 66 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9663 66 : switch (TREE_CODE (_p1))
9664 : {
9665 36 : case CALL_EXPR:
9666 36 : switch (get_call_combined_fn (_p1))
9667 : {
9668 29 : case CFN_BUILT_IN_EXPF:
9669 29 : if (call_expr_nargs (_p1) == 1)
9670 : {
9671 29 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9672 29 : {
9673 29 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9674 29 : if (flag_unsafe_math_optimizations
9675 : )
9676 : {
9677 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1446;
9678 25 : {
9679 25 : tree res_op0;
9680 25 : {
9681 25 : tree _o1[2], _r1;
9682 25 : _o1[0] = captures[1];
9683 25 : _o1[1] = captures[3];
9684 25 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9685 25 : res_op0 = _r1;
9686 : }
9687 25 : tree _r;
9688 25 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPF, type, 1, res_op0);
9689 25 : if (!_r)
9690 0 : goto next_after_fail1446;
9691 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
9692 25 : return _r;
9693 : }
9694 4 : next_after_fail1446:;
9695 : }
9696 : }
9697 : }
9698 : break;
9699 0 : case CFN_BUILT_IN_POWF:
9700 0 : if (call_expr_nargs (_p1) == 2)
9701 : {
9702 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9703 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9704 0 : switch (TREE_CODE (_q40))
9705 : {
9706 0 : case REAL_CST:
9707 0 : {
9708 0 : {
9709 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9710 0 : if (flag_unsafe_math_optimizations
9711 : )
9712 : {
9713 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9714 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9715 : )
9716 : {
9717 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1447;
9718 0 : {
9719 0 : tree res_op0;
9720 0 : {
9721 0 : tree _o1[2], _r1;
9722 0 : {
9723 0 : tree _o2[2], _r2;
9724 0 : {
9725 0 : tree _o3[1], _r3;
9726 0 : _o3[0] = captures[1];
9727 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGF, TREE_TYPE (_o3[0]), 1, _o3[0]);
9728 0 : if (!_r3)
9729 0 : goto next_after_fail1447;
9730 0 : _o2[0] = _r3;
9731 : }
9732 0 : _o2[1] = captures[2];
9733 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9734 0 : _o1[0] = _r2;
9735 : }
9736 0 : _o1[1] = captures[4];
9737 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9738 0 : res_op0 = _r1;
9739 : }
9740 0 : tree _r;
9741 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPF, type, 1, res_op0);
9742 0 : if (!_r)
9743 0 : goto next_after_fail1447;
9744 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
9745 0 : return _r;
9746 : }
9747 0 : next_after_fail1447:;
9748 : }
9749 : }
9750 : }
9751 0 : break;
9752 : }
9753 : default:;
9754 : }
9755 : }
9756 : break;
9757 : default:;
9758 : }
9759 : break;
9760 : default:;
9761 : }
9762 : }
9763 : break;
9764 59 : case CFN_BUILT_IN_EXPL:
9765 59 : if (call_expr_nargs (_p0) == 1)
9766 : {
9767 59 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9768 59 : switch (TREE_CODE (_p1))
9769 : {
9770 29 : case CALL_EXPR:
9771 29 : switch (get_call_combined_fn (_p1))
9772 : {
9773 29 : case CFN_BUILT_IN_EXPL:
9774 29 : if (call_expr_nargs (_p1) == 1)
9775 : {
9776 29 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9777 29 : {
9778 29 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9779 29 : if (flag_unsafe_math_optimizations
9780 : )
9781 : {
9782 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1448;
9783 25 : {
9784 25 : tree res_op0;
9785 25 : {
9786 25 : tree _o1[2], _r1;
9787 25 : _o1[0] = captures[1];
9788 25 : _o1[1] = captures[3];
9789 25 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9790 25 : res_op0 = _r1;
9791 : }
9792 25 : tree _r;
9793 25 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPL, type, 1, res_op0);
9794 25 : if (!_r)
9795 0 : goto next_after_fail1448;
9796 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
9797 25 : return _r;
9798 : }
9799 4 : next_after_fail1448:;
9800 : }
9801 : }
9802 : }
9803 : break;
9804 0 : case CFN_BUILT_IN_POWL:
9805 0 : if (call_expr_nargs (_p1) == 2)
9806 : {
9807 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9808 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9809 0 : switch (TREE_CODE (_q40))
9810 : {
9811 0 : case REAL_CST:
9812 0 : {
9813 0 : {
9814 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9815 0 : if (flag_unsafe_math_optimizations
9816 : )
9817 : {
9818 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9819 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9820 : )
9821 : {
9822 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1449;
9823 0 : {
9824 0 : tree res_op0;
9825 0 : {
9826 0 : tree _o1[2], _r1;
9827 0 : {
9828 0 : tree _o2[2], _r2;
9829 0 : {
9830 0 : tree _o3[1], _r3;
9831 0 : _o3[0] = captures[1];
9832 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGL, TREE_TYPE (_o3[0]), 1, _o3[0]);
9833 0 : if (!_r3)
9834 0 : goto next_after_fail1449;
9835 0 : _o2[0] = _r3;
9836 : }
9837 0 : _o2[1] = captures[2];
9838 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9839 0 : _o1[0] = _r2;
9840 : }
9841 0 : _o1[1] = captures[4];
9842 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9843 0 : res_op0 = _r1;
9844 : }
9845 0 : tree _r;
9846 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPL, type, 1, res_op0);
9847 0 : if (!_r)
9848 0 : goto next_after_fail1449;
9849 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
9850 0 : return _r;
9851 : }
9852 0 : next_after_fail1449:;
9853 : }
9854 : }
9855 : }
9856 0 : break;
9857 : }
9858 : default:;
9859 : }
9860 : }
9861 : break;
9862 : default:;
9863 : }
9864 : break;
9865 : default:;
9866 : }
9867 : }
9868 : break;
9869 19 : case CFN_BUILT_IN_POWF:
9870 19 : if (call_expr_nargs (_p0) == 2)
9871 : {
9872 19 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9873 19 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
9874 19 : switch (TREE_CODE (_q20))
9875 : {
9876 0 : case REAL_CST:
9877 0 : {
9878 0 : switch (TREE_CODE (_p1))
9879 : {
9880 0 : case CALL_EXPR:
9881 0 : switch (get_call_combined_fn (_p1))
9882 : {
9883 0 : case CFN_BUILT_IN_EXP10F:
9884 0 : if (call_expr_nargs (_p1) == 1)
9885 : {
9886 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9887 0 : {
9888 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9889 0 : if (flag_unsafe_math_optimizations
9890 : )
9891 : {
9892 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9893 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9894 : )
9895 : {
9896 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1450;
9897 0 : {
9898 0 : tree res_op0;
9899 0 : {
9900 0 : tree _o1[2], _r1;
9901 0 : {
9902 0 : tree _o2[2], _r2;
9903 0 : {
9904 0 : tree _o3[1], _r3;
9905 0 : _o3[0] = captures[1];
9906 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
9907 0 : if (!_r3)
9908 0 : goto next_after_fail1450;
9909 0 : _o2[0] = _r3;
9910 : }
9911 0 : _o2[1] = captures[2];
9912 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9913 0 : _o1[0] = _r2;
9914 : }
9915 0 : _o1[1] = captures[4];
9916 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9917 0 : res_op0 = _r1;
9918 : }
9919 0 : tree _r;
9920 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10F, type, 1, res_op0);
9921 0 : if (!_r)
9922 0 : goto next_after_fail1450;
9923 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
9924 0 : return _r;
9925 : }
9926 0 : next_after_fail1450:;
9927 : }
9928 : }
9929 : }
9930 : }
9931 : break;
9932 0 : case CFN_BUILT_IN_EXPF:
9933 0 : if (call_expr_nargs (_p1) == 1)
9934 : {
9935 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9936 0 : {
9937 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9938 0 : if (flag_unsafe_math_optimizations
9939 : )
9940 : {
9941 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9942 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9943 : )
9944 : {
9945 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1451;
9946 0 : {
9947 0 : tree res_op0;
9948 0 : {
9949 0 : tree _o1[2], _r1;
9950 0 : {
9951 0 : tree _o2[2], _r2;
9952 0 : {
9953 0 : tree _o3[1], _r3;
9954 0 : _o3[0] = captures[1];
9955 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGF, TREE_TYPE (_o3[0]), 1, _o3[0]);
9956 0 : if (!_r3)
9957 0 : goto next_after_fail1451;
9958 0 : _o2[0] = _r3;
9959 : }
9960 0 : _o2[1] = captures[2];
9961 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9962 0 : _o1[0] = _r2;
9963 : }
9964 0 : _o1[1] = captures[4];
9965 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9966 0 : res_op0 = _r1;
9967 : }
9968 0 : tree _r;
9969 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPF, type, 1, res_op0);
9970 0 : if (!_r)
9971 0 : goto next_after_fail1451;
9972 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
9973 0 : return _r;
9974 : }
9975 0 : next_after_fail1451:;
9976 : }
9977 : }
9978 : }
9979 : }
9980 : break;
9981 0 : case CFN_BUILT_IN_POW10F:
9982 0 : if (call_expr_nargs (_p1) == 1)
9983 : {
9984 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9985 0 : {
9986 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9987 0 : if (flag_unsafe_math_optimizations
9988 : )
9989 : {
9990 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9991 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9992 : )
9993 : {
9994 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1452;
9995 0 : {
9996 0 : tree res_op0;
9997 0 : {
9998 0 : tree _o1[2], _r1;
9999 0 : {
10000 0 : tree _o2[2], _r2;
10001 0 : {
10002 0 : tree _o3[1], _r3;
10003 0 : _o3[0] = captures[1];
10004 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
10005 0 : if (!_r3)
10006 0 : goto next_after_fail1452;
10007 0 : _o2[0] = _r3;
10008 : }
10009 0 : _o2[1] = captures[2];
10010 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10011 0 : _o1[0] = _r2;
10012 : }
10013 0 : _o1[1] = captures[4];
10014 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10015 0 : res_op0 = _r1;
10016 : }
10017 0 : tree _r;
10018 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10F, type, 1, res_op0);
10019 0 : if (!_r)
10020 0 : goto next_after_fail1452;
10021 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
10022 0 : return _r;
10023 : }
10024 0 : next_after_fail1452:;
10025 : }
10026 : }
10027 : }
10028 : }
10029 : break;
10030 0 : case CFN_BUILT_IN_EXP2F:
10031 0 : if (call_expr_nargs (_p1) == 1)
10032 : {
10033 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10034 0 : {
10035 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10036 0 : if (flag_unsafe_math_optimizations
10037 : )
10038 : {
10039 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10040 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10041 : )
10042 : {
10043 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1453;
10044 0 : {
10045 0 : tree res_op0;
10046 0 : {
10047 0 : tree _o1[2], _r1;
10048 0 : {
10049 0 : tree _o2[2], _r2;
10050 0 : {
10051 0 : tree _o3[1], _r3;
10052 0 : _o3[0] = captures[1];
10053 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2F, TREE_TYPE (_o3[0]), 1, _o3[0]);
10054 0 : if (!_r3)
10055 0 : goto next_after_fail1453;
10056 0 : _o2[0] = _r3;
10057 : }
10058 0 : _o2[1] = captures[2];
10059 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10060 0 : _o1[0] = _r2;
10061 : }
10062 0 : _o1[1] = captures[4];
10063 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10064 0 : res_op0 = _r1;
10065 : }
10066 0 : tree _r;
10067 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2F, type, 1, res_op0);
10068 0 : if (!_r)
10069 0 : goto next_after_fail1453;
10070 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
10071 0 : return _r;
10072 : }
10073 0 : next_after_fail1453:;
10074 : }
10075 : }
10076 : }
10077 : }
10078 : break;
10079 : default:;
10080 : }
10081 : break;
10082 : default:;
10083 : }
10084 : break;
10085 : }
10086 19 : default:;
10087 : }
10088 19 : switch (TREE_CODE (_q21))
10089 : {
10090 5 : case REAL_CST:
10091 5 : {
10092 5 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10093 : {
10094 0 : {
10095 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
10096 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
10097 0 : if (res) return res;
10098 : }
10099 : }
10100 : break;
10101 : }
10102 : default:;
10103 : }
10104 : }
10105 : break;
10106 12 : case CFN_BUILT_IN_POWL:
10107 12 : if (call_expr_nargs (_p0) == 2)
10108 : {
10109 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10110 12 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10111 12 : switch (TREE_CODE (_q20))
10112 : {
10113 0 : case REAL_CST:
10114 0 : {
10115 0 : switch (TREE_CODE (_p1))
10116 : {
10117 0 : case CALL_EXPR:
10118 0 : switch (get_call_combined_fn (_p1))
10119 : {
10120 0 : case CFN_BUILT_IN_EXP10L:
10121 0 : if (call_expr_nargs (_p1) == 1)
10122 : {
10123 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10124 0 : {
10125 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10126 0 : if (flag_unsafe_math_optimizations
10127 : )
10128 : {
10129 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10130 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10131 : )
10132 : {
10133 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1454;
10134 0 : {
10135 0 : tree res_op0;
10136 0 : {
10137 0 : tree _o1[2], _r1;
10138 0 : {
10139 0 : tree _o2[2], _r2;
10140 0 : {
10141 0 : tree _o3[1], _r3;
10142 0 : _o3[0] = captures[1];
10143 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
10144 0 : if (!_r3)
10145 0 : goto next_after_fail1454;
10146 0 : _o2[0] = _r3;
10147 : }
10148 0 : _o2[1] = captures[2];
10149 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10150 0 : _o1[0] = _r2;
10151 : }
10152 0 : _o1[1] = captures[4];
10153 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10154 0 : res_op0 = _r1;
10155 : }
10156 0 : tree _r;
10157 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10L, type, 1, res_op0);
10158 0 : if (!_r)
10159 0 : goto next_after_fail1454;
10160 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
10161 0 : return _r;
10162 : }
10163 0 : next_after_fail1454:;
10164 : }
10165 : }
10166 : }
10167 : }
10168 : break;
10169 0 : case CFN_BUILT_IN_EXPL:
10170 0 : if (call_expr_nargs (_p1) == 1)
10171 : {
10172 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10173 0 : {
10174 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10175 0 : if (flag_unsafe_math_optimizations
10176 : )
10177 : {
10178 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10179 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10180 : )
10181 : {
10182 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1455;
10183 0 : {
10184 0 : tree res_op0;
10185 0 : {
10186 0 : tree _o1[2], _r1;
10187 0 : {
10188 0 : tree _o2[2], _r2;
10189 0 : {
10190 0 : tree _o3[1], _r3;
10191 0 : _o3[0] = captures[1];
10192 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGL, TREE_TYPE (_o3[0]), 1, _o3[0]);
10193 0 : if (!_r3)
10194 0 : goto next_after_fail1455;
10195 0 : _o2[0] = _r3;
10196 : }
10197 0 : _o2[1] = captures[2];
10198 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10199 0 : _o1[0] = _r2;
10200 : }
10201 0 : _o1[1] = captures[4];
10202 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10203 0 : res_op0 = _r1;
10204 : }
10205 0 : tree _r;
10206 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPL, type, 1, res_op0);
10207 0 : if (!_r)
10208 0 : goto next_after_fail1455;
10209 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
10210 0 : return _r;
10211 : }
10212 0 : next_after_fail1455:;
10213 : }
10214 : }
10215 : }
10216 : }
10217 : break;
10218 0 : case CFN_BUILT_IN_POW10L:
10219 0 : if (call_expr_nargs (_p1) == 1)
10220 : {
10221 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10222 0 : {
10223 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10224 0 : if (flag_unsafe_math_optimizations
10225 : )
10226 : {
10227 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10228 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10229 : )
10230 : {
10231 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1456;
10232 0 : {
10233 0 : tree res_op0;
10234 0 : {
10235 0 : tree _o1[2], _r1;
10236 0 : {
10237 0 : tree _o2[2], _r2;
10238 0 : {
10239 0 : tree _o3[1], _r3;
10240 0 : _o3[0] = captures[1];
10241 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
10242 0 : if (!_r3)
10243 0 : goto next_after_fail1456;
10244 0 : _o2[0] = _r3;
10245 : }
10246 0 : _o2[1] = captures[2];
10247 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10248 0 : _o1[0] = _r2;
10249 : }
10250 0 : _o1[1] = captures[4];
10251 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10252 0 : res_op0 = _r1;
10253 : }
10254 0 : tree _r;
10255 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10L, type, 1, res_op0);
10256 0 : if (!_r)
10257 0 : goto next_after_fail1456;
10258 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
10259 0 : return _r;
10260 : }
10261 0 : next_after_fail1456:;
10262 : }
10263 : }
10264 : }
10265 : }
10266 : break;
10267 0 : case CFN_BUILT_IN_EXP2L:
10268 0 : if (call_expr_nargs (_p1) == 1)
10269 : {
10270 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10271 0 : {
10272 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10273 0 : if (flag_unsafe_math_optimizations
10274 : )
10275 : {
10276 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10277 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10278 : )
10279 : {
10280 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1457;
10281 0 : {
10282 0 : tree res_op0;
10283 0 : {
10284 0 : tree _o1[2], _r1;
10285 0 : {
10286 0 : tree _o2[2], _r2;
10287 0 : {
10288 0 : tree _o3[1], _r3;
10289 0 : _o3[0] = captures[1];
10290 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2L, TREE_TYPE (_o3[0]), 1, _o3[0]);
10291 0 : if (!_r3)
10292 0 : goto next_after_fail1457;
10293 0 : _o2[0] = _r3;
10294 : }
10295 0 : _o2[1] = captures[2];
10296 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10297 0 : _o1[0] = _r2;
10298 : }
10299 0 : _o1[1] = captures[4];
10300 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10301 0 : res_op0 = _r1;
10302 : }
10303 0 : tree _r;
10304 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2L, type, 1, res_op0);
10305 0 : if (!_r)
10306 0 : goto next_after_fail1457;
10307 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
10308 0 : return _r;
10309 : }
10310 0 : next_after_fail1457:;
10311 : }
10312 : }
10313 : }
10314 : }
10315 : break;
10316 : default:;
10317 : }
10318 : break;
10319 : default:;
10320 : }
10321 : break;
10322 : }
10323 12 : default:;
10324 : }
10325 12 : switch (TREE_CODE (_q21))
10326 : {
10327 0 : case REAL_CST:
10328 0 : {
10329 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10330 : {
10331 0 : {
10332 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
10333 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
10334 0 : if (res) return res;
10335 : }
10336 : }
10337 : break;
10338 : }
10339 : default:;
10340 : }
10341 : }
10342 : break;
10343 19122 : case CFN_BUILT_IN_SQRT:
10344 19122 : if (call_expr_nargs (_p0) == 1)
10345 : {
10346 19122 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10347 19122 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10348 : {
10349 2 : {
10350 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10351 2 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT);
10352 2 : if (res) return res;
10353 : }
10354 : }
10355 19120 : switch (TREE_CODE (_p1))
10356 : {
10357 100 : case CALL_EXPR:
10358 100 : switch (get_call_combined_fn (_p1))
10359 : {
10360 37 : case CFN_BUILT_IN_SQRT:
10361 37 : if (call_expr_nargs (_p1) == 1)
10362 : {
10363 37 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10364 37 : {
10365 37 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10366 37 : if (flag_unsafe_math_optimizations
10367 : )
10368 : {
10369 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1458;
10370 15 : {
10371 15 : tree res_op0;
10372 15 : {
10373 15 : tree _o1[2], _r1;
10374 15 : _o1[0] = captures[1];
10375 15 : _o1[1] = captures[3];
10376 15 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10377 15 : res_op0 = _r1;
10378 : }
10379 15 : tree _r;
10380 15 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRT, type, 1, res_op0);
10381 15 : if (!_r)
10382 0 : goto next_after_fail1458;
10383 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 976, __FILE__, __LINE__, true);
10384 15 : return _r;
10385 : }
10386 22 : next_after_fail1458:;
10387 : }
10388 : }
10389 : }
10390 : break;
10391 : default:;
10392 : }
10393 : break;
10394 : default:;
10395 : }
10396 : }
10397 : break;
10398 5 : case CFN_BUILT_IN_LDEXPF:
10399 5 : if (call_expr_nargs (_p0) == 2)
10400 : {
10401 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10402 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10403 5 : switch (TREE_CODE (_p1))
10404 : {
10405 2 : case REAL_CST:
10406 2 : {
10407 2 : {
10408 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10409 2 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
10410 2 : if (res) return res;
10411 : }
10412 1 : break;
10413 : }
10414 4 : default:;
10415 : }
10416 4 : switch (TREE_CODE (_q20))
10417 : {
10418 3 : case REAL_CST:
10419 3 : {
10420 3 : {
10421 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10422 3 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
10423 3 : if (res) return res;
10424 : }
10425 0 : break;
10426 : }
10427 : default:;
10428 : }
10429 : }
10430 : break;
10431 5 : case CFN_BUILT_IN_LDEXPL:
10432 5 : if (call_expr_nargs (_p0) == 2)
10433 : {
10434 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10435 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10436 5 : switch (TREE_CODE (_p1))
10437 : {
10438 2 : case REAL_CST:
10439 2 : {
10440 2 : {
10441 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10442 2 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
10443 2 : if (res) return res;
10444 : }
10445 1 : break;
10446 : }
10447 4 : default:;
10448 : }
10449 4 : switch (TREE_CODE (_q20))
10450 : {
10451 3 : case REAL_CST:
10452 3 : {
10453 3 : {
10454 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10455 3 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
10456 3 : if (res) return res;
10457 : }
10458 0 : break;
10459 : }
10460 : default:;
10461 : }
10462 : }
10463 : break;
10464 4 : case CFN_BUILT_IN_SQRTF128:
10465 4 : if (call_expr_nargs (_p0) == 1)
10466 : {
10467 4 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10468 4 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10469 : {
10470 0 : {
10471 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10472 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF128);
10473 0 : if (res) return res;
10474 : }
10475 : }
10476 : }
10477 : break;
10478 0 : case CFN_BUILT_IN_SQRTF32X:
10479 0 : if (call_expr_nargs (_p0) == 1)
10480 : {
10481 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10482 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10483 : {
10484 0 : {
10485 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10486 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF32X);
10487 0 : if (res) return res;
10488 : }
10489 : }
10490 : }
10491 : break;
10492 0 : case CFN_BUILT_IN_SQRTF64X:
10493 0 : if (call_expr_nargs (_p0) == 1)
10494 : {
10495 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10496 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10497 : {
10498 0 : {
10499 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10500 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF64X);
10501 0 : if (res) return res;
10502 : }
10503 : }
10504 : }
10505 : break;
10506 0 : case CFN_BUILT_IN_SQRTF16:
10507 0 : if (call_expr_nargs (_p0) == 1)
10508 : {
10509 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10510 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10511 : {
10512 0 : {
10513 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10514 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF16);
10515 0 : if (res) return res;
10516 : }
10517 : }
10518 : }
10519 : break;
10520 0 : case CFN_BUILT_IN_SQRTF32:
10521 0 : if (call_expr_nargs (_p0) == 1)
10522 : {
10523 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10524 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10525 : {
10526 0 : {
10527 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10528 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF32);
10529 0 : if (res) return res;
10530 : }
10531 : }
10532 : }
10533 : break;
10534 0 : case CFN_BUILT_IN_SQRTF64:
10535 0 : if (call_expr_nargs (_p0) == 1)
10536 : {
10537 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10538 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10539 : {
10540 0 : {
10541 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10542 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF64);
10543 0 : if (res) return res;
10544 : }
10545 : }
10546 : }
10547 : break;
10548 0 : case CFN_EXP:
10549 0 : if (call_expr_nargs (_p0) == 1)
10550 : {
10551 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10552 0 : switch (TREE_CODE (_p1))
10553 : {
10554 0 : case CALL_EXPR:
10555 0 : switch (get_call_combined_fn (_p1))
10556 : {
10557 0 : case CFN_EXP:
10558 0 : if (call_expr_nargs (_p1) == 1)
10559 : {
10560 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10561 0 : {
10562 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10563 0 : if (flag_unsafe_math_optimizations
10564 : )
10565 : {
10566 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1459;
10567 0 : {
10568 0 : tree res_op0;
10569 0 : {
10570 0 : tree _o1[2], _r1;
10571 0 : _o1[0] = captures[1];
10572 0 : _o1[1] = captures[3];
10573 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10574 0 : res_op0 = _r1;
10575 : }
10576 0 : tree _r;
10577 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP, type, 1, res_op0);
10578 0 : if (!_r)
10579 0 : goto next_after_fail1459;
10580 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
10581 0 : return _r;
10582 : }
10583 0 : next_after_fail1459:;
10584 : }
10585 : }
10586 : }
10587 : break;
10588 0 : case CFN_POW:
10589 0 : if (call_expr_nargs (_p1) == 2)
10590 : {
10591 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10592 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
10593 0 : switch (TREE_CODE (_q40))
10594 : {
10595 0 : case REAL_CST:
10596 0 : {
10597 0 : {
10598 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
10599 0 : if (flag_unsafe_math_optimizations
10600 : )
10601 : {
10602 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10603 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10604 : )
10605 : {
10606 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1460;
10607 0 : {
10608 0 : tree res_op0;
10609 0 : {
10610 0 : tree _o1[2], _r1;
10611 0 : {
10612 0 : tree _o2[2], _r2;
10613 0 : {
10614 0 : tree _o3[1], _r3;
10615 0 : _o3[0] = captures[1];
10616 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
10617 0 : if (!_r3)
10618 0 : goto next_after_fail1460;
10619 0 : _o2[0] = _r3;
10620 : }
10621 0 : _o2[1] = captures[2];
10622 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10623 0 : _o1[0] = _r2;
10624 : }
10625 0 : _o1[1] = captures[4];
10626 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10627 0 : res_op0 = _r1;
10628 : }
10629 0 : tree _r;
10630 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP, type, 1, res_op0);
10631 0 : if (!_r)
10632 0 : goto next_after_fail1460;
10633 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
10634 0 : return _r;
10635 : }
10636 0 : next_after_fail1460:;
10637 : }
10638 : }
10639 : }
10640 0 : break;
10641 : }
10642 : default:;
10643 : }
10644 : }
10645 : break;
10646 : default:;
10647 : }
10648 : break;
10649 : default:;
10650 : }
10651 : }
10652 : break;
10653 0 : case CFN_POW:
10654 0 : if (call_expr_nargs (_p0) == 2)
10655 : {
10656 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10657 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10658 0 : switch (TREE_CODE (_q20))
10659 : {
10660 0 : case REAL_CST:
10661 0 : {
10662 0 : switch (TREE_CODE (_p1))
10663 : {
10664 0 : case CALL_EXPR:
10665 0 : switch (get_call_combined_fn (_p1))
10666 : {
10667 0 : case CFN_EXP:
10668 0 : if (call_expr_nargs (_p1) == 1)
10669 : {
10670 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10671 0 : {
10672 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10673 0 : if (flag_unsafe_math_optimizations
10674 : )
10675 : {
10676 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10677 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10678 : )
10679 : {
10680 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1461;
10681 0 : {
10682 0 : tree res_op0;
10683 0 : {
10684 0 : tree _o1[2], _r1;
10685 0 : {
10686 0 : tree _o2[2], _r2;
10687 0 : {
10688 0 : tree _o3[1], _r3;
10689 0 : _o3[0] = captures[1];
10690 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
10691 0 : if (!_r3)
10692 0 : goto next_after_fail1461;
10693 0 : _o2[0] = _r3;
10694 : }
10695 0 : _o2[1] = captures[2];
10696 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10697 0 : _o1[0] = _r2;
10698 : }
10699 0 : _o1[1] = captures[4];
10700 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10701 0 : res_op0 = _r1;
10702 : }
10703 0 : tree _r;
10704 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP, type, 1, res_op0);
10705 0 : if (!_r)
10706 0 : goto next_after_fail1461;
10707 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
10708 0 : return _r;
10709 : }
10710 0 : next_after_fail1461:;
10711 : }
10712 : }
10713 : }
10714 : }
10715 : break;
10716 0 : case CFN_EXP2:
10717 0 : if (call_expr_nargs (_p1) == 1)
10718 : {
10719 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10720 0 : {
10721 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10722 0 : if (flag_unsafe_math_optimizations
10723 : )
10724 : {
10725 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10726 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10727 : )
10728 : {
10729 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1462;
10730 0 : {
10731 0 : tree res_op0;
10732 0 : {
10733 0 : tree _o1[2], _r1;
10734 0 : {
10735 0 : tree _o2[2], _r2;
10736 0 : {
10737 0 : tree _o3[1], _r3;
10738 0 : _o3[0] = captures[1];
10739 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
10740 0 : if (!_r3)
10741 0 : goto next_after_fail1462;
10742 0 : _o2[0] = _r3;
10743 : }
10744 0 : _o2[1] = captures[2];
10745 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10746 0 : _o1[0] = _r2;
10747 : }
10748 0 : _o1[1] = captures[4];
10749 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10750 0 : res_op0 = _r1;
10751 : }
10752 0 : tree _r;
10753 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP2, type, 1, res_op0);
10754 0 : if (!_r)
10755 0 : goto next_after_fail1462;
10756 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
10757 0 : return _r;
10758 : }
10759 0 : next_after_fail1462:;
10760 : }
10761 : }
10762 : }
10763 : }
10764 : break;
10765 0 : case CFN_EXP10:
10766 0 : if (call_expr_nargs (_p1) == 1)
10767 : {
10768 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10769 0 : {
10770 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10771 0 : if (flag_unsafe_math_optimizations
10772 : )
10773 : {
10774 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10775 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10776 : )
10777 : {
10778 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1463;
10779 0 : {
10780 0 : tree res_op0;
10781 0 : {
10782 0 : tree _o1[2], _r1;
10783 0 : {
10784 0 : tree _o2[2], _r2;
10785 0 : {
10786 0 : tree _o3[1], _r3;
10787 0 : _o3[0] = captures[1];
10788 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
10789 0 : if (!_r3)
10790 0 : goto next_after_fail1463;
10791 0 : _o2[0] = _r3;
10792 : }
10793 0 : _o2[1] = captures[2];
10794 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10795 0 : _o1[0] = _r2;
10796 : }
10797 0 : _o1[1] = captures[4];
10798 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10799 0 : res_op0 = _r1;
10800 : }
10801 0 : tree _r;
10802 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP10, type, 1, res_op0);
10803 0 : if (!_r)
10804 0 : goto next_after_fail1463;
10805 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
10806 0 : return _r;
10807 : }
10808 0 : next_after_fail1463:;
10809 : }
10810 : }
10811 : }
10812 : }
10813 : break;
10814 : default:;
10815 : }
10816 : break;
10817 : default:;
10818 : }
10819 : break;
10820 : }
10821 0 : default:;
10822 : }
10823 0 : switch (TREE_CODE (_q21))
10824 : {
10825 0 : case REAL_CST:
10826 0 : {
10827 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10828 : {
10829 0 : {
10830 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
10831 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_POW);
10832 0 : if (res) return res;
10833 : }
10834 : }
10835 : break;
10836 : }
10837 : default:;
10838 : }
10839 : }
10840 : break;
10841 24 : case CFN_BUILT_IN_POW10F:
10842 24 : if (call_expr_nargs (_p0) == 1)
10843 : {
10844 24 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10845 24 : switch (TREE_CODE (_p1))
10846 : {
10847 12 : case CALL_EXPR:
10848 12 : switch (get_call_combined_fn (_p1))
10849 : {
10850 0 : case CFN_BUILT_IN_POWF:
10851 0 : if (call_expr_nargs (_p1) == 2)
10852 : {
10853 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10854 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
10855 0 : switch (TREE_CODE (_q40))
10856 : {
10857 0 : case REAL_CST:
10858 0 : {
10859 0 : {
10860 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
10861 0 : if (flag_unsafe_math_optimizations
10862 : )
10863 : {
10864 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10865 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10866 : )
10867 : {
10868 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1464;
10869 0 : {
10870 0 : tree res_op0;
10871 0 : {
10872 0 : tree _o1[2], _r1;
10873 0 : {
10874 0 : tree _o2[2], _r2;
10875 0 : {
10876 0 : tree _o3[1], _r3;
10877 0 : _o3[0] = captures[1];
10878 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
10879 0 : if (!_r3)
10880 0 : goto next_after_fail1464;
10881 0 : _o2[0] = _r3;
10882 : }
10883 0 : _o2[1] = captures[2];
10884 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10885 0 : _o1[0] = _r2;
10886 : }
10887 0 : _o1[1] = captures[4];
10888 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10889 0 : res_op0 = _r1;
10890 : }
10891 0 : tree _r;
10892 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10F, type, 1, res_op0);
10893 0 : if (!_r)
10894 0 : goto next_after_fail1464;
10895 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
10896 0 : return _r;
10897 : }
10898 0 : next_after_fail1464:;
10899 : }
10900 : }
10901 : }
10902 0 : break;
10903 : }
10904 : default:;
10905 : }
10906 : }
10907 : break;
10908 12 : case CFN_BUILT_IN_POW10F:
10909 12 : if (call_expr_nargs (_p1) == 1)
10910 : {
10911 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10912 12 : {
10913 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10914 12 : if (flag_unsafe_math_optimizations
10915 : )
10916 : {
10917 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1465;
10918 12 : {
10919 12 : tree res_op0;
10920 12 : {
10921 12 : tree _o1[2], _r1;
10922 12 : _o1[0] = captures[1];
10923 12 : _o1[1] = captures[3];
10924 12 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10925 12 : res_op0 = _r1;
10926 : }
10927 12 : tree _r;
10928 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10F, type, 1, res_op0);
10929 12 : if (!_r)
10930 12 : goto next_after_fail1465;
10931 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
10932 0 : return _r;
10933 : }
10934 12 : next_after_fail1465:;
10935 : }
10936 : }
10937 : }
10938 : break;
10939 : default:;
10940 : }
10941 : break;
10942 : default:;
10943 : }
10944 : }
10945 : break;
10946 24 : case CFN_BUILT_IN_POW10L:
10947 24 : if (call_expr_nargs (_p0) == 1)
10948 : {
10949 24 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10950 24 : switch (TREE_CODE (_p1))
10951 : {
10952 12 : case CALL_EXPR:
10953 12 : switch (get_call_combined_fn (_p1))
10954 : {
10955 0 : case CFN_BUILT_IN_POWL:
10956 0 : if (call_expr_nargs (_p1) == 2)
10957 : {
10958 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10959 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
10960 0 : switch (TREE_CODE (_q40))
10961 : {
10962 0 : case REAL_CST:
10963 0 : {
10964 0 : {
10965 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
10966 0 : if (flag_unsafe_math_optimizations
10967 : )
10968 : {
10969 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10970 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10971 : )
10972 : {
10973 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1466;
10974 0 : {
10975 0 : tree res_op0;
10976 0 : {
10977 0 : tree _o1[2], _r1;
10978 0 : {
10979 0 : tree _o2[2], _r2;
10980 0 : {
10981 0 : tree _o3[1], _r3;
10982 0 : _o3[0] = captures[1];
10983 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
10984 0 : if (!_r3)
10985 0 : goto next_after_fail1466;
10986 0 : _o2[0] = _r3;
10987 : }
10988 0 : _o2[1] = captures[2];
10989 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10990 0 : _o1[0] = _r2;
10991 : }
10992 0 : _o1[1] = captures[4];
10993 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10994 0 : res_op0 = _r1;
10995 : }
10996 0 : tree _r;
10997 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10L, type, 1, res_op0);
10998 0 : if (!_r)
10999 0 : goto next_after_fail1466;
11000 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
11001 0 : return _r;
11002 : }
11003 0 : next_after_fail1466:;
11004 : }
11005 : }
11006 : }
11007 0 : break;
11008 : }
11009 : default:;
11010 : }
11011 : }
11012 : break;
11013 12 : case CFN_BUILT_IN_POW10L:
11014 12 : if (call_expr_nargs (_p1) == 1)
11015 : {
11016 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11017 12 : {
11018 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11019 12 : if (flag_unsafe_math_optimizations
11020 : )
11021 : {
11022 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1467;
11023 12 : {
11024 12 : tree res_op0;
11025 12 : {
11026 12 : tree _o1[2], _r1;
11027 12 : _o1[0] = captures[1];
11028 12 : _o1[1] = captures[3];
11029 12 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11030 12 : res_op0 = _r1;
11031 : }
11032 12 : tree _r;
11033 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10L, type, 1, res_op0);
11034 12 : if (!_r)
11035 12 : goto next_after_fail1467;
11036 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
11037 0 : return _r;
11038 : }
11039 12 : next_after_fail1467:;
11040 : }
11041 : }
11042 : }
11043 : break;
11044 : default:;
11045 : }
11046 : break;
11047 : default:;
11048 : }
11049 : }
11050 : break;
11051 0 : case CFN_BUILT_IN_SQRTF128X:
11052 0 : if (call_expr_nargs (_p0) == 1)
11053 : {
11054 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11055 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11056 : {
11057 0 : {
11058 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
11059 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF128X);
11060 0 : if (res) return res;
11061 : }
11062 : }
11063 : }
11064 : break;
11065 0 : case CFN_EXP2:
11066 0 : if (call_expr_nargs (_p0) == 1)
11067 : {
11068 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11069 0 : switch (TREE_CODE (_p1))
11070 : {
11071 0 : case CALL_EXPR:
11072 0 : switch (get_call_combined_fn (_p1))
11073 : {
11074 0 : case CFN_POW:
11075 0 : if (call_expr_nargs (_p1) == 2)
11076 : {
11077 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11078 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11079 0 : switch (TREE_CODE (_q40))
11080 : {
11081 0 : case REAL_CST:
11082 0 : {
11083 0 : {
11084 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11085 0 : if (flag_unsafe_math_optimizations
11086 : )
11087 : {
11088 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11089 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11090 : )
11091 : {
11092 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1468;
11093 0 : {
11094 0 : tree res_op0;
11095 0 : {
11096 0 : tree _o1[2], _r1;
11097 0 : {
11098 0 : tree _o2[2], _r2;
11099 0 : {
11100 0 : tree _o3[1], _r3;
11101 0 : _o3[0] = captures[1];
11102 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
11103 0 : if (!_r3)
11104 0 : goto next_after_fail1468;
11105 0 : _o2[0] = _r3;
11106 : }
11107 0 : _o2[1] = captures[2];
11108 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11109 0 : _o1[0] = _r2;
11110 : }
11111 0 : _o1[1] = captures[4];
11112 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11113 0 : res_op0 = _r1;
11114 : }
11115 0 : tree _r;
11116 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP2, type, 1, res_op0);
11117 0 : if (!_r)
11118 0 : goto next_after_fail1468;
11119 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
11120 0 : return _r;
11121 : }
11122 0 : next_after_fail1468:;
11123 : }
11124 : }
11125 : }
11126 0 : break;
11127 : }
11128 : default:;
11129 : }
11130 : }
11131 : break;
11132 0 : case CFN_EXP2:
11133 0 : if (call_expr_nargs (_p1) == 1)
11134 : {
11135 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11136 0 : {
11137 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11138 0 : if (flag_unsafe_math_optimizations
11139 : )
11140 : {
11141 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1469;
11142 0 : {
11143 0 : tree res_op0;
11144 0 : {
11145 0 : tree _o1[2], _r1;
11146 0 : _o1[0] = captures[1];
11147 0 : _o1[1] = captures[3];
11148 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11149 0 : res_op0 = _r1;
11150 : }
11151 0 : tree _r;
11152 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP2, type, 1, res_op0);
11153 0 : if (!_r)
11154 0 : goto next_after_fail1469;
11155 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
11156 0 : return _r;
11157 : }
11158 0 : next_after_fail1469:;
11159 : }
11160 : }
11161 : }
11162 : break;
11163 : default:;
11164 : }
11165 : break;
11166 : default:;
11167 : }
11168 : }
11169 : break;
11170 0 : case CFN_SQRT:
11171 0 : if (call_expr_nargs (_p0) == 1)
11172 : {
11173 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11174 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11175 : {
11176 0 : {
11177 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
11178 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, CFN_SQRT);
11179 0 : if (res) return res;
11180 : }
11181 : }
11182 0 : switch (TREE_CODE (_p1))
11183 : {
11184 0 : case CALL_EXPR:
11185 0 : switch (get_call_combined_fn (_p1))
11186 : {
11187 0 : case CFN_SQRT:
11188 0 : if (call_expr_nargs (_p1) == 1)
11189 : {
11190 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11191 0 : {
11192 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11193 0 : if (flag_unsafe_math_optimizations
11194 : )
11195 : {
11196 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1470;
11197 0 : {
11198 0 : tree res_op0;
11199 0 : {
11200 0 : tree _o1[2], _r1;
11201 0 : _o1[0] = captures[1];
11202 0 : _o1[1] = captures[3];
11203 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11204 0 : res_op0 = _r1;
11205 : }
11206 0 : tree _r;
11207 0 : _r = maybe_build_call_expr_loc (loc, CFN_SQRT, type, 1, res_op0);
11208 0 : if (!_r)
11209 0 : goto next_after_fail1470;
11210 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 976, __FILE__, __LINE__, true);
11211 0 : return _r;
11212 : }
11213 0 : next_after_fail1470:;
11214 : }
11215 : }
11216 : }
11217 : break;
11218 : default:;
11219 : }
11220 : break;
11221 : default:;
11222 : }
11223 : }
11224 : break;
11225 0 : case CFN_EXP10:
11226 0 : if (call_expr_nargs (_p0) == 1)
11227 : {
11228 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11229 0 : switch (TREE_CODE (_p1))
11230 : {
11231 0 : case CALL_EXPR:
11232 0 : switch (get_call_combined_fn (_p1))
11233 : {
11234 0 : case CFN_POW:
11235 0 : if (call_expr_nargs (_p1) == 2)
11236 : {
11237 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11238 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11239 0 : switch (TREE_CODE (_q40))
11240 : {
11241 0 : case REAL_CST:
11242 0 : {
11243 0 : {
11244 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11245 0 : if (flag_unsafe_math_optimizations
11246 : )
11247 : {
11248 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11249 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11250 : )
11251 : {
11252 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1471;
11253 0 : {
11254 0 : tree res_op0;
11255 0 : {
11256 0 : tree _o1[2], _r1;
11257 0 : {
11258 0 : tree _o2[2], _r2;
11259 0 : {
11260 0 : tree _o3[1], _r3;
11261 0 : _o3[0] = captures[1];
11262 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
11263 0 : if (!_r3)
11264 0 : goto next_after_fail1471;
11265 0 : _o2[0] = _r3;
11266 : }
11267 0 : _o2[1] = captures[2];
11268 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11269 0 : _o1[0] = _r2;
11270 : }
11271 0 : _o1[1] = captures[4];
11272 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11273 0 : res_op0 = _r1;
11274 : }
11275 0 : tree _r;
11276 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP10, type, 1, res_op0);
11277 0 : if (!_r)
11278 0 : goto next_after_fail1471;
11279 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
11280 0 : return _r;
11281 : }
11282 0 : next_after_fail1471:;
11283 : }
11284 : }
11285 : }
11286 0 : break;
11287 : }
11288 : default:;
11289 : }
11290 : }
11291 : break;
11292 0 : case CFN_EXP10:
11293 0 : if (call_expr_nargs (_p1) == 1)
11294 : {
11295 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11296 0 : {
11297 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11298 0 : if (flag_unsafe_math_optimizations
11299 : )
11300 : {
11301 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1472;
11302 0 : {
11303 0 : tree res_op0;
11304 0 : {
11305 0 : tree _o1[2], _r1;
11306 0 : _o1[0] = captures[1];
11307 0 : _o1[1] = captures[3];
11308 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11309 0 : res_op0 = _r1;
11310 : }
11311 0 : tree _r;
11312 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP10, type, 1, res_op0);
11313 0 : if (!_r)
11314 0 : goto next_after_fail1472;
11315 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
11316 0 : return _r;
11317 : }
11318 0 : next_after_fail1472:;
11319 : }
11320 : }
11321 : }
11322 : break;
11323 : default:;
11324 : }
11325 : break;
11326 : default:;
11327 : }
11328 : }
11329 : break;
11330 12 : case CFN_BUILT_IN_CBRTF:
11331 12 : if (call_expr_nargs (_p0) == 1)
11332 : {
11333 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11334 12 : switch (TREE_CODE (_p1))
11335 : {
11336 12 : case CALL_EXPR:
11337 12 : switch (get_call_combined_fn (_p1))
11338 : {
11339 12 : case CFN_BUILT_IN_CBRTF:
11340 12 : if (call_expr_nargs (_p1) == 1)
11341 : {
11342 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11343 12 : {
11344 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11345 12 : if (flag_unsafe_math_optimizations
11346 : )
11347 : {
11348 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1473;
11349 12 : {
11350 12 : tree res_op0;
11351 12 : {
11352 12 : tree _o1[2], _r1;
11353 12 : _o1[0] = captures[1];
11354 12 : _o1[1] = captures[3];
11355 12 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11356 12 : res_op0 = _r1;
11357 : }
11358 12 : tree _r;
11359 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRTF, type, 1, res_op0);
11360 12 : if (!_r)
11361 0 : goto next_after_fail1473;
11362 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 976, __FILE__, __LINE__, true);
11363 12 : return _r;
11364 : }
11365 0 : next_after_fail1473:;
11366 : }
11367 : }
11368 : }
11369 : break;
11370 : default:;
11371 : }
11372 : break;
11373 : default:;
11374 : }
11375 : }
11376 : break;
11377 12 : case CFN_BUILT_IN_CBRTL:
11378 12 : if (call_expr_nargs (_p0) == 1)
11379 : {
11380 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11381 12 : switch (TREE_CODE (_p1))
11382 : {
11383 12 : case CALL_EXPR:
11384 12 : switch (get_call_combined_fn (_p1))
11385 : {
11386 12 : case CFN_BUILT_IN_CBRTL:
11387 12 : if (call_expr_nargs (_p1) == 1)
11388 : {
11389 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11390 12 : {
11391 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11392 12 : if (flag_unsafe_math_optimizations
11393 : )
11394 : {
11395 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1474;
11396 12 : {
11397 12 : tree res_op0;
11398 12 : {
11399 12 : tree _o1[2], _r1;
11400 12 : _o1[0] = captures[1];
11401 12 : _o1[1] = captures[3];
11402 12 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11403 12 : res_op0 = _r1;
11404 : }
11405 12 : tree _r;
11406 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRTL, type, 1, res_op0);
11407 12 : if (!_r)
11408 0 : goto next_after_fail1474;
11409 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 976, __FILE__, __LINE__, true);
11410 12 : return _r;
11411 : }
11412 0 : next_after_fail1474:;
11413 : }
11414 : }
11415 : }
11416 : break;
11417 : default:;
11418 : }
11419 : break;
11420 : default:;
11421 : }
11422 : }
11423 : break;
11424 0 : case CFN_LDEXP:
11425 0 : if (call_expr_nargs (_p0) == 2)
11426 : {
11427 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11428 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11429 0 : switch (TREE_CODE (_p1))
11430 : {
11431 0 : case REAL_CST:
11432 0 : {
11433 0 : {
11434 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11435 0 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, CFN_LDEXP);
11436 0 : if (res) return res;
11437 : }
11438 0 : break;
11439 : }
11440 0 : default:;
11441 : }
11442 0 : switch (TREE_CODE (_q20))
11443 : {
11444 0 : case REAL_CST:
11445 0 : {
11446 0 : {
11447 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11448 0 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_LDEXP);
11449 0 : if (res) return res;
11450 : }
11451 0 : break;
11452 : }
11453 : default:;
11454 : }
11455 : }
11456 : break;
11457 48 : case CFN_BUILT_IN_EXP10:
11458 48 : if (call_expr_nargs (_p0) == 1)
11459 : {
11460 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11461 48 : switch (TREE_CODE (_p1))
11462 : {
11463 24 : case CALL_EXPR:
11464 24 : switch (get_call_combined_fn (_p1))
11465 : {
11466 0 : case CFN_BUILT_IN_POW:
11467 0 : if (call_expr_nargs (_p1) == 2)
11468 : {
11469 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11470 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11471 0 : switch (TREE_CODE (_q40))
11472 : {
11473 0 : case REAL_CST:
11474 0 : {
11475 0 : {
11476 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11477 0 : if (flag_unsafe_math_optimizations
11478 : )
11479 : {
11480 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11481 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11482 : )
11483 : {
11484 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1475;
11485 0 : {
11486 0 : tree res_op0;
11487 0 : {
11488 0 : tree _o1[2], _r1;
11489 0 : {
11490 0 : tree _o2[2], _r2;
11491 0 : {
11492 0 : tree _o3[1], _r3;
11493 0 : _o3[0] = captures[1];
11494 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
11495 0 : if (!_r3)
11496 0 : goto next_after_fail1475;
11497 0 : _o2[0] = _r3;
11498 : }
11499 0 : _o2[1] = captures[2];
11500 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11501 0 : _o1[0] = _r2;
11502 : }
11503 0 : _o1[1] = captures[4];
11504 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11505 0 : res_op0 = _r1;
11506 : }
11507 0 : tree _r;
11508 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10, type, 1, res_op0);
11509 0 : if (!_r)
11510 0 : goto next_after_fail1475;
11511 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
11512 0 : return _r;
11513 : }
11514 0 : next_after_fail1475:;
11515 : }
11516 : }
11517 : }
11518 0 : break;
11519 : }
11520 : default:;
11521 : }
11522 : }
11523 : break;
11524 24 : case CFN_BUILT_IN_EXP10:
11525 24 : if (call_expr_nargs (_p1) == 1)
11526 : {
11527 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11528 24 : {
11529 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11530 24 : if (flag_unsafe_math_optimizations
11531 : )
11532 : {
11533 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1476;
11534 24 : {
11535 24 : tree res_op0;
11536 24 : {
11537 24 : tree _o1[2], _r1;
11538 24 : _o1[0] = captures[1];
11539 24 : _o1[1] = captures[3];
11540 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11541 24 : res_op0 = _r1;
11542 : }
11543 24 : tree _r;
11544 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10, type, 1, res_op0);
11545 24 : if (!_r)
11546 0 : goto next_after_fail1476;
11547 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
11548 24 : return _r;
11549 : }
11550 0 : next_after_fail1476:;
11551 : }
11552 : }
11553 : }
11554 : break;
11555 : default:;
11556 : }
11557 : break;
11558 : default:;
11559 : }
11560 : }
11561 : break;
11562 48 : case CFN_BUILT_IN_EXP2F:
11563 48 : if (call_expr_nargs (_p0) == 1)
11564 : {
11565 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11566 48 : switch (TREE_CODE (_p1))
11567 : {
11568 24 : case CALL_EXPR:
11569 24 : switch (get_call_combined_fn (_p1))
11570 : {
11571 0 : case CFN_BUILT_IN_POWF:
11572 0 : if (call_expr_nargs (_p1) == 2)
11573 : {
11574 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11575 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11576 0 : switch (TREE_CODE (_q40))
11577 : {
11578 0 : case REAL_CST:
11579 0 : {
11580 0 : {
11581 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11582 0 : if (flag_unsafe_math_optimizations
11583 : )
11584 : {
11585 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11586 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11587 : )
11588 : {
11589 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1477;
11590 0 : {
11591 0 : tree res_op0;
11592 0 : {
11593 0 : tree _o1[2], _r1;
11594 0 : {
11595 0 : tree _o2[2], _r2;
11596 0 : {
11597 0 : tree _o3[1], _r3;
11598 0 : _o3[0] = captures[1];
11599 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2F, TREE_TYPE (_o3[0]), 1, _o3[0]);
11600 0 : if (!_r3)
11601 0 : goto next_after_fail1477;
11602 0 : _o2[0] = _r3;
11603 : }
11604 0 : _o2[1] = captures[2];
11605 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11606 0 : _o1[0] = _r2;
11607 : }
11608 0 : _o1[1] = captures[4];
11609 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11610 0 : res_op0 = _r1;
11611 : }
11612 0 : tree _r;
11613 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2F, type, 1, res_op0);
11614 0 : if (!_r)
11615 0 : goto next_after_fail1477;
11616 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
11617 0 : return _r;
11618 : }
11619 0 : next_after_fail1477:;
11620 : }
11621 : }
11622 : }
11623 0 : break;
11624 : }
11625 : default:;
11626 : }
11627 : }
11628 : break;
11629 24 : case CFN_BUILT_IN_EXP2F:
11630 24 : if (call_expr_nargs (_p1) == 1)
11631 : {
11632 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11633 24 : {
11634 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11635 24 : if (flag_unsafe_math_optimizations
11636 : )
11637 : {
11638 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1478;
11639 24 : {
11640 24 : tree res_op0;
11641 24 : {
11642 24 : tree _o1[2], _r1;
11643 24 : _o1[0] = captures[1];
11644 24 : _o1[1] = captures[3];
11645 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11646 24 : res_op0 = _r1;
11647 : }
11648 24 : tree _r;
11649 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2F, type, 1, res_op0);
11650 24 : if (!_r)
11651 0 : goto next_after_fail1478;
11652 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
11653 24 : return _r;
11654 : }
11655 0 : next_after_fail1478:;
11656 : }
11657 : }
11658 : }
11659 : break;
11660 : default:;
11661 : }
11662 : break;
11663 : default:;
11664 : }
11665 : }
11666 : break;
11667 48 : case CFN_BUILT_IN_EXP2L:
11668 48 : if (call_expr_nargs (_p0) == 1)
11669 : {
11670 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11671 48 : switch (TREE_CODE (_p1))
11672 : {
11673 24 : case CALL_EXPR:
11674 24 : switch (get_call_combined_fn (_p1))
11675 : {
11676 0 : case CFN_BUILT_IN_POWL:
11677 0 : if (call_expr_nargs (_p1) == 2)
11678 : {
11679 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11680 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11681 0 : switch (TREE_CODE (_q40))
11682 : {
11683 0 : case REAL_CST:
11684 0 : {
11685 0 : {
11686 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11687 0 : if (flag_unsafe_math_optimizations
11688 : )
11689 : {
11690 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11691 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11692 : )
11693 : {
11694 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1479;
11695 0 : {
11696 0 : tree res_op0;
11697 0 : {
11698 0 : tree _o1[2], _r1;
11699 0 : {
11700 0 : tree _o2[2], _r2;
11701 0 : {
11702 0 : tree _o3[1], _r3;
11703 0 : _o3[0] = captures[1];
11704 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2L, TREE_TYPE (_o3[0]), 1, _o3[0]);
11705 0 : if (!_r3)
11706 0 : goto next_after_fail1479;
11707 0 : _o2[0] = _r3;
11708 : }
11709 0 : _o2[1] = captures[2];
11710 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11711 0 : _o1[0] = _r2;
11712 : }
11713 0 : _o1[1] = captures[4];
11714 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11715 0 : res_op0 = _r1;
11716 : }
11717 0 : tree _r;
11718 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2L, type, 1, res_op0);
11719 0 : if (!_r)
11720 0 : goto next_after_fail1479;
11721 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
11722 0 : return _r;
11723 : }
11724 0 : next_after_fail1479:;
11725 : }
11726 : }
11727 : }
11728 0 : break;
11729 : }
11730 : default:;
11731 : }
11732 : }
11733 : break;
11734 24 : case CFN_BUILT_IN_EXP2L:
11735 24 : if (call_expr_nargs (_p1) == 1)
11736 : {
11737 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11738 24 : {
11739 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11740 24 : if (flag_unsafe_math_optimizations
11741 : )
11742 : {
11743 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1480;
11744 24 : {
11745 24 : tree res_op0;
11746 24 : {
11747 24 : tree _o1[2], _r1;
11748 24 : _o1[0] = captures[1];
11749 24 : _o1[1] = captures[3];
11750 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11751 24 : res_op0 = _r1;
11752 : }
11753 24 : tree _r;
11754 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2L, type, 1, res_op0);
11755 24 : if (!_r)
11756 0 : goto next_after_fail1480;
11757 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
11758 24 : return _r;
11759 : }
11760 0 : next_after_fail1480:;
11761 : }
11762 : }
11763 : }
11764 : break;
11765 : default:;
11766 : }
11767 : break;
11768 : default:;
11769 : }
11770 : }
11771 : break;
11772 5 : case CFN_BUILT_IN_LDEXP:
11773 5 : if (call_expr_nargs (_p0) == 2)
11774 : {
11775 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11776 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11777 5 : switch (TREE_CODE (_p1))
11778 : {
11779 2 : case REAL_CST:
11780 2 : {
11781 2 : {
11782 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11783 2 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
11784 2 : if (res) return res;
11785 : }
11786 1 : break;
11787 : }
11788 4 : default:;
11789 : }
11790 4 : switch (TREE_CODE (_q20))
11791 : {
11792 3 : case REAL_CST:
11793 3 : {
11794 3 : {
11795 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11796 3 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
11797 3 : if (res) return res;
11798 : }
11799 0 : break;
11800 : }
11801 : default:;
11802 : }
11803 : }
11804 : break;
11805 24 : case CFN_BUILT_IN_POW10:
11806 24 : if (call_expr_nargs (_p0) == 1)
11807 : {
11808 24 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11809 24 : switch (TREE_CODE (_p1))
11810 : {
11811 12 : case CALL_EXPR:
11812 12 : switch (get_call_combined_fn (_p1))
11813 : {
11814 0 : case CFN_BUILT_IN_POW:
11815 0 : if (call_expr_nargs (_p1) == 2)
11816 : {
11817 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11818 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11819 0 : switch (TREE_CODE (_q40))
11820 : {
11821 0 : case REAL_CST:
11822 0 : {
11823 0 : {
11824 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11825 0 : if (flag_unsafe_math_optimizations
11826 : )
11827 : {
11828 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11829 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11830 : )
11831 : {
11832 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1481;
11833 0 : {
11834 0 : tree res_op0;
11835 0 : {
11836 0 : tree _o1[2], _r1;
11837 0 : {
11838 0 : tree _o2[2], _r2;
11839 0 : {
11840 0 : tree _o3[1], _r3;
11841 0 : _o3[0] = captures[1];
11842 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
11843 0 : if (!_r3)
11844 0 : goto next_after_fail1481;
11845 0 : _o2[0] = _r3;
11846 : }
11847 0 : _o2[1] = captures[2];
11848 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11849 0 : _o1[0] = _r2;
11850 : }
11851 0 : _o1[1] = captures[4];
11852 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11853 0 : res_op0 = _r1;
11854 : }
11855 0 : tree _r;
11856 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10, type, 1, res_op0);
11857 0 : if (!_r)
11858 0 : goto next_after_fail1481;
11859 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
11860 0 : return _r;
11861 : }
11862 0 : next_after_fail1481:;
11863 : }
11864 : }
11865 : }
11866 0 : break;
11867 : }
11868 : default:;
11869 : }
11870 : }
11871 : break;
11872 12 : case CFN_BUILT_IN_POW10:
11873 12 : if (call_expr_nargs (_p1) == 1)
11874 : {
11875 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11876 12 : {
11877 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11878 12 : if (flag_unsafe_math_optimizations
11879 : )
11880 : {
11881 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1482;
11882 12 : {
11883 12 : tree res_op0;
11884 12 : {
11885 12 : tree _o1[2], _r1;
11886 12 : _o1[0] = captures[1];
11887 12 : _o1[1] = captures[3];
11888 12 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11889 12 : res_op0 = _r1;
11890 : }
11891 12 : tree _r;
11892 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10, type, 1, res_op0);
11893 12 : if (!_r)
11894 12 : goto next_after_fail1482;
11895 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
11896 0 : return _r;
11897 : }
11898 12 : next_after_fail1482:;
11899 : }
11900 : }
11901 : }
11902 : break;
11903 : default:;
11904 : }
11905 : break;
11906 : default:;
11907 : }
11908 : }
11909 : break;
11910 : default:;
11911 : }
11912 : break;
11913 65139397 : default:;
11914 : }
11915 65139397 : switch (TREE_CODE (_p1))
11916 : {
11917 870286 : case CALL_EXPR:
11918 870286 : switch (get_call_combined_fn (_p1))
11919 : {
11920 0 : case CFN_BUILT_IN_LDEXPF:
11921 0 : if (call_expr_nargs (_p1) == 2)
11922 : {
11923 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
11924 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
11925 0 : switch (TREE_CODE (_q30))
11926 : {
11927 0 : case REAL_CST:
11928 0 : {
11929 0 : {
11930 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
11931 0 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
11932 0 : if (res) return res;
11933 : }
11934 0 : break;
11935 : }
11936 : default:;
11937 : }
11938 : }
11939 : break;
11940 0 : case CFN_BUILT_IN_LDEXPL:
11941 0 : if (call_expr_nargs (_p1) == 2)
11942 : {
11943 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
11944 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
11945 0 : switch (TREE_CODE (_q30))
11946 : {
11947 0 : case REAL_CST:
11948 0 : {
11949 0 : {
11950 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
11951 0 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
11952 0 : if (res) return res;
11953 : }
11954 0 : break;
11955 : }
11956 : default:;
11957 : }
11958 : }
11959 : break;
11960 0 : case CFN_LDEXP:
11961 0 : if (call_expr_nargs (_p1) == 2)
11962 : {
11963 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
11964 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
11965 0 : switch (TREE_CODE (_q30))
11966 : {
11967 0 : case REAL_CST:
11968 0 : {
11969 0 : {
11970 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
11971 0 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_LDEXP);
11972 0 : if (res) return res;
11973 : }
11974 0 : break;
11975 : }
11976 : default:;
11977 : }
11978 : }
11979 : break;
11980 0 : case CFN_BUILT_IN_LDEXP:
11981 0 : if (call_expr_nargs (_p1) == 2)
11982 : {
11983 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
11984 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
11985 0 : switch (TREE_CODE (_q30))
11986 : {
11987 0 : case REAL_CST:
11988 0 : {
11989 0 : {
11990 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
11991 0 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
11992 0 : if (res) return res;
11993 : }
11994 0 : break;
11995 : }
11996 : default:;
11997 : }
11998 : }
11999 : break;
12000 : default:;
12001 : }
12002 : break;
12003 65139397 : default:;
12004 : }
12005 65139397 : switch (TREE_CODE (_p0))
12006 : {
12007 2427029 : case CALL_EXPR:
12008 2427029 : switch (get_call_combined_fn (_p0))
12009 : {
12010 29 : case CFN_BUILT_IN_COS:
12011 29 : if (call_expr_nargs (_p0) == 1)
12012 : {
12013 29 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12014 29 : switch (TREE_CODE (_p1))
12015 : {
12016 4 : case CALL_EXPR:
12017 4 : switch (get_call_combined_fn (_p1))
12018 : {
12019 2 : case CFN_BUILT_IN_TAN:
12020 2 : if (call_expr_nargs (_p1) == 1)
12021 : {
12022 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12023 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12024 : {
12025 2 : {
12026 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12027 2 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TAN, CFN_BUILT_IN_COS, CFN_BUILT_IN_SIN);
12028 2 : if (res) return res;
12029 : }
12030 : }
12031 : }
12032 : break;
12033 : default:;
12034 : }
12035 : break;
12036 : default:;
12037 : }
12038 : }
12039 : break;
12040 2 : case CFN_BUILT_IN_TAN:
12041 2 : if (call_expr_nargs (_p0) == 1)
12042 : {
12043 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12044 2 : switch (TREE_CODE (_p1))
12045 : {
12046 2 : case CALL_EXPR:
12047 2 : switch (get_call_combined_fn (_p1))
12048 : {
12049 2 : case CFN_BUILT_IN_COS:
12050 2 : if (call_expr_nargs (_p1) == 1)
12051 : {
12052 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12053 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12054 : {
12055 2 : {
12056 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12057 2 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TAN, CFN_BUILT_IN_COS, CFN_BUILT_IN_SIN);
12058 2 : if (res) return res;
12059 : }
12060 : }
12061 : }
12062 : break;
12063 : default:;
12064 : }
12065 : break;
12066 : default:;
12067 : }
12068 : }
12069 : break;
12070 18 : case CFN_BUILT_IN_COSF:
12071 18 : if (call_expr_nargs (_p0) == 1)
12072 : {
12073 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12074 18 : switch (TREE_CODE (_p1))
12075 : {
12076 9 : case CALL_EXPR:
12077 9 : switch (get_call_combined_fn (_p1))
12078 : {
12079 2 : case CFN_BUILT_IN_TANF:
12080 2 : if (call_expr_nargs (_p1) == 1)
12081 : {
12082 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12083 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12084 : {
12085 2 : {
12086 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12087 2 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANF, CFN_BUILT_IN_COSF, CFN_BUILT_IN_SINF);
12088 2 : if (res) return res;
12089 : }
12090 : }
12091 : }
12092 : break;
12093 : default:;
12094 : }
12095 : break;
12096 : default:;
12097 : }
12098 : }
12099 : break;
12100 2 : case CFN_BUILT_IN_COSL:
12101 2 : if (call_expr_nargs (_p0) == 1)
12102 : {
12103 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12104 2 : switch (TREE_CODE (_p1))
12105 : {
12106 2 : case CALL_EXPR:
12107 2 : switch (get_call_combined_fn (_p1))
12108 : {
12109 2 : case CFN_BUILT_IN_TANL:
12110 2 : if (call_expr_nargs (_p1) == 1)
12111 : {
12112 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12113 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12114 : {
12115 2 : {
12116 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12117 2 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANL, CFN_BUILT_IN_COSL, CFN_BUILT_IN_SINL);
12118 2 : if (res) return res;
12119 : }
12120 : }
12121 : }
12122 : break;
12123 : default:;
12124 : }
12125 : break;
12126 : default:;
12127 : }
12128 : }
12129 : break;
12130 2 : case CFN_BUILT_IN_TANF:
12131 2 : if (call_expr_nargs (_p0) == 1)
12132 : {
12133 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12134 2 : switch (TREE_CODE (_p1))
12135 : {
12136 2 : case CALL_EXPR:
12137 2 : switch (get_call_combined_fn (_p1))
12138 : {
12139 2 : case CFN_BUILT_IN_COSF:
12140 2 : if (call_expr_nargs (_p1) == 1)
12141 : {
12142 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12143 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12144 : {
12145 2 : {
12146 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12147 2 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANF, CFN_BUILT_IN_COSF, CFN_BUILT_IN_SINF);
12148 2 : if (res) return res;
12149 : }
12150 : }
12151 : }
12152 : break;
12153 : default:;
12154 : }
12155 : break;
12156 : default:;
12157 : }
12158 : }
12159 : break;
12160 2 : case CFN_BUILT_IN_TANL:
12161 2 : if (call_expr_nargs (_p0) == 1)
12162 : {
12163 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12164 2 : switch (TREE_CODE (_p1))
12165 : {
12166 2 : case CALL_EXPR:
12167 2 : switch (get_call_combined_fn (_p1))
12168 : {
12169 2 : case CFN_BUILT_IN_COSL:
12170 2 : if (call_expr_nargs (_p1) == 1)
12171 : {
12172 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12173 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12174 : {
12175 2 : {
12176 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12177 2 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANL, CFN_BUILT_IN_COSL, CFN_BUILT_IN_SINL);
12178 2 : if (res) return res;
12179 : }
12180 : }
12181 : }
12182 : break;
12183 : default:;
12184 : }
12185 : break;
12186 : default:;
12187 : }
12188 : }
12189 : break;
12190 0 : case CFN_COS:
12191 0 : if (call_expr_nargs (_p0) == 1)
12192 : {
12193 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12194 0 : switch (TREE_CODE (_p1))
12195 : {
12196 0 : case CALL_EXPR:
12197 0 : switch (get_call_combined_fn (_p1))
12198 : {
12199 0 : case CFN_TAN:
12200 0 : if (call_expr_nargs (_p1) == 1)
12201 : {
12202 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12203 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12204 : {
12205 0 : {
12206 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12207 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_TAN, CFN_COS, CFN_SIN);
12208 0 : if (res) return res;
12209 : }
12210 : }
12211 : }
12212 : break;
12213 : default:;
12214 : }
12215 : break;
12216 : default:;
12217 : }
12218 : }
12219 : break;
12220 0 : case CFN_TAN:
12221 0 : if (call_expr_nargs (_p0) == 1)
12222 : {
12223 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12224 0 : switch (TREE_CODE (_p1))
12225 : {
12226 0 : case CALL_EXPR:
12227 0 : switch (get_call_combined_fn (_p1))
12228 : {
12229 0 : case CFN_COS:
12230 0 : if (call_expr_nargs (_p1) == 1)
12231 : {
12232 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12233 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12234 : {
12235 0 : {
12236 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12237 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_TAN, CFN_COS, CFN_SIN);
12238 0 : if (res) return res;
12239 : }
12240 : }
12241 : }
12242 : break;
12243 : default:;
12244 : }
12245 : break;
12246 : default:;
12247 : }
12248 : }
12249 : break;
12250 : default:;
12251 : }
12252 : break;
12253 65139385 : default:;
12254 : }
12255 65139385 : switch (TREE_CODE (_p1))
12256 : {
12257 870274 : case CALL_EXPR:
12258 870274 : switch (get_call_combined_fn (_p1))
12259 : {
12260 60 : case CFN_BUILT_IN_POW:
12261 60 : if (call_expr_nargs (_p1) == 2)
12262 : {
12263 60 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12264 60 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12265 60 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12266 : {
12267 0 : switch (TREE_CODE (_q31))
12268 : {
12269 0 : case REAL_CST:
12270 0 : {
12271 0 : {
12272 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12273 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
12274 0 : if (res) return res;
12275 : }
12276 0 : break;
12277 : }
12278 : default:;
12279 : }
12280 : }
12281 : }
12282 : break;
12283 23 : case CFN_BUILT_IN_POWF:
12284 23 : if (call_expr_nargs (_p1) == 2)
12285 : {
12286 23 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12287 23 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12288 23 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12289 : {
12290 0 : switch (TREE_CODE (_q31))
12291 : {
12292 0 : case REAL_CST:
12293 0 : {
12294 0 : {
12295 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12296 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
12297 0 : if (res) return res;
12298 : }
12299 0 : break;
12300 : }
12301 : default:;
12302 : }
12303 : }
12304 : }
12305 : break;
12306 12 : case CFN_BUILT_IN_POWL:
12307 12 : if (call_expr_nargs (_p1) == 2)
12308 : {
12309 12 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12310 12 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12311 12 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12312 : {
12313 0 : switch (TREE_CODE (_q31))
12314 : {
12315 0 : case REAL_CST:
12316 0 : {
12317 0 : {
12318 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12319 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
12320 0 : if (res) return res;
12321 : }
12322 0 : break;
12323 : }
12324 : default:;
12325 : }
12326 : }
12327 : }
12328 : break;
12329 0 : case CFN_POW:
12330 0 : if (call_expr_nargs (_p1) == 2)
12331 : {
12332 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12333 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12334 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12335 : {
12336 0 : switch (TREE_CODE (_q31))
12337 : {
12338 0 : case REAL_CST:
12339 0 : {
12340 0 : {
12341 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12342 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_POW);
12343 0 : if (res) return res;
12344 : }
12345 0 : break;
12346 : }
12347 : default:;
12348 : }
12349 : }
12350 : }
12351 : break;
12352 : default:;
12353 : }
12354 : break;
12355 65139385 : default:;
12356 : }
12357 65139385 : switch (TREE_CODE (_p0))
12358 : {
12359 1 : case VEC_PERM_EXPR:
12360 1 : {
12361 1 : tree _q20 = TREE_OPERAND (_p0, 0);
12362 1 : tree _q21 = TREE_OPERAND (_p0, 1);
12363 1 : tree _q22 = TREE_OPERAND (_p0, 2);
12364 1 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
12365 : {
12366 1 : switch (TREE_CODE (_p1))
12367 : {
12368 0 : case VEC_PERM_EXPR:
12369 0 : {
12370 0 : tree _q60 = TREE_OPERAND (_p1, 0);
12371 0 : tree _q61 = TREE_OPERAND (_p1, 1);
12372 0 : tree _q62 = TREE_OPERAND (_p1, 2);
12373 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
12374 : {
12375 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
12376 : {
12377 0 : {
12378 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
12379 0 : if (VECTOR_INTEGER_TYPE_P (type)
12380 : )
12381 : {
12382 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1483;
12383 0 : {
12384 0 : tree res_op0;
12385 0 : {
12386 0 : tree _o1[2], _r1;
12387 0 : _o1[0] = captures[0];
12388 0 : _o1[1] = captures[2];
12389 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12390 0 : captures[3] = _r1;
12391 : }
12392 0 : res_op0 = unshare_expr (captures[3]);
12393 0 : tree res_op1;
12394 0 : res_op1 = captures[3];
12395 0 : tree res_op2;
12396 0 : res_op2 = captures[1];
12397 0 : tree _r;
12398 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
12399 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 897, __FILE__, __LINE__, true);
12400 0 : return _r;
12401 : }
12402 0 : next_after_fail1483:;
12403 : }
12404 : }
12405 : }
12406 : }
12407 : break;
12408 : }
12409 1 : default:;
12410 : }
12411 1 : switch (TREE_CODE (_q22))
12412 : {
12413 0 : case VECTOR_CST:
12414 0 : {
12415 0 : switch (TREE_CODE (_p1))
12416 : {
12417 0 : case VEC_PERM_EXPR:
12418 0 : {
12419 0 : tree _q60 = TREE_OPERAND (_p1, 0);
12420 0 : tree _q61 = TREE_OPERAND (_p1, 1);
12421 0 : tree _q62 = TREE_OPERAND (_p1, 2);
12422 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
12423 : {
12424 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
12425 : {
12426 0 : switch (TREE_CODE (_q62))
12427 : {
12428 0 : case VECTOR_CST:
12429 0 : {
12430 0 : {
12431 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
12432 0 : tree res = generic_simplify_85 (loc, type, _p0, _p1, captures, MULT_EXPR);
12433 0 : if (res) return res;
12434 : }
12435 0 : break;
12436 : }
12437 : default:;
12438 : }
12439 : }
12440 : }
12441 : break;
12442 : }
12443 : default:;
12444 : }
12445 : break;
12446 : }
12447 : default:;
12448 : }
12449 : }
12450 : break;
12451 : }
12452 2427017 : case CALL_EXPR:
12453 2427017 : switch (get_call_combined_fn (_p0))
12454 : {
12455 115 : case CFN_BUILT_IN_POW:
12456 115 : if (call_expr_nargs (_p0) == 2)
12457 : {
12458 115 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12459 115 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12460 115 : switch (TREE_CODE (_p1))
12461 : {
12462 80 : case CALL_EXPR:
12463 80 : switch (get_call_combined_fn (_p1))
12464 : {
12465 20 : case CFN_BUILT_IN_POW:
12466 20 : if (call_expr_nargs (_p1) == 2)
12467 : {
12468 20 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12469 20 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12470 20 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12471 : {
12472 14 : {
12473 14 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12474 14 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
12475 14 : if (res) return res;
12476 : }
12477 : }
12478 6 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12479 : {
12480 2 : {
12481 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12482 2 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
12483 2 : if (res) return res;
12484 : }
12485 : }
12486 : }
12487 : break;
12488 : default:;
12489 : }
12490 : break;
12491 : default:;
12492 : }
12493 : }
12494 : break;
12495 19 : case CFN_BUILT_IN_POWF:
12496 19 : if (call_expr_nargs (_p0) == 2)
12497 : {
12498 19 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12499 19 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12500 19 : switch (TREE_CODE (_p1))
12501 : {
12502 13 : case CALL_EXPR:
12503 13 : switch (get_call_combined_fn (_p1))
12504 : {
12505 13 : case CFN_BUILT_IN_POWF:
12506 13 : if (call_expr_nargs (_p1) == 2)
12507 : {
12508 13 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12509 13 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12510 13 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12511 : {
12512 12 : {
12513 12 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12514 12 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
12515 12 : if (res) return res;
12516 : }
12517 : }
12518 1 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12519 : {
12520 0 : {
12521 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12522 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
12523 0 : if (res) return res;
12524 : }
12525 : }
12526 : }
12527 : break;
12528 : default:;
12529 : }
12530 : break;
12531 : default:;
12532 : }
12533 : }
12534 : break;
12535 35 : case CFN_BUILT_IN_POWI:
12536 35 : if (call_expr_nargs (_p0) == 2)
12537 : {
12538 35 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12539 35 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12540 35 : switch (TREE_CODE (_p1))
12541 : {
12542 0 : case CALL_EXPR:
12543 0 : switch (get_call_combined_fn (_p1))
12544 : {
12545 0 : case CFN_BUILT_IN_POWI:
12546 0 : if (call_expr_nargs (_p1) == 2)
12547 : {
12548 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12549 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12550 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12551 : {
12552 0 : {
12553 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12554 0 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
12555 : )
12556 : {
12557 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1484;
12558 0 : {
12559 0 : tree res_op0;
12560 0 : {
12561 0 : tree _o1[2], _r1;
12562 0 : _o1[0] = captures[1];
12563 0 : _o1[1] = captures[4];
12564 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12565 0 : res_op0 = _r1;
12566 : }
12567 0 : tree res_op1;
12568 0 : res_op1 = captures[2];
12569 0 : tree _r;
12570 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POWI, type, 2, res_op0, res_op1);
12571 0 : if (!_r)
12572 0 : goto next_after_fail1484;
12573 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 979, __FILE__, __LINE__, true);
12574 0 : return _r;
12575 : }
12576 0 : next_after_fail1484:;
12577 : }
12578 : }
12579 : }
12580 : }
12581 : break;
12582 : default:;
12583 : }
12584 : break;
12585 : default:;
12586 : }
12587 : }
12588 : break;
12589 12 : case CFN_BUILT_IN_POWL:
12590 12 : if (call_expr_nargs (_p0) == 2)
12591 : {
12592 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12593 12 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12594 12 : switch (TREE_CODE (_p1))
12595 : {
12596 12 : case CALL_EXPR:
12597 12 : switch (get_call_combined_fn (_p1))
12598 : {
12599 12 : case CFN_BUILT_IN_POWL:
12600 12 : if (call_expr_nargs (_p1) == 2)
12601 : {
12602 12 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12603 12 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12604 12 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12605 : {
12606 12 : {
12607 12 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12608 12 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
12609 12 : if (res) return res;
12610 : }
12611 : }
12612 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12613 : {
12614 0 : {
12615 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12616 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
12617 0 : if (res) return res;
12618 : }
12619 : }
12620 : }
12621 : break;
12622 : default:;
12623 : }
12624 : break;
12625 : default:;
12626 : }
12627 : }
12628 : break;
12629 0 : case CFN_POW:
12630 0 : if (call_expr_nargs (_p0) == 2)
12631 : {
12632 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12633 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12634 0 : switch (TREE_CODE (_p1))
12635 : {
12636 0 : case CALL_EXPR:
12637 0 : switch (get_call_combined_fn (_p1))
12638 : {
12639 0 : case CFN_POW:
12640 0 : if (call_expr_nargs (_p1) == 2)
12641 : {
12642 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12643 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12644 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12645 : {
12646 0 : {
12647 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12648 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_POW);
12649 0 : if (res) return res;
12650 : }
12651 : }
12652 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12653 : {
12654 0 : {
12655 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12656 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_POW);
12657 0 : if (res) return res;
12658 : }
12659 : }
12660 : }
12661 : break;
12662 : default:;
12663 : }
12664 : break;
12665 : default:;
12666 : }
12667 : }
12668 : break;
12669 14 : case CFN_BUILT_IN_POWIF:
12670 14 : if (call_expr_nargs (_p0) == 2)
12671 : {
12672 14 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12673 14 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12674 14 : switch (TREE_CODE (_p1))
12675 : {
12676 0 : case CALL_EXPR:
12677 0 : switch (get_call_combined_fn (_p1))
12678 : {
12679 0 : case CFN_BUILT_IN_POWIF:
12680 0 : if (call_expr_nargs (_p1) == 2)
12681 : {
12682 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12683 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12684 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12685 : {
12686 0 : {
12687 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12688 0 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
12689 : )
12690 : {
12691 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1485;
12692 0 : {
12693 0 : tree res_op0;
12694 0 : {
12695 0 : tree _o1[2], _r1;
12696 0 : _o1[0] = captures[1];
12697 0 : _o1[1] = captures[4];
12698 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12699 0 : res_op0 = _r1;
12700 : }
12701 0 : tree res_op1;
12702 0 : res_op1 = captures[2];
12703 0 : tree _r;
12704 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POWIF, type, 2, res_op0, res_op1);
12705 0 : if (!_r)
12706 0 : goto next_after_fail1485;
12707 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 979, __FILE__, __LINE__, true);
12708 0 : return _r;
12709 : }
12710 0 : next_after_fail1485:;
12711 : }
12712 : }
12713 : }
12714 : }
12715 : break;
12716 : default:;
12717 : }
12718 : break;
12719 : default:;
12720 : }
12721 : }
12722 : break;
12723 5 : case CFN_BUILT_IN_POWIL:
12724 5 : if (call_expr_nargs (_p0) == 2)
12725 : {
12726 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12727 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12728 5 : switch (TREE_CODE (_p1))
12729 : {
12730 0 : case CALL_EXPR:
12731 0 : switch (get_call_combined_fn (_p1))
12732 : {
12733 0 : case CFN_BUILT_IN_POWIL:
12734 0 : if (call_expr_nargs (_p1) == 2)
12735 : {
12736 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12737 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12738 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12739 : {
12740 0 : {
12741 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12742 0 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
12743 : )
12744 : {
12745 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1486;
12746 0 : {
12747 0 : tree res_op0;
12748 0 : {
12749 0 : tree _o1[2], _r1;
12750 0 : _o1[0] = captures[1];
12751 0 : _o1[1] = captures[4];
12752 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12753 0 : res_op0 = _r1;
12754 : }
12755 0 : tree res_op1;
12756 0 : res_op1 = captures[2];
12757 0 : tree _r;
12758 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POWIL, type, 2, res_op0, res_op1);
12759 0 : if (!_r)
12760 0 : goto next_after_fail1486;
12761 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 979, __FILE__, __LINE__, true);
12762 0 : return _r;
12763 : }
12764 0 : next_after_fail1486:;
12765 : }
12766 : }
12767 : }
12768 : }
12769 : break;
12770 : default:;
12771 : }
12772 : break;
12773 : default:;
12774 : }
12775 : }
12776 : break;
12777 : default:;
12778 : }
12779 : break;
12780 : default:;
12781 : }
12782 : return NULL_TREE;
12783 : }
12784 : #pragma GCC diagnostic pop
|