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 132289015 : tree_negate_expr_p (tree t)
11 : {
12 132289015 : const tree type = TREE_TYPE (t);
13 132289015 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 132289015 : if (TREE_SIDE_EFFECTS (t)) return false;
15 127357896 : switch (TREE_CODE (t))
16 : {
17 7789529 : case INTEGER_CST:
18 7789529 : {
19 7789529 : {
20 7789529 : if ((INTEGRAL_TYPE_P (type)
21 7789529 : && TYPE_UNSIGNED (type))
22 10069354 : || (!TYPE_OVERFLOW_SANITIZED (type)
23 2277021 : && may_negate_without_overflow_p (t))
24 : )
25 : {
26 7768318 : {
27 7768318 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 14, __FILE__, __LINE__, false);
28 7768318 : return true;
29 : }
30 : }
31 : }
32 : break;
33 : }
34 0 : case FIXED_CST:
35 0 : {
36 0 : {
37 0 : {
38 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 15, __FILE__, __LINE__, false);
39 : return true;
40 : }
41 : }
42 401370 : break;
43 : }
44 401370 : case NEGATE_EXPR:
45 401370 : {
46 401370 : tree _p0 = TREE_OPERAND (t, 0);
47 401370 : {
48 401370 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
49 401370 : if (!TYPE_OVERFLOW_SANITIZED (type)
50 : )
51 : {
52 401350 : {
53 401350 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 16, __FILE__, __LINE__, false);
54 401350 : return true;
55 : }
56 : }
57 : }
58 : break;
59 : }
60 729576 : case REAL_CST:
61 729576 : {
62 729576 : {
63 729576 : if (REAL_VALUE_NEGATIVE (TREE_REAL_CST (t))
64 : )
65 : {
66 639 : {
67 639 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 17, __FILE__, __LINE__, false);
68 639 : return true;
69 : }
70 : }
71 : }
72 : break;
73 : }
74 450 : case VECTOR_CST:
75 450 : {
76 450 : {
77 450 : if (FLOAT_TYPE_P (TREE_TYPE (type)) || TYPE_OVERFLOW_WRAPS (type)
78 : )
79 : {
80 329 : {
81 329 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 18, __FILE__, __LINE__, false);
82 329 : return true;
83 : }
84 : }
85 : }
86 : break;
87 : }
88 1261746 : case MINUS_EXPR:
89 1261746 : {
90 1261746 : tree _p0 = TREE_OPERAND (t, 0);
91 1261746 : tree _p1 = TREE_OPERAND (t, 1);
92 1261746 : {
93 1261746 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
94 1261746 : if ((ANY_INTEGRAL_TYPE_P (type) && TYPE_OVERFLOW_WRAPS (type))
95 2166104 : || (FLOAT_TYPE_P (type)
96 636131 : && !HONOR_SIGN_DEPENDENT_ROUNDING (type)
97 636131 : && !HONOR_SIGNED_ZEROS (type))
98 : )
99 : {
100 357961 : {
101 357961 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 19, __FILE__, __LINE__, false);
102 357961 : return true;
103 : }
104 : }
105 : }
106 903785 : break;
107 : }
108 : default:;
109 : }
110 : return false;
111 : }
112 :
113 : bool
114 0 : tree_double_value_p (tree t)
115 : {
116 0 : const tree type = TREE_TYPE (t);
117 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
118 0 : if (TREE_SIDE_EFFECTS (t)) return false;
119 0 : {
120 0 : tree captures[1] ATTRIBUTE_UNUSED = { t };
121 0 : if (TYPE_MAIN_VARIANT (TREE_TYPE (captures[0])) == double_type_node
122 : )
123 : {
124 0 : {
125 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 44, __FILE__, __LINE__, false);
126 0 : return true;
127 : }
128 : }
129 : }
130 : return false;
131 : }
132 :
133 : tree
134 0 : generic_simplify_6 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
135 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
136 : {
137 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
138 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail77;
139 0 : {
140 0 : tree res_op0;
141 0 : {
142 0 : tree _o1[2], _r1;
143 0 : _o1[0] = captures[1];
144 0 : _o1[1] = captures[2];
145 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
146 0 : res_op0 = _r1;
147 : }
148 0 : tree _r;
149 0 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
150 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 54, __FILE__, __LINE__, true);
151 : return _r;
152 : }
153 0 : next_after_fail77:;
154 0 : return NULL_TREE;
155 : }
156 :
157 : tree
158 224849 : generic_simplify_15 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
159 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
160 : const enum tree_code ARG_UNUSED (op))
161 : {
162 224849 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
163 224849 : {
164 224849 : bool wascmp;
165 224849 : if (types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
166 224849 : && bitwise_inverted_equal_p (captures[0], captures[1], wascmp)
167 : )
168 : {
169 47 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail90;
170 47 : {
171 47 : tree res_op0;
172 47 : res_op0 = wascmp
173 47 : ? constant_boolean_node (true, type)
174 40 : : build_all_ones_cst (TREE_TYPE (captures[0]));
175 47 : tree _r;
176 47 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
177 47 : if (TREE_SIDE_EFFECTS (captures[0]))
178 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
179 47 : if (TREE_SIDE_EFFECTS (captures[1]))
180 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
181 47 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 63, __FILE__, __LINE__, true);
182 47 : return _r;
183 : }
184 0 : next_after_fail90:;
185 : }
186 : }
187 224802 : return NULL_TREE;
188 : }
189 :
190 : tree
191 11 : generic_simplify_24 (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 11 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
195 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail99;
196 11 : {
197 11 : tree res_op0;
198 11 : res_op0 = captures[0];
199 11 : tree _r;
200 11 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
201 11 : if (TREE_SIDE_EFFECTS (captures[2]))
202 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
203 11 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 72, __FILE__, __LINE__, true);
204 : return _r;
205 : }
206 0 : next_after_fail99:;
207 0 : return NULL_TREE;
208 : }
209 :
210 : tree
211 0 : generic_simplify_31 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
212 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
213 : {
214 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
215 0 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[1]))
216 0 : && tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
217 : )
218 : {
219 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail106;
220 0 : {
221 0 : tree res_op0;
222 0 : {
223 0 : tree _o1[1], _r1;
224 0 : _o1[0] = captures[1];
225 0 : if (TREE_TYPE (_o1[0]) != type)
226 : {
227 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
228 : }
229 : else
230 : _r1 = _o1[0];
231 0 : res_op0 = _r1;
232 : }
233 0 : tree res_op1;
234 0 : {
235 0 : tree _o1[1], _r1;
236 0 : _o1[0] = captures[2];
237 0 : if (TREE_TYPE (_o1[0]) != type)
238 : {
239 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
240 : }
241 : else
242 : _r1 = _o1[0];
243 0 : res_op1 = _r1;
244 : }
245 0 : tree _r;
246 0 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
247 0 : if (TREE_SIDE_EFFECTS (captures[0]))
248 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
249 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 79, __FILE__, __LINE__, true);
250 0 : return _r;
251 : }
252 0 : next_after_fail106:;
253 : }
254 : return NULL_TREE;
255 : }
256 :
257 : tree
258 0 : generic_simplify_40 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
259 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
260 : const enum tree_code ARG_UNUSED (op))
261 : {
262 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
263 0 : if (INTEGRAL_TYPE_P (type)
264 0 : && operand_equal_p (captures[2], captures[6], 0)
265 0 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[4])) == 0
266 : )
267 : {
268 0 : {
269 0 : tree t = type;
270 0 : if (!TYPE_OVERFLOW_WRAPS (t))
271 0 : t = unsigned_type_for (t);
272 0 : wide_int c = wi::add (wi::to_wide (captures[3]), wi::to_wide (captures[7]));
273 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail117;
274 0 : if (TREE_SIDE_EFFECTS (captures[7])) goto next_after_fail117;
275 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail117;
276 0 : {
277 0 : tree res_op0;
278 0 : {
279 0 : tree _o1[2], _r1;
280 0 : {
281 0 : tree _o2[1], _r2;
282 0 : _o2[0] = captures[2];
283 0 : if (TREE_TYPE (_o2[0]) != t)
284 : {
285 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
286 : }
287 : else
288 : _r2 = _o2[0];
289 0 : _o1[0] = _r2;
290 : }
291 0 : _o1[1] = wide_int_to_tree (t, c);
292 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
293 0 : res_op0 = _r1;
294 : }
295 0 : tree _r;
296 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
297 0 : if (TREE_SIDE_EFFECTS (captures[6]))
298 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[6]), _r);
299 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 88, __FILE__, __LINE__, true);
300 0 : return _r;
301 : }
302 0 : next_after_fail117:;
303 0 : }
304 : }
305 : return NULL_TREE;
306 : }
307 :
308 : tree
309 18 : generic_simplify_51 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
310 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
311 : const enum tree_code ARG_UNUSED (cmp))
312 : {
313 18 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
314 36 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
315 18 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
316 36 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[3]))
317 : )
318 : {
319 18 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail130;
320 18 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail130;
321 18 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail130;
322 18 : {
323 18 : tree res_op0;
324 18 : {
325 18 : tree _o1[2], _r1;
326 18 : _o1[0] = captures[1];
327 18 : _o1[1] = captures[3];
328 18 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
329 18 : res_op0 = _r1;
330 : }
331 18 : tree res_op1;
332 18 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
333 18 : tree _r;
334 18 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
335 18 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 98, __FILE__, __LINE__, true);
336 18 : return _r;
337 : }
338 : next_after_fail130:;
339 : }
340 : return NULL_TREE;
341 : }
342 :
343 : tree
344 48875 : generic_simplify_61 (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 48875 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
348 48875 : if (!TYPE_SATURATING (type)
349 : )
350 : {
351 48875 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
352 97681 : && !FIXED_POINT_TYPE_P (type)
353 : )
354 : {
355 48806 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail142;
356 48806 : {
357 48806 : tree res_op0;
358 48806 : res_op0 = captures[0];
359 48806 : tree _r;
360 48806 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
361 48806 : if (TREE_SIDE_EFFECTS (captures[1]))
362 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
363 48806 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 110, __FILE__, __LINE__, true);
364 48806 : return _r;
365 : }
366 0 : next_after_fail142:;
367 : }
368 : }
369 : return NULL_TREE;
370 : }
371 :
372 : tree
373 6966837 : generic_simplify_68 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
374 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
375 : const enum tree_code ARG_UNUSED (op))
376 : {
377 6966837 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
378 6966837 : if (!TYPE_SATURATING (type)
379 : )
380 : {
381 6966837 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
382 13553404 : && !FIXED_POINT_TYPE_P (type)
383 : )
384 : {
385 6586567 : if (INTEGRAL_TYPE_P (type)
386 6586275 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
387 5323759 : && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0]))
388 4466065 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
389 3820945 : && !TYPE_OVERFLOW_TRAPS (type)
390 10407512 : && !TYPE_OVERFLOW_SANITIZED (type)
391 : )
392 : {
393 3820674 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail157;
394 3820674 : {
395 3820674 : tree res_op0;
396 3820674 : {
397 3820674 : tree _o1[2], _r1;
398 3820674 : _o1[0] = captures[0];
399 3820674 : _o1[1] = captures[1];
400 3820674 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
401 3820674 : if (EXPR_P (_r1))
402 3805163 : goto next_after_fail157;
403 15511 : res_op0 = _r1;
404 : }
405 15511 : tree _r;
406 15511 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
407 15511 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 125, __FILE__, __LINE__, true);
408 15511 : return _r;
409 : }
410 : next_after_fail157:;
411 : }
412 : }
413 : }
414 : return NULL_TREE;
415 : }
416 :
417 : tree
418 56 : generic_simplify_78 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
419 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
420 : const enum tree_code ARG_UNUSED (cmp),
421 : const enum tree_code ARG_UNUSED (icmp),
422 : const enum tree_code ARG_UNUSED (ncmp))
423 : {
424 56 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
425 56 : if (TYPE_PRECISION (type) > 1
426 56 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
427 : )
428 : {
429 0 : {
430 0 : enum tree_code ic = invert_tree_comparison
431 0 : (cmp, HONOR_NANS (captures[1]));
432 0 : tree cmptype = TREE_TYPE (captures[0]);
433 0 : if (ic == icmp
434 : )
435 : {
436 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail168;
437 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail168;
438 0 : {
439 0 : tree res_op0;
440 0 : {
441 0 : tree _o1[1], _r1;
442 0 : {
443 0 : tree _o2[2], _r2;
444 0 : _o2[0] = captures[1];
445 0 : _o2[1] = captures[2];
446 0 : _r2 = fold_build2_loc (loc, icmp, cmptype, _o2[0], _o2[1]);
447 0 : _o1[0] = _r2;
448 : }
449 0 : if (TREE_TYPE (_o1[0]) != type)
450 : {
451 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
452 : }
453 : else
454 : _r1 = _o1[0];
455 0 : res_op0 = _r1;
456 : }
457 0 : tree _r;
458 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
459 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 136, __FILE__, __LINE__, true);
460 0 : return _r;
461 : }
462 : next_after_fail168:;
463 : }
464 : else
465 : {
466 0 : if (ic == ncmp
467 : )
468 : {
469 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail169;
470 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail169;
471 0 : {
472 0 : tree res_op0;
473 0 : {
474 0 : tree _o1[1], _r1;
475 0 : {
476 0 : tree _o2[2], _r2;
477 0 : _o2[0] = captures[1];
478 0 : _o2[1] = captures[2];
479 0 : _r2 = fold_build2_loc (loc, ncmp, cmptype, _o2[0], _o2[1]);
480 0 : _o1[0] = _r2;
481 : }
482 0 : if (TREE_TYPE (_o1[0]) != type)
483 : {
484 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
485 : }
486 : else
487 : _r1 = _o1[0];
488 0 : res_op0 = _r1;
489 : }
490 0 : tree _r;
491 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
492 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 137, __FILE__, __LINE__, true);
493 0 : return _r;
494 : }
495 : next_after_fail169:;
496 : }
497 : }
498 : }
499 : }
500 : return NULL_TREE;
501 : }
502 :
503 : tree
504 5 : generic_simplify_92 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
505 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
506 : {
507 5 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
508 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail183;
509 5 : {
510 5 : tree res_op0;
511 5 : res_op0 = captures[1];
512 5 : tree res_op1;
513 5 : {
514 5 : tree _o1[1], _r1;
515 5 : _o1[0] = captures[2];
516 5 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
517 5 : res_op1 = _r1;
518 : }
519 5 : tree _r;
520 5 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
521 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 151, __FILE__, __LINE__, true);
522 : return _r;
523 : }
524 0 : next_after_fail183:;
525 0 : return NULL_TREE;
526 : }
527 :
528 : tree
529 355 : generic_simplify_99 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
530 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
531 : {
532 355 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
533 355 : if (!TYPE_SATURATING (type)
534 : )
535 : {
536 355 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
537 710 : && !FIXED_POINT_TYPE_P (type)
538 : )
539 : {
540 355 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail192;
541 355 : {
542 355 : tree res_op0;
543 355 : res_op0 = captures[1];
544 355 : tree _r;
545 355 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
546 355 : if (TREE_SIDE_EFFECTS (captures[0]))
547 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
548 355 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 159, __FILE__, __LINE__, true);
549 355 : return _r;
550 : }
551 0 : next_after_fail192:;
552 : }
553 : }
554 : return NULL_TREE;
555 : }
556 :
557 : tree
558 157335 : generic_simplify_105 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
559 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
560 : {
561 157335 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
562 157335 : if (!TYPE_SATURATING (type)
563 : )
564 : {
565 157335 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
566 314670 : && !FIXED_POINT_TYPE_P (type)
567 : )
568 : {
569 157335 : if (INTEGRAL_TYPE_P (type)
570 157335 : && TYPE_OVERFLOW_UNDEFINED (type)
571 71 : && element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
572 157406 : && element_precision (type) <= element_precision (TREE_TYPE (captures[2]))
573 : )
574 : {
575 71 : {
576 71 : tree utype = unsigned_type_for (type);
577 71 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail201;
578 71 : {
579 71 : tree res_op0;
580 71 : {
581 71 : tree _o1[2], _r1;
582 71 : {
583 71 : tree _o2[1], _r2;
584 71 : _o2[0] = captures[1];
585 71 : if (TREE_TYPE (_o2[0]) != utype)
586 : {
587 56 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
588 : }
589 : else
590 : _r2 = _o2[0];
591 71 : _o1[0] = _r2;
592 : }
593 71 : {
594 71 : tree _o2[1], _r2;
595 71 : _o2[0] = captures[2];
596 71 : if (TREE_TYPE (_o2[0]) != utype)
597 : {
598 56 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
599 : }
600 : else
601 : _r2 = _o2[0];
602 71 : _o1[1] = _r2;
603 : }
604 71 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
605 71 : res_op0 = _r1;
606 : }
607 71 : tree _r;
608 71 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
609 71 : if (TREE_SIDE_EFFECTS (captures[3]))
610 2 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
611 71 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 168, __FILE__, __LINE__, true);
612 71 : return _r;
613 : }
614 0 : next_after_fail201:;
615 : }
616 : }
617 : else
618 : {
619 157264 : if (((element_precision (type) <= element_precision (TREE_TYPE (captures[1])))
620 157264 : == (element_precision (type) <= element_precision (TREE_TYPE (captures[2]))))
621 157264 : && (element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
622 62 : || (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
623 62 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
624 62 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
625 58 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))))
626 : )
627 : {
628 140608 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail202;
629 140608 : {
630 140608 : tree res_op0;
631 140608 : {
632 140608 : tree _o1[1], _r1;
633 140608 : _o1[0] = captures[1];
634 140608 : if (TREE_TYPE (_o1[0]) != type)
635 : {
636 140608 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
637 : }
638 : else
639 : _r1 = _o1[0];
640 140608 : res_op0 = _r1;
641 : }
642 140608 : tree res_op1;
643 140608 : {
644 140608 : tree _o1[1], _r1;
645 140608 : _o1[0] = captures[2];
646 140608 : if (TREE_TYPE (_o1[0]) != type)
647 : {
648 140602 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
649 : }
650 : else
651 : _r1 = _o1[0];
652 140608 : res_op1 = _r1;
653 : }
654 140608 : tree _r;
655 140608 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
656 140608 : if (TREE_SIDE_EFFECTS (captures[3]))
657 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
658 140608 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 169, __FILE__, __LINE__, true);
659 140608 : return _r;
660 : }
661 0 : next_after_fail202:;
662 : }
663 : }
664 : }
665 : }
666 : return NULL_TREE;
667 : }
668 :
669 : tree
670 1 : generic_simplify_133 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
671 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
672 : {
673 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
674 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail230;
675 1 : {
676 1 : tree res_op0;
677 1 : {
678 1 : tree _o1[2], _r1;
679 1 : _o1[0] = captures[1];
680 1 : _o1[1] = captures[2];
681 1 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
682 1 : res_op0 = _r1;
683 : }
684 1 : tree _r;
685 1 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
686 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 192, __FILE__, __LINE__, true);
687 : return _r;
688 : }
689 0 : next_after_fail230:;
690 0 : return NULL_TREE;
691 : }
692 :
693 : tree
694 2 : generic_simplify_143 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
695 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
696 : const enum tree_code ARG_UNUSED (bitop),
697 : const enum tree_code ARG_UNUSED (rbitop))
698 : {
699 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
700 2 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail244;
701 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail244;
702 2 : {
703 2 : tree _r;
704 2 : _r = captures[2];
705 2 : if (TREE_SIDE_EFFECTS (captures[1]))
706 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
707 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 198, __FILE__, __LINE__, true);
708 : return _r;
709 : }
710 : next_after_fail244:;
711 : return NULL_TREE;
712 : }
713 :
714 : tree
715 82 : generic_simplify_148 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
716 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
717 : const enum tree_code ARG_UNUSED (op))
718 : {
719 82 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
720 82 : if (bitwise_equal_p (captures[4], captures[7])
721 : )
722 : {
723 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail250;
724 16 : {
725 16 : tree res_op0;
726 16 : {
727 16 : tree _o1[2], _r1;
728 16 : {
729 16 : tree _o2[2], _r2;
730 16 : _o2[0] = captures[5];
731 16 : {
732 16 : tree _o3[1], _r3;
733 16 : _o3[0] = captures[6];
734 16 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o2[0]))
735 : {
736 16 : _r3 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o2[0]), _o3[0]);
737 : }
738 : else
739 : _r3 = _o3[0];
740 16 : _o2[1] = _r3;
741 : }
742 16 : _r2 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
743 16 : _o1[0] = _r2;
744 : }
745 16 : {
746 16 : tree _o2[1], _r2;
747 16 : _o2[0] = captures[4];
748 16 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (_o1[0]))
749 : {
750 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (_o1[0]), _o2[0]);
751 : }
752 : else
753 : _r2 = _o2[0];
754 16 : _o1[1] = _r2;
755 : }
756 16 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
757 16 : res_op0 = _r1;
758 : }
759 16 : tree _r;
760 16 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
761 16 : if (TREE_SIDE_EFFECTS (captures[7]))
762 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[7]), _r);
763 16 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 202, __FILE__, __LINE__, true);
764 16 : return _r;
765 : }
766 0 : next_after_fail250:;
767 : }
768 : return NULL_TREE;
769 : }
770 :
771 : tree
772 408 : generic_simplify_159 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
773 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
774 : const enum tree_code ARG_UNUSED (code2),
775 : const enum tree_code ARG_UNUSED (code1))
776 : {
777 408 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
778 408 : if ((TREE_CODE (captures[2]) == INTEGER_CST
779 376 : && TREE_CODE (captures[5]) == INTEGER_CST)
780 408 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
781 3 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2])))
782 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
783 32 : && bitwise_equal_p (captures[2], captures[5]))
784 : )
785 : {
786 378 : {
787 378 : bool one_before = false;
788 378 : bool one_after = false;
789 378 : int cmp = 0;
790 378 : bool allbits = true;
791 378 : if (TREE_CODE (captures[2]) == INTEGER_CST
792 376 : && TREE_CODE (captures[5]) == INTEGER_CST)
793 : {
794 376 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
795 376 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
796 376 : auto t2 = wi::to_wide (captures[5]);
797 376 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
798 376 : if (cmp < 0
799 376 : && t1 == t2 - 1)
800 : one_before = true;
801 376 : if (cmp > 0
802 376 : && t1 == t2 + 1)
803 : one_after = true;
804 : }
805 378 : bool val;
806 378 : switch (code2)
807 : {
808 362 : case EQ_EXPR: val = (cmp == 0); break;
809 0 : case NE_EXPR: val = (cmp != 0); break;
810 2 : case LT_EXPR: val = (cmp < 0); break;
811 0 : case GT_EXPR: val = (cmp > 0); break;
812 14 : case LE_EXPR: val = (cmp <= 0); break;
813 0 : case GE_EXPR: val = (cmp >= 0); break;
814 0 : default: gcc_unreachable ();
815 : }
816 378 : if (code1 == EQ_EXPR && val
817 : )
818 : {
819 7 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail270;
820 7 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail270;
821 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail270;
822 7 : {
823 7 : tree _r;
824 7 : _r = captures[3];
825 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 212, __FILE__, __LINE__, true);
826 7 : return _r;
827 : }
828 : next_after_fail270:;
829 : }
830 : else
831 : {
832 371 : if (code1 == NE_EXPR && val && allbits
833 : )
834 : {
835 7 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail271;
836 7 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail271;
837 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail271;
838 7 : {
839 7 : tree _r;
840 7 : _r = constant_boolean_node (true, type);
841 7 : if (TREE_SIDE_EFFECTS (captures[4]))
842 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
843 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 213, __FILE__, __LINE__, true);
844 7 : return _r;
845 : }
846 : next_after_fail271:;
847 : }
848 : else
849 : {
850 364 : if (code1 == NE_EXPR && !val && allbits
851 : )
852 : {
853 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail272;
854 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail272;
855 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail272;
856 0 : {
857 0 : tree _r;
858 0 : _r = captures[0];
859 0 : if (TREE_SIDE_EFFECTS (captures[4]))
860 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
861 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 214, __FILE__, __LINE__, true);
862 0 : return _r;
863 : }
864 : next_after_fail272:;
865 : }
866 : else
867 : {
868 364 : if (code1 == EQ_EXPR
869 364 : && code2 == GT_EXPR
870 0 : && cmp == 0
871 0 : && allbits
872 364 : && ((VECTOR_BOOLEAN_TYPE_P (type)
873 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
874 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
875 : )
876 : {
877 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail273;
878 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail273;
879 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail273;
880 0 : {
881 0 : tree res_op0;
882 0 : res_op0 = captures[4];
883 0 : tree res_op1;
884 0 : res_op1 = captures[5];
885 0 : tree _r;
886 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
887 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 215, __FILE__, __LINE__, true);
888 0 : return _r;
889 : }
890 : next_after_fail273:;
891 : }
892 : else
893 : {
894 364 : if (code1 == EQ_EXPR
895 364 : && code2 == LT_EXPR
896 2 : && cmp == 0
897 2 : && allbits
898 366 : && ((VECTOR_BOOLEAN_TYPE_P (type)
899 2 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
900 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
901 : )
902 : {
903 2 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail274;
904 2 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail274;
905 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail274;
906 2 : {
907 2 : tree res_op0;
908 2 : res_op0 = captures[4];
909 2 : tree res_op1;
910 2 : res_op1 = captures[5];
911 2 : tree _r;
912 2 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
913 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 216, __FILE__, __LINE__, true);
914 2 : return _r;
915 : }
916 : next_after_fail274:;
917 : }
918 : else
919 : {
920 362 : if (code1 == EQ_EXPR
921 362 : && code2 == GE_EXPR
922 : && one_before
923 0 : && allbits
924 362 : && ((VECTOR_BOOLEAN_TYPE_P (type)
925 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
926 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
927 : )
928 : {
929 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail275;
930 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail275;
931 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail275;
932 0 : {
933 0 : tree res_op0;
934 0 : res_op0 = captures[4];
935 0 : tree res_op1;
936 0 : {
937 0 : tree _o1[1], _r1;
938 0 : _o1[0] = captures[2];
939 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
940 : {
941 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
942 : }
943 : else
944 : _r1 = _o1[0];
945 0 : res_op1 = _r1;
946 : }
947 0 : tree _r;
948 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
949 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 217, __FILE__, __LINE__, true);
950 0 : return _r;
951 : }
952 : next_after_fail275:;
953 : }
954 : else
955 : {
956 362 : if (code1 == EQ_EXPR
957 362 : && code2 == LE_EXPR
958 : && one_after
959 0 : && allbits
960 362 : && ((VECTOR_BOOLEAN_TYPE_P (type)
961 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
962 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
963 : )
964 : {
965 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail276;
966 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail276;
967 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail276;
968 0 : {
969 0 : tree res_op0;
970 0 : res_op0 = captures[4];
971 0 : tree res_op1;
972 0 : {
973 0 : tree _o1[1], _r1;
974 0 : _o1[0] = captures[2];
975 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
976 : {
977 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
978 : }
979 : else
980 : _r1 = _o1[0];
981 0 : res_op1 = _r1;
982 : }
983 0 : tree _r;
984 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
985 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 218, __FILE__, __LINE__, true);
986 0 : return _r;
987 : }
988 : next_after_fail276:;
989 : }
990 : }
991 : }
992 : }
993 : }
994 : }
995 : }
996 : }
997 : }
998 : return NULL_TREE;
999 : }
1000 :
1001 : tree
1002 38 : generic_simplify_204 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1003 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1004 : const combined_fn ARG_UNUSED (POW))
1005 : {
1006 38 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1007 38 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1008 : )
1009 : {
1010 38 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail344;
1011 38 : {
1012 38 : tree res_op0;
1013 38 : res_op0 = captures[1];
1014 38 : tree res_op1;
1015 38 : {
1016 38 : tree _o1[2], _r1;
1017 38 : _o1[0] = captures[2];
1018 38 : _o1[1] = captures[4];
1019 38 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1020 38 : res_op1 = _r1;
1021 : }
1022 38 : tree _r;
1023 38 : _r = maybe_build_call_expr_loc (loc, POW, type, 2, res_op0, res_op1);
1024 38 : if (!_r)
1025 0 : goto next_after_fail344;
1026 38 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 259, __FILE__, __LINE__, true);
1027 38 : return _r;
1028 : }
1029 : next_after_fail344:;
1030 : }
1031 : return NULL_TREE;
1032 : }
1033 :
1034 : tree
1035 4 : generic_simplify_213 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1036 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1037 : {
1038 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1039 8 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1040 8 : && TYPE_PRECISION (TREE_TYPE (captures[1])) == 1
1041 : )
1042 : {
1043 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail356;
1044 0 : {
1045 0 : tree res_op0;
1046 0 : {
1047 0 : tree _o1[2], _r1;
1048 0 : _o1[0] = captures[1];
1049 0 : _o1[1] = captures[2];
1050 0 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1051 0 : res_op0 = _r1;
1052 : }
1053 0 : tree _r;
1054 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1055 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 270, __FILE__, __LINE__, true);
1056 0 : return _r;
1057 : }
1058 0 : next_after_fail356:;
1059 : }
1060 : return NULL_TREE;
1061 : }
1062 :
1063 : tree
1064 1897 : generic_simplify_218 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1065 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1066 : const enum tree_code ARG_UNUSED (cmp))
1067 : {
1068 1897 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1069 3794 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1070 1897 : && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0]))
1071 3794 : && (TREE_INT_CST_LOW (captures[1]) & 1) != 0
1072 : )
1073 : {
1074 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail361;
1075 10 : {
1076 10 : tree res_op0;
1077 10 : res_op0 = captures[0];
1078 10 : tree res_op1;
1079 10 : res_op1 = captures[2];
1080 10 : tree _r;
1081 10 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1082 10 : if (TREE_SIDE_EFFECTS (captures[1]))
1083 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1084 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 275, __FILE__, __LINE__, true);
1085 10 : return _r;
1086 : }
1087 0 : next_after_fail361:;
1088 : }
1089 : return NULL_TREE;
1090 : }
1091 :
1092 : tree
1093 0 : generic_simplify_225 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1094 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1095 : const enum tree_code ARG_UNUSED (op))
1096 : {
1097 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1098 0 : if (tree_nop_conversion_p (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
1099 0 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
1100 0 : && (CONSTANT_CLASS_P (captures[3]) || (single_use (captures[1]) && single_use (captures[0])))
1101 : )
1102 : {
1103 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail381;
1104 0 : {
1105 0 : tree res_op0;
1106 0 : res_op0 = captures[3];
1107 0 : tree res_op1;
1108 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[3]));
1109 0 : tree _r;
1110 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1111 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1112 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1113 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 291, __FILE__, __LINE__, true);
1114 0 : return _r;
1115 : }
1116 0 : next_after_fail381:;
1117 : }
1118 : return NULL_TREE;
1119 : }
1120 :
1121 : tree
1122 0 : generic_simplify_233 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1123 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1124 : const enum tree_code ARG_UNUSED (cmp))
1125 : {
1126 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1127 0 : if (wi::lt_p (wi::to_wide (captures[1]), wi::to_wide (captures[2]),
1128 0 : TYPE_SIGN (TREE_TYPE (captures[0])))
1129 : )
1130 : {
1131 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail389;
1132 0 : {
1133 0 : tree _r;
1134 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1135 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1136 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1137 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1138 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1139 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1140 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1141 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 302, __FILE__, __LINE__, true);
1142 0 : return _r;
1143 : }
1144 0 : next_after_fail389:;
1145 : }
1146 : else
1147 : {
1148 0 : if (wi::gt_p (wi::to_wide (captures[1]), wi::to_wide (captures[2]),
1149 0 : TYPE_SIGN (TREE_TYPE (captures[0])))
1150 : )
1151 : {
1152 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail390;
1153 0 : {
1154 0 : tree res_op0;
1155 0 : res_op0 = captures[0];
1156 0 : tree res_op1;
1157 0 : res_op1 = captures[2];
1158 0 : tree _r;
1159 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1160 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1161 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1162 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 303, __FILE__, __LINE__, true);
1163 0 : return _r;
1164 : }
1165 0 : next_after_fail390:;
1166 : }
1167 : }
1168 : return NULL_TREE;
1169 : }
1170 :
1171 : tree
1172 383 : generic_simplify_244 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1173 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1174 : const enum tree_code ARG_UNUSED (rotate),
1175 : const enum tree_code ARG_UNUSED (invrot),
1176 : const enum tree_code ARG_UNUSED (cmp))
1177 : {
1178 383 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1179 383 : if (integer_zerop (captures[2]) || integer_all_onesp (captures[2])
1180 : )
1181 : {
1182 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail412;
1183 0 : {
1184 0 : tree res_op0;
1185 0 : res_op0 = captures[0];
1186 0 : tree res_op1;
1187 0 : res_op1 = captures[2];
1188 0 : tree _r;
1189 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1190 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1191 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1192 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 325, __FILE__, __LINE__, true);
1193 0 : return _r;
1194 : }
1195 0 : next_after_fail412:;
1196 : }
1197 : return NULL_TREE;
1198 : }
1199 :
1200 : tree
1201 29541 : generic_simplify_252 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1202 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1203 : const enum tree_code ARG_UNUSED (cmp),
1204 : const enum tree_code ARG_UNUSED (scmp))
1205 : {
1206 29541 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1207 29541 : if (integer_zerop (captures[2])
1208 : )
1209 : {
1210 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail421;
1211 7 : {
1212 7 : tree res_op0;
1213 7 : res_op0 = captures[2];
1214 7 : tree res_op1;
1215 7 : res_op1 = captures[3];
1216 7 : tree _r;
1217 7 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1218 7 : if (TREE_SIDE_EFFECTS (captures[1]))
1219 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1220 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 333, __FILE__, __LINE__, true);
1221 7 : return _r;
1222 : }
1223 0 : next_after_fail421:;
1224 : }
1225 : else
1226 : {
1227 59068 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1228 59068 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
1229 59068 : && single_use (captures[0])
1230 : )
1231 : {
1232 5943 : if (tree_int_cst_sgn (captures[2]) < 0
1233 : )
1234 : {
1235 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail422;
1236 15 : {
1237 15 : tree res_op0;
1238 15 : res_op0 = captures[1];
1239 15 : tree res_op1;
1240 15 : res_op1 = captures[3];
1241 15 : tree _r;
1242 15 : _r = fold_build2_loc (loc, scmp, type, res_op0, res_op1);
1243 15 : if (TREE_SIDE_EFFECTS (captures[2]))
1244 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1245 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 334, __FILE__, __LINE__, true);
1246 15 : return _r;
1247 : }
1248 0 : next_after_fail422:;
1249 : }
1250 : else
1251 : {
1252 5928 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail423;
1253 5928 : {
1254 5928 : tree res_op0;
1255 5928 : res_op0 = captures[1];
1256 5928 : tree res_op1;
1257 5928 : res_op1 = captures[3];
1258 5928 : tree _r;
1259 5928 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1260 5928 : if (TREE_SIDE_EFFECTS (captures[2]))
1261 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1262 5928 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 335, __FILE__, __LINE__, true);
1263 5928 : return _r;
1264 : }
1265 0 : next_after_fail423:;
1266 : }
1267 : }
1268 : }
1269 : return NULL_TREE;
1270 : }
1271 :
1272 : tree
1273 78500 : generic_simplify_265 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1274 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1275 : const enum tree_code ARG_UNUSED (cmp),
1276 : const enum tree_code ARG_UNUSED (icmp))
1277 : {
1278 78500 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1279 78500 : if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (captures[1]))
1280 78500 : && ! DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[1]))
1281 : )
1282 : {
1283 78009 : {
1284 78009 : tree itype = TREE_TYPE (captures[0]);
1285 78009 : format_helper fmt (REAL_MODE_FORMAT (TYPE_MODE (TREE_TYPE (captures[1]))));
1286 78009 : const REAL_VALUE_TYPE *cst = TREE_REAL_CST_PTR (captures[1]);
1287 78009 : bool exception_p = real_isnan (cst)
1288 150 : && flag_trapping_math
1289 78159 : && ((cmp != EQ_EXPR && cmp != NE_EXPR)
1290 30 : || (cst->signalling
1291 30 : && HONOR_SNANS (TREE_TYPE (captures[1]))));
1292 78009 : if (fmt.can_represent_integral_type_p (itype) && ! exception_p
1293 : )
1294 : {
1295 37933 : {
1296 37933 : signop isign = TYPE_SIGN (itype);
1297 37933 : REAL_VALUE_TYPE imin, imax;
1298 37933 : real_from_integer (&imin, fmt, wi::min_value (itype), isign);
1299 37933 : real_from_integer (&imax, fmt, wi::max_value (itype), isign);
1300 37933 : REAL_VALUE_TYPE icst;
1301 37933 : if (cmp == GT_EXPR || cmp == GE_EXPR)
1302 37598 : real_ceil (&icst, fmt, cst);
1303 335 : else if (cmp == LT_EXPR || cmp == LE_EXPR)
1304 183 : real_floor (&icst, fmt, cst);
1305 : else
1306 152 : real_trunc (&icst, fmt, cst);
1307 37933 : bool cst_int_p = !real_isnan (cst) && real_identical (&icst, cst);
1308 37933 : bool overflow_p = false;
1309 37933 : wide_int icst_val
1310 37933 : = real_to_integer (&icst, &overflow_p, TYPE_PRECISION (itype));
1311 37933 : if (real_compare (LT_EXPR, cst, &imin)
1312 : )
1313 : {
1314 18796 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail474;
1315 18796 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail474;
1316 18796 : {
1317 18796 : tree _r;
1318 18796 : _r = constant_boolean_node (cmp == GT_EXPR || cmp == GE_EXPR || cmp == NE_EXPR,
1319 : type);
1320 18796 : if (TREE_SIDE_EFFECTS (captures[0]))
1321 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1322 18796 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 385, __FILE__, __LINE__, true);
1323 18796 : return _r;
1324 : }
1325 0 : next_after_fail474:;
1326 : }
1327 : else
1328 : {
1329 19137 : if (real_compare (GT_EXPR, cst, &imax)
1330 : )
1331 : {
1332 99 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail475;
1333 99 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail475;
1334 99 : {
1335 99 : tree _r;
1336 99 : _r = constant_boolean_node (cmp == LT_EXPR || cmp == LE_EXPR || cmp == NE_EXPR,
1337 : type);
1338 99 : if (TREE_SIDE_EFFECTS (captures[0]))
1339 1 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1340 99 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 386, __FILE__, __LINE__, true);
1341 99 : return _r;
1342 : }
1343 0 : next_after_fail475:;
1344 : }
1345 : else
1346 : {
1347 19038 : if (cst_int_p
1348 : )
1349 : {
1350 18930 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail476;
1351 18930 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail476;
1352 18930 : {
1353 18930 : tree res_op0;
1354 18930 : res_op0 = captures[0];
1355 18930 : tree res_op1;
1356 18930 : gcc_assert (!overflow_p); res_op1 =
1357 18930 : wide_int_to_tree (itype, icst_val);
1358 18930 : tree _r;
1359 18930 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1360 18930 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 387, __FILE__, __LINE__, true);
1361 18930 : return _r;
1362 : }
1363 0 : next_after_fail476:;
1364 : }
1365 : else
1366 : {
1367 108 : if (cmp == EQ_EXPR || cmp == NE_EXPR
1368 : )
1369 : {
1370 14 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail477;
1371 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail477;
1372 14 : {
1373 14 : tree _r;
1374 14 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1375 14 : if (TREE_SIDE_EFFECTS (captures[0]))
1376 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1377 14 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 388, __FILE__, __LINE__, true);
1378 14 : return _r;
1379 : }
1380 0 : next_after_fail477:;
1381 : }
1382 : else
1383 : {
1384 94 : {
1385 94 : gcc_checking_assert (!overflow_p);
1386 94 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail478;
1387 94 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail478;
1388 94 : {
1389 94 : tree res_op0;
1390 94 : res_op0 = captures[0];
1391 94 : tree res_op1;
1392 94 : res_op1 = wide_int_to_tree (itype, icst_val);
1393 94 : tree _r;
1394 94 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1395 94 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 389, __FILE__, __LINE__, true);
1396 94 : return _r;
1397 : }
1398 0 : next_after_fail478:;
1399 : }
1400 : }
1401 : }
1402 : }
1403 : }
1404 37933 : }
1405 : }
1406 : }
1407 : }
1408 : return NULL_TREE;
1409 : }
1410 :
1411 : tree
1412 29066224 : generic_simplify_279 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1413 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1414 : const enum tree_code ARG_UNUSED (cmp))
1415 : {
1416 29066224 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1417 29066224 : if (tree_expr_nonzero_p (captures[0])
1418 : )
1419 : {
1420 1087495 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail511;
1421 1087495 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail511;
1422 1087495 : {
1423 1087495 : tree _r;
1424 1087495 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1425 1087495 : if (TREE_SIDE_EFFECTS (captures[0]))
1426 6712 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1427 1087495 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 414, __FILE__, __LINE__, true);
1428 1087495 : return _r;
1429 : }
1430 : next_after_fail511:;
1431 : }
1432 : return NULL_TREE;
1433 : }
1434 :
1435 : tree
1436 87 : generic_simplify_284 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1437 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1438 : const enum tree_code ARG_UNUSED (sgncmp),
1439 : const enum tree_code ARG_UNUSED (cmp),
1440 : const enum tree_code ARG_UNUSED (ncmp))
1441 : {
1442 87 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1443 174 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1444 87 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1445 174 : && types_match (captures[0], captures[2])
1446 : )
1447 : {
1448 87 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail516;
1449 87 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail516;
1450 87 : {
1451 87 : tree res_op0;
1452 87 : {
1453 87 : tree _o1[2], _r1;
1454 87 : _o1[0] = captures[0];
1455 87 : _o1[1] = captures[2];
1456 87 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1457 87 : res_op0 = _r1;
1458 : }
1459 87 : tree res_op1;
1460 87 : res_op1 = captures[1];
1461 87 : tree _r;
1462 87 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
1463 87 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 418, __FILE__, __LINE__, true);
1464 87 : return _r;
1465 : }
1466 : next_after_fail516:;
1467 : }
1468 : return NULL_TREE;
1469 : }
1470 :
1471 : tree
1472 109819 : generic_simplify_289 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1473 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1474 : const enum tree_code ARG_UNUSED (cmp))
1475 : {
1476 109819 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1477 109819 : {
1478 109819 : poly_int64 off0, off1;
1479 109819 : tree base0, base1;
1480 109819 : int equal = address_compare (cmp, TREE_TYPE (captures[0]), captures[1], captures[2], base0, base1,
1481 : off0, off1,
1482 : 1
1483 : );
1484 109819 : if (equal == 1
1485 : )
1486 : {
1487 95555 : if (cmp == EQ_EXPR && (known_eq (off0, off1) || known_ne (off0, off1))
1488 : )
1489 : {
1490 7709 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail528;
1491 7709 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail528;
1492 7709 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail528;
1493 7709 : {
1494 7709 : tree _r;
1495 7709 : _r = constant_boolean_node (known_eq (off0, off1), type);
1496 7709 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 421, __FILE__, __LINE__, true);
1497 97371 : return _r;
1498 : }
1499 12448 : next_after_fail528:;
1500 : }
1501 : else
1502 : {
1503 47663 : if (cmp == NE_EXPR && (known_eq (off0, off1) || known_ne (off0, off1))
1504 : )
1505 : {
1506 47663 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail529;
1507 47663 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail529;
1508 47663 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail529;
1509 47663 : {
1510 47663 : tree _r;
1511 47663 : _r = constant_boolean_node (known_ne (off0, off1), type);
1512 47663 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 422, __FILE__, __LINE__, true);
1513 47663 : return _r;
1514 : }
1515 12448 : next_after_fail529:;
1516 : }
1517 : else
1518 : {
1519 29093 : if (cmp == LT_EXPR && (known_lt (off0, off1) || known_ge (off0, off1))
1520 : )
1521 : {
1522 29093 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail530;
1523 29093 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail530;
1524 29093 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail530;
1525 29093 : {
1526 29093 : tree _r;
1527 29093 : _r = constant_boolean_node (known_lt (off0, off1), type);
1528 29093 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 423, __FILE__, __LINE__, true);
1529 29093 : return _r;
1530 : }
1531 12448 : next_after_fail530:;
1532 : }
1533 : else
1534 : {
1535 379 : if (cmp == LE_EXPR && (known_le (off0, off1) || known_gt (off0, off1))
1536 : )
1537 : {
1538 379 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail531;
1539 379 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail531;
1540 379 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail531;
1541 379 : {
1542 379 : tree _r;
1543 379 : _r = constant_boolean_node (known_le (off0, off1), type);
1544 379 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 424, __FILE__, __LINE__, true);
1545 379 : return _r;
1546 : }
1547 12448 : next_after_fail531:;
1548 : }
1549 : else
1550 : {
1551 7144 : if (cmp == GE_EXPR && (known_ge (off0, off1) || known_lt (off0, off1))
1552 : )
1553 : {
1554 7144 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail532;
1555 7144 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail532;
1556 7144 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail532;
1557 7144 : {
1558 7144 : tree _r;
1559 7144 : _r = constant_boolean_node (known_ge (off0, off1), type);
1560 7144 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 425, __FILE__, __LINE__, true);
1561 7144 : return _r;
1562 : }
1563 12448 : next_after_fail532:;
1564 : }
1565 : else
1566 : {
1567 3567 : if (cmp == GT_EXPR && (known_gt (off0, off1) || known_le (off0, off1))
1568 : )
1569 : {
1570 3567 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail533;
1571 3567 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail533;
1572 3567 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail533;
1573 3567 : {
1574 3567 : tree _r;
1575 3567 : _r = constant_boolean_node (known_gt (off0, off1), type);
1576 3567 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 426, __FILE__, __LINE__, true);
1577 3567 : return _r;
1578 : }
1579 12448 : next_after_fail533:;
1580 : }
1581 : }
1582 : }
1583 : }
1584 : }
1585 : }
1586 : }
1587 : else
1588 : {
1589 14264 : if (equal == 0
1590 : )
1591 : {
1592 1816 : if (cmp == EQ_EXPR
1593 : )
1594 : {
1595 888 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail534;
1596 888 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail534;
1597 888 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail534;
1598 888 : {
1599 888 : tree _r;
1600 888 : _r = constant_boolean_node (false, type);
1601 888 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 427, __FILE__, __LINE__, true);
1602 888 : return _r;
1603 : }
1604 12448 : next_after_fail534:;
1605 : }
1606 : else
1607 : {
1608 928 : if (cmp == NE_EXPR
1609 : )
1610 : {
1611 928 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail535;
1612 928 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail535;
1613 928 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail535;
1614 928 : {
1615 928 : tree _r;
1616 928 : _r = constant_boolean_node (true, type);
1617 928 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 428, __FILE__, __LINE__, true);
1618 928 : return _r;
1619 : }
1620 12448 : next_after_fail535:;
1621 : }
1622 : }
1623 : }
1624 : }
1625 : }
1626 12448 : return NULL_TREE;
1627 : }
1628 :
1629 : tree
1630 27561 : generic_simplify_304 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1631 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1632 : const enum tree_code ARG_UNUSED (cmp),
1633 : const enum tree_code ARG_UNUSED (icmp),
1634 : const enum tree_code ARG_UNUSED (ncmp))
1635 : {
1636 27561 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1637 27561 : if (types_match (type, TREE_TYPE (captures[0]))
1638 : )
1639 : {
1640 26791 : {
1641 26791 : enum tree_code ic = invert_tree_comparison
1642 26791 : (cmp, HONOR_NANS (captures[1]));
1643 26791 : if (ic == icmp
1644 : )
1645 : {
1646 22031 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail569;
1647 22031 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail569;
1648 22031 : {
1649 22031 : tree res_op0;
1650 22031 : res_op0 = captures[1];
1651 22031 : tree res_op1;
1652 22031 : res_op1 = captures[2];
1653 22031 : tree _r;
1654 22031 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1655 22031 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 462, __FILE__, __LINE__, true);
1656 22031 : return _r;
1657 : }
1658 : next_after_fail569:;
1659 : }
1660 : else
1661 : {
1662 4760 : if (ic == ncmp
1663 : )
1664 : {
1665 5 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail570;
1666 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail570;
1667 5 : {
1668 5 : tree res_op0;
1669 5 : res_op0 = captures[1];
1670 5 : tree res_op1;
1671 5 : res_op1 = captures[2];
1672 5 : tree _r;
1673 5 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
1674 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 463, __FILE__, __LINE__, true);
1675 5 : return _r;
1676 : }
1677 : next_after_fail570:;
1678 : }
1679 : }
1680 : }
1681 : }
1682 : return NULL_TREE;
1683 : }
1684 :
1685 : tree
1686 7 : generic_simplify_312 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1687 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1688 : const enum tree_code ARG_UNUSED (div))
1689 : {
1690 7 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1691 14 : if ((TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (captures[0]))
1692 0 : && (!VECTOR_TYPE_P (type)
1693 0 : || target_supports_op_p (type, RSHIFT_EXPR, optab_vector)
1694 0 : || target_supports_op_p (type, RSHIFT_EXPR, optab_scalar))
1695 7 : && (useless_type_conversion_p (type, TREE_TYPE (captures[2]))
1696 0 : || (element_precision (type) >= element_precision (TREE_TYPE (captures[2]))
1697 0 : && (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
1698 0 : || (element_precision (type)
1699 0 : == element_precision (TREE_TYPE (captures[2])))
1700 0 : || (INTEGRAL_TYPE_P (type)
1701 0 : && (tree_nonzero_bits (captures[0])
1702 7 : & wi::mask (element_precision (TREE_TYPE (captures[2])) - 1,
1703 : true,
1704 7 : element_precision (type))) == 0))))
1705 : )
1706 : {
1707 0 : if (!VECTOR_TYPE_P (type)
1708 0 : && useless_type_conversion_p (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
1709 0 : && element_precision (TREE_TYPE (captures[1])) < element_precision (type)
1710 : )
1711 : {
1712 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail578;
1713 0 : {
1714 0 : tree res_op0;
1715 0 : {
1716 0 : tree _o1[2], _r1;
1717 0 : _o1[0] = captures[1];
1718 0 : _o1[1] = captures[3];
1719 0 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1720 0 : res_op0 = _r1;
1721 : }
1722 0 : tree _r;
1723 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1724 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1725 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1726 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 471, __FILE__, __LINE__, true);
1727 0 : return _r;
1728 : }
1729 0 : next_after_fail578:;
1730 : }
1731 : else
1732 : {
1733 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail579;
1734 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail579;
1735 0 : {
1736 0 : tree res_op0;
1737 0 : res_op0 = captures[0];
1738 0 : tree res_op1;
1739 0 : res_op1 = captures[3];
1740 0 : tree _r;
1741 0 : _r = fold_build2_loc (loc, RSHIFT_EXPR, type, res_op0, res_op1);
1742 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1743 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1744 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 472, __FILE__, __LINE__, true);
1745 0 : return _r;
1746 : }
1747 : next_after_fail579:;
1748 : }
1749 : }
1750 : return NULL_TREE;
1751 : }
1752 :
1753 : tree
1754 232 : generic_simplify_329 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1755 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1756 : const enum tree_code ARG_UNUSED (mod))
1757 : {
1758 232 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1759 232 : if (!integer_zerop (captures[0])
1760 : )
1761 : {
1762 93 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail598;
1763 93 : {
1764 93 : tree _r;
1765 93 : _r = build_zero_cst (type);
1766 93 : if (TREE_SIDE_EFFECTS (captures[0]))
1767 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1768 93 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 489, __FILE__, __LINE__, true);
1769 93 : return _r;
1770 : }
1771 0 : next_after_fail598:;
1772 : }
1773 : return NULL_TREE;
1774 : }
1775 :
1776 : tree
1777 3 : generic_simplify_339 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1778 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1779 : const combined_fn ARG_UNUSED (TANH),
1780 : const combined_fn ARG_UNUSED (SINH),
1781 : const combined_fn ARG_UNUSED (COSH))
1782 : {
1783 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1784 3 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1785 : )
1786 : {
1787 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail610;
1788 3 : {
1789 3 : tree res_op0;
1790 3 : res_op0 = build_one_cst (type);
1791 3 : tree res_op1;
1792 3 : {
1793 3 : tree _o1[1], _r1;
1794 3 : _o1[0] = captures[1];
1795 3 : _r1 = maybe_build_call_expr_loc (loc, COSH, TREE_TYPE (_o1[0]), 1, _o1[0]);
1796 3 : if (!_r1)
1797 0 : goto next_after_fail610;
1798 3 : res_op1 = _r1;
1799 : }
1800 3 : tree _r;
1801 3 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
1802 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 501, __FILE__, __LINE__, true);
1803 3 : return _r;
1804 : }
1805 : next_after_fail610:;
1806 : }
1807 : return NULL_TREE;
1808 : }
1809 :
1810 : tree
1811 2 : generic_simplify_347 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1812 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1813 : const enum tree_code ARG_UNUSED (cmp),
1814 : const enum tree_code ARG_UNUSED (minmax))
1815 : {
1816 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1817 2 : {
1818 2 : tree_code code = minmax_from_comparison (cmp, captures[0], captures[3], captures[0], captures[1]);
1819 2 : if (code == MIN_EXPR
1820 : )
1821 : {
1822 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail621;
1823 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail621;
1824 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail621;
1825 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail621;
1826 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail621;
1827 0 : {
1828 0 : tree res_op0;
1829 0 : {
1830 0 : tree _o1[2], _r1;
1831 0 : _o1[0] = captures[0];
1832 0 : _o1[1] = captures[3];
1833 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1834 0 : res_op0 = _r1;
1835 : }
1836 0 : tree res_op1;
1837 0 : res_op1 = captures[2];
1838 0 : tree _r;
1839 0 : _r = fold_build2_loc (loc, minmax, type, res_op0, res_op1);
1840 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 512, __FILE__, __LINE__, true);
1841 0 : return _r;
1842 : }
1843 : next_after_fail621:;
1844 : }
1845 : else
1846 : {
1847 2 : if (code == MAX_EXPR
1848 : )
1849 : {
1850 2 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail622;
1851 2 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail622;
1852 2 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail622;
1853 2 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail622;
1854 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail622;
1855 2 : {
1856 2 : tree res_op0;
1857 2 : {
1858 2 : tree _o1[2], _r1;
1859 2 : _o1[0] = captures[0];
1860 2 : _o1[1] = captures[3];
1861 2 : _r1 = fold_build2_loc (loc, MAX_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1862 2 : res_op0 = _r1;
1863 : }
1864 2 : tree res_op1;
1865 2 : res_op1 = captures[2];
1866 2 : tree _r;
1867 2 : _r = fold_build2_loc (loc, minmax, type, res_op0, res_op1);
1868 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 513, __FILE__, __LINE__, true);
1869 2 : return _r;
1870 : }
1871 : next_after_fail622:;
1872 : }
1873 : }
1874 : }
1875 : return NULL_TREE;
1876 : }
1877 :
1878 : tree
1879 36 : generic_simplify_363 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1880 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1881 : const enum tree_code ARG_UNUSED (op))
1882 : {
1883 36 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1884 36 : {
1885 36 : auto c1 = wi::to_wide (captures[1]);
1886 36 : auto c2 = wi::to_wide (captures[2]);
1887 36 : if (wi::popcount (c1) == 1
1888 120 : && ((op == PLUS_EXPR && wi::eq_p (wi::neg (c2), c1))
1889 48 : || (op == BIT_AND_EXPR && wi::eq_p (wi::bit_not (c2), c1)))
1890 : )
1891 : {
1892 24 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail640;
1893 24 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail640;
1894 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail640;
1895 24 : {
1896 24 : tree res_op0;
1897 24 : res_op0 = captures[0];
1898 24 : tree res_op1;
1899 24 : res_op1 = captures[1];
1900 24 : tree _r;
1901 24 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
1902 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 531, __FILE__, __LINE__, true);
1903 24 : return _r;
1904 : }
1905 12 : next_after_fail640:;
1906 : }
1907 : }
1908 12 : return NULL_TREE;
1909 : }
1910 :
1911 : tree
1912 1609 : generic_simplify_373 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1913 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
1914 : {
1915 1609 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1916 1609 : if (INTEGRAL_TYPE_P (type)
1917 : )
1918 : {
1919 1609 : {
1920 1609 : tree itype = TREE_TYPE (captures[2]);
1921 1609 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail651;
1922 1609 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail651;
1923 1609 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail651;
1924 1609 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail651;
1925 1609 : {
1926 1609 : tree res_op0;
1927 1609 : {
1928 1609 : tree _o1[2], _r1;
1929 1609 : _o1[0] = captures[2];
1930 1609 : {
1931 1609 : tree _o2[1], _r2;
1932 1609 : _o2[0] = captures[0];
1933 1609 : if (TREE_TYPE (_o2[0]) != itype)
1934 : {
1935 1608 : _r2 = fold_build1_loc (loc, NOP_EXPR, itype, _o2[0]);
1936 : }
1937 : else
1938 : _r2 = _o2[0];
1939 1609 : _o1[1] = _r2;
1940 : }
1941 1609 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1942 1609 : res_op0 = _r1;
1943 : }
1944 1609 : tree _r;
1945 1609 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1946 1609 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 541, __FILE__, __LINE__, true);
1947 1609 : return _r;
1948 : }
1949 : next_after_fail651:;
1950 : }
1951 : }
1952 : return NULL_TREE;
1953 : }
1954 :
1955 : tree
1956 475275 : generic_simplify_382 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1957 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1958 : const enum tree_code ARG_UNUSED (op))
1959 : {
1960 475275 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1961 950549 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1962 950462 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
1963 292869 : && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[1]))
1964 950506 : && (CONSTANT_CLASS_P (captures[1]) || single_use (captures[0]))
1965 : )
1966 : {
1967 292796 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail664;
1968 292796 : {
1969 292796 : tree res_op0;
1970 292796 : res_op0 = captures[1];
1971 292796 : tree res_op1;
1972 292796 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
1973 292796 : tree _r;
1974 292796 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1975 292796 : if (TREE_SIDE_EFFECTS (captures[2]))
1976 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1977 292796 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 553, __FILE__, __LINE__, true);
1978 292796 : return _r;
1979 : }
1980 0 : next_after_fail664:;
1981 : }
1982 : return NULL_TREE;
1983 : }
1984 :
1985 : tree
1986 64 : generic_simplify_389 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1987 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1988 : const enum tree_code ARG_UNUSED (minmax),
1989 : const enum tree_code ARG_UNUSED (cmp),
1990 : const enum tree_code ARG_UNUSED (comb))
1991 : {
1992 64 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1993 64 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail672;
1994 64 : {
1995 64 : if (! tree_invariant_p (captures[2])) goto next_after_fail672;
1996 64 : tree res_op0;
1997 64 : {
1998 64 : tree _o1[2], _r1;
1999 64 : _o1[0] = captures[0];
2000 64 : _o1[1] = unshare_expr (captures[2]);
2001 64 : _r1 = fold_build2_loc (loc, cmp, type, _o1[0], _o1[1]);
2002 64 : res_op0 = _r1;
2003 : }
2004 64 : tree res_op1;
2005 64 : {
2006 64 : tree _o1[2], _r1;
2007 64 : _o1[0] = captures[1];
2008 64 : _o1[1] = captures[2];
2009 64 : _r1 = fold_build2_loc (loc, cmp, type, _o1[0], _o1[1]);
2010 64 : res_op1 = _r1;
2011 : }
2012 64 : tree _r;
2013 64 : _r = fold_build2_loc (loc, comb, type, res_op0, res_op1);
2014 64 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 561, __FILE__, __LINE__, true);
2015 : return _r;
2016 : }
2017 : next_after_fail672:;
2018 : return NULL_TREE;
2019 : }
2020 :
2021 : tree
2022 0 : generic_simplify_400 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2023 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2024 : const enum tree_code ARG_UNUSED (cmp),
2025 : const enum tree_code ARG_UNUSED (out))
2026 : {
2027 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2028 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2029 0 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
2030 : )
2031 : {
2032 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail715;
2033 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail715;
2034 0 : {
2035 0 : tree res_op0;
2036 0 : {
2037 0 : tree _o1[1], _r1;
2038 0 : _o1[0] = captures[0];
2039 0 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
2040 0 : res_op0 = _r1;
2041 : }
2042 0 : tree res_op1;
2043 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
2044 0 : tree _r;
2045 0 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
2046 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 587, __FILE__, __LINE__, true);
2047 0 : return _r;
2048 : }
2049 : next_after_fail715:;
2050 : }
2051 : return NULL_TREE;
2052 : }
2053 :
2054 : tree
2055 748827 : generic_simplify_407 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2056 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2057 : const enum tree_code ARG_UNUSED (cmp),
2058 : const enum tree_code ARG_UNUSED (icmp))
2059 : {
2060 748827 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2061 1495472 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2062 748827 : && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
2063 330123 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > 1
2064 1827777 : && (wi::to_wide (captures[2])
2065 1739196 : == wi::max_value (TYPE_PRECISION (TREE_TYPE (captures[0])), SIGNED) - 1)
2066 : )
2067 : {
2068 4718 : {
2069 4718 : tree stype = signed_type_for (TREE_TYPE (captures[0]));
2070 4718 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail729;
2071 4718 : {
2072 4718 : tree res_op0;
2073 4718 : {
2074 4718 : tree _o1[1], _r1;
2075 4718 : _o1[0] = captures[0];
2076 4718 : if (TREE_TYPE (_o1[0]) != stype)
2077 : {
2078 4718 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
2079 : }
2080 : else
2081 : _r1 = _o1[0];
2082 4718 : res_op0 = _r1;
2083 : }
2084 4718 : tree res_op1;
2085 4718 : res_op1 = build_int_cst (stype, 0);
2086 4718 : tree _r;
2087 4718 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
2088 4718 : if (TREE_SIDE_EFFECTS (captures[1]))
2089 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2090 4718 : if (TREE_SIDE_EFFECTS (captures[2]))
2091 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2092 4718 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 601, __FILE__, __LINE__, true);
2093 4718 : return _r;
2094 : }
2095 0 : next_after_fail729:;
2096 : }
2097 : }
2098 : return NULL_TREE;
2099 : }
2100 :
2101 : tree
2102 0 : generic_simplify_413 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2103 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2104 : const enum tree_code ARG_UNUSED (cmp),
2105 : const enum tree_code ARG_UNUSED (out))
2106 : {
2107 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2108 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2])) && !VECTOR_TYPE_P (TREE_TYPE (captures[2]))
2109 : )
2110 : {
2111 0 : {
2112 0 : tree t = TREE_TYPE (captures[2]), cpx = build_complex_type (t);
2113 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail735;
2114 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail735;
2115 0 : {
2116 0 : tree res_op0;
2117 0 : {
2118 0 : tree _o1[1], _r1;
2119 0 : {
2120 0 : tree _o2[2], _r2;
2121 0 : _o2[0] = captures[2];
2122 0 : _o2[1] = captures[1];
2123 0 : _r2 = maybe_build_call_expr_loc (loc, CFN_MUL_OVERFLOW, cpx, 2, _o2[0], _o2[1]);
2124 0 : if (!_r2)
2125 0 : goto next_after_fail735;
2126 0 : _o1[0] = _r2;
2127 : }
2128 0 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
2129 0 : res_op0 = _r1;
2130 : }
2131 0 : tree res_op1;
2132 0 : res_op1 = build_zero_cst (t);
2133 0 : tree _r;
2134 0 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
2135 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 589, __FILE__, __LINE__, true);
2136 0 : return _r;
2137 : }
2138 : next_after_fail735:;
2139 : }
2140 : }
2141 : return NULL_TREE;
2142 : }
2143 :
2144 : tree
2145 1640834 : generic_simplify_419 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2146 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2147 : const enum tree_code ARG_UNUSED (shift))
2148 : {
2149 1640834 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2150 1640834 : if ((
2151 :
2152 1640834 : || !sanitize_flags_p (SANITIZE_SHIFT_EXPONENT))
2153 1638884 : && (TYPE_UNSIGNED (type)
2154 395038 : || shift == LSHIFT_EXPR
2155 200887 : || tree_expr_nonnegative_p (captures[0]))
2156 3080820 : && wi::ges_p (wi::to_wide (uniform_integer_cst_p (captures[1])),
2157 3079598 : element_precision (type))
2158 : )
2159 : {
2160 1222 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail745;
2161 1222 : {
2162 1222 : tree _r;
2163 1222 : _r = build_zero_cst (type);
2164 1222 : if (TREE_SIDE_EFFECTS (captures[0]))
2165 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2166 1222 : if (TREE_SIDE_EFFECTS (captures[1]))
2167 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2168 1222 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 613, __FILE__, __LINE__, true);
2169 1222 : return _r;
2170 : }
2171 0 : next_after_fail745:;
2172 : }
2173 : return NULL_TREE;
2174 : }
2175 :
2176 : tree
2177 67 : generic_simplify_428 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2178 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2179 : {
2180 67 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2181 67 : if (wi::ltu_p (wi::to_wide (captures[1]), element_precision (type))
2182 : )
2183 : {
2184 67 : if (TYPE_UNSIGNED (type)
2185 : )
2186 : {
2187 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail757;
2188 2 : {
2189 2 : tree res_op0;
2190 2 : {
2191 2 : tree _o1[1], _r1;
2192 2 : _o1[0] = captures[0];
2193 2 : if (TREE_TYPE (_o1[0]) != type)
2194 : {
2195 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2196 : }
2197 : else
2198 : _r1 = _o1[0];
2199 2 : res_op0 = _r1;
2200 : }
2201 2 : tree res_op1;
2202 2 : {
2203 2 : tree _o1[2], _r1;
2204 2 : _o1[0] = build_minus_one_cst (type);
2205 2 : _o1[1] = captures[1];
2206 2 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2207 2 : res_op1 = _r1;
2208 : }
2209 2 : tree _r;
2210 2 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2211 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 623, __FILE__, __LINE__, true);
2212 2 : return _r;
2213 : }
2214 0 : next_after_fail757:;
2215 : }
2216 : else
2217 : {
2218 65 : if (INTEGRAL_TYPE_P (type)
2219 : )
2220 : {
2221 65 : {
2222 65 : int width = element_precision (type) - tree_to_uhwi (captures[1]);
2223 65 : tree stype = NULL_TREE;
2224 130 : if (width <= MAX_FIXED_MODE_SIZE)
2225 65 : stype = build_nonstandard_integer_type (width, 0);
2226 65 : if (stype && (width == 1 || type_has_mode_precision_p (stype))
2227 : )
2228 : {
2229 25 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail758;
2230 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail758;
2231 25 : {
2232 25 : tree res_op0;
2233 25 : {
2234 25 : tree _o1[1], _r1;
2235 25 : _o1[0] = captures[0];
2236 25 : if (TREE_TYPE (_o1[0]) != stype)
2237 : {
2238 25 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
2239 : }
2240 : else
2241 : _r1 = _o1[0];
2242 25 : res_op0 = _r1;
2243 : }
2244 25 : tree _r;
2245 25 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2246 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 624, __FILE__, __LINE__, true);
2247 25 : return _r;
2248 : }
2249 : next_after_fail758:;
2250 : }
2251 : }
2252 : }
2253 : }
2254 : }
2255 : return NULL_TREE;
2256 : }
2257 :
2258 : tree
2259 804907 : generic_simplify_435 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2260 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2261 : const enum tree_code ARG_UNUSED (op))
2262 : {
2263 804907 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2264 804907 : if (INTEGRAL_TYPE_P (type)
2265 706039 : && op != MULT_EXPR
2266 706039 : && op != RDIV_EXPR
2267 372223 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2268 313269 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2269 313269 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
2270 267513 : && type_has_mode_precision_p (TREE_TYPE (captures[4]))
2271 267230 : && type_has_mode_precision_p (type)
2272 267208 : && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2]))
2273 22561 : && types_match (captures[2], type)
2274 807514 : && (types_match (captures[2], captures[4])
2275 2538 : || poly_int_tree_p (captures[3]))
2276 : )
2277 : {
2278 69 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
2279 : )
2280 : {
2281 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail770;
2282 15 : {
2283 15 : tree res_op0;
2284 15 : res_op0 = captures[2];
2285 15 : tree res_op1;
2286 15 : {
2287 15 : tree _o1[1], _r1;
2288 15 : _o1[0] = captures[4];
2289 15 : if (TREE_TYPE (_o1[0]) != type)
2290 : {
2291 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2292 : }
2293 : else
2294 : _r1 = _o1[0];
2295 15 : res_op1 = _r1;
2296 : }
2297 15 : tree _r;
2298 15 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2299 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 636, __FILE__, __LINE__, true);
2300 15 : return _r;
2301 : }
2302 0 : next_after_fail770:;
2303 : }
2304 : else
2305 : {
2306 54 : {
2307 54 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
2308 54 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail771;
2309 54 : {
2310 54 : tree res_op0;
2311 54 : {
2312 54 : tree _o1[2], _r1;
2313 54 : {
2314 54 : tree _o2[1], _r2;
2315 54 : _o2[0] = captures[2];
2316 54 : if (TREE_TYPE (_o2[0]) != utype)
2317 : {
2318 54 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2319 : }
2320 : else
2321 : _r2 = _o2[0];
2322 54 : _o1[0] = _r2;
2323 : }
2324 54 : {
2325 54 : tree _o2[1], _r2;
2326 54 : _o2[0] = captures[4];
2327 54 : if (TREE_TYPE (_o2[0]) != utype)
2328 : {
2329 54 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2330 : }
2331 : else
2332 : _r2 = _o2[0];
2333 54 : _o1[1] = _r2;
2334 : }
2335 54 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2336 54 : res_op0 = _r1;
2337 : }
2338 54 : tree _r;
2339 54 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2340 54 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 637, __FILE__, __LINE__, true);
2341 54 : return _r;
2342 : }
2343 0 : next_after_fail771:;
2344 : }
2345 : }
2346 : }
2347 : else
2348 : {
2349 794262 : if (FLOAT_TYPE_P (type)
2350 815414 : && DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
2351 10576 : == DECIMAL_FLOAT_TYPE_P (type)
2352 : )
2353 : {
2354 10553 : {
2355 10553 : tree arg0 = strip_float_extensions (captures[2]);
2356 10553 : tree arg1 = strip_float_extensions (captures[4]);
2357 10553 : tree itype = TREE_TYPE (captures[0]);
2358 10553 : tree ty1 = TREE_TYPE (arg0);
2359 10553 : tree ty2 = TREE_TYPE (arg1);
2360 10553 : enum tree_code code = TREE_CODE (itype);
2361 0 : if (FLOAT_TYPE_P (ty1)
2362 10553 : && FLOAT_TYPE_P (ty2)
2363 : )
2364 : {
2365 10553 : {
2366 10553 : tree newtype = type;
2367 10553 : if (TYPE_MODE (ty1) == SDmode
2368 10544 : || TYPE_MODE (ty2) == SDmode
2369 21097 : || TYPE_MODE (type) == SDmode)
2370 9 : newtype = dfloat32_type_node;
2371 10553 : if (TYPE_MODE (ty1) == DDmode
2372 10547 : || TYPE_MODE (ty2) == DDmode
2373 21100 : || TYPE_MODE (type) == DDmode)
2374 6 : newtype = dfloat64_type_node;
2375 10553 : if (TYPE_MODE (ty1) == TDmode
2376 10553 : || TYPE_MODE (ty2) == TDmode
2377 21106 : || TYPE_MODE (type) == TDmode)
2378 15 : newtype = dfloat128_type_node;
2379 10553 : if ((newtype == dfloat32_type_node
2380 10553 : || newtype == dfloat64_type_node
2381 10553 : || newtype == dfloat128_type_node)
2382 15 : && newtype == type
2383 10559 : && types_match (newtype, type)
2384 : )
2385 : {
2386 6 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail772;
2387 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail772;
2388 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail772;
2389 0 : {
2390 0 : tree res_op0;
2391 0 : {
2392 0 : tree _o1[1], _r1;
2393 0 : _o1[0] = captures[2];
2394 0 : if (TREE_TYPE (_o1[0]) != newtype)
2395 : {
2396 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2397 : }
2398 : else
2399 : _r1 = _o1[0];
2400 0 : res_op0 = _r1;
2401 : }
2402 0 : tree res_op1;
2403 0 : {
2404 0 : tree _o1[1], _r1;
2405 0 : _o1[0] = captures[4];
2406 0 : if (TREE_TYPE (_o1[0]) != newtype)
2407 : {
2408 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
2409 : }
2410 : else
2411 : _r1 = _o1[0];
2412 0 : res_op1 = _r1;
2413 : }
2414 0 : tree _r;
2415 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2416 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 638, __FILE__, __LINE__, true);
2417 0 : return _r;
2418 : }
2419 : next_after_fail772:;
2420 : }
2421 : else
2422 : {
2423 10547 : {
2424 10547 : if (element_precision (ty1) > element_precision (newtype))
2425 4 : newtype = ty1;
2426 10547 : if (element_precision (ty2) > element_precision (newtype))
2427 2 : newtype = ty2;
2428 10547 : if (element_precision (newtype) < element_precision (itype)
2429 10302 : && (!VECTOR_MODE_P (TYPE_MODE (newtype))
2430 0 : || target_supports_op_p (newtype, op, optab_default))
2431 10302 : && (flag_unsafe_math_optimizations
2432 10285 : || (element_precision (newtype) == element_precision (type)
2433 10281 : && real_can_shorten_arithmetic (element_mode (itype),
2434 : element_mode (type))
2435 3460 : && !excess_precision_type (newtype)))
2436 10572 : && !types_match (itype, newtype)
2437 : )
2438 : {
2439 25 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail773;
2440 25 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail773;
2441 17 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail773;
2442 17 : {
2443 17 : tree res_op0;
2444 17 : {
2445 17 : tree _o1[2], _r1;
2446 17 : {
2447 17 : tree _o2[1], _r2;
2448 17 : _o2[0] = captures[2];
2449 17 : if (TREE_TYPE (_o2[0]) != newtype)
2450 : {
2451 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2452 : }
2453 : else
2454 : _r2 = _o2[0];
2455 17 : _o1[0] = _r2;
2456 : }
2457 17 : {
2458 17 : tree _o2[1], _r2;
2459 17 : _o2[0] = captures[4];
2460 17 : if (TREE_TYPE (_o2[0]) != newtype)
2461 : {
2462 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, newtype, _o2[0]);
2463 : }
2464 : else
2465 : _r2 = _o2[0];
2466 17 : _o1[1] = _r2;
2467 : }
2468 17 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2469 17 : res_op0 = _r1;
2470 : }
2471 17 : tree _r;
2472 17 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2473 17 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 639, __FILE__, __LINE__, true);
2474 17 : return _r;
2475 : }
2476 : next_after_fail773:;
2477 : }
2478 : }
2479 : }
2480 : }
2481 : }
2482 : }
2483 : }
2484 : }
2485 : return NULL_TREE;
2486 : }
2487 :
2488 : tree
2489 104 : generic_simplify_466 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2490 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2491 : {
2492 104 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2493 104 : {
2494 104 : bool wascmp;
2495 104 : if (bitwise_inverted_equal_p (captures[0], captures[2], wascmp)
2496 104 : && (!wascmp || element_precision (type) == 1)
2497 : )
2498 : {
2499 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail813;
2500 0 : {
2501 0 : tree res_op0;
2502 0 : res_op0 = captures[0];
2503 0 : tree res_op1;
2504 0 : res_op1 = captures[1];
2505 0 : tree _r;
2506 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2507 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2508 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2509 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 666, __FILE__, __LINE__, true);
2510 0 : return _r;
2511 : }
2512 0 : next_after_fail813:;
2513 : }
2514 : }
2515 104 : return NULL_TREE;
2516 : }
2517 :
2518 : tree
2519 8 : generic_simplify_474 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2520 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2521 : const enum tree_code ARG_UNUSED (eqne))
2522 : {
2523 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2524 8 : if (eqne == EQ_EXPR
2525 : )
2526 : {
2527 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail822;
2528 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail822;
2529 4 : {
2530 4 : tree _r;
2531 4 : _r = constant_boolean_node (false, type);
2532 4 : if (TREE_SIDE_EFFECTS (captures[2]))
2533 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2534 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 674, __FILE__, __LINE__, true);
2535 4 : return _r;
2536 : }
2537 : next_after_fail822:;
2538 : }
2539 : else
2540 : {
2541 4 : if (eqne == NE_EXPR
2542 : )
2543 : {
2544 4 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail823;
2545 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail823;
2546 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail823;
2547 4 : {
2548 4 : tree _r;
2549 4 : _r = captures[0];
2550 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 675, __FILE__, __LINE__, true);
2551 4 : return _r;
2552 : }
2553 : next_after_fail823:;
2554 : }
2555 : }
2556 : return NULL_TREE;
2557 : }
2558 :
2559 : tree
2560 4 : generic_simplify_485 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2561 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2562 : {
2563 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2564 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail866;
2565 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail866;
2566 4 : {
2567 4 : tree _r;
2568 4 : _r = captures[2];
2569 4 : if (TREE_SIDE_EFFECTS (captures[1]))
2570 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2571 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 690, __FILE__, __LINE__, true);
2572 : return _r;
2573 : }
2574 : next_after_fail866:;
2575 : return NULL_TREE;
2576 : }
2577 :
2578 : tree
2579 30873 : generic_simplify_489 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2580 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2581 : const enum tree_code ARG_UNUSED (shift))
2582 : {
2583 30873 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2584 30873 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
2585 30873 : && TYPE_PRECISION (type) <= HOST_BITS_PER_WIDE_INT
2586 30873 : && tree_fits_uhwi_p (captures[4])
2587 30873 : && tree_to_uhwi (captures[4]) > 0
2588 61745 : && tree_to_uhwi (captures[4]) < TYPE_PRECISION (type)
2589 : )
2590 : {
2591 30872 : {
2592 30872 : unsigned int shiftc = tree_to_uhwi (captures[4]);
2593 30872 : unsigned HOST_WIDE_INT mask = TREE_INT_CST_LOW (captures[5]);
2594 30872 : unsigned HOST_WIDE_INT newmask, zerobits = 0;
2595 30872 : tree shift_type = TREE_TYPE (captures[2]);
2596 30872 : unsigned int prec;
2597 30872 : if (shift == LSHIFT_EXPR)
2598 5090 : zerobits = ((HOST_WIDE_INT_1U << shiftc) - 1);
2599 25782 : else if (shift == RSHIFT_EXPR
2600 25782 : && type_has_mode_precision_p (shift_type))
2601 : {
2602 25782 : prec = TYPE_PRECISION (TREE_TYPE (captures[2]));
2603 25782 : tree arg00 = captures[3];
2604 25782 : if (captures[2] != captures[3]
2605 25782 : && TYPE_UNSIGNED (TREE_TYPE (captures[3])))
2606 : {
2607 25524 : tree inner_type = TREE_TYPE (captures[3]);
2608 25524 : if (type_has_mode_precision_p (inner_type)
2609 25524 : && TYPE_PRECISION (inner_type) < prec)
2610 : {
2611 270 : prec = TYPE_PRECISION (inner_type);
2612 270 : if (shiftc < prec)
2613 269 : shift_type = inner_type;
2614 : }
2615 : }
2616 25782 : zerobits = HOST_WIDE_INT_M1U;
2617 25782 : if (shiftc < prec)
2618 : {
2619 25781 : zerobits >>= HOST_BITS_PER_WIDE_INT - shiftc;
2620 25781 : zerobits <<= prec - shiftc;
2621 : }
2622 25782 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[2]))
2623 25782 : && prec == TYPE_PRECISION (TREE_TYPE (captures[2])))
2624 : {
2625 824 : if ((mask & zerobits) == 0)
2626 817 : shift_type = unsigned_type_for (TREE_TYPE (captures[2]));
2627 : else
2628 : zerobits = 0;
2629 : }
2630 : }
2631 30865 : if ((mask & zerobits) == mask
2632 : )
2633 : {
2634 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail870;
2635 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail870;
2636 1 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail870;
2637 1 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail870;
2638 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail870;
2639 1 : {
2640 1 : tree _r;
2641 1 : _r = build_int_cst (type, 0);
2642 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 694, __FILE__, __LINE__, true);
2643 1 : return _r;
2644 : }
2645 : next_after_fail870:;
2646 : }
2647 : else
2648 : {
2649 30871 : {
2650 30871 : newmask = mask | zerobits;
2651 30871 : if (newmask != mask && (newmask & (newmask + 1)) == 0
2652 : )
2653 : {
2654 : {
2655 6928 : for (prec = BITS_PER_UNIT;
2656 10484 : prec < HOST_BITS_PER_WIDE_INT; prec <<= 1)
2657 8436 : if (newmask == (HOST_WIDE_INT_1U << prec) - 1)
2658 : break;
2659 3556 : if (prec < HOST_BITS_PER_WIDE_INT
2660 2048 : || newmask == HOST_WIDE_INT_M1U
2661 : )
2662 : {
2663 1914 : {
2664 1914 : tree newmaskt = build_int_cst_type (TREE_TYPE (captures[5]), newmask);
2665 1914 : if (!tree_int_cst_equal (newmaskt, captures[5])
2666 : )
2667 : {
2668 1914 : if (shift_type != TREE_TYPE (captures[2])
2669 : )
2670 : {
2671 96 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail871;
2672 96 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail871;
2673 96 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail871;
2674 96 : {
2675 96 : tree res_op0;
2676 96 : {
2677 96 : tree _o1[1], _r1;
2678 96 : {
2679 96 : tree _o2[2], _r2;
2680 96 : {
2681 96 : tree _o3[1], _r3;
2682 96 : _o3[0] = captures[2];
2683 96 : if (TREE_TYPE (_o3[0]) != shift_type)
2684 : {
2685 96 : _r3 = fold_build1_loc (loc, NOP_EXPR, shift_type, _o3[0]);
2686 : }
2687 : else
2688 : _r3 = _o3[0];
2689 96 : _o2[0] = _r3;
2690 : }
2691 96 : _o2[1] = captures[4];
2692 96 : _r2 = fold_build2_loc (loc, shift, shift_type, _o2[0], _o2[1]);
2693 96 : _o1[0] = _r2;
2694 : }
2695 96 : if (TREE_TYPE (_o1[0]) != type)
2696 : {
2697 96 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2698 : }
2699 : else
2700 : _r1 = _o1[0];
2701 96 : res_op0 = _r1;
2702 : }
2703 96 : tree res_op1;
2704 96 : res_op1 = newmaskt;
2705 96 : tree _r;
2706 96 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2707 96 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 695, __FILE__, __LINE__, true);
2708 96 : return _r;
2709 : }
2710 : next_after_fail871:;
2711 : }
2712 : else
2713 : {
2714 1818 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail872;
2715 883 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail872;
2716 883 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail872;
2717 883 : {
2718 883 : tree res_op0;
2719 883 : res_op0 = captures[0];
2720 883 : tree res_op1;
2721 883 : res_op1 = newmaskt;
2722 883 : tree _r;
2723 883 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2724 883 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 696, __FILE__, __LINE__, true);
2725 883 : return _r;
2726 : }
2727 : next_after_fail872:;
2728 : }
2729 : }
2730 : }
2731 : }
2732 : }
2733 : }
2734 : }
2735 : }
2736 : }
2737 : }
2738 : return NULL_TREE;
2739 : }
2740 :
2741 : tree
2742 415671 : generic_simplify_498 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2743 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2744 : const enum tree_code ARG_UNUSED (op))
2745 : {
2746 415671 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2747 831342 : if (INTEGRAL_TYPE_P (type)
2748 415671 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2749 68227 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2750 68227 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
2751 68227 : && type_has_mode_precision_p (TREE_TYPE (captures[4]))
2752 68227 : && type_has_mode_precision_p (type)
2753 68227 : && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2]))
2754 33 : && types_match (captures[2], captures[4])
2755 33 : && (tree_int_cst_min_precision (captures[5], TYPE_SIGN (TREE_TYPE (captures[2])))
2756 33 : <= TYPE_PRECISION (TREE_TYPE (captures[2])))
2757 415698 : && (wi::to_wide (captures[5])
2758 415725 : & wi::mask (TYPE_PRECISION (TREE_TYPE (captures[2])),
2759 415725 : true, TYPE_PRECISION (type))) == 0
2760 : )
2761 : {
2762 25 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
2763 : )
2764 : {
2765 12 : {
2766 12 : tree ntype = TREE_TYPE (captures[2]);
2767 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail888;
2768 12 : {
2769 12 : tree res_op0;
2770 12 : {
2771 12 : tree _o1[2], _r1;
2772 12 : {
2773 12 : tree _o2[2], _r2;
2774 12 : _o2[0] = captures[2];
2775 12 : _o2[1] = captures[4];
2776 12 : _r2 = fold_build2_loc (loc, op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
2777 12 : _o1[0] = _r2;
2778 : }
2779 12 : {
2780 12 : tree _o2[1], _r2;
2781 12 : _o2[0] = captures[5];
2782 12 : if (TREE_TYPE (_o2[0]) != ntype)
2783 : {
2784 12 : _r2 = fold_build1_loc (loc, NOP_EXPR, ntype, _o2[0]);
2785 : }
2786 : else
2787 : _r2 = _o2[0];
2788 12 : _o1[1] = _r2;
2789 : }
2790 12 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2791 12 : res_op0 = _r1;
2792 : }
2793 12 : tree _r;
2794 12 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2795 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 702, __FILE__, __LINE__, true);
2796 12 : return _r;
2797 : }
2798 0 : next_after_fail888:;
2799 : }
2800 : }
2801 : else
2802 : {
2803 13 : {
2804 13 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
2805 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail889;
2806 13 : {
2807 13 : tree res_op0;
2808 13 : {
2809 13 : tree _o1[2], _r1;
2810 13 : {
2811 13 : tree _o2[2], _r2;
2812 13 : {
2813 13 : tree _o3[1], _r3;
2814 13 : _o3[0] = captures[2];
2815 13 : if (TREE_TYPE (_o3[0]) != utype)
2816 : {
2817 13 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2818 : }
2819 : else
2820 : _r3 = _o3[0];
2821 13 : _o2[0] = _r3;
2822 : }
2823 13 : {
2824 13 : tree _o3[1], _r3;
2825 13 : _o3[0] = captures[4];
2826 13 : if (TREE_TYPE (_o3[0]) != utype)
2827 : {
2828 13 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2829 : }
2830 : else
2831 : _r3 = _o3[0];
2832 13 : _o2[1] = _r3;
2833 : }
2834 13 : _r2 = fold_build2_loc (loc, op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
2835 13 : _o1[0] = _r2;
2836 : }
2837 13 : {
2838 13 : tree _o2[1], _r2;
2839 13 : _o2[0] = captures[5];
2840 13 : if (TREE_TYPE (_o2[0]) != utype)
2841 : {
2842 13 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2843 : }
2844 : else
2845 : _r2 = _o2[0];
2846 13 : _o1[1] = _r2;
2847 : }
2848 13 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2849 13 : res_op0 = _r1;
2850 : }
2851 13 : tree _r;
2852 13 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2853 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 703, __FILE__, __LINE__, true);
2854 13 : return _r;
2855 : }
2856 0 : next_after_fail889:;
2857 : }
2858 : }
2859 : }
2860 : return NULL_TREE;
2861 : }
2862 :
2863 : tree
2864 0 : generic_simplify_529 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2865 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2866 : const enum tree_code ARG_UNUSED (minmax))
2867 : {
2868 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2869 0 : if (TYPE_UNSIGNED(type)
2870 : )
2871 : {
2872 0 : if (minmax == MIN_EXPR
2873 : )
2874 : {
2875 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail923;
2876 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail923;
2877 0 : {
2878 0 : tree _r;
2879 0 : _r = captures[1];
2880 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 734, __FILE__, __LINE__, true);
2881 0 : return _r;
2882 : }
2883 : next_after_fail923:;
2884 : }
2885 : else
2886 : {
2887 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail924;
2888 0 : {
2889 0 : tree _r;
2890 0 : _r = captures[0];
2891 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2892 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2893 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 735, __FILE__, __LINE__, true);
2894 0 : return _r;
2895 : }
2896 0 : next_after_fail924:;
2897 : }
2898 : }
2899 : return NULL_TREE;
2900 : }
2901 :
2902 : tree
2903 2 : generic_simplify_537 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2904 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2905 : {
2906 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2907 2 : if (TREE_CODE (type) != COMPLEX_TYPE
2908 2 : && (! ANY_INTEGRAL_TYPE_P (type)
2909 1 : || TYPE_OVERFLOW_UNDEFINED (type))
2910 : )
2911 : {
2912 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail944;
2913 2 : {
2914 2 : tree res_op0;
2915 2 : res_op0 = captures[0];
2916 2 : tree _r;
2917 2 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
2918 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 743, __FILE__, __LINE__, true);
2919 2 : return _r;
2920 : }
2921 0 : next_after_fail944:;
2922 : }
2923 : return NULL_TREE;
2924 : }
2925 :
2926 : tree
2927 12 : generic_simplify_544 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2928 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2929 : const enum tree_code ARG_UNUSED (op))
2930 : {
2931 12 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2932 12 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail951;
2933 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail951;
2934 12 : {
2935 12 : tree _r;
2936 12 : _r = captures[2];
2937 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 534, __FILE__, __LINE__, true);
2938 : return _r;
2939 : }
2940 : next_after_fail951:;
2941 : return NULL_TREE;
2942 : }
2943 :
2944 : tree
2945 0 : generic_simplify_550 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2946 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2947 : const combined_fn ARG_UNUSED (cond_op))
2948 : {
2949 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2950 0 : {
2951 0 : tree op_type = TREE_TYPE (captures[6]);
2952 0 : if (inverse_conditions_p (captures[0], captures[2])
2953 0 : && element_precision (type) == element_precision (op_type)
2954 : )
2955 : {
2956 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail957;
2957 0 : {
2958 0 : tree res_op0;
2959 0 : {
2960 0 : tree _o1[5], _r1;
2961 0 : _o1[0] = captures[2];
2962 0 : _o1[1] = captures[3];
2963 0 : _o1[2] = captures[4];
2964 0 : _o1[3] = captures[5];
2965 0 : {
2966 0 : tree _o2[1], _r2;
2967 0 : _o2[0] = captures[1];
2968 0 : if (TREE_TYPE (_o2[0]) != op_type)
2969 : {
2970 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, op_type, _o2[0]);
2971 : }
2972 : else
2973 : _r2 = _o2[0];
2974 0 : _o1[4] = _r2;
2975 : }
2976 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]);
2977 0 : if (!_r1)
2978 0 : goto next_after_fail957;
2979 0 : res_op0 = _r1;
2980 : }
2981 0 : tree _r;
2982 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
2983 0 : if (TREE_SIDE_EFFECTS (captures[0]))
2984 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2985 0 : if (TREE_SIDE_EFFECTS (captures[6]))
2986 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[6]), _r);
2987 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 751, __FILE__, __LINE__, true);
2988 0 : return _r;
2989 : }
2990 : next_after_fail957:;
2991 : }
2992 : }
2993 : return NULL_TREE;
2994 : }
2995 :
2996 : tree
2997 0 : generic_simplify_563 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2998 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2999 : const enum tree_code ARG_UNUSED (bitop),
3000 : const combined_fn ARG_UNUSED (bswap))
3001 : {
3002 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3003 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail973;
3004 0 : {
3005 0 : tree res_op0;
3006 0 : res_op0 = captures[0];
3007 0 : tree res_op1;
3008 0 : {
3009 0 : tree _o1[1], _r1;
3010 0 : _o1[0] = captures[1];
3011 0 : _r1 = maybe_build_call_expr_loc (loc, bswap, TREE_TYPE (_o1[0]), 1, _o1[0]);
3012 0 : if (!_r1)
3013 0 : goto next_after_fail973;
3014 0 : res_op1 = _r1;
3015 : }
3016 0 : tree _r;
3017 0 : _r = fold_build2_loc (loc, bitop, type, res_op0, res_op1);
3018 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 767, __FILE__, __LINE__, true);
3019 : return _r;
3020 : }
3021 : next_after_fail973:;
3022 : return NULL_TREE;
3023 : }
3024 :
3025 : tree
3026 0 : generic_simplify_572 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3027 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3028 : const combined_fn ARG_UNUSED (tans),
3029 : const combined_fn ARG_UNUSED (atans))
3030 : {
3031 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3032 0 : if (flag_unsafe_math_optimizations
3033 : )
3034 : {
3035 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail982;
3036 0 : {
3037 0 : tree _r;
3038 0 : _r = captures[0];
3039 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 776, __FILE__, __LINE__, true);
3040 0 : return _r;
3041 : }
3042 0 : next_after_fail982:;
3043 : }
3044 : return NULL_TREE;
3045 : }
3046 :
3047 : tree
3048 0 : generic_simplify_577 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3049 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3050 : const combined_fn ARG_UNUSED (froms),
3051 : const combined_fn ARG_UNUSED (tos))
3052 : {
3053 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3054 0 : if (optimize && canonicalize_math_p ()
3055 0 : && targetm.libc_has_function (function_c99_misc, NULL_TREE)
3056 : )
3057 : {
3058 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail987;
3059 0 : {
3060 0 : tree res_op0;
3061 0 : {
3062 0 : tree _o1[1], _r1;
3063 0 : _o1[0] = captures[0];
3064 0 : _r1 = maybe_build_call_expr_loc (loc, tos, TREE_TYPE (_o1[0]), 1, _o1[0]);
3065 0 : if (!_r1)
3066 0 : goto next_after_fail987;
3067 0 : res_op0 = _r1;
3068 : }
3069 0 : tree _r;
3070 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3071 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 781, __FILE__, __LINE__, true);
3072 0 : return _r;
3073 : }
3074 : next_after_fail987:;
3075 : }
3076 : return NULL_TREE;
3077 : }
3078 :
3079 : tree
3080 0 : generic_simplify_585 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3081 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3082 : const combined_fn ARG_UNUSED (fns))
3083 : {
3084 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3085 0 : if (canonicalize_math_p ()
3086 : )
3087 : {
3088 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail995;
3089 0 : {
3090 0 : tree res_op0;
3091 0 : res_op0 = captures[0];
3092 0 : tree _r;
3093 0 : _r = fold_build1_loc (loc, FIX_TRUNC_EXPR, type, res_op0);
3094 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 789, __FILE__, __LINE__, true);
3095 0 : return _r;
3096 : }
3097 0 : next_after_fail995:;
3098 : }
3099 : return NULL_TREE;
3100 : }
3101 :
3102 : tree
3103 0 : generic_simplify_592 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3104 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3105 : const combined_fn ARG_UNUSED (fmas))
3106 : {
3107 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3108 0 : if (canonicalize_math_after_vectorization_p ()
3109 : )
3110 : {
3111 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1002;
3112 : {
3113 : tree res_op0;
3114 : res_op0 = captures[0];
3115 : tree res_op1;
3116 : res_op1 = captures[1];
3117 : tree res_op2;
3118 : res_op2 = captures[2];
3119 : tree _r;
3120 : _r = maybe_build_call_expr_loc (loc, CFN_FNMS, type, 3, res_op0, res_op1, res_op2);
3121 : if (!_r)
3122 : goto next_after_fail1002;
3123 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 796, __FILE__, __LINE__, true);
3124 : return _r;
3125 : }
3126 0 : next_after_fail1002:;
3127 : }
3128 0 : return NULL_TREE;
3129 : }
3130 :
3131 : tree
3132 0 : generic_simplify_603 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3133 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree ARG_UNUSED (_p3), tree ARG_UNUSED (_p4), tree *ARG_UNUSED (captures))
3134 : {
3135 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3136 0 : if (canonicalize_math_after_vectorization_p ()
3137 : )
3138 : {
3139 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1013;
3140 : {
3141 : tree res_op0;
3142 : res_op0 = captures[0];
3143 : tree res_op1;
3144 : res_op1 = captures[1];
3145 : tree res_op2;
3146 : res_op2 = captures[2];
3147 : tree res_op3;
3148 : res_op3 = captures[3];
3149 : tree res_op4;
3150 : res_op4 = captures[4];
3151 : tree _r;
3152 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FNMS, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3153 : if (!_r)
3154 : goto next_after_fail1013;
3155 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 807, __FILE__, __LINE__, true);
3156 : return _r;
3157 : }
3158 0 : next_after_fail1013:;
3159 : }
3160 0 : return NULL_TREE;
3161 : }
3162 :
3163 : tree
3164 0 : generic_simplify_611 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3165 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3166 : const combined_fn ARG_UNUSED (ctz))
3167 : {
3168 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3169 0 : {
3170 0 : tree t = TREE_TYPE (captures[0]);
3171 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1021;
3172 0 : {
3173 0 : tree res_op0;
3174 0 : {
3175 0 : tree _o1[1], _r1;
3176 0 : _o1[0] = captures[1];
3177 0 : if (TREE_TYPE (_o1[0]) != t)
3178 : {
3179 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, t, _o1[0]);
3180 : }
3181 : else
3182 : _r1 = _o1[0];
3183 0 : res_op0 = _r1;
3184 : }
3185 0 : tree _r;
3186 0 : _r = maybe_build_call_expr_loc (loc, ctz, type, 1, res_op0);
3187 0 : if (!_r)
3188 0 : goto next_after_fail1021;
3189 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 813, __FILE__, __LINE__, true);
3190 : return _r;
3191 : }
3192 : next_after_fail1021:;
3193 : }
3194 : return NULL_TREE;
3195 : }
3196 :
3197 : tree
3198 0 : generic_simplify_621 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3199 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3200 : const enum tree_code ARG_UNUSED (rot),
3201 : const combined_fn ARG_UNUSED (parity))
3202 : {
3203 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3204 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3205 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3206 0 : && (
3207 :
3208 0 : || !TREE_SIDE_EFFECTS (captures[3]))
3209 0 : && TYPE_PRECISION (TREE_TYPE (captures[0]))
3210 0 : >= TYPE_PRECISION (TREE_TYPE (captures[1]))
3211 : )
3212 : {
3213 0 : {
3214 0 : tree type0 = TREE_TYPE (captures[0]);
3215 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1032;
3216 0 : {
3217 0 : tree res_op0;
3218 0 : {
3219 0 : tree _o1[1], _r1;
3220 0 : _o1[0] = captures[2];
3221 0 : if (TREE_TYPE (_o1[0]) != type0)
3222 : {
3223 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3224 : }
3225 : else
3226 : _r1 = _o1[0];
3227 0 : res_op0 = _r1;
3228 : }
3229 0 : tree _r;
3230 0 : _r = maybe_build_call_expr_loc (loc, parity, type, 1, res_op0);
3231 0 : if (!_r)
3232 0 : goto next_after_fail1032;
3233 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3234 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3235 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 821, __FILE__, __LINE__, true);
3236 0 : return _r;
3237 : }
3238 : next_after_fail1032:;
3239 : }
3240 : }
3241 : return NULL_TREE;
3242 : }
3243 :
3244 : tree
3245 943 : generic_simplify_ABSU_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3246 : {
3247 943 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3248 943 : switch (TREE_CODE (_p0))
3249 : {
3250 541 : CASE_CONVERT:
3251 541 : {
3252 541 : tree _q20 = TREE_OPERAND (_p0, 0);
3253 541 : switch (TREE_CODE (_q20))
3254 : {
3255 0 : case ABSU_EXPR:
3256 0 : {
3257 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3258 0 : {
3259 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
3260 0 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
3261 : )
3262 : {
3263 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1076;
3264 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1076;
3265 0 : {
3266 0 : tree _r;
3267 0 : _r = captures[1];
3268 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 855, __FILE__, __LINE__, true);
3269 0 : return _r;
3270 : }
3271 0 : next_after_fail1076:;
3272 : }
3273 : }
3274 0 : break;
3275 : }
3276 : default:;
3277 : }
3278 : break;
3279 : }
3280 6 : case NEGATE_EXPR:
3281 6 : {
3282 6 : tree _q20 = TREE_OPERAND (_p0, 0);
3283 6 : {
3284 6 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3285 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1077;
3286 6 : {
3287 6 : tree res_op0;
3288 6 : res_op0 = captures[0];
3289 6 : tree _r;
3290 6 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
3291 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 856, __FILE__, __LINE__, true);
3292 943 : return _r;
3293 : }
3294 0 : next_after_fail1077:;
3295 : }
3296 0 : break;
3297 : }
3298 0 : case VEC_COND_EXPR:
3299 0 : {
3300 0 : tree _q20 = TREE_OPERAND (_p0, 0);
3301 0 : tree _q21 = TREE_OPERAND (_p0, 1);
3302 0 : tree _q22 = TREE_OPERAND (_p0, 2);
3303 0 : {
3304 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3305 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1078;
3306 0 : {
3307 0 : tree res_op0;
3308 0 : res_op0 = captures[1];
3309 0 : tree res_op1;
3310 0 : {
3311 0 : tree _o1[1], _r1;
3312 0 : _o1[0] = captures[2];
3313 0 : _r1 = fold_build1_loc (loc, ABSU_EXPR, type, _o1[0]);
3314 0 : if (EXPR_P (_r1))
3315 0 : goto next_after_fail1078;
3316 0 : res_op1 = _r1;
3317 : }
3318 0 : tree res_op2;
3319 0 : {
3320 0 : tree _o1[1], _r1;
3321 0 : _o1[0] = captures[3];
3322 0 : _r1 = fold_build1_loc (loc, ABSU_EXPR, type, _o1[0]);
3323 0 : if (EXPR_P (_r1))
3324 0 : goto next_after_fail1078;
3325 0 : res_op2 = _r1;
3326 : }
3327 0 : tree _r;
3328 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
3329 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 830, __FILE__, __LINE__, true);
3330 0 : return _r;
3331 : }
3332 0 : next_after_fail1078:;
3333 : }
3334 0 : break;
3335 : }
3336 937 : default:;
3337 : }
3338 937 : if (tree_expr_nonnegative_p (_p0))
3339 : {
3340 0 : {
3341 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3342 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1079;
3343 0 : {
3344 0 : tree res_op0;
3345 0 : res_op0 = captures[0];
3346 0 : tree _r;
3347 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3348 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 857, __FILE__, __LINE__, true);
3349 0 : return _r;
3350 : }
3351 0 : next_after_fail1079:;
3352 : }
3353 : }
3354 : return NULL_TREE;
3355 : }
3356 :
3357 : tree
3358 1919771 : generic_simplify_IMAGPART_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3359 : {
3360 1919771 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3361 1919771 : switch (TREE_CODE (_p0))
3362 : {
3363 1731 : case COMPLEX_EXPR:
3364 1731 : {
3365 1731 : tree _q20 = TREE_OPERAND (_p0, 0);
3366 1731 : tree _q21 = TREE_OPERAND (_p0, 1);
3367 1731 : {
3368 1731 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3369 1731 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1148;
3370 1731 : {
3371 1731 : tree _r;
3372 1731 : _r = captures[1];
3373 1731 : if (TREE_SIDE_EFFECTS (captures[0]))
3374 522 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3375 1731 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 884, __FILE__, __LINE__, true);
3376 1731 : return _r;
3377 : }
3378 0 : next_after_fail1148:;
3379 : }
3380 0 : break;
3381 : }
3382 45288 : CASE_CONVERT:
3383 45288 : {
3384 45288 : tree _q20 = TREE_OPERAND (_p0, 0);
3385 45288 : switch (TREE_CODE (_q20))
3386 : {
3387 0 : case CONJ_EXPR:
3388 0 : {
3389 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3390 0 : {
3391 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
3392 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1149;
3393 0 : {
3394 0 : tree res_op0;
3395 0 : {
3396 0 : tree _o1[1], _r1;
3397 0 : {
3398 0 : tree _o2[1], _r2;
3399 0 : _o2[0] = captures[2];
3400 0 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3401 0 : _o1[0] = _r2;
3402 : }
3403 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3404 0 : res_op0 = _r1;
3405 : }
3406 0 : tree _r;
3407 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3408 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 885, __FILE__, __LINE__, true);
3409 0 : return _r;
3410 : }
3411 0 : next_after_fail1149:;
3412 : }
3413 0 : break;
3414 : }
3415 0 : case PLUS_EXPR:
3416 0 : {
3417 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3418 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3419 0 : {
3420 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3421 0 : const enum tree_code op = PLUS_EXPR;
3422 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1150;
3423 0 : {
3424 0 : tree res_op0;
3425 0 : {
3426 0 : tree _o1[2], _r1;
3427 0 : {
3428 0 : tree _o2[1], _r2;
3429 0 : _o2[0] = captures[2];
3430 0 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3431 0 : _o1[0] = _r2;
3432 : }
3433 0 : {
3434 0 : tree _o2[1], _r2;
3435 0 : _o2[0] = captures[3];
3436 0 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3437 0 : _o1[1] = _r2;
3438 : }
3439 0 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3440 0 : res_op0 = _r1;
3441 : }
3442 0 : tree _r;
3443 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3444 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 882, __FILE__, __LINE__, true);
3445 0 : return _r;
3446 : }
3447 0 : next_after_fail1150:;
3448 : }
3449 0 : break;
3450 : }
3451 0 : case MINUS_EXPR:
3452 0 : {
3453 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3454 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3455 0 : {
3456 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3457 0 : const enum tree_code op = MINUS_EXPR;
3458 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1151;
3459 0 : {
3460 0 : tree res_op0;
3461 0 : {
3462 0 : tree _o1[2], _r1;
3463 0 : {
3464 0 : tree _o2[1], _r2;
3465 0 : _o2[0] = captures[2];
3466 0 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3467 0 : _o1[0] = _r2;
3468 : }
3469 0 : {
3470 0 : tree _o2[1], _r2;
3471 0 : _o2[0] = captures[3];
3472 0 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3473 0 : _o1[1] = _r2;
3474 : }
3475 0 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3476 0 : res_op0 = _r1;
3477 : }
3478 0 : tree _r;
3479 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3480 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 882, __FILE__, __LINE__, true);
3481 0 : return _r;
3482 : }
3483 0 : next_after_fail1151:;
3484 : }
3485 0 : break;
3486 : }
3487 0 : case CALL_EXPR:
3488 0 : switch (get_call_combined_fn (_q20))
3489 : {
3490 0 : case CFN_BUILT_IN_CEXPIF:
3491 0 : if (call_expr_nargs (_q20) == 1)
3492 : {
3493 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
3494 0 : {
3495 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
3496 0 : if (single_use (captures[1]) && single_use (captures[0])
3497 : )
3498 : {
3499 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1152;
3500 0 : {
3501 0 : tree res_op0;
3502 0 : {
3503 0 : tree _o1[1], _r1;
3504 0 : _o1[0] = captures[2];
3505 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SINF, TREE_TYPE (_o1[0]), 1, _o1[0]);
3506 0 : if (!_r1)
3507 0 : goto next_after_fail1152;
3508 0 : res_op0 = _r1;
3509 : }
3510 0 : tree _r;
3511 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3512 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 886, __FILE__, __LINE__, true);
3513 0 : return _r;
3514 : }
3515 0 : next_after_fail1152:;
3516 : }
3517 : }
3518 : }
3519 : break;
3520 0 : case CFN_BUILT_IN_CEXPIL:
3521 0 : if (call_expr_nargs (_q20) == 1)
3522 : {
3523 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
3524 0 : {
3525 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
3526 0 : if (single_use (captures[1]) && single_use (captures[0])
3527 : )
3528 : {
3529 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1153;
3530 0 : {
3531 0 : tree res_op0;
3532 0 : {
3533 0 : tree _o1[1], _r1;
3534 0 : _o1[0] = captures[2];
3535 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SINL, TREE_TYPE (_o1[0]), 1, _o1[0]);
3536 0 : if (!_r1)
3537 0 : goto next_after_fail1153;
3538 0 : res_op0 = _r1;
3539 : }
3540 0 : tree _r;
3541 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3542 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 886, __FILE__, __LINE__, true);
3543 0 : return _r;
3544 : }
3545 0 : next_after_fail1153:;
3546 : }
3547 : }
3548 : }
3549 : break;
3550 0 : case CFN_BUILT_IN_CEXPI:
3551 0 : if (call_expr_nargs (_q20) == 1)
3552 : {
3553 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
3554 0 : {
3555 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
3556 0 : if (single_use (captures[1]) && single_use (captures[0])
3557 : )
3558 : {
3559 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1154;
3560 0 : {
3561 0 : tree res_op0;
3562 0 : {
3563 0 : tree _o1[1], _r1;
3564 0 : _o1[0] = captures[2];
3565 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SIN, TREE_TYPE (_o1[0]), 1, _o1[0]);
3566 0 : if (!_r1)
3567 0 : goto next_after_fail1154;
3568 0 : res_op0 = _r1;
3569 : }
3570 0 : tree _r;
3571 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3572 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 886, __FILE__, __LINE__, true);
3573 0 : return _r;
3574 : }
3575 0 : next_after_fail1154:;
3576 : }
3577 : }
3578 : }
3579 : break;
3580 : default:;
3581 : }
3582 : break;
3583 : default:;
3584 : }
3585 : break;
3586 : }
3587 16 : case CONJ_EXPR:
3588 16 : {
3589 16 : tree _q20 = TREE_OPERAND (_p0, 0);
3590 16 : {
3591 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
3592 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1155;
3593 16 : {
3594 16 : tree res_op0;
3595 16 : {
3596 16 : tree _o1[1], _r1;
3597 16 : {
3598 16 : tree _o2[1], _r2;
3599 16 : _o2[0] = captures[2];
3600 16 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3601 16 : _o1[0] = _r2;
3602 : }
3603 16 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3604 16 : res_op0 = _r1;
3605 : }
3606 16 : tree _r;
3607 16 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3608 16 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 885, __FILE__, __LINE__, true);
3609 16 : return _r;
3610 : }
3611 0 : next_after_fail1155:;
3612 : }
3613 0 : break;
3614 : }
3615 365 : case PLUS_EXPR:
3616 365 : {
3617 365 : tree _q20 = TREE_OPERAND (_p0, 0);
3618 365 : tree _q21 = TREE_OPERAND (_p0, 1);
3619 365 : {
3620 365 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
3621 365 : const enum tree_code op = PLUS_EXPR;
3622 365 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1156;
3623 365 : {
3624 365 : tree res_op0;
3625 365 : {
3626 365 : tree _o1[2], _r1;
3627 365 : {
3628 365 : tree _o2[1], _r2;
3629 365 : _o2[0] = captures[2];
3630 365 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3631 365 : _o1[0] = _r2;
3632 : }
3633 365 : {
3634 365 : tree _o2[1], _r2;
3635 365 : _o2[0] = captures[3];
3636 365 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3637 365 : _o1[1] = _r2;
3638 : }
3639 365 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3640 365 : res_op0 = _r1;
3641 : }
3642 365 : tree _r;
3643 365 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3644 365 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 882, __FILE__, __LINE__, true);
3645 365 : return _r;
3646 : }
3647 0 : next_after_fail1156:;
3648 : }
3649 0 : break;
3650 : }
3651 47 : case MINUS_EXPR:
3652 47 : {
3653 47 : tree _q20 = TREE_OPERAND (_p0, 0);
3654 47 : tree _q21 = TREE_OPERAND (_p0, 1);
3655 47 : {
3656 47 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
3657 47 : const enum tree_code op = MINUS_EXPR;
3658 47 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1157;
3659 47 : {
3660 47 : tree res_op0;
3661 47 : {
3662 47 : tree _o1[2], _r1;
3663 47 : {
3664 47 : tree _o2[1], _r2;
3665 47 : _o2[0] = captures[2];
3666 47 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3667 47 : _o1[0] = _r2;
3668 : }
3669 47 : {
3670 47 : tree _o2[1], _r2;
3671 47 : _o2[0] = captures[3];
3672 47 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3673 47 : _o1[1] = _r2;
3674 : }
3675 47 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3676 47 : res_op0 = _r1;
3677 : }
3678 47 : tree _r;
3679 47 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3680 47 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 882, __FILE__, __LINE__, true);
3681 47 : return _r;
3682 : }
3683 0 : next_after_fail1157:;
3684 : }
3685 0 : break;
3686 : }
3687 54944 : case CALL_EXPR:
3688 54944 : switch (get_call_combined_fn (_p0))
3689 : {
3690 20602 : case CFN_MUL_OVERFLOW:
3691 20602 : if (call_expr_nargs (_p0) == 2)
3692 : {
3693 20602 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3694 20602 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3695 20602 : if (integer_nonzerop (_q21))
3696 : {
3697 2784 : {
3698 2784 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3699 2784 : tree res = generic_simplify_559 (loc, type, _p0, captures);
3700 2784 : if (res) return res;
3701 : }
3702 : }
3703 19649 : if (integer_nonzerop (_q20))
3704 : {
3705 3002 : {
3706 3002 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
3707 3002 : tree res = generic_simplify_559 (loc, type, _p0, captures);
3708 3002 : if (res) return res;
3709 : }
3710 : }
3711 : }
3712 : break;
3713 0 : case CFN_BUILT_IN_CEXPIF:
3714 0 : if (call_expr_nargs (_p0) == 1)
3715 : {
3716 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3717 0 : {
3718 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
3719 0 : if (single_use (captures[1]) && single_use (captures[0])
3720 : )
3721 : {
3722 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1158;
3723 0 : {
3724 0 : tree res_op0;
3725 0 : {
3726 0 : tree _o1[1], _r1;
3727 0 : _o1[0] = captures[2];
3728 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SINF, TREE_TYPE (_o1[0]), 1, _o1[0]);
3729 0 : if (!_r1)
3730 0 : goto next_after_fail1158;
3731 0 : res_op0 = _r1;
3732 : }
3733 0 : tree _r;
3734 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3735 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 886, __FILE__, __LINE__, true);
3736 0 : return _r;
3737 : }
3738 0 : next_after_fail1158:;
3739 : }
3740 : }
3741 : }
3742 : break;
3743 0 : case CFN_BUILT_IN_CEXPIL:
3744 0 : if (call_expr_nargs (_p0) == 1)
3745 : {
3746 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3747 0 : {
3748 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
3749 0 : if (single_use (captures[1]) && single_use (captures[0])
3750 : )
3751 : {
3752 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1159;
3753 0 : {
3754 0 : tree res_op0;
3755 0 : {
3756 0 : tree _o1[1], _r1;
3757 0 : _o1[0] = captures[2];
3758 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SINL, TREE_TYPE (_o1[0]), 1, _o1[0]);
3759 0 : if (!_r1)
3760 0 : goto next_after_fail1159;
3761 0 : res_op0 = _r1;
3762 : }
3763 0 : tree _r;
3764 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3765 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 886, __FILE__, __LINE__, true);
3766 0 : return _r;
3767 : }
3768 0 : next_after_fail1159:;
3769 : }
3770 : }
3771 : }
3772 : break;
3773 1 : case CFN_BUILT_IN_CEXPI:
3774 1 : if (call_expr_nargs (_p0) == 1)
3775 : {
3776 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3777 1 : {
3778 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
3779 1 : if (single_use (captures[1]) && single_use (captures[0])
3780 : )
3781 : {
3782 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1160;
3783 1 : {
3784 1 : tree res_op0;
3785 1 : {
3786 1 : tree _o1[1], _r1;
3787 1 : _o1[0] = captures[2];
3788 1 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SIN, TREE_TYPE (_o1[0]), 1, _o1[0]);
3789 1 : if (!_r1)
3790 0 : goto next_after_fail1160;
3791 1 : res_op0 = _r1;
3792 : }
3793 1 : tree _r;
3794 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3795 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 886, __FILE__, __LINE__, true);
3796 1 : return _r;
3797 : }
3798 0 : next_after_fail1160:;
3799 : }
3800 : }
3801 : }
3802 : break;
3803 : default:;
3804 : }
3805 : break;
3806 : default:;
3807 : }
3808 : return NULL_TREE;
3809 : }
3810 :
3811 : tree
3812 71687131 : generic_simplify_MULT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
3813 : {
3814 71687131 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3815 71687131 : switch (TREE_CODE (_p1))
3816 : {
3817 392 : case VECTOR_CST:
3818 392 : {
3819 392 : {
3820 392 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
3821 392 : if (initializer_each_zero_or_onep (captures[1])
3822 5 : && !HONOR_SNANS (type)
3823 397 : && !HONOR_SIGNED_ZEROS (type)
3824 : )
3825 : {
3826 5 : {
3827 5 : tree itype = FLOAT_TYPE_P (type) ? unsigned_type_for (type) : type;
3828 5 : if (itype
3829 5 : && (!VECTOR_MODE_P (TYPE_MODE (type))
3830 5 : || (VECTOR_MODE_P (TYPE_MODE (itype))
3831 5 : && optab_handler (and_optab,
3832 5 : TYPE_MODE (itype)) != CODE_FOR_nothing))
3833 : )
3834 : {
3835 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1394;
3836 5 : {
3837 5 : tree res_op0;
3838 5 : {
3839 5 : tree _o1[2], _r1;
3840 5 : {
3841 5 : tree _o2[1], _r2;
3842 5 : _o2[0] = captures[0];
3843 5 : if (TREE_TYPE (_o2[0]) != itype)
3844 : {
3845 1 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, itype, _o2[0]);
3846 : }
3847 : else
3848 : _r2 = _o2[0];
3849 5 : _o1[0] = _r2;
3850 : }
3851 5 : {
3852 5 : tree _o2[2], _r2;
3853 5 : _o2[0] = captures[1];
3854 5 : _o2[1] = build_zero_cst (type);
3855 5 : _r2 = fold_build2_loc (loc, NE_EXPR, itype, _o2[0], _o2[1]);
3856 5 : _o1[1] = _r2;
3857 : }
3858 5 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, itype, _o1[0], _o1[1]);
3859 5 : res_op0 = _r1;
3860 : }
3861 5 : tree _r;
3862 5 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3863 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 962, __FILE__, __LINE__, true);
3864 5 : return _r;
3865 : }
3866 0 : next_after_fail1394:;
3867 : }
3868 : }
3869 : }
3870 : }
3871 387 : break;
3872 : }
3873 71687126 : default:;
3874 : }
3875 71687126 : if (integer_zerop (_p1))
3876 : {
3877 33972 : {
3878 33972 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
3879 33972 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1395;
3880 33972 : {
3881 33972 : tree _r;
3882 33972 : _r = captures[1];
3883 33972 : if (TREE_SIDE_EFFECTS (captures[0]))
3884 2459 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3885 33972 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 963, __FILE__, __LINE__, true);
3886 33972 : return _r;
3887 : }
3888 0 : next_after_fail1395:;
3889 : }
3890 : }
3891 71653154 : if (real_zerop (_p1))
3892 : {
3893 330 : {
3894 330 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
3895 330 : if (!tree_expr_maybe_nan_p (captures[0])
3896 122 : && (!HONOR_NANS (type) || !tree_expr_maybe_infinite_p (captures[0]))
3897 340 : && (!HONOR_SIGNED_ZEROS (type) || tree_expr_nonnegative_p (captures[0]))
3898 : )
3899 : {
3900 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1396;
3901 4 : {
3902 4 : tree _r;
3903 4 : _r = captures[1];
3904 4 : if (TREE_SIDE_EFFECTS (captures[0]))
3905 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3906 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 964, __FILE__, __LINE__, true);
3907 4 : return _r;
3908 : }
3909 0 : next_after_fail1396:;
3910 : }
3911 : }
3912 : }
3913 71653150 : if (real_onep (_p1))
3914 : {
3915 1237 : {
3916 1237 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3917 1237 : if (!tree_expr_maybe_signaling_nan_p (captures[0])
3918 1237 : && (!HONOR_SIGNED_ZEROS (type)
3919 1116 : || !COMPLEX_FLOAT_TYPE_P (type))
3920 : )
3921 : {
3922 754 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1397;
3923 754 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1397;
3924 754 : {
3925 754 : tree res_op0;
3926 754 : res_op0 = captures[0];
3927 754 : tree _r;
3928 754 : _r = non_lvalue_loc (loc, res_op0);
3929 754 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 965, __FILE__, __LINE__, true);
3930 754 : return _r;
3931 : }
3932 : next_after_fail1397:;
3933 : }
3934 : }
3935 : }
3936 71652396 : if (real_minus_onep (_p1))
3937 : {
3938 42251 : {
3939 42251 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3940 42251 : if (!tree_expr_maybe_signaling_nan_p (captures[0])
3941 42251 : && (!HONOR_SIGNED_ZEROS (type)
3942 39337 : || !COMPLEX_FLOAT_TYPE_P (type))
3943 : )
3944 : {
3945 41867 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1398;
3946 41867 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1398;
3947 41867 : {
3948 41867 : tree res_op0;
3949 41867 : res_op0 = captures[0];
3950 41867 : tree _r;
3951 41867 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
3952 41867 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 966, __FILE__, __LINE__, true);
3953 41867 : return _r;
3954 : }
3955 : next_after_fail1398:;
3956 : }
3957 : }
3958 : }
3959 71610529 : switch (TREE_CODE (_p0))
3960 : {
3961 62900 : case BIT_AND_EXPR:
3962 62900 : {
3963 62900 : tree _q20 = TREE_OPERAND (_p0, 0);
3964 62900 : tree _q21 = TREE_OPERAND (_p0, 1);
3965 62900 : switch (TREE_CODE (_q20))
3966 : {
3967 275 : case RSHIFT_EXPR:
3968 275 : {
3969 275 : tree _q30 = TREE_OPERAND (_q20, 0);
3970 275 : tree _q31 = TREE_OPERAND (_q20, 1);
3971 275 : if (uniform_integer_cst_p (_q31))
3972 : {
3973 14 : if (uniform_integer_cst_p (_q21))
3974 : {
3975 14 : if (uniform_integer_cst_p (_p1))
3976 : {
3977 14 : {
3978 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
3979 14 : {
3980 14 : tree rshift_cst = uniform_integer_cst_p (captures[1]);
3981 14 : tree bit_and_cst = uniform_integer_cst_p (captures[2]);
3982 14 : tree mult_cst = uniform_integer_cst_p (captures[3]);
3983 14 : if (VECTOR_TYPE_P (type)
3984 0 : && tree_fits_uhwi_p (rshift_cst)
3985 0 : && tree_fits_uhwi_p (mult_cst)
3986 0 : && tree_fits_uhwi_p (bit_and_cst)
3987 : )
3988 : {
3989 0 : {
3990 0 : HOST_WIDE_INT vec_elem_bits = vector_element_bits (type);
3991 0 : poly_int64 vec_nelts = TYPE_VECTOR_SUBPARTS (type);
3992 0 : poly_int64 vec_bits = vec_elem_bits * vec_nelts;
3993 0 : unsigned HOST_WIDE_INT cmp_bits_i, bit_and_i, mult_i;
3994 0 : unsigned HOST_WIDE_INT target_mult_i, target_bit_and_i;
3995 0 : cmp_bits_i = tree_to_uhwi (rshift_cst) + 1;
3996 0 : mult_i = tree_to_uhwi (mult_cst);
3997 0 : target_mult_i = (HOST_WIDE_INT_1U << cmp_bits_i) - 1;
3998 0 : bit_and_i = tree_to_uhwi (bit_and_cst);
3999 0 : target_bit_and_i = 0;
4000 0 : for (unsigned i = 0; i < vec_elem_bits / cmp_bits_i; i++)
4001 0 : target_bit_and_i = (target_bit_and_i << cmp_bits_i) | 1U;
4002 0 : if ((exact_log2 (cmp_bits_i)) >= 0
4003 0 : && cmp_bits_i < HOST_BITS_PER_WIDE_INT
4004 0 : && multiple_p (vec_bits, cmp_bits_i)
4005 0 : && vec_elem_bits <= HOST_BITS_PER_WIDE_INT
4006 0 : && target_mult_i == mult_i
4007 0 : && target_bit_and_i == bit_and_i
4008 : )
4009 : {
4010 0 : {
4011 0 : tree cmp_type = build_nonstandard_integer_type (cmp_bits_i, 0);
4012 0 : poly_int64 vector_type_nelts = exact_div (vec_bits, cmp_bits_i);
4013 0 : tree vec_cmp_type = build_vector_type (cmp_type, vector_type_nelts);
4014 0 : tree vec_truth_type = truth_type_for (vec_cmp_type);
4015 0 : tree zeros = build_zero_cst (vec_cmp_type);
4016 0 : tree ones = build_all_ones_cst (vec_cmp_type);
4017 0 : if (expand_vec_cmp_expr_p (vec_cmp_type, vec_truth_type, LT_EXPR)
4018 0 : && expand_vec_cond_expr_p (vec_cmp_type, vec_truth_type)
4019 : )
4020 : {
4021 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1399;
4022 0 : {
4023 0 : tree res_op0;
4024 0 : {
4025 0 : tree _o1[3], _r1;
4026 0 : {
4027 0 : tree _o2[2], _r2;
4028 0 : {
4029 0 : tree _o3[1], _r3;
4030 0 : _o3[0] = captures[0];
4031 0 : if (TREE_TYPE (_o3[0]) != vec_cmp_type)
4032 : {
4033 0 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, vec_cmp_type, _o3[0]);
4034 : }
4035 : else
4036 : _r3 = _o3[0];
4037 0 : _o2[0] = _r3;
4038 : }
4039 0 : _o2[1] = zeros;
4040 0 : _r2 = fold_build2_loc (loc, LT_EXPR, vec_truth_type, _o2[0], _o2[1]);
4041 0 : _o1[0] = _r2;
4042 : }
4043 0 : _o1[1] = ones;
4044 0 : _o1[2] = zeros;
4045 0 : _r1 = fold_build3_loc (loc, VEC_COND_EXPR, TREE_TYPE (_o1[1]), _o1[0], _o1[1], _o1[2]);
4046 0 : res_op0 = _r1;
4047 : }
4048 0 : tree _r;
4049 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
4050 0 : if (TREE_SIDE_EFFECTS (captures[1]))
4051 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4052 0 : if (TREE_SIDE_EFFECTS (captures[2]))
4053 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
4054 0 : if (TREE_SIDE_EFFECTS (captures[3]))
4055 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
4056 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 967, __FILE__, __LINE__, true);
4057 0 : return _r;
4058 : }
4059 0 : next_after_fail1399:;
4060 : }
4061 : }
4062 : }
4063 : }
4064 : }
4065 : }
4066 : }
4067 : }
4068 : }
4069 : }
4070 : break;
4071 : }
4072 : default:;
4073 : }
4074 : break;
4075 : }
4076 71610529 : default:;
4077 : }
4078 71610529 : switch (TREE_CODE (_p1))
4079 : {
4080 3039 : case COND_EXPR:
4081 3039 : {
4082 3039 : tree _q30 = TREE_OPERAND (_p1, 0);
4083 3039 : tree _q31 = TREE_OPERAND (_p1, 1);
4084 3039 : tree _q32 = TREE_OPERAND (_p1, 2);
4085 3039 : switch (TREE_CODE (_q30))
4086 : {
4087 506 : case GT_EXPR:
4088 506 : {
4089 506 : tree _q40 = TREE_OPERAND (_q30, 0);
4090 506 : tree _q41 = TREE_OPERAND (_q30, 1);
4091 506 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4092 : {
4093 0 : if (real_zerop (_q41))
4094 : {
4095 0 : if (real_onep (_q31))
4096 : {
4097 0 : if (real_minus_onep (_q32))
4098 : {
4099 0 : {
4100 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4101 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4102 : )
4103 : {
4104 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1400;
4105 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1400;
4106 0 : {
4107 0 : tree res_op0;
4108 0 : {
4109 0 : tree _o1[1], _r1;
4110 0 : _o1[0] = captures[0];
4111 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4112 0 : res_op0 = _r1;
4113 : }
4114 0 : tree _r;
4115 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4116 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 968, __FILE__, __LINE__, true);
4117 0 : return _r;
4118 : }
4119 0 : next_after_fail1400:;
4120 : }
4121 : }
4122 : }
4123 : }
4124 : }
4125 : }
4126 : break;
4127 : }
4128 20 : case GE_EXPR:
4129 20 : {
4130 20 : tree _q40 = TREE_OPERAND (_q30, 0);
4131 20 : tree _q41 = TREE_OPERAND (_q30, 1);
4132 20 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4133 : {
4134 0 : if (real_zerop (_q41))
4135 : {
4136 0 : if (real_onep (_q31))
4137 : {
4138 0 : if (real_minus_onep (_q32))
4139 : {
4140 0 : {
4141 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4142 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4143 : )
4144 : {
4145 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1401;
4146 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1401;
4147 0 : {
4148 0 : tree res_op0;
4149 0 : {
4150 0 : tree _o1[1], _r1;
4151 0 : _o1[0] = captures[0];
4152 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4153 0 : res_op0 = _r1;
4154 : }
4155 0 : tree _r;
4156 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4157 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 968, __FILE__, __LINE__, true);
4158 0 : return _r;
4159 : }
4160 0 : next_after_fail1401:;
4161 : }
4162 : }
4163 : }
4164 : }
4165 : }
4166 : }
4167 : break;
4168 : }
4169 51 : case LT_EXPR:
4170 51 : {
4171 51 : tree _q40 = TREE_OPERAND (_q30, 0);
4172 51 : tree _q41 = TREE_OPERAND (_q30, 1);
4173 51 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4174 : {
4175 0 : if (real_zerop (_q41))
4176 : {
4177 0 : if (real_onep (_q31))
4178 : {
4179 0 : if (real_minus_onep (_q32))
4180 : {
4181 0 : {
4182 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4183 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4184 : )
4185 : {
4186 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1402;
4187 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1402;
4188 0 : {
4189 0 : tree res_op0;
4190 0 : {
4191 0 : tree _o1[1], _r1;
4192 0 : _o1[0] = captures[0];
4193 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4194 0 : res_op0 = _r1;
4195 : }
4196 0 : tree _r;
4197 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4198 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 968, __FILE__, __LINE__, true);
4199 0 : return _r;
4200 : }
4201 0 : next_after_fail1402:;
4202 : }
4203 : }
4204 : }
4205 : }
4206 : }
4207 : }
4208 : break;
4209 : }
4210 5 : case LE_EXPR:
4211 5 : {
4212 5 : tree _q40 = TREE_OPERAND (_q30, 0);
4213 5 : tree _q41 = TREE_OPERAND (_q30, 1);
4214 5 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4215 : {
4216 0 : if (real_zerop (_q41))
4217 : {
4218 0 : if (real_onep (_q31))
4219 : {
4220 0 : if (real_minus_onep (_q32))
4221 : {
4222 0 : {
4223 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4224 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4225 : )
4226 : {
4227 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1403;
4228 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1403;
4229 0 : {
4230 0 : tree res_op0;
4231 0 : {
4232 0 : tree _o1[1], _r1;
4233 0 : _o1[0] = captures[0];
4234 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4235 0 : res_op0 = _r1;
4236 : }
4237 0 : tree _r;
4238 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4239 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 968, __FILE__, __LINE__, true);
4240 0 : return _r;
4241 : }
4242 0 : next_after_fail1403:;
4243 : }
4244 : }
4245 : }
4246 : }
4247 : }
4248 : }
4249 : break;
4250 : }
4251 : default:;
4252 : }
4253 : break;
4254 : }
4255 71610529 : default:;
4256 : }
4257 71610529 : switch (TREE_CODE (_p0))
4258 : {
4259 87094 : case COND_EXPR:
4260 87094 : {
4261 87094 : tree _q20 = TREE_OPERAND (_p0, 0);
4262 87094 : tree _q21 = TREE_OPERAND (_p0, 1);
4263 87094 : tree _q22 = TREE_OPERAND (_p0, 2);
4264 87094 : switch (TREE_CODE (_q20))
4265 : {
4266 22123 : case GT_EXPR:
4267 22123 : {
4268 22123 : tree _q30 = TREE_OPERAND (_q20, 0);
4269 22123 : tree _q31 = TREE_OPERAND (_q20, 1);
4270 22123 : if (real_zerop (_q31))
4271 : {
4272 4 : if (real_onep (_q21))
4273 : {
4274 3 : if (real_minus_onep (_q22))
4275 : {
4276 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4277 : {
4278 1 : {
4279 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4280 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4281 : )
4282 : {
4283 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1404;
4284 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1404;
4285 1 : {
4286 1 : tree res_op0;
4287 1 : {
4288 1 : tree _o1[1], _r1;
4289 1 : _o1[0] = captures[0];
4290 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4291 1 : res_op0 = _r1;
4292 : }
4293 1 : tree _r;
4294 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4295 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 968, __FILE__, __LINE__, true);
4296 1 : return _r;
4297 : }
4298 0 : next_after_fail1404:;
4299 : }
4300 : }
4301 : }
4302 : }
4303 : }
4304 3 : if (real_minus_onep (_q21))
4305 : {
4306 1 : if (real_onep (_q22))
4307 : {
4308 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4309 : {
4310 1 : {
4311 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4312 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4313 : )
4314 : {
4315 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1405;
4316 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1405;
4317 1 : {
4318 1 : tree res_op0;
4319 1 : {
4320 1 : tree _o1[1], _r1;
4321 1 : _o1[0] = captures[0];
4322 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4323 1 : res_op0 = _r1;
4324 : }
4325 1 : tree _r;
4326 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4327 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 969, __FILE__, __LINE__, true);
4328 1 : return _r;
4329 : }
4330 0 : next_after_fail1405:;
4331 : }
4332 : }
4333 : }
4334 : }
4335 : }
4336 : }
4337 : break;
4338 : }
4339 8279 : case GE_EXPR:
4340 8279 : {
4341 8279 : tree _q30 = TREE_OPERAND (_q20, 0);
4342 8279 : tree _q31 = TREE_OPERAND (_q20, 1);
4343 8279 : if (real_zerop (_q31))
4344 : {
4345 2 : if (real_onep (_q21))
4346 : {
4347 1 : if (real_minus_onep (_q22))
4348 : {
4349 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4350 : {
4351 1 : {
4352 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4353 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4354 : )
4355 : {
4356 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1406;
4357 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1406;
4358 1 : {
4359 1 : tree res_op0;
4360 1 : {
4361 1 : tree _o1[1], _r1;
4362 1 : _o1[0] = captures[0];
4363 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4364 1 : res_op0 = _r1;
4365 : }
4366 1 : tree _r;
4367 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4368 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 968, __FILE__, __LINE__, true);
4369 1 : return _r;
4370 : }
4371 0 : next_after_fail1406:;
4372 : }
4373 : }
4374 : }
4375 : }
4376 : }
4377 1 : if (real_minus_onep (_q21))
4378 : {
4379 1 : if (real_onep (_q22))
4380 : {
4381 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4382 : {
4383 1 : {
4384 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4385 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4386 : )
4387 : {
4388 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1407;
4389 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1407;
4390 1 : {
4391 1 : tree res_op0;
4392 1 : {
4393 1 : tree _o1[1], _r1;
4394 1 : _o1[0] = captures[0];
4395 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4396 1 : res_op0 = _r1;
4397 : }
4398 1 : tree _r;
4399 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4400 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 969, __FILE__, __LINE__, true);
4401 1 : return _r;
4402 : }
4403 0 : next_after_fail1407:;
4404 : }
4405 : }
4406 : }
4407 : }
4408 : }
4409 : }
4410 : break;
4411 : }
4412 7748 : case LT_EXPR:
4413 7748 : {
4414 7748 : tree _q30 = TREE_OPERAND (_q20, 0);
4415 7748 : tree _q31 = TREE_OPERAND (_q20, 1);
4416 7748 : if (real_zerop (_q31))
4417 : {
4418 2 : if (real_onep (_q21))
4419 : {
4420 1 : if (real_minus_onep (_q22))
4421 : {
4422 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4423 : {
4424 1 : {
4425 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4426 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4427 : )
4428 : {
4429 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1408;
4430 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1408;
4431 1 : {
4432 1 : tree res_op0;
4433 1 : {
4434 1 : tree _o1[1], _r1;
4435 1 : _o1[0] = captures[0];
4436 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4437 1 : res_op0 = _r1;
4438 : }
4439 1 : tree _r;
4440 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4441 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 968, __FILE__, __LINE__, true);
4442 1 : return _r;
4443 : }
4444 0 : next_after_fail1408:;
4445 : }
4446 : }
4447 : }
4448 : }
4449 : }
4450 1 : if (real_minus_onep (_q21))
4451 : {
4452 1 : if (real_onep (_q22))
4453 : {
4454 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4455 : {
4456 1 : {
4457 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4458 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4459 : )
4460 : {
4461 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1409;
4462 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1409;
4463 1 : {
4464 1 : tree res_op0;
4465 1 : {
4466 1 : tree _o1[1], _r1;
4467 1 : _o1[0] = captures[0];
4468 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4469 1 : res_op0 = _r1;
4470 : }
4471 1 : tree _r;
4472 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4473 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 969, __FILE__, __LINE__, true);
4474 1 : return _r;
4475 : }
4476 0 : next_after_fail1409:;
4477 : }
4478 : }
4479 : }
4480 : }
4481 : }
4482 : }
4483 : break;
4484 : }
4485 3259 : case LE_EXPR:
4486 3259 : {
4487 3259 : tree _q30 = TREE_OPERAND (_q20, 0);
4488 3259 : tree _q31 = TREE_OPERAND (_q20, 1);
4489 3259 : if (real_zerop (_q31))
4490 : {
4491 2 : if (real_onep (_q21))
4492 : {
4493 1 : if (real_minus_onep (_q22))
4494 : {
4495 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4496 : {
4497 1 : {
4498 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4499 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4500 : )
4501 : {
4502 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1410;
4503 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1410;
4504 1 : {
4505 1 : tree res_op0;
4506 1 : {
4507 1 : tree _o1[1], _r1;
4508 1 : _o1[0] = captures[0];
4509 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4510 1 : res_op0 = _r1;
4511 : }
4512 1 : tree _r;
4513 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4514 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 968, __FILE__, __LINE__, true);
4515 1 : return _r;
4516 : }
4517 0 : next_after_fail1410:;
4518 : }
4519 : }
4520 : }
4521 : }
4522 : }
4523 1 : if (real_minus_onep (_q21))
4524 : {
4525 1 : if (real_onep (_q22))
4526 : {
4527 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4528 : {
4529 1 : {
4530 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4531 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4532 : )
4533 : {
4534 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1411;
4535 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1411;
4536 1 : {
4537 1 : tree res_op0;
4538 1 : {
4539 1 : tree _o1[1], _r1;
4540 1 : _o1[0] = captures[0];
4541 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4542 1 : res_op0 = _r1;
4543 : }
4544 1 : tree _r;
4545 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4546 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 969, __FILE__, __LINE__, true);
4547 1 : return _r;
4548 : }
4549 0 : next_after_fail1411:;
4550 : }
4551 : }
4552 : }
4553 : }
4554 : }
4555 : }
4556 : break;
4557 : }
4558 : default:;
4559 : }
4560 : break;
4561 : }
4562 71610521 : default:;
4563 : }
4564 71610521 : switch (TREE_CODE (_p1))
4565 : {
4566 3039 : case COND_EXPR:
4567 3039 : {
4568 3039 : tree _q30 = TREE_OPERAND (_p1, 0);
4569 3039 : tree _q31 = TREE_OPERAND (_p1, 1);
4570 3039 : tree _q32 = TREE_OPERAND (_p1, 2);
4571 3039 : switch (TREE_CODE (_q30))
4572 : {
4573 506 : case GT_EXPR:
4574 506 : {
4575 506 : tree _q40 = TREE_OPERAND (_q30, 0);
4576 506 : tree _q41 = TREE_OPERAND (_q30, 1);
4577 506 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4578 : {
4579 0 : if (real_zerop (_q41))
4580 : {
4581 0 : if (real_minus_onep (_q31))
4582 : {
4583 0 : if (real_onep (_q32))
4584 : {
4585 0 : {
4586 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4587 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4588 : )
4589 : {
4590 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1412;
4591 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1412;
4592 0 : {
4593 0 : tree res_op0;
4594 0 : {
4595 0 : tree _o1[1], _r1;
4596 0 : _o1[0] = captures[0];
4597 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4598 0 : res_op0 = _r1;
4599 : }
4600 0 : tree _r;
4601 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4602 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 969, __FILE__, __LINE__, true);
4603 0 : return _r;
4604 : }
4605 0 : next_after_fail1412:;
4606 : }
4607 : }
4608 : }
4609 : }
4610 : }
4611 : }
4612 : break;
4613 : }
4614 20 : case GE_EXPR:
4615 20 : {
4616 20 : tree _q40 = TREE_OPERAND (_q30, 0);
4617 20 : tree _q41 = TREE_OPERAND (_q30, 1);
4618 20 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4619 : {
4620 0 : if (real_zerop (_q41))
4621 : {
4622 0 : if (real_minus_onep (_q31))
4623 : {
4624 0 : if (real_onep (_q32))
4625 : {
4626 0 : {
4627 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4628 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4629 : )
4630 : {
4631 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1413;
4632 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1413;
4633 0 : {
4634 0 : tree res_op0;
4635 0 : {
4636 0 : tree _o1[1], _r1;
4637 0 : _o1[0] = captures[0];
4638 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4639 0 : res_op0 = _r1;
4640 : }
4641 0 : tree _r;
4642 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4643 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 969, __FILE__, __LINE__, true);
4644 0 : return _r;
4645 : }
4646 0 : next_after_fail1413:;
4647 : }
4648 : }
4649 : }
4650 : }
4651 : }
4652 : }
4653 : break;
4654 : }
4655 51 : case LT_EXPR:
4656 51 : {
4657 51 : tree _q40 = TREE_OPERAND (_q30, 0);
4658 51 : tree _q41 = TREE_OPERAND (_q30, 1);
4659 51 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4660 : {
4661 0 : if (real_zerop (_q41))
4662 : {
4663 0 : if (real_minus_onep (_q31))
4664 : {
4665 0 : if (real_onep (_q32))
4666 : {
4667 0 : {
4668 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4669 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4670 : )
4671 : {
4672 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1414;
4673 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1414;
4674 0 : {
4675 0 : tree res_op0;
4676 0 : {
4677 0 : tree _o1[1], _r1;
4678 0 : _o1[0] = captures[0];
4679 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4680 0 : res_op0 = _r1;
4681 : }
4682 0 : tree _r;
4683 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4684 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 969, __FILE__, __LINE__, true);
4685 0 : return _r;
4686 : }
4687 0 : next_after_fail1414:;
4688 : }
4689 : }
4690 : }
4691 : }
4692 : }
4693 : }
4694 : break;
4695 : }
4696 5 : case LE_EXPR:
4697 5 : {
4698 5 : tree _q40 = TREE_OPERAND (_q30, 0);
4699 5 : tree _q41 = TREE_OPERAND (_q30, 1);
4700 5 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4701 : {
4702 0 : if (real_zerop (_q41))
4703 : {
4704 0 : if (real_minus_onep (_q31))
4705 : {
4706 0 : if (real_onep (_q32))
4707 : {
4708 0 : {
4709 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4710 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4711 : )
4712 : {
4713 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1415;
4714 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1415;
4715 0 : {
4716 0 : tree res_op0;
4717 0 : {
4718 0 : tree _o1[1], _r1;
4719 0 : _o1[0] = captures[0];
4720 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4721 0 : res_op0 = _r1;
4722 : }
4723 0 : tree _r;
4724 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4725 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 969, __FILE__, __LINE__, true);
4726 0 : return _r;
4727 : }
4728 0 : next_after_fail1415:;
4729 : }
4730 : }
4731 : }
4732 : }
4733 : }
4734 : }
4735 : break;
4736 : }
4737 : default:;
4738 : }
4739 : break;
4740 : }
4741 864991 : case CALL_EXPR:
4742 864991 : switch (get_call_combined_fn (_p1))
4743 : {
4744 20 : case CFN_BUILT_IN_COPYSIGNF16:
4745 20 : if (call_expr_nargs (_p1) == 2)
4746 : {
4747 20 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4748 20 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4749 20 : if (real_onep (_q30))
4750 : {
4751 20 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4752 : {
4753 0 : {
4754 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4755 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
4756 0 : if (res) return res;
4757 : }
4758 : }
4759 : }
4760 : }
4761 : break;
4762 0 : case CFN_BUILT_IN_COPYSIGNF32:
4763 0 : if (call_expr_nargs (_p1) == 2)
4764 : {
4765 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4766 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4767 0 : if (real_onep (_q30))
4768 : {
4769 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4770 : {
4771 0 : {
4772 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4773 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
4774 0 : if (res) return res;
4775 : }
4776 : }
4777 : }
4778 : }
4779 : break;
4780 0 : case CFN_BUILT_IN_COPYSIGNF64:
4781 0 : if (call_expr_nargs (_p1) == 2)
4782 : {
4783 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4784 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4785 0 : if (real_onep (_q30))
4786 : {
4787 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4788 : {
4789 0 : {
4790 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4791 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
4792 0 : if (res) return res;
4793 : }
4794 : }
4795 : }
4796 : }
4797 : break;
4798 0 : case CFN_BUILT_IN_COPYSIGNF128X:
4799 0 : if (call_expr_nargs (_p1) == 2)
4800 : {
4801 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4802 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4803 0 : if (real_onep (_q30))
4804 : {
4805 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4806 : {
4807 0 : {
4808 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4809 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
4810 0 : if (res) return res;
4811 : }
4812 : }
4813 : }
4814 : }
4815 : break;
4816 0 : case CFN_BUILT_IN_COPYSIGNF128:
4817 0 : if (call_expr_nargs (_p1) == 2)
4818 : {
4819 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4820 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4821 0 : if (real_onep (_q30))
4822 : {
4823 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4824 : {
4825 0 : {
4826 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4827 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
4828 0 : if (res) return res;
4829 : }
4830 : }
4831 : }
4832 : }
4833 : break;
4834 0 : case CFN_BUILT_IN_COPYSIGNF32X:
4835 0 : if (call_expr_nargs (_p1) == 2)
4836 : {
4837 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4838 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4839 0 : if (real_onep (_q30))
4840 : {
4841 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4842 : {
4843 0 : {
4844 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4845 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
4846 0 : if (res) return res;
4847 : }
4848 : }
4849 : }
4850 : }
4851 : break;
4852 0 : case CFN_BUILT_IN_COPYSIGNF64X:
4853 0 : if (call_expr_nargs (_p1) == 2)
4854 : {
4855 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4856 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4857 0 : if (real_onep (_q30))
4858 : {
4859 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4860 : {
4861 0 : {
4862 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4863 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
4864 0 : if (res) return res;
4865 : }
4866 : }
4867 : }
4868 : }
4869 : break;
4870 18 : case CFN_BUILT_IN_COPYSIGN:
4871 18 : if (call_expr_nargs (_p1) == 2)
4872 : {
4873 18 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4874 18 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4875 18 : if (real_onep (_q30))
4876 : {
4877 14 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4878 : {
4879 0 : {
4880 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4881 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
4882 0 : if (res) return res;
4883 : }
4884 : }
4885 : }
4886 : }
4887 : break;
4888 14 : case CFN_BUILT_IN_COPYSIGNF:
4889 14 : if (call_expr_nargs (_p1) == 2)
4890 : {
4891 14 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4892 14 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4893 14 : if (real_onep (_q30))
4894 : {
4895 12 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4896 : {
4897 0 : {
4898 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4899 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
4900 0 : if (res) return res;
4901 : }
4902 : }
4903 : }
4904 : }
4905 : break;
4906 0 : case CFN_BUILT_IN_COPYSIGNL:
4907 0 : if (call_expr_nargs (_p1) == 2)
4908 : {
4909 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4910 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4911 0 : if (real_onep (_q30))
4912 : {
4913 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4914 : {
4915 0 : {
4916 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4917 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
4918 0 : if (res) return res;
4919 : }
4920 : }
4921 : }
4922 : }
4923 : break;
4924 0 : case CFN_COPYSIGN:
4925 0 : if (call_expr_nargs (_p1) == 2)
4926 : {
4927 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4928 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4929 0 : if (real_onep (_q30))
4930 : {
4931 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4932 : {
4933 0 : {
4934 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4935 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
4936 0 : if (res) return res;
4937 : }
4938 : }
4939 : }
4940 : }
4941 : break;
4942 : default:;
4943 : }
4944 : break;
4945 71610521 : default:;
4946 : }
4947 71610521 : switch (TREE_CODE (_p0))
4948 : {
4949 2633703 : case CALL_EXPR:
4950 2633703 : switch (get_call_combined_fn (_p0))
4951 : {
4952 1 : case CFN_BUILT_IN_COPYSIGNF16:
4953 1 : if (call_expr_nargs (_p0) == 2)
4954 : {
4955 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4956 1 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4957 1 : if (real_onep (_q20))
4958 : {
4959 1 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4960 : {
4961 0 : {
4962 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
4963 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
4964 0 : if (res) return res;
4965 : }
4966 : }
4967 1 : switch (TREE_CODE (_q21))
4968 : {
4969 0 : case NEGATE_EXPR:
4970 0 : {
4971 0 : tree _q40 = TREE_OPERAND (_q21, 0);
4972 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
4973 : {
4974 0 : {
4975 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
4976 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
4977 0 : if (res) return res;
4978 : }
4979 : }
4980 : break;
4981 : }
4982 : default:;
4983 : }
4984 : }
4985 : }
4986 : break;
4987 0 : case CFN_BUILT_IN_COPYSIGNF32:
4988 0 : if (call_expr_nargs (_p0) == 2)
4989 : {
4990 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4991 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4992 0 : if (real_onep (_q20))
4993 : {
4994 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4995 : {
4996 0 : {
4997 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
4998 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
4999 0 : if (res) return res;
5000 : }
5001 : }
5002 0 : switch (TREE_CODE (_q21))
5003 : {
5004 0 : case NEGATE_EXPR:
5005 0 : {
5006 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5007 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5008 : {
5009 0 : {
5010 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5011 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
5012 0 : if (res) return res;
5013 : }
5014 : }
5015 : break;
5016 : }
5017 : default:;
5018 : }
5019 : }
5020 : }
5021 : break;
5022 0 : case CFN_BUILT_IN_COPYSIGNF64:
5023 0 : if (call_expr_nargs (_p0) == 2)
5024 : {
5025 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5026 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5027 0 : if (real_onep (_q20))
5028 : {
5029 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5030 : {
5031 0 : {
5032 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5033 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
5034 0 : if (res) return res;
5035 : }
5036 : }
5037 0 : switch (TREE_CODE (_q21))
5038 : {
5039 0 : case NEGATE_EXPR:
5040 0 : {
5041 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5042 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5043 : {
5044 0 : {
5045 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5046 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
5047 0 : if (res) return res;
5048 : }
5049 : }
5050 : break;
5051 : }
5052 : default:;
5053 : }
5054 : }
5055 : }
5056 : break;
5057 0 : case CFN_BUILT_IN_COPYSIGNF128X:
5058 0 : if (call_expr_nargs (_p0) == 2)
5059 : {
5060 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5061 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5062 0 : if (real_onep (_q20))
5063 : {
5064 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5065 : {
5066 0 : {
5067 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5068 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5069 0 : if (res) return res;
5070 : }
5071 : }
5072 0 : switch (TREE_CODE (_q21))
5073 : {
5074 0 : case NEGATE_EXPR:
5075 0 : {
5076 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5077 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5078 : {
5079 0 : {
5080 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5081 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5082 0 : if (res) return res;
5083 : }
5084 : }
5085 : break;
5086 : }
5087 : default:;
5088 : }
5089 : }
5090 : }
5091 : break;
5092 8 : case CFN_BUILT_IN_COPYSIGNF128:
5093 8 : if (call_expr_nargs (_p0) == 2)
5094 : {
5095 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5096 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5097 8 : if (real_onep (_q20))
5098 : {
5099 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5100 : {
5101 0 : {
5102 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5103 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5104 0 : if (res) return res;
5105 : }
5106 : }
5107 0 : switch (TREE_CODE (_q21))
5108 : {
5109 0 : case NEGATE_EXPR:
5110 0 : {
5111 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5112 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5113 : {
5114 0 : {
5115 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5116 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5117 0 : if (res) return res;
5118 : }
5119 : }
5120 : break;
5121 : }
5122 : default:;
5123 : }
5124 : }
5125 : }
5126 : break;
5127 0 : case CFN_BUILT_IN_COPYSIGNF32X:
5128 0 : if (call_expr_nargs (_p0) == 2)
5129 : {
5130 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5131 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5132 0 : if (real_onep (_q20))
5133 : {
5134 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5135 : {
5136 0 : {
5137 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5138 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5139 0 : if (res) return res;
5140 : }
5141 : }
5142 0 : switch (TREE_CODE (_q21))
5143 : {
5144 0 : case NEGATE_EXPR:
5145 0 : {
5146 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5147 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5148 : {
5149 0 : {
5150 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5151 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5152 0 : if (res) return res;
5153 : }
5154 : }
5155 : break;
5156 : }
5157 : default:;
5158 : }
5159 : }
5160 : }
5161 : break;
5162 0 : case CFN_BUILT_IN_COPYSIGNF64X:
5163 0 : if (call_expr_nargs (_p0) == 2)
5164 : {
5165 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5166 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5167 0 : if (real_onep (_q20))
5168 : {
5169 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5170 : {
5171 0 : {
5172 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5173 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5174 0 : if (res) return res;
5175 : }
5176 : }
5177 0 : switch (TREE_CODE (_q21))
5178 : {
5179 0 : case NEGATE_EXPR:
5180 0 : {
5181 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5182 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5183 : {
5184 0 : {
5185 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5186 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5187 0 : if (res) return res;
5188 : }
5189 : }
5190 : break;
5191 : }
5192 : default:;
5193 : }
5194 : }
5195 : }
5196 : break;
5197 18 : case CFN_BUILT_IN_COPYSIGN:
5198 18 : if (call_expr_nargs (_p0) == 2)
5199 : {
5200 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5201 18 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5202 18 : if (real_onep (_q20))
5203 : {
5204 3 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5205 : {
5206 0 : {
5207 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5208 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
5209 0 : if (res) return res;
5210 : }
5211 : }
5212 3 : switch (TREE_CODE (_q21))
5213 : {
5214 0 : case NEGATE_EXPR:
5215 0 : {
5216 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5217 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5218 : {
5219 0 : {
5220 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5221 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
5222 0 : if (res) return res;
5223 : }
5224 : }
5225 : break;
5226 : }
5227 : default:;
5228 : }
5229 : }
5230 : }
5231 : break;
5232 36 : case CFN_BUILT_IN_COPYSIGNF:
5233 36 : if (call_expr_nargs (_p0) == 2)
5234 : {
5235 36 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5236 36 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5237 36 : if (real_onep (_q20))
5238 : {
5239 12 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5240 : {
5241 4 : {
5242 4 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5243 4 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
5244 4 : if (res) return res;
5245 : }
5246 : }
5247 12 : switch (TREE_CODE (_q21))
5248 : {
5249 0 : case NEGATE_EXPR:
5250 0 : {
5251 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5252 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5253 : {
5254 0 : {
5255 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5256 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
5257 0 : if (res) return res;
5258 : }
5259 : }
5260 : break;
5261 : }
5262 : default:;
5263 : }
5264 : }
5265 : }
5266 : break;
5267 8 : case CFN_BUILT_IN_COPYSIGNL:
5268 8 : if (call_expr_nargs (_p0) == 2)
5269 : {
5270 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5271 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5272 8 : if (real_onep (_q20))
5273 : {
5274 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5275 : {
5276 0 : {
5277 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5278 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
5279 0 : if (res) return res;
5280 : }
5281 : }
5282 0 : switch (TREE_CODE (_q21))
5283 : {
5284 0 : case NEGATE_EXPR:
5285 0 : {
5286 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5287 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5288 : {
5289 0 : {
5290 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5291 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
5292 0 : if (res) return res;
5293 : }
5294 : }
5295 : break;
5296 : }
5297 : default:;
5298 : }
5299 : }
5300 : }
5301 : break;
5302 0 : case CFN_COPYSIGN:
5303 0 : if (call_expr_nargs (_p0) == 2)
5304 : {
5305 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5306 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5307 0 : if (real_onep (_q20))
5308 : {
5309 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5310 : {
5311 0 : {
5312 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5313 0 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
5314 0 : if (res) return res;
5315 : }
5316 : }
5317 0 : switch (TREE_CODE (_q21))
5318 : {
5319 0 : case NEGATE_EXPR:
5320 0 : {
5321 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5322 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5323 : {
5324 0 : {
5325 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5326 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
5327 0 : if (res) return res;
5328 : }
5329 : }
5330 : break;
5331 : }
5332 : default:;
5333 : }
5334 : }
5335 : }
5336 : break;
5337 : default:;
5338 : }
5339 : break;
5340 71610521 : default:;
5341 : }
5342 71610521 : switch (TREE_CODE (_p1))
5343 : {
5344 864991 : case CALL_EXPR:
5345 864991 : switch (get_call_combined_fn (_p1))
5346 : {
5347 20 : case CFN_BUILT_IN_COPYSIGNF16:
5348 20 : if (call_expr_nargs (_p1) == 2)
5349 : {
5350 20 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5351 20 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5352 20 : if (real_onep (_q30))
5353 : {
5354 20 : switch (TREE_CODE (_q31))
5355 : {
5356 0 : case NEGATE_EXPR:
5357 0 : {
5358 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5359 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5360 : {
5361 0 : {
5362 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5363 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
5364 0 : if (res) return res;
5365 : }
5366 : }
5367 : break;
5368 : }
5369 : default:;
5370 : }
5371 : }
5372 : }
5373 : break;
5374 0 : case CFN_BUILT_IN_COPYSIGNF32:
5375 0 : if (call_expr_nargs (_p1) == 2)
5376 : {
5377 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5378 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5379 0 : if (real_onep (_q30))
5380 : {
5381 0 : switch (TREE_CODE (_q31))
5382 : {
5383 0 : case NEGATE_EXPR:
5384 0 : {
5385 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5386 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5387 : {
5388 0 : {
5389 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5390 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
5391 0 : if (res) return res;
5392 : }
5393 : }
5394 : break;
5395 : }
5396 : default:;
5397 : }
5398 : }
5399 : }
5400 : break;
5401 0 : case CFN_BUILT_IN_COPYSIGNF64:
5402 0 : if (call_expr_nargs (_p1) == 2)
5403 : {
5404 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5405 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5406 0 : if (real_onep (_q30))
5407 : {
5408 0 : switch (TREE_CODE (_q31))
5409 : {
5410 0 : case NEGATE_EXPR:
5411 0 : {
5412 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5413 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5414 : {
5415 0 : {
5416 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5417 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
5418 0 : if (res) return res;
5419 : }
5420 : }
5421 : break;
5422 : }
5423 : default:;
5424 : }
5425 : }
5426 : }
5427 : break;
5428 0 : case CFN_BUILT_IN_COPYSIGNF128X:
5429 0 : if (call_expr_nargs (_p1) == 2)
5430 : {
5431 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5432 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5433 0 : if (real_onep (_q30))
5434 : {
5435 0 : switch (TREE_CODE (_q31))
5436 : {
5437 0 : case NEGATE_EXPR:
5438 0 : {
5439 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5440 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5441 : {
5442 0 : {
5443 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5444 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5445 0 : if (res) return res;
5446 : }
5447 : }
5448 : break;
5449 : }
5450 : default:;
5451 : }
5452 : }
5453 : }
5454 : break;
5455 0 : case CFN_BUILT_IN_COPYSIGNF128:
5456 0 : if (call_expr_nargs (_p1) == 2)
5457 : {
5458 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5459 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5460 0 : if (real_onep (_q30))
5461 : {
5462 0 : switch (TREE_CODE (_q31))
5463 : {
5464 0 : case NEGATE_EXPR:
5465 0 : {
5466 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5467 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5468 : {
5469 0 : {
5470 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5471 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5472 0 : if (res) return res;
5473 : }
5474 : }
5475 : break;
5476 : }
5477 : default:;
5478 : }
5479 : }
5480 : }
5481 : break;
5482 0 : case CFN_BUILT_IN_COPYSIGNF32X:
5483 0 : if (call_expr_nargs (_p1) == 2)
5484 : {
5485 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5486 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5487 0 : if (real_onep (_q30))
5488 : {
5489 0 : switch (TREE_CODE (_q31))
5490 : {
5491 0 : case NEGATE_EXPR:
5492 0 : {
5493 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5494 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5495 : {
5496 0 : {
5497 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5498 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5499 0 : if (res) return res;
5500 : }
5501 : }
5502 : break;
5503 : }
5504 : default:;
5505 : }
5506 : }
5507 : }
5508 : break;
5509 0 : case CFN_BUILT_IN_COPYSIGNF64X:
5510 0 : if (call_expr_nargs (_p1) == 2)
5511 : {
5512 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5513 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5514 0 : if (real_onep (_q30))
5515 : {
5516 0 : switch (TREE_CODE (_q31))
5517 : {
5518 0 : case NEGATE_EXPR:
5519 0 : {
5520 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5521 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5522 : {
5523 0 : {
5524 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5525 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5526 0 : if (res) return res;
5527 : }
5528 : }
5529 : break;
5530 : }
5531 : default:;
5532 : }
5533 : }
5534 : }
5535 : break;
5536 18 : case CFN_BUILT_IN_COPYSIGN:
5537 18 : if (call_expr_nargs (_p1) == 2)
5538 : {
5539 18 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5540 18 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5541 18 : if (real_onep (_q30))
5542 : {
5543 14 : switch (TREE_CODE (_q31))
5544 : {
5545 0 : case NEGATE_EXPR:
5546 0 : {
5547 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5548 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5549 : {
5550 0 : {
5551 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5552 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
5553 0 : if (res) return res;
5554 : }
5555 : }
5556 : break;
5557 : }
5558 : default:;
5559 : }
5560 : }
5561 : }
5562 : break;
5563 14 : case CFN_BUILT_IN_COPYSIGNF:
5564 14 : if (call_expr_nargs (_p1) == 2)
5565 : {
5566 14 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5567 14 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5568 14 : if (real_onep (_q30))
5569 : {
5570 12 : switch (TREE_CODE (_q31))
5571 : {
5572 0 : case NEGATE_EXPR:
5573 0 : {
5574 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5575 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5576 : {
5577 0 : {
5578 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5579 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
5580 0 : if (res) return res;
5581 : }
5582 : }
5583 : break;
5584 : }
5585 : default:;
5586 : }
5587 : }
5588 : }
5589 : break;
5590 0 : case CFN_BUILT_IN_COPYSIGNL:
5591 0 : if (call_expr_nargs (_p1) == 2)
5592 : {
5593 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5594 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5595 0 : if (real_onep (_q30))
5596 : {
5597 0 : switch (TREE_CODE (_q31))
5598 : {
5599 0 : case NEGATE_EXPR:
5600 0 : {
5601 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5602 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5603 : {
5604 0 : {
5605 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5606 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
5607 0 : if (res) return res;
5608 : }
5609 : }
5610 : break;
5611 : }
5612 : default:;
5613 : }
5614 : }
5615 : }
5616 : break;
5617 0 : case CFN_COPYSIGN:
5618 0 : if (call_expr_nargs (_p1) == 2)
5619 : {
5620 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5621 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5622 0 : if (real_onep (_q30))
5623 : {
5624 0 : switch (TREE_CODE (_q31))
5625 : {
5626 0 : case NEGATE_EXPR:
5627 0 : {
5628 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5629 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5630 : {
5631 0 : {
5632 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5633 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
5634 0 : if (res) return res;
5635 : }
5636 : }
5637 : break;
5638 : }
5639 : default:;
5640 : }
5641 : }
5642 : }
5643 : break;
5644 : default:;
5645 : }
5646 : break;
5647 71610521 : default:;
5648 : }
5649 71610521 : if (integer_onep (_p1))
5650 : {
5651 3339519 : {
5652 3339519 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5653 3339519 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures, MULT_EXPR);
5654 3339519 : if (res) return res;
5655 : }
5656 : }
5657 68271002 : switch (TREE_CODE (_p0))
5658 : {
5659 5696756 : case MULT_EXPR:
5660 5696756 : {
5661 5696756 : tree _q20 = TREE_OPERAND (_p0, 0);
5662 5696756 : tree _q21 = TREE_OPERAND (_p0, 1);
5663 5696756 : switch (TREE_CODE (_q21))
5664 : {
5665 1139367 : case INTEGER_CST:
5666 1139367 : {
5667 1139367 : switch (TREE_CODE (_p1))
5668 : {
5669 981262 : case INTEGER_CST:
5670 981262 : {
5671 981262 : {
5672 981262 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5673 981262 : {
5674 981262 : wi::overflow_type overflow;
5675 981262 : wide_int mul = wi::mul (wi::to_wide (captures[1]), wi::to_wide (captures[2]),
5676 1962524 : TYPE_SIGN (type), &overflow);
5677 981262 : if (!overflow || TYPE_OVERFLOW_WRAPS (type)
5678 : )
5679 : {
5680 981232 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1416;
5681 981232 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1416;
5682 981232 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1416;
5683 981232 : {
5684 981232 : tree res_op0;
5685 981232 : res_op0 = captures[0];
5686 981232 : tree res_op1;
5687 981232 : res_op1 = wide_int_to_tree (type, mul);
5688 981232 : tree _r;
5689 981232 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5690 981232 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 970, __FILE__, __LINE__, true);
5691 981232 : return _r;
5692 : }
5693 30 : next_after_fail1416:;
5694 : }
5695 981232 : }
5696 : }
5697 30 : break;
5698 : }
5699 : default:;
5700 : }
5701 : break;
5702 : }
5703 : default:;
5704 : }
5705 : break;
5706 : }
5707 7826009 : case PLUS_EXPR:
5708 7826009 : {
5709 7826009 : tree _q20 = TREE_OPERAND (_p0, 0);
5710 7826009 : tree _q21 = TREE_OPERAND (_p0, 1);
5711 7826009 : switch (TREE_CODE (_q20))
5712 : {
5713 1249545 : case MULT_EXPR:
5714 1249545 : {
5715 1249545 : tree _q30 = TREE_OPERAND (_q20, 0);
5716 1249545 : tree _q31 = TREE_OPERAND (_q20, 1);
5717 1249545 : switch (TREE_CODE (_q31))
5718 : {
5719 304076 : case INTEGER_CST:
5720 304076 : {
5721 304076 : switch (TREE_CODE (_q21))
5722 : {
5723 32357 : case INTEGER_CST:
5724 32357 : {
5725 32357 : switch (TREE_CODE (_p1))
5726 : {
5727 12041 : case INTEGER_CST:
5728 12041 : {
5729 12041 : {
5730 12041 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
5731 12041 : {
5732 12041 : bool overflowed = true;
5733 12041 : wi::overflow_type ovf1, ovf2;
5734 12041 : wide_int mul = wi::mul (wi::to_wide (captures[3]), wi::to_wide (captures[5]),
5735 24082 : TYPE_SIGN (type), &ovf1);
5736 12041 : wide_int add = wi::mul (wi::to_wide (captures[4]), wi::to_wide (captures[5]),
5737 24082 : TYPE_SIGN (type), &ovf2);
5738 12041 : if (TYPE_OVERFLOW_UNDEFINED (type))
5739 : {
5740 : }
5741 : else
5742 4074 : overflowed = false;
5743 4074 : if (!overflowed
5744 : )
5745 : {
5746 4074 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1417;
5747 4074 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1417;
5748 4074 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1417;
5749 4074 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1417;
5750 4074 : {
5751 4074 : tree res_op0;
5752 4074 : {
5753 4074 : tree _o1[2], _r1;
5754 4074 : _o1[0] = captures[2];
5755 4074 : _o1[1] = wide_int_to_tree (type, mul);
5756 4074 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5757 4074 : res_op0 = _r1;
5758 : }
5759 4074 : tree res_op1;
5760 4074 : res_op1 = wide_int_to_tree (type, add);
5761 4074 : tree _r;
5762 4074 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
5763 4074 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 971, __FILE__, __LINE__, true);
5764 4074 : return _r;
5765 : }
5766 7967 : next_after_fail1417:;
5767 : }
5768 12041 : }
5769 : }
5770 7967 : break;
5771 : }
5772 : default:;
5773 : }
5774 : break;
5775 : }
5776 : default:;
5777 : }
5778 : break;
5779 : }
5780 : default:;
5781 : }
5782 : break;
5783 : }
5784 : default:;
5785 : }
5786 : break;
5787 : }
5788 98793 : case TRUNC_DIV_EXPR:
5789 98793 : {
5790 98793 : tree _q20 = TREE_OPERAND (_p0, 0);
5791 98793 : tree _q21 = TREE_OPERAND (_p0, 1);
5792 98793 : if (integer_pow2p (_q21))
5793 : {
5794 74843 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5795 : {
5796 51779 : {
5797 51779 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5798 51779 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
5799 : )
5800 : {
5801 51715 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1418;
5802 51715 : {
5803 51715 : tree res_op0;
5804 51715 : res_op0 = captures[0];
5805 51715 : tree res_op1;
5806 51715 : {
5807 51715 : tree _o1[1], _r1;
5808 51715 : _o1[0] = captures[1];
5809 51715 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
5810 51715 : res_op1 = _r1;
5811 : }
5812 51715 : tree _r;
5813 51715 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
5814 51715 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 972, __FILE__, __LINE__, true);
5815 51715 : return _r;
5816 : }
5817 0 : next_after_fail1418:;
5818 : }
5819 : }
5820 : }
5821 : }
5822 : break;
5823 : }
5824 260 : case ABS_EXPR:
5825 260 : {
5826 260 : tree _q20 = TREE_OPERAND (_p0, 0);
5827 260 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5828 : {
5829 2 : {
5830 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
5831 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1419;
5832 2 : {
5833 2 : if (! tree_invariant_p (captures[1])) goto next_after_fail1419;
5834 0 : tree res_op0;
5835 0 : res_op0 = unshare_expr (captures[1]);
5836 0 : tree res_op1;
5837 0 : res_op1 = captures[1];
5838 0 : tree _r;
5839 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5840 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 973, __FILE__, __LINE__, true);
5841 0 : return _r;
5842 : }
5843 2 : next_after_fail1419:;
5844 : }
5845 : }
5846 : break;
5847 : }
5848 0 : case ABSU_EXPR:
5849 0 : {
5850 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5851 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5852 : {
5853 0 : {
5854 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20 };
5855 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1420;
5856 0 : {
5857 0 : tree res_op0;
5858 0 : {
5859 0 : tree _o1[1], _r1;
5860 0 : _o1[0] = captures[1];
5861 0 : if (TREE_TYPE (_o1[0]) != type)
5862 : {
5863 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
5864 : }
5865 : else
5866 : _r1 = _o1[0];
5867 0 : captures[2] = _r1;
5868 : }
5869 0 : res_op0 = unshare_expr (captures[2]);
5870 0 : tree res_op1;
5871 0 : res_op1 = captures[2];
5872 0 : tree _r;
5873 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5874 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 974, __FILE__, __LINE__, true);
5875 0 : return _r;
5876 : }
5877 0 : next_after_fail1420:;
5878 : }
5879 : }
5880 : break;
5881 : }
5882 2416590 : case CALL_EXPR:
5883 2416590 : switch (get_call_combined_fn (_p0))
5884 : {
5885 1 : case CFN_BUILT_IN_COPYSIGNF16:
5886 1 : if (call_expr_nargs (_p0) == 2)
5887 : {
5888 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5889 1 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5890 1 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5891 : {
5892 0 : {
5893 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5894 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
5895 0 : if (res) return res;
5896 : }
5897 : }
5898 : }
5899 : break;
5900 0 : case CFN_BUILT_IN_COPYSIGNF32:
5901 0 : if (call_expr_nargs (_p0) == 2)
5902 : {
5903 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5904 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5905 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5906 : {
5907 0 : {
5908 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5909 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
5910 0 : if (res) return res;
5911 : }
5912 : }
5913 : }
5914 : break;
5915 0 : case CFN_BUILT_IN_COPYSIGNF64:
5916 0 : if (call_expr_nargs (_p0) == 2)
5917 : {
5918 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5919 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5920 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5921 : {
5922 0 : {
5923 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5924 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
5925 0 : if (res) return res;
5926 : }
5927 : }
5928 : }
5929 : break;
5930 0 : case CFN_BUILT_IN_COPYSIGNF128X:
5931 0 : if (call_expr_nargs (_p0) == 2)
5932 : {
5933 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5934 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5935 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5936 : {
5937 0 : {
5938 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5939 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5940 0 : if (res) return res;
5941 : }
5942 : }
5943 : }
5944 : break;
5945 8 : case CFN_BUILT_IN_COPYSIGNF128:
5946 8 : if (call_expr_nargs (_p0) == 2)
5947 : {
5948 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5949 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5950 8 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5951 : {
5952 0 : {
5953 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5954 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5955 0 : if (res) return res;
5956 : }
5957 : }
5958 : }
5959 : break;
5960 0 : case CFN_BUILT_IN_COPYSIGNF32X:
5961 0 : if (call_expr_nargs (_p0) == 2)
5962 : {
5963 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5964 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5965 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5966 : {
5967 0 : {
5968 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5969 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5970 0 : if (res) return res;
5971 : }
5972 : }
5973 : }
5974 : break;
5975 0 : case CFN_BUILT_IN_COPYSIGNF64X:
5976 0 : if (call_expr_nargs (_p0) == 2)
5977 : {
5978 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5979 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5980 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5981 : {
5982 0 : {
5983 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5984 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5985 0 : if (res) return res;
5986 : }
5987 : }
5988 : }
5989 : break;
5990 18 : case CFN_BUILT_IN_COPYSIGN:
5991 18 : if (call_expr_nargs (_p0) == 2)
5992 : {
5993 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5994 18 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5995 18 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5996 : {
5997 0 : {
5998 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5999 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
6000 0 : if (res) return res;
6001 : }
6002 : }
6003 : }
6004 : break;
6005 36 : case CFN_BUILT_IN_COPYSIGNF:
6006 36 : if (call_expr_nargs (_p0) == 2)
6007 : {
6008 36 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6009 36 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6010 36 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6011 : {
6012 0 : {
6013 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6014 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
6015 0 : if (res) return res;
6016 : }
6017 : }
6018 : }
6019 : break;
6020 8 : case CFN_BUILT_IN_COPYSIGNL:
6021 8 : if (call_expr_nargs (_p0) == 2)
6022 : {
6023 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6024 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6025 8 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6026 : {
6027 0 : {
6028 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6029 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
6030 0 : if (res) return res;
6031 : }
6032 : }
6033 : }
6034 : break;
6035 0 : case CFN_COPYSIGN:
6036 0 : if (call_expr_nargs (_p0) == 2)
6037 : {
6038 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
6039 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
6040 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
6041 : {
6042 0 : {
6043 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
6044 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
6045 0 : if (res) return res;
6046 : }
6047 : }
6048 : }
6049 : break;
6050 : default:;
6051 : }
6052 : break;
6053 67233981 : default:;
6054 : }
6055 67233981 : switch (TREE_CODE (_p1))
6056 : {
6057 7394226 : CASE_CONVERT:
6058 7394226 : {
6059 7394226 : tree _q30 = TREE_OPERAND (_p1, 0);
6060 7394226 : switch (TREE_CODE (_q30))
6061 : {
6062 0 : case LSHIFT_EXPR:
6063 0 : {
6064 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6065 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6066 0 : if (integer_onep (_q40))
6067 : {
6068 0 : {
6069 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q41 };
6070 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
6071 0 : if (res) return res;
6072 : }
6073 : }
6074 : break;
6075 : }
6076 : default:;
6077 : }
6078 : break;
6079 : }
6080 67233981 : default:;
6081 : }
6082 67233981 : switch (TREE_CODE (_p0))
6083 : {
6084 32219330 : CASE_CONVERT:
6085 32219330 : {
6086 32219330 : tree _q20 = TREE_OPERAND (_p0, 0);
6087 32219330 : switch (TREE_CODE (_q20))
6088 : {
6089 20 : case LSHIFT_EXPR:
6090 20 : {
6091 20 : tree _q30 = TREE_OPERAND (_q20, 0);
6092 20 : tree _q31 = TREE_OPERAND (_q20, 1);
6093 20 : if (integer_onep (_q30))
6094 : {
6095 1 : {
6096 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _q31 };
6097 1 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
6098 1 : if (res) return res;
6099 : }
6100 : }
6101 : break;
6102 : }
6103 1 : case EQ_EXPR:
6104 1 : {
6105 1 : tree _q30 = TREE_OPERAND (_q20, 0);
6106 1 : tree _q31 = TREE_OPERAND (_q20, 1);
6107 1 : if (integer_zerop (_q31))
6108 : {
6109 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6110 : {
6111 0 : {
6112 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
6113 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6114 0 : if (res) return res;
6115 : }
6116 : }
6117 : }
6118 : break;
6119 : }
6120 : default:;
6121 : }
6122 : break;
6123 : }
6124 67233981 : default:;
6125 : }
6126 67233981 : switch (TREE_CODE (_p1))
6127 : {
6128 844 : case LSHIFT_EXPR:
6129 844 : {
6130 844 : tree _q30 = TREE_OPERAND (_p1, 0);
6131 844 : tree _q31 = TREE_OPERAND (_p1, 1);
6132 844 : if (integer_onep (_q30))
6133 : {
6134 165 : {
6135 165 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
6136 165 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
6137 165 : if (res) return res;
6138 : }
6139 : }
6140 : break;
6141 : }
6142 67233816 : default:;
6143 : }
6144 67233816 : switch (TREE_CODE (_p0))
6145 : {
6146 3701 : case LSHIFT_EXPR:
6147 3701 : {
6148 3701 : tree _q20 = TREE_OPERAND (_p0, 0);
6149 3701 : tree _q21 = TREE_OPERAND (_p0, 1);
6150 3701 : if (integer_onep (_q20))
6151 : {
6152 3479 : {
6153 3479 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
6154 3479 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
6155 3479 : if (res) return res;
6156 : }
6157 : }
6158 : break;
6159 : }
6160 67230337 : default:;
6161 : }
6162 67230337 : switch (TREE_CODE (_p1))
6163 : {
6164 7393835 : CASE_CONVERT:
6165 7393835 : {
6166 7393835 : tree _q30 = TREE_OPERAND (_p1, 0);
6167 7393835 : switch (TREE_CODE (_q30))
6168 : {
6169 0 : case EQ_EXPR:
6170 0 : {
6171 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6172 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6173 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6174 : {
6175 0 : if (integer_zerop (_q41))
6176 : {
6177 0 : {
6178 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6179 0 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
6180 0 : if (res) return res;
6181 : }
6182 : }
6183 : }
6184 : break;
6185 : }
6186 : default:;
6187 : }
6188 : break;
6189 : }
6190 0 : case EQ_EXPR:
6191 0 : {
6192 0 : tree _q30 = TREE_OPERAND (_p1, 0);
6193 0 : tree _q31 = TREE_OPERAND (_p1, 1);
6194 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6195 : {
6196 0 : if (integer_zerop (_q31))
6197 : {
6198 0 : {
6199 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6200 0 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
6201 0 : if (res) return res;
6202 : }
6203 : }
6204 : }
6205 : break;
6206 : }
6207 67230337 : default:;
6208 : }
6209 67230337 : switch (TREE_CODE (_p0))
6210 : {
6211 183 : case EQ_EXPR:
6212 183 : {
6213 183 : tree _q20 = TREE_OPERAND (_p0, 0);
6214 183 : tree _q21 = TREE_OPERAND (_p0, 1);
6215 183 : if (integer_zerop (_q21))
6216 : {
6217 59 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6218 : {
6219 3 : {
6220 3 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6221 3 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6222 3 : if (res) return res;
6223 : }
6224 : }
6225 : }
6226 : break;
6227 : }
6228 67230334 : default:;
6229 : }
6230 67230334 : switch (TREE_CODE (_p1))
6231 : {
6232 0 : case VEC_COND_EXPR:
6233 0 : {
6234 0 : tree _q30 = TREE_OPERAND (_p1, 0);
6235 0 : tree _q31 = TREE_OPERAND (_p1, 1);
6236 0 : tree _q32 = TREE_OPERAND (_p1, 2);
6237 0 : switch (TREE_CODE (_q30))
6238 : {
6239 0 : case EQ_EXPR:
6240 0 : {
6241 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6242 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6243 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6244 : {
6245 0 : if (integer_zerop (_q41))
6246 : {
6247 0 : if (integer_zerop (_q32))
6248 : {
6249 0 : {
6250 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
6251 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1421;
6252 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1421;
6253 0 : {
6254 0 : tree _r;
6255 0 : _r = build_zero_cst (type);
6256 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
6257 0 : return _r;
6258 : }
6259 0 : next_after_fail1421:;
6260 : }
6261 : }
6262 : }
6263 : }
6264 : break;
6265 : }
6266 : default:;
6267 : }
6268 : break;
6269 : }
6270 67230334 : default:;
6271 : }
6272 67230334 : switch (TREE_CODE (_p0))
6273 : {
6274 37 : case VEC_COND_EXPR:
6275 37 : {
6276 37 : tree _q20 = TREE_OPERAND (_p0, 0);
6277 37 : tree _q21 = TREE_OPERAND (_p0, 1);
6278 37 : tree _q22 = TREE_OPERAND (_p0, 2);
6279 37 : switch (TREE_CODE (_q20))
6280 : {
6281 1 : case EQ_EXPR:
6282 1 : {
6283 1 : tree _q30 = TREE_OPERAND (_q20, 0);
6284 1 : tree _q31 = TREE_OPERAND (_q20, 1);
6285 1 : if (integer_zerop (_q31))
6286 : {
6287 1 : if (integer_zerop (_q22))
6288 : {
6289 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6290 : {
6291 1 : {
6292 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
6293 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1422;
6294 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1422;
6295 1 : {
6296 1 : tree _r;
6297 1 : _r = build_zero_cst (type);
6298 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
6299 1 : return _r;
6300 : }
6301 0 : next_after_fail1422:;
6302 : }
6303 : }
6304 : }
6305 : }
6306 : break;
6307 : }
6308 0 : case NE_EXPR:
6309 0 : {
6310 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6311 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6312 0 : if (integer_zerop (_q31))
6313 : {
6314 0 : if (integer_zerop (_q21))
6315 : {
6316 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6317 : {
6318 0 : {
6319 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
6320 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1423;
6321 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1423;
6322 0 : {
6323 0 : tree _r;
6324 0 : _r = build_zero_cst (type);
6325 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 976, __FILE__, __LINE__, true);
6326 0 : return _r;
6327 : }
6328 0 : next_after_fail1423:;
6329 : }
6330 : }
6331 : }
6332 : }
6333 : break;
6334 : }
6335 : default:;
6336 : }
6337 : break;
6338 : }
6339 67230333 : default:;
6340 : }
6341 67230333 : switch (TREE_CODE (_p1))
6342 : {
6343 0 : case VEC_COND_EXPR:
6344 0 : {
6345 0 : tree _q30 = TREE_OPERAND (_p1, 0);
6346 0 : tree _q31 = TREE_OPERAND (_p1, 1);
6347 0 : tree _q32 = TREE_OPERAND (_p1, 2);
6348 0 : switch (TREE_CODE (_q30))
6349 : {
6350 0 : case NE_EXPR:
6351 0 : {
6352 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6353 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6354 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6355 : {
6356 0 : if (integer_zerop (_q41))
6357 : {
6358 0 : if (integer_zerop (_q31))
6359 : {
6360 0 : {
6361 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
6362 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1424;
6363 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1424;
6364 0 : {
6365 0 : tree _r;
6366 0 : _r = build_zero_cst (type);
6367 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 976, __FILE__, __LINE__, true);
6368 0 : return _r;
6369 : }
6370 0 : next_after_fail1424:;
6371 : }
6372 : }
6373 : }
6374 : }
6375 : break;
6376 : }
6377 : default:;
6378 : }
6379 : break;
6380 : }
6381 67230333 : default:;
6382 : }
6383 67230333 : switch (TREE_CODE (_p0))
6384 : {
6385 736757 : case RDIV_EXPR:
6386 736757 : {
6387 736757 : tree _q20 = TREE_OPERAND (_p0, 0);
6388 736757 : tree _q21 = TREE_OPERAND (_p0, 1);
6389 736757 : switch (TREE_CODE (_q20))
6390 : {
6391 56137 : case REAL_CST:
6392 56137 : {
6393 56137 : switch (TREE_CODE (_p1))
6394 : {
6395 1 : case REAL_CST:
6396 1 : {
6397 1 : {
6398 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
6399 1 : if (flag_associative_math
6400 1 : && single_use (captures[0])
6401 : )
6402 : {
6403 1 : {
6404 1 : tree tem = const_binop (MULT_EXPR, type, captures[1], captures[3]);
6405 1 : if (tem
6406 : )
6407 : {
6408 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1425;
6409 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1425;
6410 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1425;
6411 1 : {
6412 1 : tree res_op0;
6413 1 : res_op0 = tem;
6414 1 : tree res_op1;
6415 1 : res_op1 = captures[2];
6416 1 : tree _r;
6417 1 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
6418 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 977, __FILE__, __LINE__, true);
6419 1 : return _r;
6420 : }
6421 0 : next_after_fail1425:;
6422 : }
6423 : }
6424 : }
6425 : }
6426 0 : break;
6427 : }
6428 : default:;
6429 : }
6430 : break;
6431 : }
6432 : default:;
6433 : }
6434 : break;
6435 : }
6436 67230332 : default:;
6437 : }
6438 67230332 : {
6439 67230332 : tree _p0_pops[1];
6440 67230332 : if (tree_nop_convert (_p0, _p0_pops))
6441 : {
6442 23262339 : tree _q20 = _p0_pops[0];
6443 23262339 : switch (TREE_CODE (_q20))
6444 : {
6445 4 : case BIT_IOR_EXPR:
6446 4 : {
6447 4 : tree _q30 = TREE_OPERAND (_q20, 0);
6448 4 : tree _q31 = TREE_OPERAND (_q20, 1);
6449 4 : switch (TREE_CODE (_q30))
6450 : {
6451 4 : case NEGATE_EXPR:
6452 4 : {
6453 4 : tree _q40 = TREE_OPERAND (_q30, 0);
6454 4 : switch (TREE_CODE (_q40))
6455 : {
6456 0 : CASE_CONVERT:
6457 0 : {
6458 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6459 0 : switch (TREE_CODE (_q50))
6460 : {
6461 0 : case LT_EXPR:
6462 0 : {
6463 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6464 0 : tree _q61 = TREE_OPERAND (_q50, 1);
6465 0 : if (integer_zerop (_q61))
6466 : {
6467 0 : if (integer_onep (_q31))
6468 : {
6469 0 : {
6470 0 : tree _p1_pops[1];
6471 0 : if (tree_nop_convert (_p1, _p1_pops))
6472 : {
6473 0 : tree _q100 = _p1_pops[0];
6474 0 : if ((_q100 == _q60 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q60, 0) && types_match (_q100, _q60)))
6475 : {
6476 0 : {
6477 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6478 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
6479 0 : if (res) return res;
6480 : }
6481 : }
6482 : }
6483 : }
6484 0 : if ((_p1 == _q60 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q60, 0) && types_match (_p1, _q60)))
6485 : {
6486 0 : {
6487 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6488 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
6489 0 : if (res) return res;
6490 : }
6491 : }
6492 : }
6493 : }
6494 : break;
6495 : }
6496 : default:;
6497 : }
6498 : break;
6499 : }
6500 4 : case LT_EXPR:
6501 4 : {
6502 4 : tree _q50 = TREE_OPERAND (_q40, 0);
6503 4 : tree _q51 = TREE_OPERAND (_q40, 1);
6504 4 : if (integer_zerop (_q51))
6505 : {
6506 4 : if (integer_onep (_q31))
6507 : {
6508 4 : {
6509 4 : tree _p1_pops[1];
6510 4 : if (tree_nop_convert (_p1, _p1_pops))
6511 : {
6512 4 : tree _q90 = _p1_pops[0];
6513 4 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
6514 : {
6515 4 : {
6516 4 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
6517 4 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
6518 4 : if (res) return res;
6519 : }
6520 : }
6521 : }
6522 : }
6523 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
6524 : {
6525 0 : {
6526 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
6527 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
6528 0 : if (res) return res;
6529 : }
6530 : }
6531 : }
6532 : }
6533 : break;
6534 : }
6535 : default:;
6536 : }
6537 : break;
6538 : }
6539 0 : default:;
6540 : }
6541 0 : {
6542 0 : tree _q30_pops[1];
6543 0 : if (tree_nop_convert (_q30, _q30_pops))
6544 : {
6545 0 : tree _q40 = _q30_pops[0];
6546 0 : switch (TREE_CODE (_q40))
6547 : {
6548 0 : case NEGATE_EXPR:
6549 0 : {
6550 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6551 0 : switch (TREE_CODE (_q50))
6552 : {
6553 0 : CASE_CONVERT:
6554 0 : {
6555 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6556 0 : switch (TREE_CODE (_q60))
6557 : {
6558 0 : case LT_EXPR:
6559 0 : {
6560 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6561 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6562 0 : if (integer_zerop (_q71))
6563 : {
6564 0 : if (integer_onep (_q31))
6565 : {
6566 0 : {
6567 0 : tree _p1_pops[1];
6568 0 : if (tree_nop_convert (_p1, _p1_pops))
6569 : {
6570 0 : tree _q110 = _p1_pops[0];
6571 0 : if ((_q110 == _q70 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q70, 0) && types_match (_q110, _q70)))
6572 : {
6573 0 : {
6574 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q70 };
6575 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
6576 0 : if (res) return res;
6577 : }
6578 : }
6579 : }
6580 : }
6581 0 : if ((_p1 == _q70 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q70, 0) && types_match (_p1, _q70)))
6582 : {
6583 0 : {
6584 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q70 };
6585 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
6586 0 : if (res) return res;
6587 : }
6588 : }
6589 : }
6590 : }
6591 : break;
6592 : }
6593 : default:;
6594 : }
6595 : break;
6596 : }
6597 0 : case LT_EXPR:
6598 0 : {
6599 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6600 0 : tree _q61 = TREE_OPERAND (_q50, 1);
6601 0 : if (integer_zerop (_q61))
6602 : {
6603 0 : if (integer_onep (_q31))
6604 : {
6605 0 : {
6606 0 : tree _p1_pops[1];
6607 0 : if (tree_nop_convert (_p1, _p1_pops))
6608 : {
6609 0 : tree _q100 = _p1_pops[0];
6610 0 : if ((_q100 == _q60 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q60, 0) && types_match (_q100, _q60)))
6611 : {
6612 0 : {
6613 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6614 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
6615 0 : if (res) return res;
6616 : }
6617 : }
6618 : }
6619 : }
6620 0 : if ((_p1 == _q60 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q60, 0) && types_match (_p1, _q60)))
6621 : {
6622 0 : {
6623 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6624 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
6625 0 : if (res) return res;
6626 : }
6627 : }
6628 : }
6629 : }
6630 : break;
6631 : }
6632 : default:;
6633 : }
6634 : break;
6635 : }
6636 : default:;
6637 : }
6638 : }
6639 : }
6640 0 : break;
6641 : }
6642 23262335 : default:;
6643 : }
6644 23262335 : switch (TREE_CODE (_p1))
6645 : {
6646 0 : case BIT_IOR_EXPR:
6647 0 : {
6648 0 : tree _q40 = TREE_OPERAND (_p1, 0);
6649 0 : tree _q41 = TREE_OPERAND (_p1, 1);
6650 0 : switch (TREE_CODE (_q40))
6651 : {
6652 0 : case NEGATE_EXPR:
6653 0 : {
6654 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6655 0 : switch (TREE_CODE (_q50))
6656 : {
6657 0 : CASE_CONVERT:
6658 0 : {
6659 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6660 0 : switch (TREE_CODE (_q60))
6661 : {
6662 0 : case LT_EXPR:
6663 0 : {
6664 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6665 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6666 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6667 : {
6668 0 : if (integer_zerop (_q71))
6669 : {
6670 0 : if (integer_onep (_q41))
6671 : {
6672 0 : {
6673 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6674 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
6675 0 : if (res) return res;
6676 : }
6677 : }
6678 : }
6679 : }
6680 : break;
6681 : }
6682 : default:;
6683 : }
6684 : break;
6685 : }
6686 0 : case LT_EXPR:
6687 0 : {
6688 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6689 0 : tree _q61 = TREE_OPERAND (_q50, 1);
6690 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6691 : {
6692 0 : if (integer_zerop (_q61))
6693 : {
6694 0 : if (integer_onep (_q41))
6695 : {
6696 0 : {
6697 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6698 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
6699 0 : if (res) return res;
6700 : }
6701 : }
6702 : }
6703 : }
6704 : break;
6705 : }
6706 : default:;
6707 : }
6708 : break;
6709 : }
6710 0 : default:;
6711 : }
6712 0 : {
6713 0 : tree _q40_pops[1];
6714 0 : if (tree_nop_convert (_q40, _q40_pops))
6715 : {
6716 0 : tree _q50 = _q40_pops[0];
6717 0 : switch (TREE_CODE (_q50))
6718 : {
6719 0 : case NEGATE_EXPR:
6720 0 : {
6721 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6722 0 : switch (TREE_CODE (_q60))
6723 : {
6724 0 : CASE_CONVERT:
6725 0 : {
6726 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6727 0 : switch (TREE_CODE (_q70))
6728 : {
6729 0 : case LT_EXPR:
6730 0 : {
6731 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6732 0 : tree _q81 = TREE_OPERAND (_q70, 1);
6733 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
6734 : {
6735 0 : if (integer_zerop (_q81))
6736 : {
6737 0 : if (integer_onep (_q41))
6738 : {
6739 0 : {
6740 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6741 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
6742 0 : if (res) return res;
6743 : }
6744 : }
6745 : }
6746 : }
6747 : break;
6748 : }
6749 : default:;
6750 : }
6751 : break;
6752 : }
6753 0 : case LT_EXPR:
6754 0 : {
6755 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6756 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6757 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6758 : {
6759 0 : if (integer_zerop (_q71))
6760 : {
6761 0 : if (integer_onep (_q41))
6762 : {
6763 0 : {
6764 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6765 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
6766 0 : if (res) return res;
6767 : }
6768 : }
6769 : }
6770 : }
6771 : break;
6772 : }
6773 : default:;
6774 : }
6775 : break;
6776 : }
6777 : default:;
6778 : }
6779 : }
6780 : }
6781 0 : break;
6782 : }
6783 23262335 : default:;
6784 : }
6785 23262335 : {
6786 23262335 : tree _p1_pops[1];
6787 23262335 : if (tree_nop_convert (_p1, _p1_pops))
6788 : {
6789 2501004 : tree _q40 = _p1_pops[0];
6790 2501004 : switch (TREE_CODE (_q40))
6791 : {
6792 0 : case BIT_IOR_EXPR:
6793 0 : {
6794 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6795 0 : tree _q51 = TREE_OPERAND (_q40, 1);
6796 0 : switch (TREE_CODE (_q50))
6797 : {
6798 0 : case NEGATE_EXPR:
6799 0 : {
6800 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6801 0 : switch (TREE_CODE (_q60))
6802 : {
6803 0 : CASE_CONVERT:
6804 0 : {
6805 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6806 0 : switch (TREE_CODE (_q70))
6807 : {
6808 0 : case LT_EXPR:
6809 0 : {
6810 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6811 0 : tree _q81 = TREE_OPERAND (_q70, 1);
6812 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
6813 : {
6814 0 : if (integer_zerop (_q81))
6815 : {
6816 0 : if (integer_onep (_q51))
6817 : {
6818 0 : {
6819 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6820 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
6821 0 : if (res) return res;
6822 : }
6823 : }
6824 : }
6825 : }
6826 : break;
6827 : }
6828 : default:;
6829 : }
6830 : break;
6831 : }
6832 0 : case LT_EXPR:
6833 0 : {
6834 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6835 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6836 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6837 : {
6838 0 : if (integer_zerop (_q71))
6839 : {
6840 0 : if (integer_onep (_q51))
6841 : {
6842 0 : {
6843 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6844 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
6845 0 : if (res) return res;
6846 : }
6847 : }
6848 : }
6849 : }
6850 : break;
6851 : }
6852 : default:;
6853 : }
6854 : break;
6855 : }
6856 0 : default:;
6857 : }
6858 0 : {
6859 0 : tree _q50_pops[1];
6860 0 : if (tree_nop_convert (_q50, _q50_pops))
6861 : {
6862 0 : tree _q60 = _q50_pops[0];
6863 0 : switch (TREE_CODE (_q60))
6864 : {
6865 0 : case NEGATE_EXPR:
6866 0 : {
6867 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6868 0 : switch (TREE_CODE (_q70))
6869 : {
6870 0 : CASE_CONVERT:
6871 0 : {
6872 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6873 0 : switch (TREE_CODE (_q80))
6874 : {
6875 0 : case LT_EXPR:
6876 0 : {
6877 0 : tree _q90 = TREE_OPERAND (_q80, 0);
6878 0 : tree _q91 = TREE_OPERAND (_q80, 1);
6879 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
6880 : {
6881 0 : if (integer_zerop (_q91))
6882 : {
6883 0 : if (integer_onep (_q51))
6884 : {
6885 0 : {
6886 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6887 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
6888 0 : if (res) return res;
6889 : }
6890 : }
6891 : }
6892 : }
6893 : break;
6894 : }
6895 : default:;
6896 : }
6897 : break;
6898 : }
6899 0 : case LT_EXPR:
6900 0 : {
6901 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6902 0 : tree _q81 = TREE_OPERAND (_q70, 1);
6903 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
6904 : {
6905 0 : if (integer_zerop (_q81))
6906 : {
6907 0 : if (integer_onep (_q51))
6908 : {
6909 0 : {
6910 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6911 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
6912 0 : if (res) return res;
6913 : }
6914 : }
6915 : }
6916 : }
6917 : break;
6918 : }
6919 : default:;
6920 : }
6921 : break;
6922 : }
6923 : default:;
6924 : }
6925 : }
6926 : }
6927 0 : break;
6928 : }
6929 : default:;
6930 : }
6931 : }
6932 : }
6933 : }
6934 : }
6935 67230328 : {
6936 67230328 : tree _p1_pops[1];
6937 67230328 : if (tree_nop_convert (_p1, _p1_pops))
6938 : {
6939 7305335 : tree _q30 = _p1_pops[0];
6940 7305335 : switch (TREE_CODE (_q30))
6941 : {
6942 0 : case BIT_IOR_EXPR:
6943 0 : {
6944 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6945 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6946 0 : switch (TREE_CODE (_q40))
6947 : {
6948 0 : case NEGATE_EXPR:
6949 0 : {
6950 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6951 0 : switch (TREE_CODE (_q50))
6952 : {
6953 0 : CASE_CONVERT:
6954 0 : {
6955 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6956 0 : switch (TREE_CODE (_q60))
6957 : {
6958 0 : case LT_EXPR:
6959 0 : {
6960 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6961 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6962 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
6963 : {
6964 0 : if (integer_zerop (_q71))
6965 : {
6966 0 : if (integer_onep (_q41))
6967 : {
6968 0 : {
6969 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6970 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
6971 0 : if (res) return res;
6972 : }
6973 : }
6974 : }
6975 : }
6976 : break;
6977 : }
6978 : default:;
6979 : }
6980 : break;
6981 : }
6982 : default:;
6983 : }
6984 : break;
6985 : }
6986 0 : default:;
6987 : }
6988 0 : {
6989 0 : tree _q40_pops[1];
6990 0 : if (tree_nop_convert (_q40, _q40_pops))
6991 : {
6992 0 : tree _q50 = _q40_pops[0];
6993 0 : switch (TREE_CODE (_q50))
6994 : {
6995 0 : case NEGATE_EXPR:
6996 0 : {
6997 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6998 0 : switch (TREE_CODE (_q60))
6999 : {
7000 0 : CASE_CONVERT:
7001 0 : {
7002 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7003 0 : switch (TREE_CODE (_q70))
7004 : {
7005 0 : case LT_EXPR:
7006 0 : {
7007 0 : tree _q80 = TREE_OPERAND (_q70, 0);
7008 0 : tree _q81 = TREE_OPERAND (_q70, 1);
7009 0 : if ((_q80 == _p0 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _p0, 0) && types_match (_q80, _p0)))
7010 : {
7011 0 : if (integer_zerop (_q81))
7012 : {
7013 0 : if (integer_onep (_q41))
7014 : {
7015 0 : {
7016 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7017 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
7018 0 : if (res) return res;
7019 : }
7020 : }
7021 : }
7022 : }
7023 : break;
7024 : }
7025 : default:;
7026 : }
7027 : break;
7028 : }
7029 : default:;
7030 : }
7031 : break;
7032 : }
7033 : default:;
7034 : }
7035 : }
7036 : }
7037 0 : break;
7038 : }
7039 : default:;
7040 : }
7041 : }
7042 : }
7043 67230328 : switch (TREE_CODE (_p0))
7044 : {
7045 299 : case BIT_IOR_EXPR:
7046 299 : {
7047 299 : tree _q20 = TREE_OPERAND (_p0, 0);
7048 299 : tree _q21 = TREE_OPERAND (_p0, 1);
7049 299 : switch (TREE_CODE (_q20))
7050 : {
7051 1 : case NEGATE_EXPR:
7052 1 : {
7053 1 : tree _q30 = TREE_OPERAND (_q20, 0);
7054 1 : switch (TREE_CODE (_q30))
7055 : {
7056 0 : CASE_CONVERT:
7057 0 : {
7058 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7059 0 : switch (TREE_CODE (_q40))
7060 : {
7061 0 : case LT_EXPR:
7062 0 : {
7063 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7064 0 : tree _q51 = TREE_OPERAND (_q40, 1);
7065 0 : if (integer_zerop (_q51))
7066 : {
7067 0 : if (integer_onep (_q21))
7068 : {
7069 0 : {
7070 0 : tree _p1_pops[1];
7071 0 : if (tree_nop_convert (_p1, _p1_pops))
7072 : {
7073 0 : tree _q90 = _p1_pops[0];
7074 0 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
7075 : {
7076 0 : {
7077 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7078 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
7079 0 : if (res) return res;
7080 : }
7081 : }
7082 : }
7083 : }
7084 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
7085 : {
7086 0 : {
7087 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7088 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
7089 0 : if (res) return res;
7090 : }
7091 : }
7092 : }
7093 : }
7094 : break;
7095 : }
7096 : default:;
7097 : }
7098 : break;
7099 : }
7100 1 : case LT_EXPR:
7101 1 : {
7102 1 : tree _q40 = TREE_OPERAND (_q30, 0);
7103 1 : tree _q41 = TREE_OPERAND (_q30, 1);
7104 1 : if (integer_zerop (_q41))
7105 : {
7106 1 : if (integer_onep (_q21))
7107 : {
7108 1 : {
7109 1 : tree _p1_pops[1];
7110 1 : if (tree_nop_convert (_p1, _p1_pops))
7111 : {
7112 0 : tree _q80 = _p1_pops[0];
7113 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
7114 : {
7115 0 : {
7116 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
7117 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
7118 0 : if (res) return res;
7119 : }
7120 : }
7121 : }
7122 : }
7123 1 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
7124 : {
7125 1 : {
7126 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
7127 1 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
7128 1 : if (res) return res;
7129 : }
7130 : }
7131 : }
7132 : }
7133 : break;
7134 : }
7135 : default:;
7136 : }
7137 : break;
7138 : }
7139 298 : default:;
7140 : }
7141 298 : {
7142 298 : tree _q20_pops[1];
7143 298 : if (tree_nop_convert (_q20, _q20_pops))
7144 : {
7145 1 : tree _q30 = _q20_pops[0];
7146 1 : switch (TREE_CODE (_q30))
7147 : {
7148 1 : case NEGATE_EXPR:
7149 1 : {
7150 1 : tree _q40 = TREE_OPERAND (_q30, 0);
7151 1 : switch (TREE_CODE (_q40))
7152 : {
7153 0 : CASE_CONVERT:
7154 0 : {
7155 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7156 0 : switch (TREE_CODE (_q50))
7157 : {
7158 0 : case LT_EXPR:
7159 0 : {
7160 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7161 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7162 0 : if (integer_zerop (_q61))
7163 : {
7164 0 : if (integer_onep (_q21))
7165 : {
7166 0 : {
7167 0 : tree _p1_pops[1];
7168 0 : if (tree_nop_convert (_p1, _p1_pops))
7169 : {
7170 0 : tree _q100 = _p1_pops[0];
7171 0 : if ((_q100 == _q60 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q60, 0) && types_match (_q100, _q60)))
7172 : {
7173 0 : {
7174 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
7175 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
7176 0 : if (res) return res;
7177 : }
7178 : }
7179 : }
7180 : }
7181 0 : if ((_p1 == _q60 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q60, 0) && types_match (_p1, _q60)))
7182 : {
7183 0 : {
7184 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
7185 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
7186 0 : if (res) return res;
7187 : }
7188 : }
7189 : }
7190 : }
7191 : break;
7192 : }
7193 : default:;
7194 : }
7195 : break;
7196 : }
7197 1 : case LT_EXPR:
7198 1 : {
7199 1 : tree _q50 = TREE_OPERAND (_q40, 0);
7200 1 : tree _q51 = TREE_OPERAND (_q40, 1);
7201 1 : if (integer_zerop (_q51))
7202 : {
7203 1 : if (integer_onep (_q21))
7204 : {
7205 1 : {
7206 1 : tree _p1_pops[1];
7207 1 : if (tree_nop_convert (_p1, _p1_pops))
7208 : {
7209 1 : tree _q90 = _p1_pops[0];
7210 1 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
7211 : {
7212 1 : {
7213 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7214 1 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
7215 1 : if (res) return res;
7216 : }
7217 : }
7218 : }
7219 : }
7220 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
7221 : {
7222 0 : {
7223 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7224 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures);
7225 0 : if (res) return res;
7226 : }
7227 : }
7228 : }
7229 : }
7230 : break;
7231 : }
7232 : default:;
7233 : }
7234 : break;
7235 : }
7236 : default:;
7237 : }
7238 : }
7239 : }
7240 297 : break;
7241 : }
7242 67230326 : default:;
7243 : }
7244 67230326 : switch (TREE_CODE (_p1))
7245 : {
7246 1 : case BIT_IOR_EXPR:
7247 1 : {
7248 1 : tree _q30 = TREE_OPERAND (_p1, 0);
7249 1 : tree _q31 = TREE_OPERAND (_p1, 1);
7250 1 : switch (TREE_CODE (_q30))
7251 : {
7252 0 : case NEGATE_EXPR:
7253 0 : {
7254 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7255 0 : switch (TREE_CODE (_q40))
7256 : {
7257 0 : CASE_CONVERT:
7258 0 : {
7259 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7260 0 : switch (TREE_CODE (_q50))
7261 : {
7262 0 : case LT_EXPR:
7263 0 : {
7264 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7265 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7266 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
7267 : {
7268 0 : if (integer_zerop (_q61))
7269 : {
7270 0 : if (integer_onep (_q31))
7271 : {
7272 0 : {
7273 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7274 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
7275 0 : if (res) return res;
7276 : }
7277 : }
7278 : }
7279 : }
7280 : break;
7281 : }
7282 : default:;
7283 : }
7284 : break;
7285 : }
7286 0 : case LT_EXPR:
7287 0 : {
7288 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7289 0 : tree _q51 = TREE_OPERAND (_q40, 1);
7290 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
7291 : {
7292 0 : if (integer_zerop (_q51))
7293 : {
7294 0 : if (integer_onep (_q31))
7295 : {
7296 0 : {
7297 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7298 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
7299 0 : if (res) return res;
7300 : }
7301 : }
7302 : }
7303 : }
7304 : break;
7305 : }
7306 : default:;
7307 : }
7308 : break;
7309 : }
7310 1 : default:;
7311 : }
7312 1 : {
7313 1 : tree _q30_pops[1];
7314 1 : if (tree_nop_convert (_q30, _q30_pops))
7315 : {
7316 0 : tree _q40 = _q30_pops[0];
7317 0 : switch (TREE_CODE (_q40))
7318 : {
7319 0 : case NEGATE_EXPR:
7320 0 : {
7321 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7322 0 : switch (TREE_CODE (_q50))
7323 : {
7324 0 : CASE_CONVERT:
7325 0 : {
7326 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7327 0 : switch (TREE_CODE (_q60))
7328 : {
7329 0 : case LT_EXPR:
7330 0 : {
7331 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7332 0 : tree _q71 = TREE_OPERAND (_q60, 1);
7333 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
7334 : {
7335 0 : if (integer_zerop (_q71))
7336 : {
7337 0 : if (integer_onep (_q31))
7338 : {
7339 0 : {
7340 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7341 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
7342 0 : if (res) return res;
7343 : }
7344 : }
7345 : }
7346 : }
7347 : break;
7348 : }
7349 : default:;
7350 : }
7351 : break;
7352 : }
7353 0 : case LT_EXPR:
7354 0 : {
7355 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7356 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7357 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
7358 : {
7359 0 : if (integer_zerop (_q61))
7360 : {
7361 0 : if (integer_onep (_q31))
7362 : {
7363 0 : {
7364 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7365 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
7366 0 : if (res) return res;
7367 : }
7368 : }
7369 : }
7370 : }
7371 : break;
7372 : }
7373 : default:;
7374 : }
7375 : break;
7376 : }
7377 : default:;
7378 : }
7379 : }
7380 : }
7381 1 : break;
7382 : }
7383 67230326 : default:;
7384 : }
7385 67230326 : {
7386 67230326 : tree _p1_pops[1];
7387 67230326 : if (tree_nop_convert (_p1, _p1_pops))
7388 : {
7389 7305334 : tree _q30 = _p1_pops[0];
7390 7305334 : switch (TREE_CODE (_q30))
7391 : {
7392 0 : case BIT_IOR_EXPR:
7393 0 : {
7394 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7395 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7396 0 : switch (TREE_CODE (_q40))
7397 : {
7398 0 : case NEGATE_EXPR:
7399 0 : {
7400 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7401 0 : switch (TREE_CODE (_q50))
7402 : {
7403 0 : case LT_EXPR:
7404 0 : {
7405 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7406 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7407 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
7408 : {
7409 0 : if (integer_zerop (_q61))
7410 : {
7411 0 : if (integer_onep (_q41))
7412 : {
7413 0 : {
7414 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7415 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
7416 0 : if (res) return res;
7417 : }
7418 : }
7419 : }
7420 : }
7421 : break;
7422 : }
7423 : default:;
7424 : }
7425 : break;
7426 : }
7427 0 : default:;
7428 : }
7429 0 : {
7430 0 : tree _q40_pops[1];
7431 0 : if (tree_nop_convert (_q40, _q40_pops))
7432 : {
7433 0 : tree _q50 = _q40_pops[0];
7434 0 : switch (TREE_CODE (_q50))
7435 : {
7436 0 : case NEGATE_EXPR:
7437 0 : {
7438 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7439 0 : switch (TREE_CODE (_q60))
7440 : {
7441 0 : case LT_EXPR:
7442 0 : {
7443 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7444 0 : tree _q71 = TREE_OPERAND (_q60, 1);
7445 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
7446 : {
7447 0 : if (integer_zerop (_q71))
7448 : {
7449 0 : if (integer_onep (_q41))
7450 : {
7451 0 : {
7452 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7453 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures);
7454 0 : if (res) return res;
7455 : }
7456 : }
7457 : }
7458 : }
7459 : break;
7460 : }
7461 : default:;
7462 : }
7463 : break;
7464 : }
7465 : default:;
7466 : }
7467 : }
7468 : }
7469 0 : break;
7470 : }
7471 : default:;
7472 : }
7473 : }
7474 : }
7475 67230326 : switch (TREE_CODE (_p0))
7476 : {
7477 32219194 : CASE_CONVERT:
7478 32219194 : {
7479 32219194 : tree _q20 = TREE_OPERAND (_p0, 0);
7480 32219194 : switch (TREE_CODE (_q20))
7481 : {
7482 6408 : case NEGATE_EXPR:
7483 6408 : {
7484 6408 : tree _q30 = TREE_OPERAND (_q20, 0);
7485 6408 : switch (TREE_CODE (_p1))
7486 : {
7487 473 : CASE_CONVERT:
7488 473 : {
7489 473 : tree _q50 = TREE_OPERAND (_p1, 0);
7490 473 : if (tree_negate_expr_p (_q50))
7491 : {
7492 0 : {
7493 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q50 };
7494 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
7495 0 : if (res) return res;
7496 : }
7497 : }
7498 : break;
7499 : }
7500 6408 : default:;
7501 : }
7502 6408 : if (tree_negate_expr_p (_p1))
7503 : {
7504 3574 : {
7505 3574 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p1 };
7506 3574 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
7507 3574 : if (res) return res;
7508 : }
7509 : }
7510 : break;
7511 : }
7512 4 : case LT_EXPR:
7513 4 : {
7514 4 : tree _q30 = TREE_OPERAND (_q20, 0);
7515 4 : tree _q31 = TREE_OPERAND (_q20, 1);
7516 4 : {
7517 4 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7518 4 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures, LT_EXPR);
7519 4 : if (res) return res;
7520 : }
7521 4 : break;
7522 : }
7523 6 : case LE_EXPR:
7524 6 : {
7525 6 : tree _q30 = TREE_OPERAND (_q20, 0);
7526 6 : tree _q31 = TREE_OPERAND (_q20, 1);
7527 6 : {
7528 6 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7529 6 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures, LE_EXPR);
7530 6 : if (res) return res;
7531 : }
7532 6 : break;
7533 : }
7534 1 : case EQ_EXPR:
7535 1 : {
7536 1 : tree _q30 = TREE_OPERAND (_q20, 0);
7537 1 : tree _q31 = TREE_OPERAND (_q20, 1);
7538 1 : {
7539 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7540 1 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures, EQ_EXPR);
7541 1 : if (res) return res;
7542 : }
7543 1 : break;
7544 : }
7545 1157 : case NE_EXPR:
7546 1157 : {
7547 1157 : tree _q30 = TREE_OPERAND (_q20, 0);
7548 1157 : tree _q31 = TREE_OPERAND (_q20, 1);
7549 1157 : {
7550 1157 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7551 1157 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures, NE_EXPR);
7552 1157 : if (res) return res;
7553 : }
7554 1157 : break;
7555 : }
7556 19 : case GE_EXPR:
7557 19 : {
7558 19 : tree _q30 = TREE_OPERAND (_q20, 0);
7559 19 : tree _q31 = TREE_OPERAND (_q20, 1);
7560 19 : {
7561 19 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7562 19 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures, GE_EXPR);
7563 19 : if (res) return res;
7564 : }
7565 19 : break;
7566 : }
7567 19 : case GT_EXPR:
7568 19 : {
7569 19 : tree _q30 = TREE_OPERAND (_q20, 0);
7570 19 : tree _q31 = TREE_OPERAND (_q20, 1);
7571 19 : {
7572 19 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7573 19 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures, GT_EXPR);
7574 19 : if (res) return res;
7575 : }
7576 19 : break;
7577 : }
7578 0 : case UNORDERED_EXPR:
7579 0 : {
7580 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7581 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7582 0 : {
7583 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7584 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures, UNORDERED_EXPR);
7585 0 : if (res) return res;
7586 : }
7587 0 : break;
7588 : }
7589 0 : case ORDERED_EXPR:
7590 0 : {
7591 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7592 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7593 0 : {
7594 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7595 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures, ORDERED_EXPR);
7596 0 : if (res) return res;
7597 : }
7598 0 : break;
7599 : }
7600 0 : case UNLT_EXPR:
7601 0 : {
7602 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7603 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7604 0 : {
7605 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7606 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures, UNLT_EXPR);
7607 0 : if (res) return res;
7608 : }
7609 0 : break;
7610 : }
7611 0 : case UNLE_EXPR:
7612 0 : {
7613 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7614 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7615 0 : {
7616 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7617 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures, UNLE_EXPR);
7618 0 : if (res) return res;
7619 : }
7620 0 : break;
7621 : }
7622 0 : case UNGT_EXPR:
7623 0 : {
7624 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7625 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7626 0 : {
7627 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7628 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures, UNGT_EXPR);
7629 0 : if (res) return res;
7630 : }
7631 0 : break;
7632 : }
7633 0 : case UNGE_EXPR:
7634 0 : {
7635 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7636 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7637 0 : {
7638 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7639 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures, UNGE_EXPR);
7640 0 : if (res) return res;
7641 : }
7642 0 : break;
7643 : }
7644 0 : case UNEQ_EXPR:
7645 0 : {
7646 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7647 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7648 0 : {
7649 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7650 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures, UNEQ_EXPR);
7651 0 : if (res) return res;
7652 : }
7653 0 : break;
7654 : }
7655 0 : case LTGT_EXPR:
7656 0 : {
7657 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7658 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7659 0 : {
7660 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7661 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures, LTGT_EXPR);
7662 0 : if (res) return res;
7663 : }
7664 0 : break;
7665 : }
7666 32218410 : default:;
7667 : }
7668 32218410 : if (tree_negate_expr_p (_q20))
7669 : {
7670 24617 : switch (TREE_CODE (_p1))
7671 : {
7672 2642 : CASE_CONVERT:
7673 2642 : {
7674 2642 : tree _q40 = TREE_OPERAND (_p1, 0);
7675 2642 : switch (TREE_CODE (_q40))
7676 : {
7677 0 : case NEGATE_EXPR:
7678 0 : {
7679 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7680 0 : {
7681 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q20 };
7682 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
7683 0 : if (res) return res;
7684 : }
7685 0 : break;
7686 : }
7687 : default:;
7688 : }
7689 : break;
7690 : }
7691 6 : case NEGATE_EXPR:
7692 6 : {
7693 6 : tree _q40 = TREE_OPERAND (_p1, 0);
7694 6 : {
7695 6 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
7696 6 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
7697 6 : if (res) return res;
7698 : }
7699 0 : break;
7700 : }
7701 : default:;
7702 : }
7703 : }
7704 : break;
7705 : }
7706 435266 : case NEGATE_EXPR:
7707 435266 : {
7708 435266 : tree _q20 = TREE_OPERAND (_p0, 0);
7709 435266 : switch (TREE_CODE (_p1))
7710 : {
7711 150074 : CASE_CONVERT:
7712 150074 : {
7713 150074 : tree _q40 = TREE_OPERAND (_p1, 0);
7714 150074 : if (tree_negate_expr_p (_q40))
7715 : {
7716 0 : {
7717 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
7718 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
7719 0 : if (res) return res;
7720 : }
7721 : }
7722 : break;
7723 : }
7724 435266 : default:;
7725 : }
7726 435266 : if (tree_negate_expr_p (_p1))
7727 : {
7728 42412 : {
7729 42412 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7730 42412 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
7731 42412 : if (res) return res;
7732 : }
7733 : }
7734 392854 : if (tree_zero_one_valued_p (_q20))
7735 : {
7736 529 : if (tree_zero_one_valued_p (_p1))
7737 : {
7738 521 : {
7739 521 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7740 521 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
7741 521 : if (res) return res;
7742 : }
7743 : }
7744 : }
7745 : break;
7746 : }
7747 67186603 : default:;
7748 : }
7749 67186603 : if (tree_negate_expr_p (_p0))
7750 : {
7751 701251 : switch (TREE_CODE (_p1))
7752 : {
7753 155146 : CASE_CONVERT:
7754 155146 : {
7755 155146 : tree _q30 = TREE_OPERAND (_p1, 0);
7756 155146 : switch (TREE_CODE (_q30))
7757 : {
7758 0 : case NEGATE_EXPR:
7759 0 : {
7760 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7761 0 : {
7762 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
7763 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
7764 0 : if (res) return res;
7765 : }
7766 0 : break;
7767 : }
7768 : default:;
7769 : }
7770 : break;
7771 : }
7772 6 : case NEGATE_EXPR:
7773 6 : {
7774 6 : tree _q30 = TREE_OPERAND (_p1, 0);
7775 6 : {
7776 6 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
7777 6 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
7778 6 : if (res) return res;
7779 : }
7780 0 : break;
7781 : }
7782 : default:;
7783 : }
7784 : }
7785 67186597 : if (tree_zero_one_valued_p (_p0))
7786 : {
7787 187850 : switch (TREE_CODE (_p1))
7788 : {
7789 24 : case NEGATE_EXPR:
7790 24 : {
7791 24 : tree _q30 = TREE_OPERAND (_p1, 0);
7792 24 : if (tree_zero_one_valued_p (_q30))
7793 : {
7794 24 : {
7795 24 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
7796 24 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
7797 24 : if (res) return res;
7798 : }
7799 : }
7800 : break;
7801 : }
7802 187826 : default:;
7803 : }
7804 187826 : if (tree_zero_one_valued_p (_p1))
7805 : {
7806 12340 : {
7807 12340 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
7808 12340 : if (INTEGRAL_TYPE_P (type)
7809 : )
7810 : {
7811 12340 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1426;
7812 12340 : {
7813 12340 : tree res_op0;
7814 12340 : res_op0 = captures[0];
7815 12340 : tree res_op1;
7816 12340 : res_op1 = captures[1];
7817 12340 : tree _r;
7818 12340 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
7819 12340 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 978, __FILE__, __LINE__, true);
7820 12340 : return _r;
7821 : }
7822 0 : next_after_fail1426:;
7823 : }
7824 : }
7825 : }
7826 : }
7827 67174233 : switch (TREE_CODE (_p1))
7828 : {
7829 7381493 : CASE_CONVERT:
7830 7381493 : {
7831 7381493 : tree _q30 = TREE_OPERAND (_p1, 0);
7832 7381493 : switch (TREE_CODE (_q30))
7833 : {
7834 0 : case LT_EXPR:
7835 0 : {
7836 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7837 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7838 0 : {
7839 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7840 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, LT_EXPR);
7841 0 : if (res) return res;
7842 : }
7843 0 : break;
7844 : }
7845 0 : case LE_EXPR:
7846 0 : {
7847 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7848 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7849 0 : {
7850 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7851 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, LE_EXPR);
7852 0 : if (res) return res;
7853 : }
7854 0 : break;
7855 : }
7856 0 : case EQ_EXPR:
7857 0 : {
7858 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7859 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7860 0 : {
7861 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7862 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, EQ_EXPR);
7863 0 : if (res) return res;
7864 : }
7865 0 : break;
7866 : }
7867 0 : case NE_EXPR:
7868 0 : {
7869 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7870 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7871 0 : {
7872 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7873 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, NE_EXPR);
7874 0 : if (res) return res;
7875 : }
7876 0 : break;
7877 : }
7878 0 : case GE_EXPR:
7879 0 : {
7880 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7881 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7882 0 : {
7883 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7884 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, GE_EXPR);
7885 0 : if (res) return res;
7886 : }
7887 0 : break;
7888 : }
7889 0 : case GT_EXPR:
7890 0 : {
7891 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7892 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7893 0 : {
7894 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7895 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, GT_EXPR);
7896 0 : if (res) return res;
7897 : }
7898 0 : break;
7899 : }
7900 0 : case UNORDERED_EXPR:
7901 0 : {
7902 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7903 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7904 0 : {
7905 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7906 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, UNORDERED_EXPR);
7907 0 : if (res) return res;
7908 : }
7909 0 : break;
7910 : }
7911 0 : case ORDERED_EXPR:
7912 0 : {
7913 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7914 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7915 0 : {
7916 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7917 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, ORDERED_EXPR);
7918 0 : if (res) return res;
7919 : }
7920 0 : break;
7921 : }
7922 0 : case UNLT_EXPR:
7923 0 : {
7924 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7925 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7926 0 : {
7927 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7928 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, UNLT_EXPR);
7929 0 : if (res) return res;
7930 : }
7931 0 : break;
7932 : }
7933 0 : case UNLE_EXPR:
7934 0 : {
7935 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7936 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7937 0 : {
7938 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7939 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, UNLE_EXPR);
7940 0 : if (res) return res;
7941 : }
7942 0 : break;
7943 : }
7944 0 : case UNGT_EXPR:
7945 0 : {
7946 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7947 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7948 0 : {
7949 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7950 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, UNGT_EXPR);
7951 0 : if (res) return res;
7952 : }
7953 0 : break;
7954 : }
7955 0 : case UNGE_EXPR:
7956 0 : {
7957 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7958 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7959 0 : {
7960 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7961 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, UNGE_EXPR);
7962 0 : if (res) return res;
7963 : }
7964 0 : break;
7965 : }
7966 0 : case UNEQ_EXPR:
7967 0 : {
7968 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7969 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7970 0 : {
7971 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7972 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, UNEQ_EXPR);
7973 0 : if (res) return res;
7974 : }
7975 0 : break;
7976 : }
7977 0 : case LTGT_EXPR:
7978 0 : {
7979 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7980 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7981 0 : {
7982 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7983 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, LTGT_EXPR);
7984 0 : if (res) return res;
7985 : }
7986 0 : break;
7987 : }
7988 : default:;
7989 : }
7990 : break;
7991 : }
7992 67174233 : default:;
7993 : }
7994 67174233 : switch (TREE_CODE (_p0))
7995 : {
7996 3 : case MIN_EXPR:
7997 3 : {
7998 3 : tree _q20 = TREE_OPERAND (_p0, 0);
7999 3 : tree _q21 = TREE_OPERAND (_p0, 1);
8000 3 : switch (TREE_CODE (_p1))
8001 : {
8002 0 : case MAX_EXPR:
8003 0 : {
8004 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8005 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8006 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8007 : {
8008 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8009 : {
8010 0 : {
8011 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8012 0 : if (!HONOR_NANS (captures[0])
8013 : )
8014 : {
8015 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1427;
8016 0 : {
8017 0 : tree res_op0;
8018 0 : res_op0 = captures[0];
8019 0 : tree res_op1;
8020 0 : res_op1 = captures[1];
8021 0 : tree _r;
8022 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
8023 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
8024 0 : return _r;
8025 : }
8026 0 : next_after_fail1427:;
8027 : }
8028 : }
8029 : }
8030 : }
8031 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8032 : {
8033 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8034 : {
8035 0 : {
8036 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
8037 0 : if (!HONOR_NANS (captures[0])
8038 : )
8039 : {
8040 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1428;
8041 0 : {
8042 0 : tree res_op0;
8043 0 : res_op0 = captures[0];
8044 0 : tree res_op1;
8045 0 : res_op1 = captures[1];
8046 0 : tree _r;
8047 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
8048 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
8049 0 : return _r;
8050 : }
8051 0 : next_after_fail1428:;
8052 : }
8053 : }
8054 : }
8055 : }
8056 : break;
8057 : }
8058 : default:;
8059 : }
8060 : break;
8061 : }
8062 146 : case MAX_EXPR:
8063 146 : {
8064 146 : tree _q20 = TREE_OPERAND (_p0, 0);
8065 146 : tree _q21 = TREE_OPERAND (_p0, 1);
8066 146 : switch (TREE_CODE (_p1))
8067 : {
8068 0 : case MIN_EXPR:
8069 0 : {
8070 0 : tree _q50 = TREE_OPERAND (_p1, 0);
8071 0 : tree _q51 = TREE_OPERAND (_p1, 1);
8072 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
8073 : {
8074 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
8075 : {
8076 0 : {
8077 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8078 0 : if (!HONOR_NANS (captures[0])
8079 : )
8080 : {
8081 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1429;
8082 0 : {
8083 0 : tree res_op0;
8084 0 : res_op0 = captures[0];
8085 0 : tree res_op1;
8086 0 : res_op1 = captures[1];
8087 0 : tree _r;
8088 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
8089 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
8090 0 : return _r;
8091 : }
8092 0 : next_after_fail1429:;
8093 : }
8094 : }
8095 : }
8096 : }
8097 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8098 : {
8099 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8100 : {
8101 0 : {
8102 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8103 0 : if (!HONOR_NANS (captures[0])
8104 : )
8105 : {
8106 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1430;
8107 0 : {
8108 0 : tree res_op0;
8109 0 : res_op0 = captures[0];
8110 0 : tree res_op1;
8111 0 : res_op1 = captures[1];
8112 0 : tree _r;
8113 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
8114 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 895, __FILE__, __LINE__, true);
8115 0 : return _r;
8116 : }
8117 0 : next_after_fail1430:;
8118 : }
8119 : }
8120 : }
8121 : }
8122 : break;
8123 : }
8124 : default:;
8125 : }
8126 : break;
8127 : }
8128 32206067 : CASE_CONVERT:
8129 32206067 : {
8130 32206067 : tree _q20 = TREE_OPERAND (_p0, 0);
8131 32206067 : switch (TREE_CODE (_q20))
8132 : {
8133 82 : case BIT_AND_EXPR:
8134 82 : {
8135 82 : tree _q30 = TREE_OPERAND (_q20, 0);
8136 82 : tree _q31 = TREE_OPERAND (_q20, 1);
8137 82 : switch (TREE_CODE (_q30))
8138 : {
8139 0 : CASE_CONVERT:
8140 0 : {
8141 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8142 0 : switch (TREE_CODE (_q40))
8143 : {
8144 0 : case RSHIFT_EXPR:
8145 0 : {
8146 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8147 0 : tree _q51 = TREE_OPERAND (_q40, 1);
8148 0 : switch (TREE_CODE (_q51))
8149 : {
8150 0 : case INTEGER_CST:
8151 0 : {
8152 0 : switch (TREE_CODE (_q31))
8153 : {
8154 0 : case INTEGER_CST:
8155 0 : {
8156 0 : switch (TREE_CODE (_p1))
8157 : {
8158 0 : case INTEGER_CST:
8159 0 : {
8160 0 : {
8161 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q50, _q51, _q31, _p1 };
8162 0 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures);
8163 0 : if (res) return res;
8164 : }
8165 0 : break;
8166 : }
8167 : default:;
8168 : }
8169 : break;
8170 : }
8171 : default:;
8172 : }
8173 : break;
8174 : }
8175 : default:;
8176 : }
8177 : break;
8178 : }
8179 : default:;
8180 : }
8181 : break;
8182 : }
8183 : default:;
8184 : }
8185 : break;
8186 : }
8187 31255 : case EXACT_DIV_EXPR:
8188 31255 : {
8189 31255 : tree _q30 = TREE_OPERAND (_q20, 0);
8190 31255 : tree _q31 = TREE_OPERAND (_q20, 1);
8191 31255 : switch (TREE_CODE (_p1))
8192 : {
8193 0 : CASE_CONVERT:
8194 0 : {
8195 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8196 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _q31, 0))
8197 : {
8198 0 : {
8199 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q31 };
8200 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures);
8201 0 : if (res) return res;
8202 : }
8203 : }
8204 : break;
8205 : }
8206 31255 : default:;
8207 : }
8208 31255 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q31, 0))
8209 : {
8210 21429 : {
8211 21429 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q31 };
8212 21429 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures);
8213 21429 : if (res) return res;
8214 : }
8215 : }
8216 9826 : switch (TREE_CODE (_q31))
8217 : {
8218 9826 : case INTEGER_CST:
8219 9826 : {
8220 9826 : if (poly_int_tree_p (_p1))
8221 : {
8222 9826 : {
8223 9826 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
8224 9826 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures);
8225 9826 : if (res) return res;
8226 : }
8227 : }
8228 : break;
8229 : }
8230 : default:;
8231 : }
8232 : break;
8233 : }
8234 1396263 : case PLUS_EXPR:
8235 1396263 : {
8236 1396263 : tree _q30 = TREE_OPERAND (_q20, 0);
8237 1396263 : tree _q31 = TREE_OPERAND (_q20, 1);
8238 1396263 : switch (TREE_CODE (_q30))
8239 : {
8240 175886 : CASE_CONVERT:
8241 175886 : {
8242 175886 : tree _q40 = TREE_OPERAND (_q30, 0);
8243 175886 : switch (TREE_CODE (_q40))
8244 : {
8245 0 : case EXACT_DIV_EXPR:
8246 0 : {
8247 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8248 0 : tree _q51 = TREE_OPERAND (_q40, 1);
8249 0 : switch (TREE_CODE (_q51))
8250 : {
8251 0 : case INTEGER_CST:
8252 0 : {
8253 0 : if (poly_int_tree_p (_q31))
8254 : {
8255 0 : if (poly_int_tree_p (_p1))
8256 : {
8257 0 : {
8258 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q50, _q51, _q31, _p1 };
8259 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8260 0 : if (res) return res;
8261 : }
8262 : }
8263 : }
8264 : break;
8265 : }
8266 : default:;
8267 : }
8268 : break;
8269 : }
8270 : default:;
8271 : }
8272 : break;
8273 : }
8274 112 : case EXACT_DIV_EXPR:
8275 112 : {
8276 112 : tree _q40 = TREE_OPERAND (_q30, 0);
8277 112 : tree _q41 = TREE_OPERAND (_q30, 1);
8278 112 : switch (TREE_CODE (_q41))
8279 : {
8280 112 : case INTEGER_CST:
8281 112 : {
8282 112 : if (poly_int_tree_p (_q31))
8283 : {
8284 112 : if (poly_int_tree_p (_p1))
8285 : {
8286 112 : {
8287 112 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q31, _p1 };
8288 112 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8289 112 : if (res) return res;
8290 : }
8291 : }
8292 : }
8293 : break;
8294 : }
8295 : default:;
8296 : }
8297 : break;
8298 : }
8299 : default:;
8300 : }
8301 : break;
8302 : }
8303 104301 : case MINUS_EXPR:
8304 104301 : {
8305 104301 : tree _q30 = TREE_OPERAND (_q20, 0);
8306 104301 : tree _q31 = TREE_OPERAND (_q20, 1);
8307 104301 : switch (TREE_CODE (_q30))
8308 : {
8309 26306 : CASE_CONVERT:
8310 26306 : {
8311 26306 : tree _q40 = TREE_OPERAND (_q30, 0);
8312 26306 : switch (TREE_CODE (_q40))
8313 : {
8314 0 : case EXACT_DIV_EXPR:
8315 0 : {
8316 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8317 0 : tree _q51 = TREE_OPERAND (_q40, 1);
8318 0 : switch (TREE_CODE (_q51))
8319 : {
8320 0 : case INTEGER_CST:
8321 0 : {
8322 0 : if (poly_int_tree_p (_q31))
8323 : {
8324 0 : if (poly_int_tree_p (_p1))
8325 : {
8326 0 : {
8327 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q50, _q51, _q31, _p1 };
8328 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8329 0 : if (res) return res;
8330 : }
8331 : }
8332 : }
8333 : break;
8334 : }
8335 : default:;
8336 : }
8337 : break;
8338 : }
8339 : default:;
8340 : }
8341 : break;
8342 : }
8343 0 : case EXACT_DIV_EXPR:
8344 0 : {
8345 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8346 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8347 0 : switch (TREE_CODE (_q41))
8348 : {
8349 0 : case INTEGER_CST:
8350 0 : {
8351 0 : if (poly_int_tree_p (_q31))
8352 : {
8353 0 : if (poly_int_tree_p (_p1))
8354 : {
8355 0 : {
8356 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q31, _p1 };
8357 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8358 0 : if (res) return res;
8359 : }
8360 : }
8361 : }
8362 : break;
8363 : }
8364 : default:;
8365 : }
8366 : break;
8367 : }
8368 : default:;
8369 : }
8370 : break;
8371 : }
8372 : default:;
8373 : }
8374 : break;
8375 : }
8376 61777 : case BIT_AND_EXPR:
8377 61777 : {
8378 61777 : tree _q20 = TREE_OPERAND (_p0, 0);
8379 61777 : tree _q21 = TREE_OPERAND (_p0, 1);
8380 61777 : switch (TREE_CODE (_q20))
8381 : {
8382 275 : case RSHIFT_EXPR:
8383 275 : {
8384 275 : tree _q30 = TREE_OPERAND (_q20, 0);
8385 275 : tree _q31 = TREE_OPERAND (_q20, 1);
8386 275 : switch (TREE_CODE (_q31))
8387 : {
8388 14 : case INTEGER_CST:
8389 14 : {
8390 14 : switch (TREE_CODE (_q21))
8391 : {
8392 14 : case INTEGER_CST:
8393 14 : {
8394 14 : switch (TREE_CODE (_p1))
8395 : {
8396 14 : case INTEGER_CST:
8397 14 : {
8398 14 : {
8399 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
8400 14 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures);
8401 14 : if (res) return res;
8402 : }
8403 8 : break;
8404 : }
8405 : default:;
8406 : }
8407 : break;
8408 : }
8409 : default:;
8410 : }
8411 : break;
8412 : }
8413 : default:;
8414 : }
8415 : break;
8416 : }
8417 : default:;
8418 : }
8419 : break;
8420 : }
8421 186139 : case EXACT_DIV_EXPR:
8422 186139 : {
8423 186139 : tree _q20 = TREE_OPERAND (_p0, 0);
8424 186139 : tree _q21 = TREE_OPERAND (_p0, 1);
8425 186139 : switch (TREE_CODE (_p1))
8426 : {
8427 108 : CASE_CONVERT:
8428 108 : {
8429 108 : tree _q50 = TREE_OPERAND (_p1, 0);
8430 108 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q21, 0))
8431 : {
8432 0 : {
8433 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q21 };
8434 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures);
8435 0 : if (res) return res;
8436 : }
8437 : }
8438 : break;
8439 : }
8440 186139 : default:;
8441 : }
8442 186139 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q21, 0))
8443 : {
8444 27049 : {
8445 27049 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q21 };
8446 27049 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures);
8447 27049 : if (res) return res;
8448 : }
8449 : }
8450 159090 : switch (TREE_CODE (_q21))
8451 : {
8452 159090 : case INTEGER_CST:
8453 159090 : {
8454 159090 : if (poly_int_tree_p (_p1))
8455 : {
8456 158982 : {
8457 158982 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8458 158982 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures);
8459 158982 : if (res) return res;
8460 : }
8461 : }
8462 : break;
8463 : }
8464 : default:;
8465 : }
8466 : break;
8467 : }
8468 7821908 : case PLUS_EXPR:
8469 7821908 : {
8470 7821908 : tree _q20 = TREE_OPERAND (_p0, 0);
8471 7821908 : tree _q21 = TREE_OPERAND (_p0, 1);
8472 7821908 : switch (TREE_CODE (_q20))
8473 : {
8474 3810880 : CASE_CONVERT:
8475 3810880 : {
8476 3810880 : tree _q30 = TREE_OPERAND (_q20, 0);
8477 3810880 : switch (TREE_CODE (_q30))
8478 : {
8479 5036 : case EXACT_DIV_EXPR:
8480 5036 : {
8481 5036 : tree _q40 = TREE_OPERAND (_q30, 0);
8482 5036 : tree _q41 = TREE_OPERAND (_q30, 1);
8483 5036 : switch (TREE_CODE (_q41))
8484 : {
8485 5036 : case INTEGER_CST:
8486 5036 : {
8487 5036 : if (poly_int_tree_p (_q21))
8488 : {
8489 5036 : if (poly_int_tree_p (_p1))
8490 : {
8491 5036 : {
8492 5036 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q21, _p1 };
8493 5036 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8494 5036 : if (res) return res;
8495 : }
8496 : }
8497 : }
8498 : break;
8499 : }
8500 : default:;
8501 : }
8502 : break;
8503 : }
8504 : default:;
8505 : }
8506 : break;
8507 : }
8508 0 : case EXACT_DIV_EXPR:
8509 0 : {
8510 0 : tree _q30 = TREE_OPERAND (_q20, 0);
8511 0 : tree _q31 = TREE_OPERAND (_q20, 1);
8512 0 : switch (TREE_CODE (_q31))
8513 : {
8514 0 : case INTEGER_CST:
8515 0 : {
8516 0 : if (poly_int_tree_p (_q21))
8517 : {
8518 0 : if (poly_int_tree_p (_p1))
8519 : {
8520 0 : {
8521 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
8522 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8523 0 : if (res) return res;
8524 : }
8525 : }
8526 : }
8527 : break;
8528 : }
8529 : default:;
8530 : }
8531 : break;
8532 : }
8533 : default:;
8534 : }
8535 : break;
8536 : }
8537 1156342 : case MINUS_EXPR:
8538 1156342 : {
8539 1156342 : tree _q20 = TREE_OPERAND (_p0, 0);
8540 1156342 : tree _q21 = TREE_OPERAND (_p0, 1);
8541 1156342 : switch (TREE_CODE (_q20))
8542 : {
8543 294496 : CASE_CONVERT:
8544 294496 : {
8545 294496 : tree _q30 = TREE_OPERAND (_q20, 0);
8546 294496 : switch (TREE_CODE (_q30))
8547 : {
8548 0 : case EXACT_DIV_EXPR:
8549 0 : {
8550 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8551 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8552 0 : switch (TREE_CODE (_q41))
8553 : {
8554 0 : case INTEGER_CST:
8555 0 : {
8556 0 : if (poly_int_tree_p (_q21))
8557 : {
8558 0 : if (poly_int_tree_p (_p1))
8559 : {
8560 0 : {
8561 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q21, _p1 };
8562 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8563 0 : if (res) return res;
8564 : }
8565 : }
8566 : }
8567 : break;
8568 : }
8569 : default:;
8570 : }
8571 : break;
8572 : }
8573 : default:;
8574 : }
8575 : break;
8576 : }
8577 0 : case EXACT_DIV_EXPR:
8578 0 : {
8579 0 : tree _q30 = TREE_OPERAND (_q20, 0);
8580 0 : tree _q31 = TREE_OPERAND (_q20, 1);
8581 0 : switch (TREE_CODE (_q31))
8582 : {
8583 0 : case INTEGER_CST:
8584 0 : {
8585 0 : if (poly_int_tree_p (_q21))
8586 : {
8587 0 : if (poly_int_tree_p (_p1))
8588 : {
8589 0 : {
8590 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
8591 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8592 0 : if (res) return res;
8593 : }
8594 : }
8595 : }
8596 : break;
8597 : }
8598 : default:;
8599 : }
8600 : break;
8601 : }
8602 : default:;
8603 : }
8604 : break;
8605 : }
8606 67067472 : default:;
8607 : }
8608 67067472 : if (integer_minus_onep (_p1))
8609 : {
8610 513220 : {
8611 513220 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8612 513220 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1431;
8613 513220 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1431;
8614 513220 : {
8615 513220 : tree res_op0;
8616 513220 : res_op0 = captures[0];
8617 513220 : tree _r;
8618 513220 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
8619 513220 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 979, __FILE__, __LINE__, true);
8620 513220 : return _r;
8621 : }
8622 : next_after_fail1431:;
8623 : }
8624 : }
8625 66554252 : switch (TREE_CODE (_p0))
8626 : {
8627 4713594 : case MULT_EXPR:
8628 4713594 : {
8629 4713594 : tree _q20 = TREE_OPERAND (_p0, 0);
8630 4713594 : tree _q21 = TREE_OPERAND (_p0, 1);
8631 4713594 : switch (TREE_CODE (_q21))
8632 : {
8633 158135 : case INTEGER_CST:
8634 158135 : {
8635 158135 : {
8636 158135 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
8637 158135 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures);
8638 158135 : if (res) return res;
8639 : }
8640 30 : break;
8641 : }
8642 : default:;
8643 : }
8644 : break;
8645 : }
8646 66396147 : default:;
8647 : }
8648 66396147 : switch (TREE_CODE (_p1))
8649 : {
8650 23560 : case MULT_EXPR:
8651 23560 : {
8652 23560 : tree _q30 = TREE_OPERAND (_p1, 0);
8653 23560 : tree _q31 = TREE_OPERAND (_p1, 1);
8654 23560 : switch (TREE_CODE (_q31))
8655 : {
8656 17192 : case INTEGER_CST:
8657 17192 : {
8658 17192 : {
8659 17192 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q31, _p0 };
8660 17192 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures);
8661 17192 : if (res) return res;
8662 : }
8663 0 : break;
8664 : }
8665 : default:;
8666 : }
8667 : break;
8668 : }
8669 66378955 : default:;
8670 : }
8671 66378955 : switch (TREE_CODE (_p0))
8672 : {
8673 36 : case VEC_COND_EXPR:
8674 36 : {
8675 36 : tree _q20 = TREE_OPERAND (_p0, 0);
8676 36 : tree _q21 = TREE_OPERAND (_p0, 1);
8677 36 : tree _q22 = TREE_OPERAND (_p0, 2);
8678 36 : switch (TREE_CODE (_p1))
8679 : {
8680 0 : case VEC_COND_EXPR:
8681 0 : {
8682 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8683 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8684 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8685 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
8686 : {
8687 0 : {
8688 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
8689 0 : if (VECTOR_TYPE_P (type)
8690 0 : && (TREE_CODE_CLASS (MULT_EXPR) != tcc_comparison
8691 : || types_match (type, TREE_TYPE (captures[2]))
8692 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8693 : || (optimize_vectors_before_lowering_p ()
8694 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8695 : )
8696 : {
8697 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1432;
8698 0 : {
8699 0 : tree res_op0;
8700 0 : res_op0 = captures[1];
8701 0 : tree res_op1;
8702 0 : {
8703 0 : tree _o1[2], _r1;
8704 0 : _o1[0] = captures[2];
8705 0 : _o1[1] = captures[5];
8706 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8707 0 : if (EXPR_P (_r1))
8708 0 : goto next_after_fail1432;
8709 0 : res_op1 = _r1;
8710 : }
8711 0 : tree res_op2;
8712 0 : {
8713 0 : tree _o1[2], _r1;
8714 0 : _o1[0] = captures[3];
8715 0 : _o1[1] = captures[6];
8716 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8717 0 : if (EXPR_P (_r1))
8718 0 : goto next_after_fail1432;
8719 0 : res_op2 = _r1;
8720 : }
8721 0 : tree _r;
8722 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8723 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 896, __FILE__, __LINE__, true);
8724 0 : return _r;
8725 : }
8726 0 : next_after_fail1432:;
8727 : }
8728 : }
8729 : }
8730 : break;
8731 : }
8732 36 : default:;
8733 : }
8734 36 : {
8735 36 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
8736 36 : if (VECTOR_TYPE_P (type)
8737 36 : && (TREE_CODE_CLASS (MULT_EXPR) != tcc_comparison
8738 : || types_match (type, TREE_TYPE (captures[2]))
8739 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8740 : || (optimize_vectors_before_lowering_p ()
8741 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8742 : )
8743 : {
8744 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1433;
8745 36 : {
8746 36 : if (! tree_invariant_p (captures[4])) goto next_after_fail1433;
8747 0 : tree res_op0;
8748 0 : res_op0 = captures[1];
8749 0 : tree res_op1;
8750 0 : {
8751 0 : tree _o1[2], _r1;
8752 0 : _o1[0] = captures[2];
8753 0 : _o1[1] = unshare_expr (captures[4]);
8754 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8755 0 : if (EXPR_P (_r1))
8756 0 : goto next_after_fail1433;
8757 0 : res_op1 = _r1;
8758 : }
8759 0 : tree res_op2;
8760 0 : {
8761 0 : tree _o1[2], _r1;
8762 0 : _o1[0] = captures[3];
8763 0 : _o1[1] = captures[4];
8764 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8765 0 : if (EXPR_P (_r1))
8766 0 : goto next_after_fail1433;
8767 0 : res_op2 = _r1;
8768 : }
8769 0 : tree _r;
8770 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8771 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 898, __FILE__, __LINE__, true);
8772 0 : return _r;
8773 : }
8774 36 : next_after_fail1433:;
8775 : }
8776 : }
8777 36 : break;
8778 : }
8779 66378955 : default:;
8780 : }
8781 66378955 : switch (TREE_CODE (_p1))
8782 : {
8783 0 : case VEC_COND_EXPR:
8784 0 : {
8785 0 : tree _q30 = TREE_OPERAND (_p1, 0);
8786 0 : tree _q31 = TREE_OPERAND (_p1, 1);
8787 0 : tree _q32 = TREE_OPERAND (_p1, 2);
8788 0 : {
8789 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8790 0 : if (VECTOR_TYPE_P (type)
8791 0 : && (TREE_CODE_CLASS (MULT_EXPR) != tcc_comparison
8792 : || types_match (type, TREE_TYPE (captures[3]))
8793 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8794 : || (optimize_vectors_before_lowering_p ()
8795 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8796 : )
8797 : {
8798 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1434;
8799 0 : {
8800 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1434;
8801 0 : tree res_op0;
8802 0 : res_op0 = captures[2];
8803 0 : tree res_op1;
8804 0 : {
8805 0 : tree _o1[2], _r1;
8806 0 : _o1[0] = unshare_expr (captures[0]);
8807 0 : _o1[1] = captures[3];
8808 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8809 0 : if (EXPR_P (_r1))
8810 0 : goto next_after_fail1434;
8811 0 : res_op1 = _r1;
8812 : }
8813 0 : tree res_op2;
8814 0 : {
8815 0 : tree _o1[2], _r1;
8816 0 : _o1[0] = captures[0];
8817 0 : _o1[1] = captures[4];
8818 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8819 0 : if (EXPR_P (_r1))
8820 0 : goto next_after_fail1434;
8821 0 : res_op2 = _r1;
8822 : }
8823 0 : tree _r;
8824 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8825 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
8826 0 : return _r;
8827 : }
8828 0 : next_after_fail1434:;
8829 : }
8830 : }
8831 0 : break;
8832 : }
8833 66378955 : default:;
8834 : }
8835 66378955 : switch (TREE_CODE (_p0))
8836 : {
8837 2384 : case REAL_CST:
8838 2384 : {
8839 2384 : switch (TREE_CODE (_p1))
8840 : {
8841 0 : case CALL_EXPR:
8842 0 : switch (get_call_combined_fn (_p1))
8843 : {
8844 0 : case CFN_BUILT_IN_LDEXPF:
8845 0 : if (call_expr_nargs (_p1) == 2)
8846 : {
8847 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
8848 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
8849 0 : {
8850 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
8851 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
8852 0 : if (res) return res;
8853 : }
8854 : }
8855 : break;
8856 0 : case CFN_BUILT_IN_LDEXPL:
8857 0 : if (call_expr_nargs (_p1) == 2)
8858 : {
8859 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
8860 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
8861 0 : {
8862 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
8863 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
8864 0 : if (res) return res;
8865 : }
8866 : }
8867 : break;
8868 0 : case CFN_LDEXP:
8869 0 : if (call_expr_nargs (_p1) == 2)
8870 : {
8871 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
8872 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
8873 0 : {
8874 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
8875 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_LDEXP);
8876 0 : if (res) return res;
8877 : }
8878 : }
8879 : break;
8880 0 : case CFN_BUILT_IN_LDEXP:
8881 0 : if (call_expr_nargs (_p1) == 2)
8882 : {
8883 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
8884 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
8885 0 : {
8886 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
8887 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
8888 0 : if (res) return res;
8889 : }
8890 : }
8891 : break;
8892 : default:;
8893 : }
8894 : break;
8895 : default:;
8896 : }
8897 : break;
8898 : }
8899 2416590 : case CALL_EXPR:
8900 2416590 : switch (get_call_combined_fn (_p0))
8901 : {
8902 55 : case CFN_BUILT_IN_SQRTF:
8903 55 : if (call_expr_nargs (_p0) == 1)
8904 : {
8905 55 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8906 55 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8907 : {
8908 0 : {
8909 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
8910 0 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF);
8911 0 : if (res) return res;
8912 : }
8913 : }
8914 55 : switch (TREE_CODE (_p1))
8915 : {
8916 13 : case CALL_EXPR:
8917 13 : switch (get_call_combined_fn (_p1))
8918 : {
8919 13 : case CFN_BUILT_IN_SQRTF:
8920 13 : if (call_expr_nargs (_p1) == 1)
8921 : {
8922 13 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8923 13 : {
8924 13 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8925 13 : if (flag_unsafe_math_optimizations
8926 : )
8927 : {
8928 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1435;
8929 13 : {
8930 13 : tree res_op0;
8931 13 : {
8932 13 : tree _o1[2], _r1;
8933 13 : _o1[0] = captures[1];
8934 13 : _o1[1] = captures[3];
8935 13 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8936 13 : res_op0 = _r1;
8937 : }
8938 13 : tree _r;
8939 13 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRTF, type, 1, res_op0);
8940 13 : if (!_r)
8941 0 : goto next_after_fail1435;
8942 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 980, __FILE__, __LINE__, true);
8943 13 : return _r;
8944 : }
8945 0 : next_after_fail1435:;
8946 : }
8947 : }
8948 : }
8949 : break;
8950 : default:;
8951 : }
8952 : break;
8953 : default:;
8954 : }
8955 : }
8956 : break;
8957 48 : case CFN_BUILT_IN_SQRTL:
8958 48 : if (call_expr_nargs (_p0) == 1)
8959 : {
8960 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8961 48 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8962 : {
8963 0 : {
8964 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
8965 0 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL);
8966 0 : if (res) return res;
8967 : }
8968 : }
8969 48 : switch (TREE_CODE (_p1))
8970 : {
8971 13 : case CALL_EXPR:
8972 13 : switch (get_call_combined_fn (_p1))
8973 : {
8974 13 : case CFN_BUILT_IN_SQRTL:
8975 13 : if (call_expr_nargs (_p1) == 1)
8976 : {
8977 13 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8978 13 : {
8979 13 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8980 13 : if (flag_unsafe_math_optimizations
8981 : )
8982 : {
8983 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1436;
8984 13 : {
8985 13 : tree res_op0;
8986 13 : {
8987 13 : tree _o1[2], _r1;
8988 13 : _o1[0] = captures[1];
8989 13 : _o1[1] = captures[3];
8990 13 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8991 13 : res_op0 = _r1;
8992 : }
8993 13 : tree _r;
8994 13 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRTL, type, 1, res_op0);
8995 13 : if (!_r)
8996 0 : goto next_after_fail1436;
8997 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 980, __FILE__, __LINE__, true);
8998 13 : return _r;
8999 : }
9000 0 : next_after_fail1436:;
9001 : }
9002 : }
9003 : }
9004 : break;
9005 : default:;
9006 : }
9007 : break;
9008 : default:;
9009 : }
9010 : }
9011 : break;
9012 287 : case CFN_BUILT_IN_EXP:
9013 287 : if (call_expr_nargs (_p0) == 1)
9014 : {
9015 287 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9016 287 : switch (TREE_CODE (_p1))
9017 : {
9018 81 : case CALL_EXPR:
9019 81 : switch (get_call_combined_fn (_p1))
9020 : {
9021 31 : case CFN_BUILT_IN_EXP:
9022 31 : if (call_expr_nargs (_p1) == 1)
9023 : {
9024 31 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9025 31 : {
9026 31 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9027 31 : if (flag_unsafe_math_optimizations
9028 : )
9029 : {
9030 27 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1437;
9031 27 : {
9032 27 : tree res_op0;
9033 27 : {
9034 27 : tree _o1[2], _r1;
9035 27 : _o1[0] = captures[1];
9036 27 : _o1[1] = captures[3];
9037 27 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9038 27 : res_op0 = _r1;
9039 : }
9040 27 : tree _r;
9041 27 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP, type, 1, res_op0);
9042 27 : if (!_r)
9043 0 : goto next_after_fail1437;
9044 27 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 981, __FILE__, __LINE__, true);
9045 27 : return _r;
9046 : }
9047 4 : next_after_fail1437:;
9048 : }
9049 : }
9050 : }
9051 : break;
9052 0 : case CFN_BUILT_IN_POW:
9053 0 : if (call_expr_nargs (_p1) == 2)
9054 : {
9055 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9056 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9057 0 : switch (TREE_CODE (_q40))
9058 : {
9059 0 : case REAL_CST:
9060 0 : {
9061 0 : {
9062 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9063 0 : if (flag_unsafe_math_optimizations
9064 : )
9065 : {
9066 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9067 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9068 : )
9069 : {
9070 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1438;
9071 0 : {
9072 0 : tree res_op0;
9073 0 : {
9074 0 : tree _o1[2], _r1;
9075 0 : {
9076 0 : tree _o2[2], _r2;
9077 0 : {
9078 0 : tree _o3[1], _r3;
9079 0 : _o3[0] = captures[1];
9080 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
9081 0 : if (!_r3)
9082 0 : goto next_after_fail1438;
9083 0 : _o2[0] = _r3;
9084 : }
9085 0 : _o2[1] = captures[2];
9086 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9087 0 : _o1[0] = _r2;
9088 : }
9089 0 : _o1[1] = captures[4];
9090 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9091 0 : res_op0 = _r1;
9092 : }
9093 0 : tree _r;
9094 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP, type, 1, res_op0);
9095 0 : if (!_r)
9096 0 : goto next_after_fail1438;
9097 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
9098 0 : return _r;
9099 : }
9100 0 : next_after_fail1438:;
9101 : }
9102 : }
9103 : }
9104 0 : break;
9105 : }
9106 : default:;
9107 : }
9108 : }
9109 : break;
9110 : default:;
9111 : }
9112 : break;
9113 : default:;
9114 : }
9115 : }
9116 : break;
9117 123 : case CFN_BUILT_IN_POW:
9118 123 : if (call_expr_nargs (_p0) == 2)
9119 : {
9120 123 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9121 123 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
9122 123 : switch (TREE_CODE (_q20))
9123 : {
9124 1 : case REAL_CST:
9125 1 : {
9126 1 : switch (TREE_CODE (_p1))
9127 : {
9128 1 : case CALL_EXPR:
9129 1 : switch (get_call_combined_fn (_p1))
9130 : {
9131 0 : case CFN_BUILT_IN_EXP:
9132 0 : if (call_expr_nargs (_p1) == 1)
9133 : {
9134 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9135 0 : {
9136 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9137 0 : if (flag_unsafe_math_optimizations
9138 : )
9139 : {
9140 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9141 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9142 : )
9143 : {
9144 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1439;
9145 0 : {
9146 0 : tree res_op0;
9147 0 : {
9148 0 : tree _o1[2], _r1;
9149 0 : {
9150 0 : tree _o2[2], _r2;
9151 0 : {
9152 0 : tree _o3[1], _r3;
9153 0 : _o3[0] = captures[1];
9154 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
9155 0 : if (!_r3)
9156 0 : goto next_after_fail1439;
9157 0 : _o2[0] = _r3;
9158 : }
9159 0 : _o2[1] = captures[2];
9160 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9161 0 : _o1[0] = _r2;
9162 : }
9163 0 : _o1[1] = captures[4];
9164 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9165 0 : res_op0 = _r1;
9166 : }
9167 0 : tree _r;
9168 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP, type, 1, res_op0);
9169 0 : if (!_r)
9170 0 : goto next_after_fail1439;
9171 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
9172 0 : return _r;
9173 : }
9174 0 : next_after_fail1439:;
9175 : }
9176 : }
9177 : }
9178 : }
9179 : break;
9180 0 : case CFN_BUILT_IN_EXP2:
9181 0 : if (call_expr_nargs (_p1) == 1)
9182 : {
9183 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9184 0 : {
9185 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9186 0 : if (flag_unsafe_math_optimizations
9187 : )
9188 : {
9189 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9190 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9191 : )
9192 : {
9193 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1440;
9194 0 : {
9195 0 : tree res_op0;
9196 0 : {
9197 0 : tree _o1[2], _r1;
9198 0 : {
9199 0 : tree _o2[2], _r2;
9200 0 : {
9201 0 : tree _o3[1], _r3;
9202 0 : _o3[0] = captures[1];
9203 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
9204 0 : if (!_r3)
9205 0 : goto next_after_fail1440;
9206 0 : _o2[0] = _r3;
9207 : }
9208 0 : _o2[1] = captures[2];
9209 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9210 0 : _o1[0] = _r2;
9211 : }
9212 0 : _o1[1] = captures[4];
9213 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9214 0 : res_op0 = _r1;
9215 : }
9216 0 : tree _r;
9217 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2, type, 1, res_op0);
9218 0 : if (!_r)
9219 0 : goto next_after_fail1440;
9220 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
9221 0 : return _r;
9222 : }
9223 0 : next_after_fail1440:;
9224 : }
9225 : }
9226 : }
9227 : }
9228 : break;
9229 0 : case CFN_BUILT_IN_EXP10:
9230 0 : if (call_expr_nargs (_p1) == 1)
9231 : {
9232 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9233 0 : {
9234 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9235 0 : if (flag_unsafe_math_optimizations
9236 : )
9237 : {
9238 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9239 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9240 : )
9241 : {
9242 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1441;
9243 0 : {
9244 0 : tree res_op0;
9245 0 : {
9246 0 : tree _o1[2], _r1;
9247 0 : {
9248 0 : tree _o2[2], _r2;
9249 0 : {
9250 0 : tree _o3[1], _r3;
9251 0 : _o3[0] = captures[1];
9252 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
9253 0 : if (!_r3)
9254 0 : goto next_after_fail1441;
9255 0 : _o2[0] = _r3;
9256 : }
9257 0 : _o2[1] = captures[2];
9258 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9259 0 : _o1[0] = _r2;
9260 : }
9261 0 : _o1[1] = captures[4];
9262 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9263 0 : res_op0 = _r1;
9264 : }
9265 0 : tree _r;
9266 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10, type, 1, res_op0);
9267 0 : if (!_r)
9268 0 : goto next_after_fail1441;
9269 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
9270 0 : return _r;
9271 : }
9272 0 : next_after_fail1441:;
9273 : }
9274 : }
9275 : }
9276 : }
9277 : break;
9278 0 : case CFN_BUILT_IN_POW10:
9279 0 : if (call_expr_nargs (_p1) == 1)
9280 : {
9281 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9282 0 : {
9283 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9284 0 : if (flag_unsafe_math_optimizations
9285 : )
9286 : {
9287 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9288 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9289 : )
9290 : {
9291 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1442;
9292 0 : {
9293 0 : tree res_op0;
9294 0 : {
9295 0 : tree _o1[2], _r1;
9296 0 : {
9297 0 : tree _o2[2], _r2;
9298 0 : {
9299 0 : tree _o3[1], _r3;
9300 0 : _o3[0] = captures[1];
9301 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
9302 0 : if (!_r3)
9303 0 : goto next_after_fail1442;
9304 0 : _o2[0] = _r3;
9305 : }
9306 0 : _o2[1] = captures[2];
9307 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9308 0 : _o1[0] = _r2;
9309 : }
9310 0 : _o1[1] = captures[4];
9311 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9312 0 : res_op0 = _r1;
9313 : }
9314 0 : tree _r;
9315 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10, type, 1, res_op0);
9316 0 : if (!_r)
9317 0 : goto next_after_fail1442;
9318 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
9319 0 : return _r;
9320 : }
9321 0 : next_after_fail1442:;
9322 : }
9323 : }
9324 : }
9325 : }
9326 : break;
9327 : default:;
9328 : }
9329 : break;
9330 : default:;
9331 : }
9332 : break;
9333 : }
9334 123 : default:;
9335 : }
9336 123 : switch (TREE_CODE (_q21))
9337 : {
9338 12 : case REAL_CST:
9339 12 : {
9340 12 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9341 : {
9342 8 : {
9343 8 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
9344 8 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
9345 8 : if (res) return res;
9346 : }
9347 : }
9348 : break;
9349 : }
9350 : default:;
9351 : }
9352 : }
9353 : break;
9354 48 : case CFN_BUILT_IN_EXP10F:
9355 48 : if (call_expr_nargs (_p0) == 1)
9356 : {
9357 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9358 48 : switch (TREE_CODE (_p1))
9359 : {
9360 24 : case CALL_EXPR:
9361 24 : switch (get_call_combined_fn (_p1))
9362 : {
9363 24 : case CFN_BUILT_IN_EXP10F:
9364 24 : if (call_expr_nargs (_p1) == 1)
9365 : {
9366 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9367 24 : {
9368 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9369 24 : if (flag_unsafe_math_optimizations
9370 : )
9371 : {
9372 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1443;
9373 24 : {
9374 24 : tree res_op0;
9375 24 : {
9376 24 : tree _o1[2], _r1;
9377 24 : _o1[0] = captures[1];
9378 24 : _o1[1] = captures[3];
9379 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9380 24 : res_op0 = _r1;
9381 : }
9382 24 : tree _r;
9383 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10F, type, 1, res_op0);
9384 24 : if (!_r)
9385 0 : goto next_after_fail1443;
9386 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 981, __FILE__, __LINE__, true);
9387 24 : return _r;
9388 : }
9389 0 : next_after_fail1443:;
9390 : }
9391 : }
9392 : }
9393 : break;
9394 0 : case CFN_BUILT_IN_POWF:
9395 0 : if (call_expr_nargs (_p1) == 2)
9396 : {
9397 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9398 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9399 0 : switch (TREE_CODE (_q40))
9400 : {
9401 0 : case REAL_CST:
9402 0 : {
9403 0 : {
9404 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9405 0 : if (flag_unsafe_math_optimizations
9406 : )
9407 : {
9408 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9409 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9410 : )
9411 : {
9412 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1444;
9413 0 : {
9414 0 : tree res_op0;
9415 0 : {
9416 0 : tree _o1[2], _r1;
9417 0 : {
9418 0 : tree _o2[2], _r2;
9419 0 : {
9420 0 : tree _o3[1], _r3;
9421 0 : _o3[0] = captures[1];
9422 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
9423 0 : if (!_r3)
9424 0 : goto next_after_fail1444;
9425 0 : _o2[0] = _r3;
9426 : }
9427 0 : _o2[1] = captures[2];
9428 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9429 0 : _o1[0] = _r2;
9430 : }
9431 0 : _o1[1] = captures[4];
9432 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9433 0 : res_op0 = _r1;
9434 : }
9435 0 : tree _r;
9436 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10F, type, 1, res_op0);
9437 0 : if (!_r)
9438 0 : goto next_after_fail1444;
9439 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
9440 0 : return _r;
9441 : }
9442 0 : next_after_fail1444:;
9443 : }
9444 : }
9445 : }
9446 0 : break;
9447 : }
9448 : default:;
9449 : }
9450 : }
9451 : break;
9452 : default:;
9453 : }
9454 : break;
9455 : default:;
9456 : }
9457 : }
9458 : break;
9459 48 : case CFN_BUILT_IN_EXP10L:
9460 48 : if (call_expr_nargs (_p0) == 1)
9461 : {
9462 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9463 48 : switch (TREE_CODE (_p1))
9464 : {
9465 24 : case CALL_EXPR:
9466 24 : switch (get_call_combined_fn (_p1))
9467 : {
9468 24 : case CFN_BUILT_IN_EXP10L:
9469 24 : if (call_expr_nargs (_p1) == 1)
9470 : {
9471 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9472 24 : {
9473 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9474 24 : if (flag_unsafe_math_optimizations
9475 : )
9476 : {
9477 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1445;
9478 24 : {
9479 24 : tree res_op0;
9480 24 : {
9481 24 : tree _o1[2], _r1;
9482 24 : _o1[0] = captures[1];
9483 24 : _o1[1] = captures[3];
9484 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9485 24 : res_op0 = _r1;
9486 : }
9487 24 : tree _r;
9488 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10L, type, 1, res_op0);
9489 24 : if (!_r)
9490 0 : goto next_after_fail1445;
9491 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 981, __FILE__, __LINE__, true);
9492 24 : return _r;
9493 : }
9494 0 : next_after_fail1445:;
9495 : }
9496 : }
9497 : }
9498 : break;
9499 0 : case CFN_BUILT_IN_POWL:
9500 0 : if (call_expr_nargs (_p1) == 2)
9501 : {
9502 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9503 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9504 0 : switch (TREE_CODE (_q40))
9505 : {
9506 0 : case REAL_CST:
9507 0 : {
9508 0 : {
9509 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9510 0 : if (flag_unsafe_math_optimizations
9511 : )
9512 : {
9513 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9514 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9515 : )
9516 : {
9517 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1446;
9518 0 : {
9519 0 : tree res_op0;
9520 0 : {
9521 0 : tree _o1[2], _r1;
9522 0 : {
9523 0 : tree _o2[2], _r2;
9524 0 : {
9525 0 : tree _o3[1], _r3;
9526 0 : _o3[0] = captures[1];
9527 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
9528 0 : if (!_r3)
9529 0 : goto next_after_fail1446;
9530 0 : _o2[0] = _r3;
9531 : }
9532 0 : _o2[1] = captures[2];
9533 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9534 0 : _o1[0] = _r2;
9535 : }
9536 0 : _o1[1] = captures[4];
9537 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9538 0 : res_op0 = _r1;
9539 : }
9540 0 : tree _r;
9541 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10L, type, 1, res_op0);
9542 0 : if (!_r)
9543 0 : goto next_after_fail1446;
9544 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
9545 0 : return _r;
9546 : }
9547 0 : next_after_fail1446:;
9548 : }
9549 : }
9550 : }
9551 0 : break;
9552 : }
9553 : default:;
9554 : }
9555 : }
9556 : break;
9557 : default:;
9558 : }
9559 : break;
9560 : default:;
9561 : }
9562 : }
9563 : break;
9564 18 : case CFN_BUILT_IN_CBRT:
9565 18 : if (call_expr_nargs (_p0) == 1)
9566 : {
9567 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9568 18 : switch (TREE_CODE (_p1))
9569 : {
9570 14 : case CALL_EXPR:
9571 14 : switch (get_call_combined_fn (_p1))
9572 : {
9573 14 : case CFN_BUILT_IN_CBRT:
9574 14 : if (call_expr_nargs (_p1) == 1)
9575 : {
9576 14 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9577 14 : {
9578 14 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9579 14 : if (flag_unsafe_math_optimizations
9580 : )
9581 : {
9582 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1447;
9583 12 : {
9584 12 : tree res_op0;
9585 12 : {
9586 12 : tree _o1[2], _r1;
9587 12 : _o1[0] = captures[1];
9588 12 : _o1[1] = captures[3];
9589 12 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9590 12 : res_op0 = _r1;
9591 : }
9592 12 : tree _r;
9593 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRT, type, 1, res_op0);
9594 12 : if (!_r)
9595 0 : goto next_after_fail1447;
9596 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 980, __FILE__, __LINE__, true);
9597 12 : return _r;
9598 : }
9599 2 : next_after_fail1447:;
9600 : }
9601 : }
9602 : }
9603 : break;
9604 : default:;
9605 : }
9606 : break;
9607 : default:;
9608 : }
9609 : }
9610 : break;
9611 48 : case CFN_BUILT_IN_EXP2:
9612 48 : if (call_expr_nargs (_p0) == 1)
9613 : {
9614 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9615 48 : switch (TREE_CODE (_p1))
9616 : {
9617 24 : case CALL_EXPR:
9618 24 : switch (get_call_combined_fn (_p1))
9619 : {
9620 0 : case CFN_BUILT_IN_POW:
9621 0 : if (call_expr_nargs (_p1) == 2)
9622 : {
9623 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9624 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9625 0 : switch (TREE_CODE (_q40))
9626 : {
9627 0 : case REAL_CST:
9628 0 : {
9629 0 : {
9630 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9631 0 : if (flag_unsafe_math_optimizations
9632 : )
9633 : {
9634 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9635 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9636 : )
9637 : {
9638 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1448;
9639 0 : {
9640 0 : tree res_op0;
9641 0 : {
9642 0 : tree _o1[2], _r1;
9643 0 : {
9644 0 : tree _o2[2], _r2;
9645 0 : {
9646 0 : tree _o3[1], _r3;
9647 0 : _o3[0] = captures[1];
9648 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
9649 0 : if (!_r3)
9650 0 : goto next_after_fail1448;
9651 0 : _o2[0] = _r3;
9652 : }
9653 0 : _o2[1] = captures[2];
9654 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9655 0 : _o1[0] = _r2;
9656 : }
9657 0 : _o1[1] = captures[4];
9658 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9659 0 : res_op0 = _r1;
9660 : }
9661 0 : tree _r;
9662 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2, type, 1, res_op0);
9663 0 : if (!_r)
9664 0 : goto next_after_fail1448;
9665 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
9666 0 : return _r;
9667 : }
9668 0 : next_after_fail1448:;
9669 : }
9670 : }
9671 : }
9672 0 : break;
9673 : }
9674 : default:;
9675 : }
9676 : }
9677 : break;
9678 24 : case CFN_BUILT_IN_EXP2:
9679 24 : if (call_expr_nargs (_p1) == 1)
9680 : {
9681 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9682 24 : {
9683 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9684 24 : if (flag_unsafe_math_optimizations
9685 : )
9686 : {
9687 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1449;
9688 24 : {
9689 24 : tree res_op0;
9690 24 : {
9691 24 : tree _o1[2], _r1;
9692 24 : _o1[0] = captures[1];
9693 24 : _o1[1] = captures[3];
9694 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9695 24 : res_op0 = _r1;
9696 : }
9697 24 : tree _r;
9698 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2, type, 1, res_op0);
9699 24 : if (!_r)
9700 0 : goto next_after_fail1449;
9701 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 981, __FILE__, __LINE__, true);
9702 24 : return _r;
9703 : }
9704 0 : next_after_fail1449:;
9705 : }
9706 : }
9707 : }
9708 : break;
9709 : default:;
9710 : }
9711 : break;
9712 : default:;
9713 : }
9714 : }
9715 : break;
9716 66 : case CFN_BUILT_IN_EXPF:
9717 66 : if (call_expr_nargs (_p0) == 1)
9718 : {
9719 66 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9720 66 : switch (TREE_CODE (_p1))
9721 : {
9722 36 : case CALL_EXPR:
9723 36 : switch (get_call_combined_fn (_p1))
9724 : {
9725 29 : case CFN_BUILT_IN_EXPF:
9726 29 : if (call_expr_nargs (_p1) == 1)
9727 : {
9728 29 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9729 29 : {
9730 29 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9731 29 : if (flag_unsafe_math_optimizations
9732 : )
9733 : {
9734 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1450;
9735 25 : {
9736 25 : tree res_op0;
9737 25 : {
9738 25 : tree _o1[2], _r1;
9739 25 : _o1[0] = captures[1];
9740 25 : _o1[1] = captures[3];
9741 25 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9742 25 : res_op0 = _r1;
9743 : }
9744 25 : tree _r;
9745 25 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPF, type, 1, res_op0);
9746 25 : if (!_r)
9747 0 : goto next_after_fail1450;
9748 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 981, __FILE__, __LINE__, true);
9749 25 : return _r;
9750 : }
9751 4 : next_after_fail1450:;
9752 : }
9753 : }
9754 : }
9755 : break;
9756 0 : case CFN_BUILT_IN_POWF:
9757 0 : if (call_expr_nargs (_p1) == 2)
9758 : {
9759 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9760 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9761 0 : switch (TREE_CODE (_q40))
9762 : {
9763 0 : case REAL_CST:
9764 0 : {
9765 0 : {
9766 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9767 0 : if (flag_unsafe_math_optimizations
9768 : )
9769 : {
9770 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9771 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9772 : )
9773 : {
9774 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1451;
9775 0 : {
9776 0 : tree res_op0;
9777 0 : {
9778 0 : tree _o1[2], _r1;
9779 0 : {
9780 0 : tree _o2[2], _r2;
9781 0 : {
9782 0 : tree _o3[1], _r3;
9783 0 : _o3[0] = captures[1];
9784 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGF, TREE_TYPE (_o3[0]), 1, _o3[0]);
9785 0 : if (!_r3)
9786 0 : goto next_after_fail1451;
9787 0 : _o2[0] = _r3;
9788 : }
9789 0 : _o2[1] = captures[2];
9790 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9791 0 : _o1[0] = _r2;
9792 : }
9793 0 : _o1[1] = captures[4];
9794 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9795 0 : res_op0 = _r1;
9796 : }
9797 0 : tree _r;
9798 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPF, type, 1, res_op0);
9799 0 : if (!_r)
9800 0 : goto next_after_fail1451;
9801 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
9802 0 : return _r;
9803 : }
9804 0 : next_after_fail1451:;
9805 : }
9806 : }
9807 : }
9808 0 : break;
9809 : }
9810 : default:;
9811 : }
9812 : }
9813 : break;
9814 : default:;
9815 : }
9816 : break;
9817 : default:;
9818 : }
9819 : }
9820 : break;
9821 59 : case CFN_BUILT_IN_EXPL:
9822 59 : if (call_expr_nargs (_p0) == 1)
9823 : {
9824 59 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9825 59 : switch (TREE_CODE (_p1))
9826 : {
9827 29 : case CALL_EXPR:
9828 29 : switch (get_call_combined_fn (_p1))
9829 : {
9830 29 : case CFN_BUILT_IN_EXPL:
9831 29 : if (call_expr_nargs (_p1) == 1)
9832 : {
9833 29 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9834 29 : {
9835 29 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9836 29 : if (flag_unsafe_math_optimizations
9837 : )
9838 : {
9839 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1452;
9840 25 : {
9841 25 : tree res_op0;
9842 25 : {
9843 25 : tree _o1[2], _r1;
9844 25 : _o1[0] = captures[1];
9845 25 : _o1[1] = captures[3];
9846 25 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9847 25 : res_op0 = _r1;
9848 : }
9849 25 : tree _r;
9850 25 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPL, type, 1, res_op0);
9851 25 : if (!_r)
9852 0 : goto next_after_fail1452;
9853 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 981, __FILE__, __LINE__, true);
9854 25 : return _r;
9855 : }
9856 4 : next_after_fail1452:;
9857 : }
9858 : }
9859 : }
9860 : break;
9861 0 : case CFN_BUILT_IN_POWL:
9862 0 : if (call_expr_nargs (_p1) == 2)
9863 : {
9864 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9865 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9866 0 : switch (TREE_CODE (_q40))
9867 : {
9868 0 : case REAL_CST:
9869 0 : {
9870 0 : {
9871 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9872 0 : if (flag_unsafe_math_optimizations
9873 : )
9874 : {
9875 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9876 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9877 : )
9878 : {
9879 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1453;
9880 0 : {
9881 0 : tree res_op0;
9882 0 : {
9883 0 : tree _o1[2], _r1;
9884 0 : {
9885 0 : tree _o2[2], _r2;
9886 0 : {
9887 0 : tree _o3[1], _r3;
9888 0 : _o3[0] = captures[1];
9889 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGL, TREE_TYPE (_o3[0]), 1, _o3[0]);
9890 0 : if (!_r3)
9891 0 : goto next_after_fail1453;
9892 0 : _o2[0] = _r3;
9893 : }
9894 0 : _o2[1] = captures[2];
9895 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9896 0 : _o1[0] = _r2;
9897 : }
9898 0 : _o1[1] = captures[4];
9899 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9900 0 : res_op0 = _r1;
9901 : }
9902 0 : tree _r;
9903 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPL, type, 1, res_op0);
9904 0 : if (!_r)
9905 0 : goto next_after_fail1453;
9906 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
9907 0 : return _r;
9908 : }
9909 0 : next_after_fail1453:;
9910 : }
9911 : }
9912 : }
9913 0 : break;
9914 : }
9915 : default:;
9916 : }
9917 : }
9918 : break;
9919 : default:;
9920 : }
9921 : break;
9922 : default:;
9923 : }
9924 : }
9925 : break;
9926 19 : case CFN_BUILT_IN_POWF:
9927 19 : if (call_expr_nargs (_p0) == 2)
9928 : {
9929 19 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9930 19 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
9931 19 : switch (TREE_CODE (_q20))
9932 : {
9933 0 : case REAL_CST:
9934 0 : {
9935 0 : switch (TREE_CODE (_p1))
9936 : {
9937 0 : case CALL_EXPR:
9938 0 : switch (get_call_combined_fn (_p1))
9939 : {
9940 0 : case CFN_BUILT_IN_EXP10F:
9941 0 : if (call_expr_nargs (_p1) == 1)
9942 : {
9943 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9944 0 : {
9945 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9946 0 : if (flag_unsafe_math_optimizations
9947 : )
9948 : {
9949 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9950 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9951 : )
9952 : {
9953 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1454;
9954 0 : {
9955 0 : tree res_op0;
9956 0 : {
9957 0 : tree _o1[2], _r1;
9958 0 : {
9959 0 : tree _o2[2], _r2;
9960 0 : {
9961 0 : tree _o3[1], _r3;
9962 0 : _o3[0] = captures[1];
9963 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
9964 0 : if (!_r3)
9965 0 : goto next_after_fail1454;
9966 0 : _o2[0] = _r3;
9967 : }
9968 0 : _o2[1] = captures[2];
9969 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9970 0 : _o1[0] = _r2;
9971 : }
9972 0 : _o1[1] = captures[4];
9973 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9974 0 : res_op0 = _r1;
9975 : }
9976 0 : tree _r;
9977 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10F, type, 1, res_op0);
9978 0 : if (!_r)
9979 0 : goto next_after_fail1454;
9980 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
9981 0 : return _r;
9982 : }
9983 0 : next_after_fail1454:;
9984 : }
9985 : }
9986 : }
9987 : }
9988 : break;
9989 0 : case CFN_BUILT_IN_EXPF:
9990 0 : if (call_expr_nargs (_p1) == 1)
9991 : {
9992 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9993 0 : {
9994 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9995 0 : if (flag_unsafe_math_optimizations
9996 : )
9997 : {
9998 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9999 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10000 : )
10001 : {
10002 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1455;
10003 0 : {
10004 0 : tree res_op0;
10005 0 : {
10006 0 : tree _o1[2], _r1;
10007 0 : {
10008 0 : tree _o2[2], _r2;
10009 0 : {
10010 0 : tree _o3[1], _r3;
10011 0 : _o3[0] = captures[1];
10012 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGF, TREE_TYPE (_o3[0]), 1, _o3[0]);
10013 0 : if (!_r3)
10014 0 : goto next_after_fail1455;
10015 0 : _o2[0] = _r3;
10016 : }
10017 0 : _o2[1] = captures[2];
10018 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10019 0 : _o1[0] = _r2;
10020 : }
10021 0 : _o1[1] = captures[4];
10022 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10023 0 : res_op0 = _r1;
10024 : }
10025 0 : tree _r;
10026 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPF, type, 1, res_op0);
10027 0 : if (!_r)
10028 0 : goto next_after_fail1455;
10029 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
10030 0 : return _r;
10031 : }
10032 0 : next_after_fail1455:;
10033 : }
10034 : }
10035 : }
10036 : }
10037 : break;
10038 0 : case CFN_BUILT_IN_POW10F:
10039 0 : if (call_expr_nargs (_p1) == 1)
10040 : {
10041 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10042 0 : {
10043 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10044 0 : if (flag_unsafe_math_optimizations
10045 : )
10046 : {
10047 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10048 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10049 : )
10050 : {
10051 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1456;
10052 0 : {
10053 0 : tree res_op0;
10054 0 : {
10055 0 : tree _o1[2], _r1;
10056 0 : {
10057 0 : tree _o2[2], _r2;
10058 0 : {
10059 0 : tree _o3[1], _r3;
10060 0 : _o3[0] = captures[1];
10061 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
10062 0 : if (!_r3)
10063 0 : goto next_after_fail1456;
10064 0 : _o2[0] = _r3;
10065 : }
10066 0 : _o2[1] = captures[2];
10067 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10068 0 : _o1[0] = _r2;
10069 : }
10070 0 : _o1[1] = captures[4];
10071 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10072 0 : res_op0 = _r1;
10073 : }
10074 0 : tree _r;
10075 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10F, type, 1, res_op0);
10076 0 : if (!_r)
10077 0 : goto next_after_fail1456;
10078 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
10079 0 : return _r;
10080 : }
10081 0 : next_after_fail1456:;
10082 : }
10083 : }
10084 : }
10085 : }
10086 : break;
10087 0 : case CFN_BUILT_IN_EXP2F:
10088 0 : if (call_expr_nargs (_p1) == 1)
10089 : {
10090 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10091 0 : {
10092 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10093 0 : if (flag_unsafe_math_optimizations
10094 : )
10095 : {
10096 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10097 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10098 : )
10099 : {
10100 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1457;
10101 0 : {
10102 0 : tree res_op0;
10103 0 : {
10104 0 : tree _o1[2], _r1;
10105 0 : {
10106 0 : tree _o2[2], _r2;
10107 0 : {
10108 0 : tree _o3[1], _r3;
10109 0 : _o3[0] = captures[1];
10110 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2F, TREE_TYPE (_o3[0]), 1, _o3[0]);
10111 0 : if (!_r3)
10112 0 : goto next_after_fail1457;
10113 0 : _o2[0] = _r3;
10114 : }
10115 0 : _o2[1] = captures[2];
10116 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10117 0 : _o1[0] = _r2;
10118 : }
10119 0 : _o1[1] = captures[4];
10120 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10121 0 : res_op0 = _r1;
10122 : }
10123 0 : tree _r;
10124 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2F, type, 1, res_op0);
10125 0 : if (!_r)
10126 0 : goto next_after_fail1457;
10127 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
10128 0 : return _r;
10129 : }
10130 0 : next_after_fail1457:;
10131 : }
10132 : }
10133 : }
10134 : }
10135 : break;
10136 : default:;
10137 : }
10138 : break;
10139 : default:;
10140 : }
10141 : break;
10142 : }
10143 19 : default:;
10144 : }
10145 19 : switch (TREE_CODE (_q21))
10146 : {
10147 5 : case REAL_CST:
10148 5 : {
10149 5 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10150 : {
10151 0 : {
10152 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
10153 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
10154 0 : if (res) return res;
10155 : }
10156 : }
10157 : break;
10158 : }
10159 : default:;
10160 : }
10161 : }
10162 : break;
10163 12 : case CFN_BUILT_IN_POWL:
10164 12 : if (call_expr_nargs (_p0) == 2)
10165 : {
10166 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10167 12 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10168 12 : switch (TREE_CODE (_q20))
10169 : {
10170 0 : case REAL_CST:
10171 0 : {
10172 0 : switch (TREE_CODE (_p1))
10173 : {
10174 0 : case CALL_EXPR:
10175 0 : switch (get_call_combined_fn (_p1))
10176 : {
10177 0 : case CFN_BUILT_IN_EXP10L:
10178 0 : if (call_expr_nargs (_p1) == 1)
10179 : {
10180 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10181 0 : {
10182 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10183 0 : if (flag_unsafe_math_optimizations
10184 : )
10185 : {
10186 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10187 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10188 : )
10189 : {
10190 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1458;
10191 0 : {
10192 0 : tree res_op0;
10193 0 : {
10194 0 : tree _o1[2], _r1;
10195 0 : {
10196 0 : tree _o2[2], _r2;
10197 0 : {
10198 0 : tree _o3[1], _r3;
10199 0 : _o3[0] = captures[1];
10200 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
10201 0 : if (!_r3)
10202 0 : goto next_after_fail1458;
10203 0 : _o2[0] = _r3;
10204 : }
10205 0 : _o2[1] = captures[2];
10206 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10207 0 : _o1[0] = _r2;
10208 : }
10209 0 : _o1[1] = captures[4];
10210 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10211 0 : res_op0 = _r1;
10212 : }
10213 0 : tree _r;
10214 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10L, type, 1, res_op0);
10215 0 : if (!_r)
10216 0 : goto next_after_fail1458;
10217 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
10218 0 : return _r;
10219 : }
10220 0 : next_after_fail1458:;
10221 : }
10222 : }
10223 : }
10224 : }
10225 : break;
10226 0 : case CFN_BUILT_IN_EXPL:
10227 0 : if (call_expr_nargs (_p1) == 1)
10228 : {
10229 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10230 0 : {
10231 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10232 0 : if (flag_unsafe_math_optimizations
10233 : )
10234 : {
10235 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10236 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10237 : )
10238 : {
10239 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1459;
10240 0 : {
10241 0 : tree res_op0;
10242 0 : {
10243 0 : tree _o1[2], _r1;
10244 0 : {
10245 0 : tree _o2[2], _r2;
10246 0 : {
10247 0 : tree _o3[1], _r3;
10248 0 : _o3[0] = captures[1];
10249 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGL, TREE_TYPE (_o3[0]), 1, _o3[0]);
10250 0 : if (!_r3)
10251 0 : goto next_after_fail1459;
10252 0 : _o2[0] = _r3;
10253 : }
10254 0 : _o2[1] = captures[2];
10255 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10256 0 : _o1[0] = _r2;
10257 : }
10258 0 : _o1[1] = captures[4];
10259 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10260 0 : res_op0 = _r1;
10261 : }
10262 0 : tree _r;
10263 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPL, type, 1, res_op0);
10264 0 : if (!_r)
10265 0 : goto next_after_fail1459;
10266 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
10267 0 : return _r;
10268 : }
10269 0 : next_after_fail1459:;
10270 : }
10271 : }
10272 : }
10273 : }
10274 : break;
10275 0 : case CFN_BUILT_IN_POW10L:
10276 0 : if (call_expr_nargs (_p1) == 1)
10277 : {
10278 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10279 0 : {
10280 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10281 0 : if (flag_unsafe_math_optimizations
10282 : )
10283 : {
10284 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10285 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10286 : )
10287 : {
10288 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1460;
10289 0 : {
10290 0 : tree res_op0;
10291 0 : {
10292 0 : tree _o1[2], _r1;
10293 0 : {
10294 0 : tree _o2[2], _r2;
10295 0 : {
10296 0 : tree _o3[1], _r3;
10297 0 : _o3[0] = captures[1];
10298 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
10299 0 : if (!_r3)
10300 0 : goto next_after_fail1460;
10301 0 : _o2[0] = _r3;
10302 : }
10303 0 : _o2[1] = captures[2];
10304 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10305 0 : _o1[0] = _r2;
10306 : }
10307 0 : _o1[1] = captures[4];
10308 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10309 0 : res_op0 = _r1;
10310 : }
10311 0 : tree _r;
10312 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10L, type, 1, res_op0);
10313 0 : if (!_r)
10314 0 : goto next_after_fail1460;
10315 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
10316 0 : return _r;
10317 : }
10318 0 : next_after_fail1460:;
10319 : }
10320 : }
10321 : }
10322 : }
10323 : break;
10324 0 : case CFN_BUILT_IN_EXP2L:
10325 0 : if (call_expr_nargs (_p1) == 1)
10326 : {
10327 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10328 0 : {
10329 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10330 0 : if (flag_unsafe_math_optimizations
10331 : )
10332 : {
10333 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10334 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10335 : )
10336 : {
10337 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1461;
10338 0 : {
10339 0 : tree res_op0;
10340 0 : {
10341 0 : tree _o1[2], _r1;
10342 0 : {
10343 0 : tree _o2[2], _r2;
10344 0 : {
10345 0 : tree _o3[1], _r3;
10346 0 : _o3[0] = captures[1];
10347 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2L, TREE_TYPE (_o3[0]), 1, _o3[0]);
10348 0 : if (!_r3)
10349 0 : goto next_after_fail1461;
10350 0 : _o2[0] = _r3;
10351 : }
10352 0 : _o2[1] = captures[2];
10353 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10354 0 : _o1[0] = _r2;
10355 : }
10356 0 : _o1[1] = captures[4];
10357 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10358 0 : res_op0 = _r1;
10359 : }
10360 0 : tree _r;
10361 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2L, type, 1, res_op0);
10362 0 : if (!_r)
10363 0 : goto next_after_fail1461;
10364 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
10365 0 : return _r;
10366 : }
10367 0 : next_after_fail1461:;
10368 : }
10369 : }
10370 : }
10371 : }
10372 : break;
10373 : default:;
10374 : }
10375 : break;
10376 : default:;
10377 : }
10378 : break;
10379 : }
10380 12 : default:;
10381 : }
10382 12 : switch (TREE_CODE (_q21))
10383 : {
10384 0 : case REAL_CST:
10385 0 : {
10386 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10387 : {
10388 0 : {
10389 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
10390 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
10391 0 : if (res) return res;
10392 : }
10393 : }
10394 : break;
10395 : }
10396 : default:;
10397 : }
10398 : }
10399 : break;
10400 19000 : case CFN_BUILT_IN_SQRT:
10401 19000 : if (call_expr_nargs (_p0) == 1)
10402 : {
10403 19000 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10404 19000 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10405 : {
10406 2 : {
10407 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10408 2 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT);
10409 2 : if (res) return res;
10410 : }
10411 : }
10412 18998 : switch (TREE_CODE (_p1))
10413 : {
10414 100 : case CALL_EXPR:
10415 100 : switch (get_call_combined_fn (_p1))
10416 : {
10417 37 : case CFN_BUILT_IN_SQRT:
10418 37 : if (call_expr_nargs (_p1) == 1)
10419 : {
10420 37 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10421 37 : {
10422 37 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10423 37 : if (flag_unsafe_math_optimizations
10424 : )
10425 : {
10426 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1462;
10427 15 : {
10428 15 : tree res_op0;
10429 15 : {
10430 15 : tree _o1[2], _r1;
10431 15 : _o1[0] = captures[1];
10432 15 : _o1[1] = captures[3];
10433 15 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10434 15 : res_op0 = _r1;
10435 : }
10436 15 : tree _r;
10437 15 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRT, type, 1, res_op0);
10438 15 : if (!_r)
10439 0 : goto next_after_fail1462;
10440 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 980, __FILE__, __LINE__, true);
10441 15 : return _r;
10442 : }
10443 22 : next_after_fail1462:;
10444 : }
10445 : }
10446 : }
10447 : break;
10448 : default:;
10449 : }
10450 : break;
10451 : default:;
10452 : }
10453 : }
10454 : break;
10455 5 : case CFN_BUILT_IN_LDEXPF:
10456 5 : if (call_expr_nargs (_p0) == 2)
10457 : {
10458 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10459 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10460 5 : switch (TREE_CODE (_p1))
10461 : {
10462 2 : case REAL_CST:
10463 2 : {
10464 2 : {
10465 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10466 2 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
10467 2 : if (res) return res;
10468 : }
10469 1 : break;
10470 : }
10471 4 : default:;
10472 : }
10473 4 : switch (TREE_CODE (_q20))
10474 : {
10475 3 : case REAL_CST:
10476 3 : {
10477 3 : {
10478 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10479 3 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
10480 3 : if (res) return res;
10481 : }
10482 0 : break;
10483 : }
10484 : default:;
10485 : }
10486 : }
10487 : break;
10488 5 : case CFN_BUILT_IN_LDEXPL:
10489 5 : if (call_expr_nargs (_p0) == 2)
10490 : {
10491 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10492 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10493 5 : switch (TREE_CODE (_p1))
10494 : {
10495 2 : case REAL_CST:
10496 2 : {
10497 2 : {
10498 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10499 2 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
10500 2 : if (res) return res;
10501 : }
10502 1 : break;
10503 : }
10504 4 : default:;
10505 : }
10506 4 : switch (TREE_CODE (_q20))
10507 : {
10508 3 : case REAL_CST:
10509 3 : {
10510 3 : {
10511 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10512 3 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
10513 3 : if (res) return res;
10514 : }
10515 0 : break;
10516 : }
10517 : default:;
10518 : }
10519 : }
10520 : break;
10521 4 : case CFN_BUILT_IN_SQRTF128:
10522 4 : if (call_expr_nargs (_p0) == 1)
10523 : {
10524 4 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10525 4 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10526 : {
10527 0 : {
10528 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10529 0 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF128);
10530 0 : if (res) return res;
10531 : }
10532 : }
10533 : }
10534 : break;
10535 0 : case CFN_BUILT_IN_SQRTF32X:
10536 0 : if (call_expr_nargs (_p0) == 1)
10537 : {
10538 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10539 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10540 : {
10541 0 : {
10542 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10543 0 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF32X);
10544 0 : if (res) return res;
10545 : }
10546 : }
10547 : }
10548 : break;
10549 0 : case CFN_BUILT_IN_SQRTF64X:
10550 0 : if (call_expr_nargs (_p0) == 1)
10551 : {
10552 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10553 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10554 : {
10555 0 : {
10556 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10557 0 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF64X);
10558 0 : if (res) return res;
10559 : }
10560 : }
10561 : }
10562 : break;
10563 0 : case CFN_BUILT_IN_SQRTF16:
10564 0 : if (call_expr_nargs (_p0) == 1)
10565 : {
10566 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10567 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10568 : {
10569 0 : {
10570 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10571 0 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF16);
10572 0 : if (res) return res;
10573 : }
10574 : }
10575 : }
10576 : break;
10577 0 : case CFN_BUILT_IN_SQRTF32:
10578 0 : if (call_expr_nargs (_p0) == 1)
10579 : {
10580 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10581 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10582 : {
10583 0 : {
10584 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10585 0 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF32);
10586 0 : if (res) return res;
10587 : }
10588 : }
10589 : }
10590 : break;
10591 0 : case CFN_BUILT_IN_SQRTF64:
10592 0 : if (call_expr_nargs (_p0) == 1)
10593 : {
10594 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10595 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10596 : {
10597 0 : {
10598 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10599 0 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF64);
10600 0 : if (res) return res;
10601 : }
10602 : }
10603 : }
10604 : break;
10605 0 : case CFN_EXP:
10606 0 : if (call_expr_nargs (_p0) == 1)
10607 : {
10608 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10609 0 : switch (TREE_CODE (_p1))
10610 : {
10611 0 : case CALL_EXPR:
10612 0 : switch (get_call_combined_fn (_p1))
10613 : {
10614 0 : case CFN_EXP:
10615 0 : if (call_expr_nargs (_p1) == 1)
10616 : {
10617 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10618 0 : {
10619 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10620 0 : if (flag_unsafe_math_optimizations
10621 : )
10622 : {
10623 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1463;
10624 0 : {
10625 0 : tree res_op0;
10626 0 : {
10627 0 : tree _o1[2], _r1;
10628 0 : _o1[0] = captures[1];
10629 0 : _o1[1] = captures[3];
10630 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10631 0 : res_op0 = _r1;
10632 : }
10633 0 : tree _r;
10634 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP, type, 1, res_op0);
10635 0 : if (!_r)
10636 0 : goto next_after_fail1463;
10637 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 981, __FILE__, __LINE__, true);
10638 0 : return _r;
10639 : }
10640 0 : next_after_fail1463:;
10641 : }
10642 : }
10643 : }
10644 : break;
10645 0 : case CFN_POW:
10646 0 : if (call_expr_nargs (_p1) == 2)
10647 : {
10648 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10649 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
10650 0 : switch (TREE_CODE (_q40))
10651 : {
10652 0 : case REAL_CST:
10653 0 : {
10654 0 : {
10655 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
10656 0 : if (flag_unsafe_math_optimizations
10657 : )
10658 : {
10659 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10660 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10661 : )
10662 : {
10663 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1464;
10664 0 : {
10665 0 : tree res_op0;
10666 0 : {
10667 0 : tree _o1[2], _r1;
10668 0 : {
10669 0 : tree _o2[2], _r2;
10670 0 : {
10671 0 : tree _o3[1], _r3;
10672 0 : _o3[0] = captures[1];
10673 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
10674 0 : if (!_r3)
10675 0 : goto next_after_fail1464;
10676 0 : _o2[0] = _r3;
10677 : }
10678 0 : _o2[1] = captures[2];
10679 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10680 0 : _o1[0] = _r2;
10681 : }
10682 0 : _o1[1] = captures[4];
10683 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10684 0 : res_op0 = _r1;
10685 : }
10686 0 : tree _r;
10687 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP, type, 1, res_op0);
10688 0 : if (!_r)
10689 0 : goto next_after_fail1464;
10690 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
10691 0 : return _r;
10692 : }
10693 0 : next_after_fail1464:;
10694 : }
10695 : }
10696 : }
10697 0 : break;
10698 : }
10699 : default:;
10700 : }
10701 : }
10702 : break;
10703 : default:;
10704 : }
10705 : break;
10706 : default:;
10707 : }
10708 : }
10709 : break;
10710 0 : case CFN_POW:
10711 0 : if (call_expr_nargs (_p0) == 2)
10712 : {
10713 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10714 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10715 0 : switch (TREE_CODE (_q20))
10716 : {
10717 0 : case REAL_CST:
10718 0 : {
10719 0 : switch (TREE_CODE (_p1))
10720 : {
10721 0 : case CALL_EXPR:
10722 0 : switch (get_call_combined_fn (_p1))
10723 : {
10724 0 : case CFN_EXP:
10725 0 : if (call_expr_nargs (_p1) == 1)
10726 : {
10727 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10728 0 : {
10729 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10730 0 : if (flag_unsafe_math_optimizations
10731 : )
10732 : {
10733 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10734 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10735 : )
10736 : {
10737 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1465;
10738 0 : {
10739 0 : tree res_op0;
10740 0 : {
10741 0 : tree _o1[2], _r1;
10742 0 : {
10743 0 : tree _o2[2], _r2;
10744 0 : {
10745 0 : tree _o3[1], _r3;
10746 0 : _o3[0] = captures[1];
10747 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
10748 0 : if (!_r3)
10749 0 : goto next_after_fail1465;
10750 0 : _o2[0] = _r3;
10751 : }
10752 0 : _o2[1] = captures[2];
10753 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10754 0 : _o1[0] = _r2;
10755 : }
10756 0 : _o1[1] = captures[4];
10757 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10758 0 : res_op0 = _r1;
10759 : }
10760 0 : tree _r;
10761 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP, type, 1, res_op0);
10762 0 : if (!_r)
10763 0 : goto next_after_fail1465;
10764 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
10765 0 : return _r;
10766 : }
10767 0 : next_after_fail1465:;
10768 : }
10769 : }
10770 : }
10771 : }
10772 : break;
10773 0 : case CFN_EXP2:
10774 0 : if (call_expr_nargs (_p1) == 1)
10775 : {
10776 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10777 0 : {
10778 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10779 0 : if (flag_unsafe_math_optimizations
10780 : )
10781 : {
10782 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10783 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10784 : )
10785 : {
10786 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1466;
10787 0 : {
10788 0 : tree res_op0;
10789 0 : {
10790 0 : tree _o1[2], _r1;
10791 0 : {
10792 0 : tree _o2[2], _r2;
10793 0 : {
10794 0 : tree _o3[1], _r3;
10795 0 : _o3[0] = captures[1];
10796 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
10797 0 : if (!_r3)
10798 0 : goto next_after_fail1466;
10799 0 : _o2[0] = _r3;
10800 : }
10801 0 : _o2[1] = captures[2];
10802 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10803 0 : _o1[0] = _r2;
10804 : }
10805 0 : _o1[1] = captures[4];
10806 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10807 0 : res_op0 = _r1;
10808 : }
10809 0 : tree _r;
10810 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP2, type, 1, res_op0);
10811 0 : if (!_r)
10812 0 : goto next_after_fail1466;
10813 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
10814 0 : return _r;
10815 : }
10816 0 : next_after_fail1466:;
10817 : }
10818 : }
10819 : }
10820 : }
10821 : break;
10822 0 : case CFN_EXP10:
10823 0 : if (call_expr_nargs (_p1) == 1)
10824 : {
10825 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10826 0 : {
10827 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10828 0 : if (flag_unsafe_math_optimizations
10829 : )
10830 : {
10831 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10832 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10833 : )
10834 : {
10835 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1467;
10836 0 : {
10837 0 : tree res_op0;
10838 0 : {
10839 0 : tree _o1[2], _r1;
10840 0 : {
10841 0 : tree _o2[2], _r2;
10842 0 : {
10843 0 : tree _o3[1], _r3;
10844 0 : _o3[0] = captures[1];
10845 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
10846 0 : if (!_r3)
10847 0 : goto next_after_fail1467;
10848 0 : _o2[0] = _r3;
10849 : }
10850 0 : _o2[1] = captures[2];
10851 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10852 0 : _o1[0] = _r2;
10853 : }
10854 0 : _o1[1] = captures[4];
10855 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10856 0 : res_op0 = _r1;
10857 : }
10858 0 : tree _r;
10859 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP10, type, 1, res_op0);
10860 0 : if (!_r)
10861 0 : goto next_after_fail1467;
10862 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
10863 0 : return _r;
10864 : }
10865 0 : next_after_fail1467:;
10866 : }
10867 : }
10868 : }
10869 : }
10870 : break;
10871 : default:;
10872 : }
10873 : break;
10874 : default:;
10875 : }
10876 : break;
10877 : }
10878 0 : default:;
10879 : }
10880 0 : switch (TREE_CODE (_q21))
10881 : {
10882 0 : case REAL_CST:
10883 0 : {
10884 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10885 : {
10886 0 : {
10887 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
10888 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_POW);
10889 0 : if (res) return res;
10890 : }
10891 : }
10892 : break;
10893 : }
10894 : default:;
10895 : }
10896 : }
10897 : break;
10898 24 : case CFN_BUILT_IN_POW10F:
10899 24 : if (call_expr_nargs (_p0) == 1)
10900 : {
10901 24 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10902 24 : switch (TREE_CODE (_p1))
10903 : {
10904 12 : case CALL_EXPR:
10905 12 : switch (get_call_combined_fn (_p1))
10906 : {
10907 0 : case CFN_BUILT_IN_POWF:
10908 0 : if (call_expr_nargs (_p1) == 2)
10909 : {
10910 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10911 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
10912 0 : switch (TREE_CODE (_q40))
10913 : {
10914 0 : case REAL_CST:
10915 0 : {
10916 0 : {
10917 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
10918 0 : if (flag_unsafe_math_optimizations
10919 : )
10920 : {
10921 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10922 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10923 : )
10924 : {
10925 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1468;
10926 0 : {
10927 0 : tree res_op0;
10928 0 : {
10929 0 : tree _o1[2], _r1;
10930 0 : {
10931 0 : tree _o2[2], _r2;
10932 0 : {
10933 0 : tree _o3[1], _r3;
10934 0 : _o3[0] = captures[1];
10935 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
10936 0 : if (!_r3)
10937 0 : goto next_after_fail1468;
10938 0 : _o2[0] = _r3;
10939 : }
10940 0 : _o2[1] = captures[2];
10941 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10942 0 : _o1[0] = _r2;
10943 : }
10944 0 : _o1[1] = captures[4];
10945 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10946 0 : res_op0 = _r1;
10947 : }
10948 0 : tree _r;
10949 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10F, type, 1, res_op0);
10950 0 : if (!_r)
10951 0 : goto next_after_fail1468;
10952 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
10953 0 : return _r;
10954 : }
10955 0 : next_after_fail1468:;
10956 : }
10957 : }
10958 : }
10959 0 : break;
10960 : }
10961 : default:;
10962 : }
10963 : }
10964 : break;
10965 12 : case CFN_BUILT_IN_POW10F:
10966 12 : if (call_expr_nargs (_p1) == 1)
10967 : {
10968 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10969 12 : {
10970 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10971 12 : if (flag_unsafe_math_optimizations
10972 : )
10973 : {
10974 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1469;
10975 12 : {
10976 12 : tree res_op0;
10977 12 : {
10978 12 : tree _o1[2], _r1;
10979 12 : _o1[0] = captures[1];
10980 12 : _o1[1] = captures[3];
10981 12 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10982 12 : res_op0 = _r1;
10983 : }
10984 12 : tree _r;
10985 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10F, type, 1, res_op0);
10986 12 : if (!_r)
10987 12 : goto next_after_fail1469;
10988 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 981, __FILE__, __LINE__, true);
10989 0 : return _r;
10990 : }
10991 12 : next_after_fail1469:;
10992 : }
10993 : }
10994 : }
10995 : break;
10996 : default:;
10997 : }
10998 : break;
10999 : default:;
11000 : }
11001 : }
11002 : break;
11003 24 : case CFN_BUILT_IN_POW10L:
11004 24 : if (call_expr_nargs (_p0) == 1)
11005 : {
11006 24 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11007 24 : switch (TREE_CODE (_p1))
11008 : {
11009 12 : case CALL_EXPR:
11010 12 : switch (get_call_combined_fn (_p1))
11011 : {
11012 0 : case CFN_BUILT_IN_POWL:
11013 0 : if (call_expr_nargs (_p1) == 2)
11014 : {
11015 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11016 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11017 0 : switch (TREE_CODE (_q40))
11018 : {
11019 0 : case REAL_CST:
11020 0 : {
11021 0 : {
11022 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11023 0 : if (flag_unsafe_math_optimizations
11024 : )
11025 : {
11026 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11027 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11028 : )
11029 : {
11030 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1470;
11031 0 : {
11032 0 : tree res_op0;
11033 0 : {
11034 0 : tree _o1[2], _r1;
11035 0 : {
11036 0 : tree _o2[2], _r2;
11037 0 : {
11038 0 : tree _o3[1], _r3;
11039 0 : _o3[0] = captures[1];
11040 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
11041 0 : if (!_r3)
11042 0 : goto next_after_fail1470;
11043 0 : _o2[0] = _r3;
11044 : }
11045 0 : _o2[1] = captures[2];
11046 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11047 0 : _o1[0] = _r2;
11048 : }
11049 0 : _o1[1] = captures[4];
11050 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11051 0 : res_op0 = _r1;
11052 : }
11053 0 : tree _r;
11054 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10L, type, 1, res_op0);
11055 0 : if (!_r)
11056 0 : goto next_after_fail1470;
11057 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
11058 0 : return _r;
11059 : }
11060 0 : next_after_fail1470:;
11061 : }
11062 : }
11063 : }
11064 0 : break;
11065 : }
11066 : default:;
11067 : }
11068 : }
11069 : break;
11070 12 : case CFN_BUILT_IN_POW10L:
11071 12 : if (call_expr_nargs (_p1) == 1)
11072 : {
11073 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11074 12 : {
11075 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11076 12 : if (flag_unsafe_math_optimizations
11077 : )
11078 : {
11079 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1471;
11080 12 : {
11081 12 : tree res_op0;
11082 12 : {
11083 12 : tree _o1[2], _r1;
11084 12 : _o1[0] = captures[1];
11085 12 : _o1[1] = captures[3];
11086 12 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11087 12 : res_op0 = _r1;
11088 : }
11089 12 : tree _r;
11090 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10L, type, 1, res_op0);
11091 12 : if (!_r)
11092 12 : goto next_after_fail1471;
11093 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 981, __FILE__, __LINE__, true);
11094 0 : return _r;
11095 : }
11096 12 : next_after_fail1471:;
11097 : }
11098 : }
11099 : }
11100 : break;
11101 : default:;
11102 : }
11103 : break;
11104 : default:;
11105 : }
11106 : }
11107 : break;
11108 0 : case CFN_BUILT_IN_SQRTF128X:
11109 0 : if (call_expr_nargs (_p0) == 1)
11110 : {
11111 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11112 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11113 : {
11114 0 : {
11115 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
11116 0 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF128X);
11117 0 : if (res) return res;
11118 : }
11119 : }
11120 : }
11121 : break;
11122 0 : case CFN_EXP2:
11123 0 : if (call_expr_nargs (_p0) == 1)
11124 : {
11125 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11126 0 : switch (TREE_CODE (_p1))
11127 : {
11128 0 : case CALL_EXPR:
11129 0 : switch (get_call_combined_fn (_p1))
11130 : {
11131 0 : case CFN_POW:
11132 0 : if (call_expr_nargs (_p1) == 2)
11133 : {
11134 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11135 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11136 0 : switch (TREE_CODE (_q40))
11137 : {
11138 0 : case REAL_CST:
11139 0 : {
11140 0 : {
11141 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11142 0 : if (flag_unsafe_math_optimizations
11143 : )
11144 : {
11145 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11146 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11147 : )
11148 : {
11149 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1472;
11150 0 : {
11151 0 : tree res_op0;
11152 0 : {
11153 0 : tree _o1[2], _r1;
11154 0 : {
11155 0 : tree _o2[2], _r2;
11156 0 : {
11157 0 : tree _o3[1], _r3;
11158 0 : _o3[0] = captures[1];
11159 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
11160 0 : if (!_r3)
11161 0 : goto next_after_fail1472;
11162 0 : _o2[0] = _r3;
11163 : }
11164 0 : _o2[1] = captures[2];
11165 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11166 0 : _o1[0] = _r2;
11167 : }
11168 0 : _o1[1] = captures[4];
11169 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11170 0 : res_op0 = _r1;
11171 : }
11172 0 : tree _r;
11173 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP2, type, 1, res_op0);
11174 0 : if (!_r)
11175 0 : goto next_after_fail1472;
11176 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
11177 0 : return _r;
11178 : }
11179 0 : next_after_fail1472:;
11180 : }
11181 : }
11182 : }
11183 0 : break;
11184 : }
11185 : default:;
11186 : }
11187 : }
11188 : break;
11189 0 : case CFN_EXP2:
11190 0 : if (call_expr_nargs (_p1) == 1)
11191 : {
11192 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11193 0 : {
11194 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11195 0 : if (flag_unsafe_math_optimizations
11196 : )
11197 : {
11198 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1473;
11199 0 : {
11200 0 : tree res_op0;
11201 0 : {
11202 0 : tree _o1[2], _r1;
11203 0 : _o1[0] = captures[1];
11204 0 : _o1[1] = captures[3];
11205 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11206 0 : res_op0 = _r1;
11207 : }
11208 0 : tree _r;
11209 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP2, type, 1, res_op0);
11210 0 : if (!_r)
11211 0 : goto next_after_fail1473;
11212 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 981, __FILE__, __LINE__, true);
11213 0 : return _r;
11214 : }
11215 0 : next_after_fail1473:;
11216 : }
11217 : }
11218 : }
11219 : break;
11220 : default:;
11221 : }
11222 : break;
11223 : default:;
11224 : }
11225 : }
11226 : break;
11227 0 : case CFN_SQRT:
11228 0 : if (call_expr_nargs (_p0) == 1)
11229 : {
11230 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11231 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11232 : {
11233 0 : {
11234 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
11235 0 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_SQRT);
11236 0 : if (res) return res;
11237 : }
11238 : }
11239 0 : switch (TREE_CODE (_p1))
11240 : {
11241 0 : case CALL_EXPR:
11242 0 : switch (get_call_combined_fn (_p1))
11243 : {
11244 0 : case CFN_SQRT:
11245 0 : if (call_expr_nargs (_p1) == 1)
11246 : {
11247 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11248 0 : {
11249 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11250 0 : if (flag_unsafe_math_optimizations
11251 : )
11252 : {
11253 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1474;
11254 0 : {
11255 0 : tree res_op0;
11256 0 : {
11257 0 : tree _o1[2], _r1;
11258 0 : _o1[0] = captures[1];
11259 0 : _o1[1] = captures[3];
11260 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11261 0 : res_op0 = _r1;
11262 : }
11263 0 : tree _r;
11264 0 : _r = maybe_build_call_expr_loc (loc, CFN_SQRT, type, 1, res_op0);
11265 0 : if (!_r)
11266 0 : goto next_after_fail1474;
11267 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 980, __FILE__, __LINE__, true);
11268 0 : return _r;
11269 : }
11270 0 : next_after_fail1474:;
11271 : }
11272 : }
11273 : }
11274 : break;
11275 : default:;
11276 : }
11277 : break;
11278 : default:;
11279 : }
11280 : }
11281 : break;
11282 0 : case CFN_EXP10:
11283 0 : if (call_expr_nargs (_p0) == 1)
11284 : {
11285 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11286 0 : switch (TREE_CODE (_p1))
11287 : {
11288 0 : case CALL_EXPR:
11289 0 : switch (get_call_combined_fn (_p1))
11290 : {
11291 0 : case CFN_POW:
11292 0 : if (call_expr_nargs (_p1) == 2)
11293 : {
11294 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11295 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11296 0 : switch (TREE_CODE (_q40))
11297 : {
11298 0 : case REAL_CST:
11299 0 : {
11300 0 : {
11301 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11302 0 : if (flag_unsafe_math_optimizations
11303 : )
11304 : {
11305 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11306 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11307 : )
11308 : {
11309 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1475;
11310 0 : {
11311 0 : tree res_op0;
11312 0 : {
11313 0 : tree _o1[2], _r1;
11314 0 : {
11315 0 : tree _o2[2], _r2;
11316 0 : {
11317 0 : tree _o3[1], _r3;
11318 0 : _o3[0] = captures[1];
11319 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
11320 0 : if (!_r3)
11321 0 : goto next_after_fail1475;
11322 0 : _o2[0] = _r3;
11323 : }
11324 0 : _o2[1] = captures[2];
11325 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11326 0 : _o1[0] = _r2;
11327 : }
11328 0 : _o1[1] = captures[4];
11329 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11330 0 : res_op0 = _r1;
11331 : }
11332 0 : tree _r;
11333 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP10, type, 1, res_op0);
11334 0 : if (!_r)
11335 0 : goto next_after_fail1475;
11336 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
11337 0 : return _r;
11338 : }
11339 0 : next_after_fail1475:;
11340 : }
11341 : }
11342 : }
11343 0 : break;
11344 : }
11345 : default:;
11346 : }
11347 : }
11348 : break;
11349 0 : case CFN_EXP10:
11350 0 : if (call_expr_nargs (_p1) == 1)
11351 : {
11352 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11353 0 : {
11354 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11355 0 : if (flag_unsafe_math_optimizations
11356 : )
11357 : {
11358 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1476;
11359 0 : {
11360 0 : tree res_op0;
11361 0 : {
11362 0 : tree _o1[2], _r1;
11363 0 : _o1[0] = captures[1];
11364 0 : _o1[1] = captures[3];
11365 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11366 0 : res_op0 = _r1;
11367 : }
11368 0 : tree _r;
11369 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP10, type, 1, res_op0);
11370 0 : if (!_r)
11371 0 : goto next_after_fail1476;
11372 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 981, __FILE__, __LINE__, true);
11373 0 : return _r;
11374 : }
11375 0 : next_after_fail1476:;
11376 : }
11377 : }
11378 : }
11379 : break;
11380 : default:;
11381 : }
11382 : break;
11383 : default:;
11384 : }
11385 : }
11386 : break;
11387 12 : case CFN_BUILT_IN_CBRTF:
11388 12 : if (call_expr_nargs (_p0) == 1)
11389 : {
11390 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11391 12 : switch (TREE_CODE (_p1))
11392 : {
11393 12 : case CALL_EXPR:
11394 12 : switch (get_call_combined_fn (_p1))
11395 : {
11396 12 : case CFN_BUILT_IN_CBRTF:
11397 12 : if (call_expr_nargs (_p1) == 1)
11398 : {
11399 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11400 12 : {
11401 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11402 12 : if (flag_unsafe_math_optimizations
11403 : )
11404 : {
11405 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1477;
11406 12 : {
11407 12 : tree res_op0;
11408 12 : {
11409 12 : tree _o1[2], _r1;
11410 12 : _o1[0] = captures[1];
11411 12 : _o1[1] = captures[3];
11412 12 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11413 12 : res_op0 = _r1;
11414 : }
11415 12 : tree _r;
11416 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRTF, type, 1, res_op0);
11417 12 : if (!_r)
11418 0 : goto next_after_fail1477;
11419 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 980, __FILE__, __LINE__, true);
11420 12 : return _r;
11421 : }
11422 0 : next_after_fail1477:;
11423 : }
11424 : }
11425 : }
11426 : break;
11427 : default:;
11428 : }
11429 : break;
11430 : default:;
11431 : }
11432 : }
11433 : break;
11434 12 : case CFN_BUILT_IN_CBRTL:
11435 12 : if (call_expr_nargs (_p0) == 1)
11436 : {
11437 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11438 12 : switch (TREE_CODE (_p1))
11439 : {
11440 12 : case CALL_EXPR:
11441 12 : switch (get_call_combined_fn (_p1))
11442 : {
11443 12 : case CFN_BUILT_IN_CBRTL:
11444 12 : if (call_expr_nargs (_p1) == 1)
11445 : {
11446 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11447 12 : {
11448 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11449 12 : if (flag_unsafe_math_optimizations
11450 : )
11451 : {
11452 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1478;
11453 12 : {
11454 12 : tree res_op0;
11455 12 : {
11456 12 : tree _o1[2], _r1;
11457 12 : _o1[0] = captures[1];
11458 12 : _o1[1] = captures[3];
11459 12 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11460 12 : res_op0 = _r1;
11461 : }
11462 12 : tree _r;
11463 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRTL, type, 1, res_op0);
11464 12 : if (!_r)
11465 0 : goto next_after_fail1478;
11466 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 980, __FILE__, __LINE__, true);
11467 12 : return _r;
11468 : }
11469 0 : next_after_fail1478:;
11470 : }
11471 : }
11472 : }
11473 : break;
11474 : default:;
11475 : }
11476 : break;
11477 : default:;
11478 : }
11479 : }
11480 : break;
11481 0 : case CFN_LDEXP:
11482 0 : if (call_expr_nargs (_p0) == 2)
11483 : {
11484 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11485 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11486 0 : switch (TREE_CODE (_p1))
11487 : {
11488 0 : case REAL_CST:
11489 0 : {
11490 0 : {
11491 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11492 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_LDEXP);
11493 0 : if (res) return res;
11494 : }
11495 0 : break;
11496 : }
11497 0 : default:;
11498 : }
11499 0 : switch (TREE_CODE (_q20))
11500 : {
11501 0 : case REAL_CST:
11502 0 : {
11503 0 : {
11504 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11505 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_LDEXP);
11506 0 : if (res) return res;
11507 : }
11508 0 : break;
11509 : }
11510 : default:;
11511 : }
11512 : }
11513 : break;
11514 48 : case CFN_BUILT_IN_EXP10:
11515 48 : if (call_expr_nargs (_p0) == 1)
11516 : {
11517 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11518 48 : switch (TREE_CODE (_p1))
11519 : {
11520 24 : case CALL_EXPR:
11521 24 : switch (get_call_combined_fn (_p1))
11522 : {
11523 0 : case CFN_BUILT_IN_POW:
11524 0 : if (call_expr_nargs (_p1) == 2)
11525 : {
11526 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11527 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11528 0 : switch (TREE_CODE (_q40))
11529 : {
11530 0 : case REAL_CST:
11531 0 : {
11532 0 : {
11533 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11534 0 : if (flag_unsafe_math_optimizations
11535 : )
11536 : {
11537 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11538 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11539 : )
11540 : {
11541 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1479;
11542 0 : {
11543 0 : tree res_op0;
11544 0 : {
11545 0 : tree _o1[2], _r1;
11546 0 : {
11547 0 : tree _o2[2], _r2;
11548 0 : {
11549 0 : tree _o3[1], _r3;
11550 0 : _o3[0] = captures[1];
11551 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
11552 0 : if (!_r3)
11553 0 : goto next_after_fail1479;
11554 0 : _o2[0] = _r3;
11555 : }
11556 0 : _o2[1] = captures[2];
11557 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11558 0 : _o1[0] = _r2;
11559 : }
11560 0 : _o1[1] = captures[4];
11561 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11562 0 : res_op0 = _r1;
11563 : }
11564 0 : tree _r;
11565 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10, type, 1, res_op0);
11566 0 : if (!_r)
11567 0 : goto next_after_fail1479;
11568 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
11569 0 : return _r;
11570 : }
11571 0 : next_after_fail1479:;
11572 : }
11573 : }
11574 : }
11575 0 : break;
11576 : }
11577 : default:;
11578 : }
11579 : }
11580 : break;
11581 24 : case CFN_BUILT_IN_EXP10:
11582 24 : if (call_expr_nargs (_p1) == 1)
11583 : {
11584 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11585 24 : {
11586 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11587 24 : if (flag_unsafe_math_optimizations
11588 : )
11589 : {
11590 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1480;
11591 24 : {
11592 24 : tree res_op0;
11593 24 : {
11594 24 : tree _o1[2], _r1;
11595 24 : _o1[0] = captures[1];
11596 24 : _o1[1] = captures[3];
11597 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11598 24 : res_op0 = _r1;
11599 : }
11600 24 : tree _r;
11601 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10, type, 1, res_op0);
11602 24 : if (!_r)
11603 0 : goto next_after_fail1480;
11604 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 981, __FILE__, __LINE__, true);
11605 24 : return _r;
11606 : }
11607 0 : next_after_fail1480:;
11608 : }
11609 : }
11610 : }
11611 : break;
11612 : default:;
11613 : }
11614 : break;
11615 : default:;
11616 : }
11617 : }
11618 : break;
11619 48 : case CFN_BUILT_IN_EXP2F:
11620 48 : if (call_expr_nargs (_p0) == 1)
11621 : {
11622 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11623 48 : switch (TREE_CODE (_p1))
11624 : {
11625 24 : case CALL_EXPR:
11626 24 : switch (get_call_combined_fn (_p1))
11627 : {
11628 0 : case CFN_BUILT_IN_POWF:
11629 0 : if (call_expr_nargs (_p1) == 2)
11630 : {
11631 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11632 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11633 0 : switch (TREE_CODE (_q40))
11634 : {
11635 0 : case REAL_CST:
11636 0 : {
11637 0 : {
11638 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11639 0 : if (flag_unsafe_math_optimizations
11640 : )
11641 : {
11642 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11643 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11644 : )
11645 : {
11646 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1481;
11647 0 : {
11648 0 : tree res_op0;
11649 0 : {
11650 0 : tree _o1[2], _r1;
11651 0 : {
11652 0 : tree _o2[2], _r2;
11653 0 : {
11654 0 : tree _o3[1], _r3;
11655 0 : _o3[0] = captures[1];
11656 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2F, TREE_TYPE (_o3[0]), 1, _o3[0]);
11657 0 : if (!_r3)
11658 0 : goto next_after_fail1481;
11659 0 : _o2[0] = _r3;
11660 : }
11661 0 : _o2[1] = captures[2];
11662 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11663 0 : _o1[0] = _r2;
11664 : }
11665 0 : _o1[1] = captures[4];
11666 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11667 0 : res_op0 = _r1;
11668 : }
11669 0 : tree _r;
11670 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2F, type, 1, res_op0);
11671 0 : if (!_r)
11672 0 : goto next_after_fail1481;
11673 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
11674 0 : return _r;
11675 : }
11676 0 : next_after_fail1481:;
11677 : }
11678 : }
11679 : }
11680 0 : break;
11681 : }
11682 : default:;
11683 : }
11684 : }
11685 : break;
11686 24 : case CFN_BUILT_IN_EXP2F:
11687 24 : if (call_expr_nargs (_p1) == 1)
11688 : {
11689 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11690 24 : {
11691 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11692 24 : if (flag_unsafe_math_optimizations
11693 : )
11694 : {
11695 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1482;
11696 24 : {
11697 24 : tree res_op0;
11698 24 : {
11699 24 : tree _o1[2], _r1;
11700 24 : _o1[0] = captures[1];
11701 24 : _o1[1] = captures[3];
11702 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11703 24 : res_op0 = _r1;
11704 : }
11705 24 : tree _r;
11706 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2F, type, 1, res_op0);
11707 24 : if (!_r)
11708 0 : goto next_after_fail1482;
11709 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 981, __FILE__, __LINE__, true);
11710 24 : return _r;
11711 : }
11712 0 : next_after_fail1482:;
11713 : }
11714 : }
11715 : }
11716 : break;
11717 : default:;
11718 : }
11719 : break;
11720 : default:;
11721 : }
11722 : }
11723 : break;
11724 48 : case CFN_BUILT_IN_EXP2L:
11725 48 : if (call_expr_nargs (_p0) == 1)
11726 : {
11727 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11728 48 : switch (TREE_CODE (_p1))
11729 : {
11730 24 : case CALL_EXPR:
11731 24 : switch (get_call_combined_fn (_p1))
11732 : {
11733 0 : case CFN_BUILT_IN_POWL:
11734 0 : if (call_expr_nargs (_p1) == 2)
11735 : {
11736 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11737 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11738 0 : switch (TREE_CODE (_q40))
11739 : {
11740 0 : case REAL_CST:
11741 0 : {
11742 0 : {
11743 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11744 0 : if (flag_unsafe_math_optimizations
11745 : )
11746 : {
11747 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11748 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11749 : )
11750 : {
11751 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1483;
11752 0 : {
11753 0 : tree res_op0;
11754 0 : {
11755 0 : tree _o1[2], _r1;
11756 0 : {
11757 0 : tree _o2[2], _r2;
11758 0 : {
11759 0 : tree _o3[1], _r3;
11760 0 : _o3[0] = captures[1];
11761 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2L, TREE_TYPE (_o3[0]), 1, _o3[0]);
11762 0 : if (!_r3)
11763 0 : goto next_after_fail1483;
11764 0 : _o2[0] = _r3;
11765 : }
11766 0 : _o2[1] = captures[2];
11767 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11768 0 : _o1[0] = _r2;
11769 : }
11770 0 : _o1[1] = captures[4];
11771 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11772 0 : res_op0 = _r1;
11773 : }
11774 0 : tree _r;
11775 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2L, type, 1, res_op0);
11776 0 : if (!_r)
11777 0 : goto next_after_fail1483;
11778 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
11779 0 : return _r;
11780 : }
11781 0 : next_after_fail1483:;
11782 : }
11783 : }
11784 : }
11785 0 : break;
11786 : }
11787 : default:;
11788 : }
11789 : }
11790 : break;
11791 24 : case CFN_BUILT_IN_EXP2L:
11792 24 : if (call_expr_nargs (_p1) == 1)
11793 : {
11794 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11795 24 : {
11796 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11797 24 : if (flag_unsafe_math_optimizations
11798 : )
11799 : {
11800 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1484;
11801 24 : {
11802 24 : tree res_op0;
11803 24 : {
11804 24 : tree _o1[2], _r1;
11805 24 : _o1[0] = captures[1];
11806 24 : _o1[1] = captures[3];
11807 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11808 24 : res_op0 = _r1;
11809 : }
11810 24 : tree _r;
11811 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2L, type, 1, res_op0);
11812 24 : if (!_r)
11813 0 : goto next_after_fail1484;
11814 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 981, __FILE__, __LINE__, true);
11815 24 : return _r;
11816 : }
11817 0 : next_after_fail1484:;
11818 : }
11819 : }
11820 : }
11821 : break;
11822 : default:;
11823 : }
11824 : break;
11825 : default:;
11826 : }
11827 : }
11828 : break;
11829 5 : case CFN_BUILT_IN_LDEXP:
11830 5 : if (call_expr_nargs (_p0) == 2)
11831 : {
11832 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11833 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11834 5 : switch (TREE_CODE (_p1))
11835 : {
11836 2 : case REAL_CST:
11837 2 : {
11838 2 : {
11839 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11840 2 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
11841 2 : if (res) return res;
11842 : }
11843 1 : break;
11844 : }
11845 4 : default:;
11846 : }
11847 4 : switch (TREE_CODE (_q20))
11848 : {
11849 3 : case REAL_CST:
11850 3 : {
11851 3 : {
11852 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11853 3 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
11854 3 : if (res) return res;
11855 : }
11856 0 : break;
11857 : }
11858 : default:;
11859 : }
11860 : }
11861 : break;
11862 24 : case CFN_BUILT_IN_POW10:
11863 24 : if (call_expr_nargs (_p0) == 1)
11864 : {
11865 24 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11866 24 : switch (TREE_CODE (_p1))
11867 : {
11868 12 : case CALL_EXPR:
11869 12 : switch (get_call_combined_fn (_p1))
11870 : {
11871 0 : case CFN_BUILT_IN_POW:
11872 0 : if (call_expr_nargs (_p1) == 2)
11873 : {
11874 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11875 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11876 0 : switch (TREE_CODE (_q40))
11877 : {
11878 0 : case REAL_CST:
11879 0 : {
11880 0 : {
11881 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11882 0 : if (flag_unsafe_math_optimizations
11883 : )
11884 : {
11885 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11886 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11887 : )
11888 : {
11889 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1485;
11890 0 : {
11891 0 : tree res_op0;
11892 0 : {
11893 0 : tree _o1[2], _r1;
11894 0 : {
11895 0 : tree _o2[2], _r2;
11896 0 : {
11897 0 : tree _o3[1], _r3;
11898 0 : _o3[0] = captures[1];
11899 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
11900 0 : if (!_r3)
11901 0 : goto next_after_fail1485;
11902 0 : _o2[0] = _r3;
11903 : }
11904 0 : _o2[1] = captures[2];
11905 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11906 0 : _o1[0] = _r2;
11907 : }
11908 0 : _o1[1] = captures[4];
11909 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11910 0 : res_op0 = _r1;
11911 : }
11912 0 : tree _r;
11913 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10, type, 1, res_op0);
11914 0 : if (!_r)
11915 0 : goto next_after_fail1485;
11916 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 982, __FILE__, __LINE__, true);
11917 0 : return _r;
11918 : }
11919 0 : next_after_fail1485:;
11920 : }
11921 : }
11922 : }
11923 0 : break;
11924 : }
11925 : default:;
11926 : }
11927 : }
11928 : break;
11929 12 : case CFN_BUILT_IN_POW10:
11930 12 : if (call_expr_nargs (_p1) == 1)
11931 : {
11932 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11933 12 : {
11934 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11935 12 : if (flag_unsafe_math_optimizations
11936 : )
11937 : {
11938 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1486;
11939 12 : {
11940 12 : tree res_op0;
11941 12 : {
11942 12 : tree _o1[2], _r1;
11943 12 : _o1[0] = captures[1];
11944 12 : _o1[1] = captures[3];
11945 12 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11946 12 : res_op0 = _r1;
11947 : }
11948 12 : tree _r;
11949 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10, type, 1, res_op0);
11950 12 : if (!_r)
11951 12 : goto next_after_fail1486;
11952 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 981, __FILE__, __LINE__, true);
11953 0 : return _r;
11954 : }
11955 12 : next_after_fail1486:;
11956 : }
11957 : }
11958 : }
11959 : break;
11960 : default:;
11961 : }
11962 : break;
11963 : default:;
11964 : }
11965 : }
11966 : break;
11967 : default:;
11968 : }
11969 : break;
11970 66378635 : default:;
11971 : }
11972 66378635 : switch (TREE_CODE (_p1))
11973 : {
11974 864691 : case CALL_EXPR:
11975 864691 : switch (get_call_combined_fn (_p1))
11976 : {
11977 0 : case CFN_BUILT_IN_LDEXPF:
11978 0 : if (call_expr_nargs (_p1) == 2)
11979 : {
11980 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
11981 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
11982 0 : switch (TREE_CODE (_q30))
11983 : {
11984 0 : case REAL_CST:
11985 0 : {
11986 0 : {
11987 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
11988 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
11989 0 : if (res) return res;
11990 : }
11991 0 : break;
11992 : }
11993 : default:;
11994 : }
11995 : }
11996 : break;
11997 0 : case CFN_BUILT_IN_LDEXPL:
11998 0 : if (call_expr_nargs (_p1) == 2)
11999 : {
12000 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12001 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12002 0 : switch (TREE_CODE (_q30))
12003 : {
12004 0 : case REAL_CST:
12005 0 : {
12006 0 : {
12007 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
12008 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
12009 0 : if (res) return res;
12010 : }
12011 0 : break;
12012 : }
12013 : default:;
12014 : }
12015 : }
12016 : break;
12017 0 : case CFN_LDEXP:
12018 0 : if (call_expr_nargs (_p1) == 2)
12019 : {
12020 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12021 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12022 0 : switch (TREE_CODE (_q30))
12023 : {
12024 0 : case REAL_CST:
12025 0 : {
12026 0 : {
12027 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
12028 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_LDEXP);
12029 0 : if (res) return res;
12030 : }
12031 0 : break;
12032 : }
12033 : default:;
12034 : }
12035 : }
12036 : break;
12037 0 : case CFN_BUILT_IN_LDEXP:
12038 0 : if (call_expr_nargs (_p1) == 2)
12039 : {
12040 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12041 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12042 0 : switch (TREE_CODE (_q30))
12043 : {
12044 0 : case REAL_CST:
12045 0 : {
12046 0 : {
12047 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
12048 0 : tree res = generic_simplify_202 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
12049 0 : if (res) return res;
12050 : }
12051 0 : break;
12052 : }
12053 : default:;
12054 : }
12055 : }
12056 : break;
12057 : default:;
12058 : }
12059 : break;
12060 66378635 : default:;
12061 : }
12062 66378635 : switch (TREE_CODE (_p0))
12063 : {
12064 2416270 : case CALL_EXPR:
12065 2416270 : switch (get_call_combined_fn (_p0))
12066 : {
12067 29 : case CFN_BUILT_IN_COS:
12068 29 : if (call_expr_nargs (_p0) == 1)
12069 : {
12070 29 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12071 29 : switch (TREE_CODE (_p1))
12072 : {
12073 4 : case CALL_EXPR:
12074 4 : switch (get_call_combined_fn (_p1))
12075 : {
12076 2 : case CFN_BUILT_IN_TAN:
12077 2 : if (call_expr_nargs (_p1) == 1)
12078 : {
12079 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12080 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12081 : {
12082 2 : {
12083 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12084 2 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TAN, CFN_BUILT_IN_COS, CFN_BUILT_IN_SIN);
12085 2 : if (res) return res;
12086 : }
12087 : }
12088 : }
12089 : break;
12090 : default:;
12091 : }
12092 : break;
12093 : default:;
12094 : }
12095 : }
12096 : break;
12097 2 : case CFN_BUILT_IN_TAN:
12098 2 : if (call_expr_nargs (_p0) == 1)
12099 : {
12100 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12101 2 : switch (TREE_CODE (_p1))
12102 : {
12103 2 : case CALL_EXPR:
12104 2 : switch (get_call_combined_fn (_p1))
12105 : {
12106 2 : case CFN_BUILT_IN_COS:
12107 2 : if (call_expr_nargs (_p1) == 1)
12108 : {
12109 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12110 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12111 : {
12112 2 : {
12113 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12114 2 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TAN, CFN_BUILT_IN_COS, CFN_BUILT_IN_SIN);
12115 2 : if (res) return res;
12116 : }
12117 : }
12118 : }
12119 : break;
12120 : default:;
12121 : }
12122 : break;
12123 : default:;
12124 : }
12125 : }
12126 : break;
12127 18 : case CFN_BUILT_IN_COSF:
12128 18 : if (call_expr_nargs (_p0) == 1)
12129 : {
12130 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12131 18 : switch (TREE_CODE (_p1))
12132 : {
12133 9 : case CALL_EXPR:
12134 9 : switch (get_call_combined_fn (_p1))
12135 : {
12136 2 : case CFN_BUILT_IN_TANF:
12137 2 : if (call_expr_nargs (_p1) == 1)
12138 : {
12139 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12140 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12141 : {
12142 2 : {
12143 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12144 2 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANF, CFN_BUILT_IN_COSF, CFN_BUILT_IN_SINF);
12145 2 : if (res) return res;
12146 : }
12147 : }
12148 : }
12149 : break;
12150 : default:;
12151 : }
12152 : break;
12153 : default:;
12154 : }
12155 : }
12156 : break;
12157 2 : case CFN_BUILT_IN_COSL:
12158 2 : if (call_expr_nargs (_p0) == 1)
12159 : {
12160 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12161 2 : switch (TREE_CODE (_p1))
12162 : {
12163 2 : case CALL_EXPR:
12164 2 : switch (get_call_combined_fn (_p1))
12165 : {
12166 2 : case CFN_BUILT_IN_TANL:
12167 2 : if (call_expr_nargs (_p1) == 1)
12168 : {
12169 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12170 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12171 : {
12172 2 : {
12173 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12174 2 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANL, CFN_BUILT_IN_COSL, CFN_BUILT_IN_SINL);
12175 2 : if (res) return res;
12176 : }
12177 : }
12178 : }
12179 : break;
12180 : default:;
12181 : }
12182 : break;
12183 : default:;
12184 : }
12185 : }
12186 : break;
12187 2 : case CFN_BUILT_IN_TANF:
12188 2 : if (call_expr_nargs (_p0) == 1)
12189 : {
12190 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12191 2 : switch (TREE_CODE (_p1))
12192 : {
12193 2 : case CALL_EXPR:
12194 2 : switch (get_call_combined_fn (_p1))
12195 : {
12196 2 : case CFN_BUILT_IN_COSF:
12197 2 : if (call_expr_nargs (_p1) == 1)
12198 : {
12199 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12200 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12201 : {
12202 2 : {
12203 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12204 2 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANF, CFN_BUILT_IN_COSF, CFN_BUILT_IN_SINF);
12205 2 : if (res) return res;
12206 : }
12207 : }
12208 : }
12209 : break;
12210 : default:;
12211 : }
12212 : break;
12213 : default:;
12214 : }
12215 : }
12216 : break;
12217 2 : case CFN_BUILT_IN_TANL:
12218 2 : if (call_expr_nargs (_p0) == 1)
12219 : {
12220 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12221 2 : switch (TREE_CODE (_p1))
12222 : {
12223 2 : case CALL_EXPR:
12224 2 : switch (get_call_combined_fn (_p1))
12225 : {
12226 2 : case CFN_BUILT_IN_COSL:
12227 2 : if (call_expr_nargs (_p1) == 1)
12228 : {
12229 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12230 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12231 : {
12232 2 : {
12233 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12234 2 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANL, CFN_BUILT_IN_COSL, CFN_BUILT_IN_SINL);
12235 2 : if (res) return res;
12236 : }
12237 : }
12238 : }
12239 : break;
12240 : default:;
12241 : }
12242 : break;
12243 : default:;
12244 : }
12245 : }
12246 : break;
12247 0 : case CFN_COS:
12248 0 : if (call_expr_nargs (_p0) == 1)
12249 : {
12250 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12251 0 : switch (TREE_CODE (_p1))
12252 : {
12253 0 : case CALL_EXPR:
12254 0 : switch (get_call_combined_fn (_p1))
12255 : {
12256 0 : case CFN_TAN:
12257 0 : if (call_expr_nargs (_p1) == 1)
12258 : {
12259 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12260 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12261 : {
12262 0 : {
12263 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12264 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_TAN, CFN_COS, CFN_SIN);
12265 0 : if (res) return res;
12266 : }
12267 : }
12268 : }
12269 : break;
12270 : default:;
12271 : }
12272 : break;
12273 : default:;
12274 : }
12275 : }
12276 : break;
12277 0 : case CFN_TAN:
12278 0 : if (call_expr_nargs (_p0) == 1)
12279 : {
12280 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12281 0 : switch (TREE_CODE (_p1))
12282 : {
12283 0 : case CALL_EXPR:
12284 0 : switch (get_call_combined_fn (_p1))
12285 : {
12286 0 : case CFN_COS:
12287 0 : if (call_expr_nargs (_p1) == 1)
12288 : {
12289 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12290 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12291 : {
12292 0 : {
12293 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12294 0 : tree res = generic_simplify_203 (loc, type, _p0, _p1, captures, CFN_TAN, CFN_COS, CFN_SIN);
12295 0 : if (res) return res;
12296 : }
12297 : }
12298 : }
12299 : break;
12300 : default:;
12301 : }
12302 : break;
12303 : default:;
12304 : }
12305 : }
12306 : break;
12307 : default:;
12308 : }
12309 : break;
12310 66378623 : default:;
12311 : }
12312 66378623 : switch (TREE_CODE (_p1))
12313 : {
12314 864679 : case CALL_EXPR:
12315 864679 : switch (get_call_combined_fn (_p1))
12316 : {
12317 60 : case CFN_BUILT_IN_POW:
12318 60 : if (call_expr_nargs (_p1) == 2)
12319 : {
12320 60 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12321 60 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12322 60 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12323 : {
12324 0 : switch (TREE_CODE (_q31))
12325 : {
12326 0 : case REAL_CST:
12327 0 : {
12328 0 : {
12329 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12330 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
12331 0 : if (res) return res;
12332 : }
12333 0 : break;
12334 : }
12335 : default:;
12336 : }
12337 : }
12338 : }
12339 : break;
12340 23 : case CFN_BUILT_IN_POWF:
12341 23 : if (call_expr_nargs (_p1) == 2)
12342 : {
12343 23 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12344 23 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12345 23 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12346 : {
12347 0 : switch (TREE_CODE (_q31))
12348 : {
12349 0 : case REAL_CST:
12350 0 : {
12351 0 : {
12352 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12353 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
12354 0 : if (res) return res;
12355 : }
12356 0 : break;
12357 : }
12358 : default:;
12359 : }
12360 : }
12361 : }
12362 : break;
12363 12 : case CFN_BUILT_IN_POWL:
12364 12 : if (call_expr_nargs (_p1) == 2)
12365 : {
12366 12 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12367 12 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12368 12 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12369 : {
12370 0 : switch (TREE_CODE (_q31))
12371 : {
12372 0 : case REAL_CST:
12373 0 : {
12374 0 : {
12375 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12376 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
12377 0 : if (res) return res;
12378 : }
12379 0 : break;
12380 : }
12381 : default:;
12382 : }
12383 : }
12384 : }
12385 : break;
12386 0 : case CFN_POW:
12387 0 : if (call_expr_nargs (_p1) == 2)
12388 : {
12389 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12390 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12391 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12392 : {
12393 0 : switch (TREE_CODE (_q31))
12394 : {
12395 0 : case REAL_CST:
12396 0 : {
12397 0 : {
12398 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12399 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_POW);
12400 0 : if (res) return res;
12401 : }
12402 0 : break;
12403 : }
12404 : default:;
12405 : }
12406 : }
12407 : }
12408 : break;
12409 : default:;
12410 : }
12411 : break;
12412 66378623 : default:;
12413 : }
12414 66378623 : switch (TREE_CODE (_p0))
12415 : {
12416 1 : case VEC_PERM_EXPR:
12417 1 : {
12418 1 : tree _q20 = TREE_OPERAND (_p0, 0);
12419 1 : tree _q21 = TREE_OPERAND (_p0, 1);
12420 1 : tree _q22 = TREE_OPERAND (_p0, 2);
12421 1 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
12422 : {
12423 1 : switch (TREE_CODE (_p1))
12424 : {
12425 0 : case VEC_PERM_EXPR:
12426 0 : {
12427 0 : tree _q60 = TREE_OPERAND (_p1, 0);
12428 0 : tree _q61 = TREE_OPERAND (_p1, 1);
12429 0 : tree _q62 = TREE_OPERAND (_p1, 2);
12430 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
12431 : {
12432 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
12433 : {
12434 0 : {
12435 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
12436 0 : if (VECTOR_INTEGER_TYPE_P (type)
12437 : )
12438 : {
12439 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1487;
12440 0 : {
12441 0 : tree res_op0;
12442 0 : {
12443 0 : tree _o1[2], _r1;
12444 0 : _o1[0] = captures[0];
12445 0 : _o1[1] = captures[2];
12446 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12447 0 : captures[3] = _r1;
12448 : }
12449 0 : res_op0 = unshare_expr (captures[3]);
12450 0 : tree res_op1;
12451 0 : res_op1 = captures[3];
12452 0 : tree res_op2;
12453 0 : res_op2 = captures[1];
12454 0 : tree _r;
12455 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
12456 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 900, __FILE__, __LINE__, true);
12457 0 : return _r;
12458 : }
12459 0 : next_after_fail1487:;
12460 : }
12461 : }
12462 : }
12463 : }
12464 : break;
12465 : }
12466 1 : default:;
12467 : }
12468 1 : switch (TREE_CODE (_q22))
12469 : {
12470 0 : case VECTOR_CST:
12471 0 : {
12472 0 : switch (TREE_CODE (_p1))
12473 : {
12474 0 : case VEC_PERM_EXPR:
12475 0 : {
12476 0 : tree _q60 = TREE_OPERAND (_p1, 0);
12477 0 : tree _q61 = TREE_OPERAND (_p1, 1);
12478 0 : tree _q62 = TREE_OPERAND (_p1, 2);
12479 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
12480 : {
12481 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
12482 : {
12483 0 : switch (TREE_CODE (_q62))
12484 : {
12485 0 : case VECTOR_CST:
12486 0 : {
12487 0 : {
12488 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
12489 0 : tree res = generic_simplify_85 (loc, type, _p0, _p1, captures, MULT_EXPR);
12490 0 : if (res) return res;
12491 : }
12492 0 : break;
12493 : }
12494 : default:;
12495 : }
12496 : }
12497 : }
12498 : break;
12499 : }
12500 : default:;
12501 : }
12502 : break;
12503 : }
12504 : default:;
12505 : }
12506 : }
12507 : break;
12508 : }
12509 2416258 : case CALL_EXPR:
12510 2416258 : switch (get_call_combined_fn (_p0))
12511 : {
12512 115 : case CFN_BUILT_IN_POW:
12513 115 : if (call_expr_nargs (_p0) == 2)
12514 : {
12515 115 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12516 115 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12517 115 : switch (TREE_CODE (_p1))
12518 : {
12519 80 : case CALL_EXPR:
12520 80 : switch (get_call_combined_fn (_p1))
12521 : {
12522 20 : case CFN_BUILT_IN_POW:
12523 20 : if (call_expr_nargs (_p1) == 2)
12524 : {
12525 20 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12526 20 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12527 20 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12528 : {
12529 14 : {
12530 14 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12531 14 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
12532 14 : if (res) return res;
12533 : }
12534 : }
12535 6 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12536 : {
12537 2 : {
12538 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12539 2 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
12540 2 : if (res) return res;
12541 : }
12542 : }
12543 : }
12544 : break;
12545 : default:;
12546 : }
12547 : break;
12548 : default:;
12549 : }
12550 : }
12551 : break;
12552 19 : case CFN_BUILT_IN_POWF:
12553 19 : if (call_expr_nargs (_p0) == 2)
12554 : {
12555 19 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12556 19 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12557 19 : switch (TREE_CODE (_p1))
12558 : {
12559 13 : case CALL_EXPR:
12560 13 : switch (get_call_combined_fn (_p1))
12561 : {
12562 13 : case CFN_BUILT_IN_POWF:
12563 13 : if (call_expr_nargs (_p1) == 2)
12564 : {
12565 13 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12566 13 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12567 13 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12568 : {
12569 12 : {
12570 12 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12571 12 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
12572 12 : if (res) return res;
12573 : }
12574 : }
12575 1 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12576 : {
12577 0 : {
12578 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12579 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
12580 0 : if (res) return res;
12581 : }
12582 : }
12583 : }
12584 : break;
12585 : default:;
12586 : }
12587 : break;
12588 : default:;
12589 : }
12590 : }
12591 : break;
12592 35 : case CFN_BUILT_IN_POWI:
12593 35 : if (call_expr_nargs (_p0) == 2)
12594 : {
12595 35 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12596 35 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12597 35 : switch (TREE_CODE (_p1))
12598 : {
12599 0 : case CALL_EXPR:
12600 0 : switch (get_call_combined_fn (_p1))
12601 : {
12602 0 : case CFN_BUILT_IN_POWI:
12603 0 : if (call_expr_nargs (_p1) == 2)
12604 : {
12605 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12606 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12607 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12608 : {
12609 0 : {
12610 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12611 0 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
12612 : )
12613 : {
12614 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1488;
12615 0 : {
12616 0 : tree res_op0;
12617 0 : {
12618 0 : tree _o1[2], _r1;
12619 0 : _o1[0] = captures[1];
12620 0 : _o1[1] = captures[4];
12621 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12622 0 : res_op0 = _r1;
12623 : }
12624 0 : tree res_op1;
12625 0 : res_op1 = captures[2];
12626 0 : tree _r;
12627 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POWI, type, 2, res_op0, res_op1);
12628 0 : if (!_r)
12629 0 : goto next_after_fail1488;
12630 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 983, __FILE__, __LINE__, true);
12631 0 : return _r;
12632 : }
12633 0 : next_after_fail1488:;
12634 : }
12635 : }
12636 : }
12637 : }
12638 : break;
12639 : default:;
12640 : }
12641 : break;
12642 : default:;
12643 : }
12644 : }
12645 : break;
12646 12 : case CFN_BUILT_IN_POWL:
12647 12 : if (call_expr_nargs (_p0) == 2)
12648 : {
12649 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12650 12 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12651 12 : switch (TREE_CODE (_p1))
12652 : {
12653 12 : case CALL_EXPR:
12654 12 : switch (get_call_combined_fn (_p1))
12655 : {
12656 12 : case CFN_BUILT_IN_POWL:
12657 12 : if (call_expr_nargs (_p1) == 2)
12658 : {
12659 12 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12660 12 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12661 12 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12662 : {
12663 12 : {
12664 12 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12665 12 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
12666 12 : if (res) return res;
12667 : }
12668 : }
12669 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12670 : {
12671 0 : {
12672 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12673 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
12674 0 : if (res) return res;
12675 : }
12676 : }
12677 : }
12678 : break;
12679 : default:;
12680 : }
12681 : break;
12682 : default:;
12683 : }
12684 : }
12685 : break;
12686 0 : case CFN_POW:
12687 0 : if (call_expr_nargs (_p0) == 2)
12688 : {
12689 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12690 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12691 0 : switch (TREE_CODE (_p1))
12692 : {
12693 0 : case CALL_EXPR:
12694 0 : switch (get_call_combined_fn (_p1))
12695 : {
12696 0 : case CFN_POW:
12697 0 : if (call_expr_nargs (_p1) == 2)
12698 : {
12699 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12700 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12701 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12702 : {
12703 0 : {
12704 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12705 0 : tree res = generic_simplify_204 (loc, type, _p0, _p1, captures, CFN_POW);
12706 0 : if (res) return res;
12707 : }
12708 : }
12709 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12710 : {
12711 0 : {
12712 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12713 0 : tree res = generic_simplify_205 (loc, type, _p0, _p1, captures, CFN_POW);
12714 0 : if (res) return res;
12715 : }
12716 : }
12717 : }
12718 : break;
12719 : default:;
12720 : }
12721 : break;
12722 : default:;
12723 : }
12724 : }
12725 : break;
12726 14 : case CFN_BUILT_IN_POWIF:
12727 14 : if (call_expr_nargs (_p0) == 2)
12728 : {
12729 14 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12730 14 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12731 14 : switch (TREE_CODE (_p1))
12732 : {
12733 0 : case CALL_EXPR:
12734 0 : switch (get_call_combined_fn (_p1))
12735 : {
12736 0 : case CFN_BUILT_IN_POWIF:
12737 0 : if (call_expr_nargs (_p1) == 2)
12738 : {
12739 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12740 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12741 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12742 : {
12743 0 : {
12744 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12745 0 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
12746 : )
12747 : {
12748 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1489;
12749 0 : {
12750 0 : tree res_op0;
12751 0 : {
12752 0 : tree _o1[2], _r1;
12753 0 : _o1[0] = captures[1];
12754 0 : _o1[1] = captures[4];
12755 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12756 0 : res_op0 = _r1;
12757 : }
12758 0 : tree res_op1;
12759 0 : res_op1 = captures[2];
12760 0 : tree _r;
12761 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POWIF, type, 2, res_op0, res_op1);
12762 0 : if (!_r)
12763 0 : goto next_after_fail1489;
12764 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 983, __FILE__, __LINE__, true);
12765 0 : return _r;
12766 : }
12767 0 : next_after_fail1489:;
12768 : }
12769 : }
12770 : }
12771 : }
12772 : break;
12773 : default:;
12774 : }
12775 : break;
12776 : default:;
12777 : }
12778 : }
12779 : break;
12780 5 : case CFN_BUILT_IN_POWIL:
12781 5 : if (call_expr_nargs (_p0) == 2)
12782 : {
12783 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12784 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12785 5 : switch (TREE_CODE (_p1))
12786 : {
12787 0 : case CALL_EXPR:
12788 0 : switch (get_call_combined_fn (_p1))
12789 : {
12790 0 : case CFN_BUILT_IN_POWIL:
12791 0 : if (call_expr_nargs (_p1) == 2)
12792 : {
12793 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12794 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12795 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12796 : {
12797 0 : {
12798 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12799 0 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
12800 : )
12801 : {
12802 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1490;
12803 0 : {
12804 0 : tree res_op0;
12805 0 : {
12806 0 : tree _o1[2], _r1;
12807 0 : _o1[0] = captures[1];
12808 0 : _o1[1] = captures[4];
12809 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12810 0 : res_op0 = _r1;
12811 : }
12812 0 : tree res_op1;
12813 0 : res_op1 = captures[2];
12814 0 : tree _r;
12815 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POWIL, type, 2, res_op0, res_op1);
12816 0 : if (!_r)
12817 0 : goto next_after_fail1490;
12818 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 983, __FILE__, __LINE__, true);
12819 0 : return _r;
12820 : }
12821 0 : next_after_fail1490:;
12822 : }
12823 : }
12824 : }
12825 : }
12826 : break;
12827 : default:;
12828 : }
12829 : break;
12830 : default:;
12831 : }
12832 : }
12833 : break;
12834 : default:;
12835 : }
12836 : break;
12837 : default:;
12838 : }
12839 : return NULL_TREE;
12840 : }
12841 : #pragma GCC diagnostic pop
|