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 106756904 : tree_bit_not_with_nop (tree t, tree *res_ops)
11 : {
12 106756904 : const tree type = TREE_TYPE (t);
13 106756904 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 106756904 : if (TREE_SIDE_EFFECTS (t)) return false;
15 106756904 : switch (TREE_CODE (t))
16 : {
17 145109 : case BIT_NOT_EXPR:
18 145109 : {
19 145109 : tree _p0 = TREE_OPERAND (t, 0);
20 145109 : {
21 145109 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
22 145109 : {
23 145109 : res_ops[0] = captures[0];
24 145109 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 2, __FILE__, __LINE__, false);
25 : return true;
26 : }
27 : }
28 21151741 : break;
29 : }
30 21151741 : CASE_CONVERT:
31 21151741 : {
32 21151741 : tree _p0 = TREE_OPERAND (t, 0);
33 21151741 : switch (TREE_CODE (_p0))
34 : {
35 1124 : case BIT_NOT_EXPR:
36 1124 : {
37 1124 : tree _q20 = TREE_OPERAND (_p0, 0);
38 1124 : {
39 1124 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
40 1124 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
41 : )
42 : {
43 615 : {
44 615 : res_ops[0] = captures[0];
45 615 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 3, __FILE__, __LINE__, false);
46 615 : return true;
47 : }
48 : }
49 : }
50 : break;
51 : }
52 : default:;
53 : }
54 : break;
55 : }
56 : default:;
57 : }
58 : return false;
59 : }
60 :
61 : bool
62 82128252 : tree_with_known_nonzero_bits_1 (tree t)
63 : {
64 82128252 : const tree type = TREE_TYPE (t);
65 82128252 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
66 82128252 : if (TREE_SIDE_EFFECTS (t)) return false;
67 82128252 : switch (TREE_CODE (t))
68 : {
69 20265444 : case INTEGER_CST:
70 20265444 : {
71 20265444 : {
72 20265444 : tree captures[1] ATTRIBUTE_UNUSED = { t };
73 20265444 : {
74 20265444 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 37, __FILE__, __LINE__, false);
75 20265444 : return true;
76 : }
77 : }
78 27268994 : break;
79 : }
80 27268994 : case SSA_NAME:
81 27268994 : {
82 27268994 : {
83 27268994 : tree captures[1] ATTRIBUTE_UNUSED = { t };
84 27268994 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
85 : )
86 : {
87 19270618 : {
88 19270618 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 38, __FILE__, __LINE__, false);
89 19270618 : return true;
90 : }
91 : }
92 : }
93 : break;
94 : }
95 : default:;
96 : }
97 : return false;
98 : }
99 :
100 : bool
101 0 : tree_compositional_complex (tree t)
102 : {
103 0 : const tree type = TREE_TYPE (t);
104 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
105 0 : if (TREE_SIDE_EFFECTS (t)) return false;
106 0 : switch (TREE_CODE (t))
107 : {
108 0 : CASE_CONVERT:
109 0 : {
110 0 : tree _p0 = TREE_OPERAND (t, 0);
111 0 : switch (TREE_CODE (_p0))
112 : {
113 0 : case COMPLEX_EXPR:
114 0 : {
115 0 : tree _q20 = TREE_OPERAND (_p0, 0);
116 0 : tree _q21 = TREE_OPERAND (_p0, 1);
117 0 : {
118 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
119 0 : {
120 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 43, __FILE__, __LINE__, false);
121 0 : return true;
122 : }
123 : }
124 : break;
125 : }
126 : default:;
127 : }
128 : break;
129 : }
130 0 : case COMPLEX_EXPR:
131 0 : {
132 0 : tree _p0 = TREE_OPERAND (t, 0);
133 0 : tree _p1 = TREE_OPERAND (t, 1);
134 0 : {
135 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
136 0 : {
137 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 43, __FILE__, __LINE__, false);
138 0 : return true;
139 : }
140 : }
141 : break;
142 : }
143 : default:;
144 : }
145 : return false;
146 : }
147 :
148 : tree
149 0 : generic_simplify_10 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
150 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
151 : const enum tree_code ARG_UNUSED (bit_op))
152 : {
153 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
154 0 : if (bit_op == BIT_AND_EXPR
155 : )
156 : {
157 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail83;
158 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail83;
159 0 : {
160 0 : tree _r;
161 0 : _r = build_zero_cst (type);
162 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 58, __FILE__, __LINE__, true);
163 0 : return _r;
164 : }
165 : next_after_fail83:;
166 : }
167 : else
168 : {
169 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail84;
170 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail84;
171 0 : {
172 0 : tree _r;
173 0 : _r = build_minus_one_cst (type);
174 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 59, __FILE__, __LINE__, true);
175 0 : return _r;
176 : }
177 : next_after_fail84:;
178 : }
179 : return NULL_TREE;
180 : }
181 :
182 : tree
183 0 : generic_simplify_19 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
184 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
185 : {
186 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
187 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail94;
188 0 : {
189 0 : tree res_op0;
190 0 : res_op0 = captures[0];
191 0 : tree res_op1;
192 0 : res_op1 = captures[1];
193 0 : tree _r;
194 0 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
195 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 67, __FILE__, __LINE__, true);
196 : return _r;
197 : }
198 0 : next_after_fail94:;
199 0 : return NULL_TREE;
200 : }
201 :
202 : tree
203 57 : generic_simplify_26 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
204 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
205 : {
206 57 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
207 57 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
208 : )
209 : {
210 33 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail101;
211 33 : {
212 33 : tree res_op0;
213 33 : {
214 33 : tree _o1[1], _r1;
215 33 : _o1[0] = captures[0];
216 33 : if (TREE_TYPE (_o1[0]) != type)
217 : {
218 2 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
219 : }
220 : else
221 : _r1 = _o1[0];
222 33 : res_op0 = _r1;
223 : }
224 33 : tree res_op1;
225 33 : {
226 33 : tree _o1[1], _r1;
227 33 : _o1[0] = captures[1];
228 33 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
229 33 : res_op1 = _r1;
230 : }
231 33 : tree _r;
232 33 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
233 33 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 74, __FILE__, __LINE__, true);
234 33 : return _r;
235 : }
236 0 : next_after_fail101:;
237 : }
238 : return NULL_TREE;
239 : }
240 :
241 : tree
242 7 : generic_simplify_34 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
243 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
244 : const enum tree_code ARG_UNUSED (op))
245 : {
246 7 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
247 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail111;
248 7 : {
249 7 : tree _r;
250 7 : _r = constant_boolean_node (true, type);
251 7 : if (TREE_SIDE_EFFECTS (captures[0]))
252 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
253 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 83, __FILE__, __LINE__, true);
254 : return _r;
255 : }
256 0 : next_after_fail111:;
257 0 : return NULL_TREE;
258 : }
259 :
260 : tree
261 0 : generic_simplify_39 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
262 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
263 : const enum tree_code ARG_UNUSED (op))
264 : {
265 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
266 0 : if (INTEGRAL_TYPE_P (type)
267 0 : && tree_int_cst_sgn (captures[5]) > 0
268 0 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[4])) == 0
269 : )
270 : {
271 0 : {
272 0 : tree t = type;
273 0 : if (!TYPE_OVERFLOW_WRAPS (t))
274 0 : t = unsigned_type_for (t);
275 0 : wide_int wone = wi::one (TYPE_PRECISION (type));
276 0 : wide_int c = wi::add (wi::to_wide (captures[3]),
277 0 : wi::lshift (wone, wi::to_wide (captures[5])));
278 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail116;
279 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail116;
280 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail116;
281 0 : {
282 0 : tree res_op0;
283 0 : {
284 0 : tree _o1[2], _r1;
285 0 : {
286 0 : tree _o2[1], _r2;
287 0 : _o2[0] = captures[2];
288 0 : if (TREE_TYPE (_o2[0]) != t)
289 : {
290 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
291 : }
292 : else
293 : _r2 = _o2[0];
294 0 : _o1[0] = _r2;
295 : }
296 0 : _o1[1] = wide_int_to_tree (t, c);
297 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
298 0 : res_op0 = _r1;
299 : }
300 0 : tree _r;
301 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
302 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 87, __FILE__, __LINE__, true);
303 0 : return _r;
304 : }
305 0 : next_after_fail116:;
306 0 : }
307 : }
308 : return NULL_TREE;
309 : }
310 :
311 : tree
312 18 : generic_simplify_49 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
313 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
314 : const enum tree_code ARG_UNUSED (cmp))
315 : {
316 18 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
317 36 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
318 18 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
319 36 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[3]))
320 : )
321 : {
322 18 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail128;
323 18 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail128;
324 18 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail128;
325 18 : {
326 18 : tree res_op0;
327 18 : {
328 18 : tree _o1[2], _r1;
329 18 : _o1[0] = captures[1];
330 18 : _o1[1] = captures[3];
331 18 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
332 18 : res_op0 = _r1;
333 : }
334 18 : tree res_op1;
335 18 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
336 18 : tree _r;
337 18 : _r = fold_build2_loc (loc, LT_EXPR, type, res_op0, res_op1);
338 18 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 96, __FILE__, __LINE__, true);
339 18 : return _r;
340 : }
341 : next_after_fail128:;
342 : }
343 : return NULL_TREE;
344 : }
345 :
346 : tree
347 46917 : generic_simplify_59 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
348 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
349 : {
350 46917 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
351 46917 : if (!TYPE_SATURATING (type)
352 : )
353 : {
354 46917 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
355 93764 : && !FIXED_POINT_TYPE_P (type)
356 : )
357 : {
358 46847 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail140;
359 46847 : {
360 46847 : tree res_op0;
361 46847 : res_op0 = captures[0];
362 46847 : tree _r;
363 46847 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
364 46847 : if (TREE_SIDE_EFFECTS (captures[1]))
365 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
366 46847 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 108, __FILE__, __LINE__, true);
367 46847 : return _r;
368 : }
369 0 : next_after_fail140:;
370 : }
371 : }
372 : return NULL_TREE;
373 : }
374 :
375 : tree
376 6809237 : generic_simplify_66 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
377 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
378 : const enum tree_code ARG_UNUSED (op))
379 : {
380 6809237 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
381 6809237 : if (!TYPE_SATURATING (type)
382 : )
383 : {
384 6809237 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
385 13237831 : && !FIXED_POINT_TYPE_P (type)
386 : )
387 : {
388 6428594 : if (INTEGRAL_TYPE_P (type)
389 6428302 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
390 5154781 : && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0]))
391 4314365 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
392 3771564 : && !TYPE_OVERFLOW_TRAPS (type)
393 10200158 : && !TYPE_OVERFLOW_SANITIZED (type)
394 : )
395 : {
396 3771293 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail155;
397 3771293 : {
398 3771293 : tree res_op0;
399 3771293 : {
400 3771293 : tree _o1[2], _r1;
401 3771293 : _o1[0] = captures[0];
402 3771293 : _o1[1] = captures[1];
403 3771293 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
404 3771293 : if (EXPR_P (_r1))
405 3756861 : goto next_after_fail155;
406 14432 : res_op0 = _r1;
407 : }
408 14432 : tree _r;
409 14432 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
410 14432 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 123, __FILE__, __LINE__, true);
411 14432 : return _r;
412 : }
413 : next_after_fail155:;
414 : }
415 : }
416 : }
417 : return NULL_TREE;
418 : }
419 :
420 : tree
421 0 : generic_simplify_75 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
422 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
423 : {
424 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
425 0 : if (VECTOR_TYPE_P (type)
426 0 : && known_eq (TYPE_VECTOR_SUBPARTS (type),
427 : TYPE_VECTOR_SUBPARTS (TREE_TYPE (captures[3])))
428 0 : && (TYPE_MODE (TREE_TYPE (type))
429 0 : == TYPE_MODE (TREE_TYPE (TREE_TYPE (captures[3]))))
430 : )
431 : {
432 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail165;
433 0 : {
434 0 : tree res_op0;
435 0 : res_op0 = captures[0];
436 0 : tree res_op1;
437 0 : {
438 0 : tree _o1[1], _r1;
439 0 : {
440 0 : tree _o2[3], _r2;
441 0 : _o2[0] = captures[2];
442 0 : {
443 0 : tree _o3[1], _r3;
444 0 : _o3[0] = captures[3];
445 0 : _r3 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o3[0]), _o3[0]);
446 0 : _o2[1] = _r3;
447 : }
448 0 : _o2[2] = captures[4];
449 0 : _r2 = fold_build3_loc (loc, VEC_COND_EXPR, TREE_TYPE (_o2[1]), _o2[0], _o2[1], _o2[2]);
450 0 : _o1[0] = _r2;
451 : }
452 0 : if (TREE_TYPE (_o1[0]) != type)
453 : {
454 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
455 : }
456 : else
457 : _r1 = _o1[0];
458 0 : res_op1 = _r1;
459 : }
460 0 : tree _r;
461 0 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
462 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 133, __FILE__, __LINE__, true);
463 0 : return _r;
464 : }
465 0 : next_after_fail165:;
466 : }
467 : return NULL_TREE;
468 : }
469 :
470 : tree
471 85 : generic_simplify_84 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
472 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
473 : {
474 85 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
475 85 : if (INTEGRAL_TYPE_P (type)
476 85 : || (VECTOR_INTEGER_TYPE_P (type)
477 : && ((optimize_vectors_before_lowering_p ()
478 1 : && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST)
479 0 : || target_supports_op_p (type, TRUNC_MOD_EXPR,
480 : optab_vector)))
481 : )
482 : {
483 85 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail175;
484 85 : {
485 85 : tree res_op0;
486 85 : {
487 85 : tree _o1[2], _r1;
488 85 : _o1[0] = captures[0];
489 85 : _o1[1] = captures[1];
490 85 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
491 85 : res_op0 = _r1;
492 : }
493 85 : tree _r;
494 85 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
495 85 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 143, __FILE__, __LINE__, true);
496 85 : return _r;
497 : }
498 0 : next_after_fail175:;
499 : }
500 : return NULL_TREE;
501 : }
502 :
503 : tree
504 1 : generic_simplify_91 (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 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
508 1 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
509 1 : && tree_nop_conversion_p (type, TREE_TYPE (captures[3]))
510 : )
511 : {
512 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail182;
513 1 : {
514 1 : tree res_op0;
515 1 : {
516 1 : tree _o1[2], _r1;
517 1 : {
518 1 : tree _o2[1], _r2;
519 1 : _o2[0] = captures[3];
520 1 : _r2 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
521 1 : _o1[0] = _r2;
522 : }
523 1 : _o1[1] = captures[0];
524 1 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
525 1 : res_op0 = _r1;
526 : }
527 1 : tree _r;
528 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
529 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 150, __FILE__, __LINE__, true);
530 1 : return _r;
531 : }
532 0 : next_after_fail182:;
533 : }
534 : return NULL_TREE;
535 : }
536 :
537 : tree
538 668 : generic_simplify_99 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
539 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
540 : {
541 668 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
542 668 : if (!TYPE_SATURATING (type)
543 : )
544 : {
545 668 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
546 1336 : && !FIXED_POINT_TYPE_P (type)
547 : )
548 : {
549 668 : if (!ANY_INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_WRAPS (type)
550 : )
551 : {
552 28 : if (!CONSTANT_CLASS_P (captures[2])
553 : )
554 : {
555 28 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail192;
556 28 : {
557 28 : tree res_op0;
558 28 : {
559 28 : tree _o1[1], _r1;
560 28 : _o1[0] = captures[2];
561 28 : if (TREE_TYPE (_o1[0]) != type)
562 : {
563 28 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
564 : }
565 : else
566 : _r1 = _o1[0];
567 28 : res_op0 = _r1;
568 : }
569 28 : tree res_op1;
570 28 : {
571 28 : tree _o1[2], _r1;
572 28 : _o1[0] = captures[0];
573 28 : {
574 28 : tree _o2[1], _r2;
575 28 : _o2[0] = captures[1];
576 28 : if (TREE_TYPE (_o2[0]) != type)
577 : {
578 28 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o2[0]);
579 : }
580 : else
581 : _r2 = _o2[0];
582 28 : _o1[1] = _r2;
583 : }
584 28 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
585 28 : if (EXPR_P (_r1))
586 0 : goto next_after_fail192;
587 28 : res_op1 = _r1;
588 : }
589 28 : tree _r;
590 28 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
591 28 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 159, __FILE__, __LINE__, true);
592 28 : return _r;
593 : }
594 : next_after_fail192:;
595 : }
596 : }
597 : else
598 : {
599 1280 : if (!ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
600 1280 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
601 : )
602 : {
603 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail193;
604 1 : {
605 1 : tree res_op0;
606 1 : {
607 1 : tree _o1[2], _r1;
608 1 : _o1[0] = captures[2];
609 1 : {
610 1 : tree _o2[2], _r2;
611 1 : {
612 1 : tree _o3[1], _r3;
613 1 : _o3[0] = captures[0];
614 1 : if (TREE_TYPE (_o3[0]) != TREE_TYPE (_o1[0]))
615 : {
616 1 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, TREE_TYPE (_o1[0]), _o3[0]);
617 : }
618 : else
619 : _r3 = _o3[0];
620 1 : _o2[0] = _r3;
621 : }
622 1 : _o2[1] = captures[1];
623 1 : _r2 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
624 1 : if (EXPR_P (_r2))
625 0 : goto next_after_fail193;
626 1 : _o1[1] = _r2;
627 : }
628 1 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
629 1 : res_op0 = _r1;
630 : }
631 1 : tree _r;
632 1 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
633 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 160, __FILE__, __LINE__, true);
634 1 : return _r;
635 : }
636 : next_after_fail193:;
637 : }
638 : else
639 : {
640 639 : if (types_match (type, captures[2]) && !TYPE_OVERFLOW_SANITIZED (type)
641 : )
642 : {
643 630 : {
644 630 : tree cst = const_binop (MINUS_EXPR, type, captures[0], captures[1]);
645 630 : if (cst && !TREE_OVERFLOW (cst)
646 : )
647 : {
648 630 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail194;
649 630 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail194;
650 630 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail194;
651 630 : {
652 630 : tree res_op0;
653 630 : res_op0 = cst;
654 630 : tree res_op1;
655 630 : res_op1 = captures[2];
656 630 : tree _r;
657 630 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
658 630 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 161, __FILE__, __LINE__, true);
659 630 : return _r;
660 : }
661 : next_after_fail194:;
662 : }
663 : }
664 : }
665 : }
666 : }
667 : }
668 : }
669 : return NULL_TREE;
670 : }
671 :
672 : tree
673 1 : generic_simplify_128 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
674 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
675 : {
676 1 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
677 1 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail225;
678 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail225;
679 1 : {
680 1 : tree _r;
681 1 : _r = captures[0];
682 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 187, __FILE__, __LINE__, true);
683 : return _r;
684 : }
685 : next_after_fail225:;
686 : return NULL_TREE;
687 : }
688 :
689 : tree
690 0 : generic_simplify_137 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
691 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
692 : const enum tree_code ARG_UNUSED (op))
693 : {
694 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
695 0 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[3]))
696 0 : && tree_nop_conversion_p (type, TREE_TYPE (captures[6]))
697 : )
698 : {
699 0 : if (single_use (captures[4]) && single_use (captures[5])
700 : )
701 : {
702 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail236;
703 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail236;
704 0 : {
705 0 : tree res_op0;
706 0 : res_op0 = captures[0];
707 0 : tree res_op1;
708 0 : {
709 0 : tree _o1[1], _r1;
710 0 : _o1[0] = captures[6];
711 0 : if (TREE_TYPE (_o1[0]) != type)
712 : {
713 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
714 : }
715 : else
716 : _r1 = _o1[0];
717 0 : res_op1 = _r1;
718 : }
719 0 : tree _r;
720 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
721 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 192, __FILE__, __LINE__, true);
722 0 : return _r;
723 : }
724 : next_after_fail236:;
725 : }
726 : else
727 : {
728 : if (single_use (captures[0]) && single_use (captures[1])
729 : )
730 : {
731 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail237;
732 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail237;
733 : {
734 : tree res_op0;
735 : {
736 : tree _o1[1], _r1;
737 : _o1[0] = captures[3];
738 : if (TREE_TYPE (_o1[0]) != type)
739 : {
740 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
741 : }
742 : else
743 : _r1 = _o1[0];
744 : res_op0 = _r1;
745 : }
746 : tree res_op1;
747 : res_op1 = captures[4];
748 : tree _r;
749 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
750 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 193, __FILE__, __LINE__, true);
751 : return _r;
752 : }
753 : next_after_fail237:;
754 : }
755 : }
756 : }
757 : return NULL_TREE;
758 : }
759 :
760 : tree
761 300 : generic_simplify_152 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
762 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
763 : {
764 300 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
765 300 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail257;
766 300 : {
767 300 : if (! tree_invariant_p (captures[1])) goto next_after_fail257;
768 0 : tree res_op0;
769 0 : {
770 0 : tree _o1[2], _r1;
771 0 : {
772 0 : tree _o2[2], _r2;
773 0 : _o2[0] = unshare_expr (captures[1]);
774 0 : _o2[1] = captures[4];
775 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
776 0 : _o1[0] = _r2;
777 : }
778 0 : _o1[1] = captures[2];
779 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
780 0 : res_op0 = _r1;
781 : }
782 0 : tree res_op1;
783 0 : res_op1 = captures[1];
784 0 : tree _r;
785 0 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
786 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 206, __FILE__, __LINE__, true);
787 : return _r;
788 : }
789 : next_after_fail257:;
790 : return NULL_TREE;
791 : }
792 :
793 : tree
794 0 : generic_simplify_160 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
795 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
796 : const enum tree_code ARG_UNUSED (cmp))
797 : {
798 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
799 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail283;
800 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail283;
801 0 : {
802 0 : tree res_op0;
803 0 : {
804 0 : tree _o1[2], _r1;
805 0 : _o1[0] = build_zero_cst (TREE_TYPE (captures[0]));
806 0 : _o1[1] = captures[2];
807 0 : _r1 = fold_build2_loc (loc, cmp, type, _o1[0], _o1[1]);
808 0 : res_op0 = _r1;
809 : }
810 0 : tree res_op1;
811 0 : res_op1 = captures[3];
812 0 : tree _r;
813 0 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
814 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 225, __FILE__, __LINE__, true);
815 : return _r;
816 : }
817 : next_after_fail283:;
818 : return NULL_TREE;
819 : }
820 :
821 : tree
822 4 : generic_simplify_167 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
823 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
824 : {
825 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
826 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail303;
827 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail303;
828 4 : {
829 4 : tree _r;
830 4 : _r = constant_boolean_node (true, type);
831 4 : if (TREE_SIDE_EFFECTS (captures[1]))
832 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
833 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 226, __FILE__, __LINE__, true);
834 : return _r;
835 : }
836 : next_after_fail303:;
837 : return NULL_TREE;
838 : }
839 :
840 : tree
841 2 : generic_simplify_170 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
842 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
843 : {
844 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
845 4 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
846 4 : && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))
847 : )
848 : {
849 2 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail307;
850 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail307;
851 2 : {
852 2 : tree res_op0;
853 2 : res_op0 = captures[3];
854 2 : tree res_op1;
855 2 : {
856 2 : tree _o1[2], _r1;
857 2 : _o1[0] = captures[1];
858 2 : _o1[1] = build_int_cst (TREE_TYPE (captures[1]), 1);
859 2 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
860 2 : res_op1 = _r1;
861 : }
862 2 : tree _r;
863 2 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
864 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 209, __FILE__, __LINE__, true);
865 2 : return _r;
866 : }
867 : next_after_fail307:;
868 : }
869 : return NULL_TREE;
870 : }
871 :
872 : tree
873 4 : generic_simplify_177 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
874 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
875 : const combined_fn ARG_UNUSED (COPYSIGN_ALL))
876 : {
877 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
878 4 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
879 : )
880 : {
881 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail314;
882 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail314;
883 0 : {
884 0 : tree res_op0;
885 0 : res_op0 = captures[0];
886 0 : tree _r;
887 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
888 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 234, __FILE__, __LINE__, true);
889 0 : return _r;
890 : }
891 : next_after_fail314:;
892 : }
893 : return NULL_TREE;
894 : }
895 :
896 : tree
897 6089077 : generic_simplify_180 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
898 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
899 : const enum tree_code ARG_UNUSED (op))
900 : {
901 6089077 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
902 6089077 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail317;
903 6089077 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail317;
904 6089077 : {
905 6089077 : tree res_op0;
906 6089077 : res_op0 = captures[0];
907 6089077 : tree _r;
908 6089077 : _r = non_lvalue_loc (loc, res_op0);
909 6089077 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 236, __FILE__, __LINE__, true);
910 : return _r;
911 : }
912 : next_after_fail317:;
913 : return NULL_TREE;
914 : }
915 :
916 : tree
917 0 : generic_simplify_184 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
918 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
919 : {
920 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
921 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail321;
922 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail321;
923 0 : {
924 0 : tree _r;
925 0 : _r = build_zero_cst (type);
926 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 239, __FILE__, __LINE__, true);
927 : return _r;
928 : }
929 : next_after_fail321:;
930 : return NULL_TREE;
931 : }
932 :
933 : tree
934 0 : generic_simplify_189 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
935 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
936 : const enum tree_code ARG_UNUSED (cmp))
937 : {
938 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
939 0 : if (fold_before_rtl_expansion_p ()
940 : )
941 : {
942 0 : if (INTEGRAL_TYPE_P (type)
943 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
944 : )
945 : {
946 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail328;
947 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail328;
948 0 : {
949 0 : tree res_op0;
950 0 : res_op0 = captures[0];
951 0 : tree res_op1;
952 0 : res_op1 = captures[3];
953 0 : tree res_op2;
954 0 : res_op2 = build_zero_cst (type);
955 0 : tree _r;
956 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
957 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 243, __FILE__, __LINE__, true);
958 0 : return _r;
959 : }
960 : next_after_fail328:;
961 : }
962 : }
963 : return NULL_TREE;
964 : }
965 :
966 : tree
967 5769 : generic_simplify_193 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
968 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
969 : const enum tree_code ARG_UNUSED (op))
970 : {
971 5769 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
972 5769 : {
973 5769 : poly_widest_int factor;
974 5769 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
975 5738 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
976 11507 : && multiple_p (wi::to_poly_widest (captures[3]), wi::to_widest (captures[1]), &factor)
977 : )
978 : {
979 5692 : {
980 5692 : wi::overflow_type overflow;
981 5692 : wide_int mul;
982 5692 : if (types_match (type, TREE_TYPE (captures[2]))
983 5646 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
984 0 : && TREE_CODE (captures[2]) == INTEGER_CST
985 0 : && TREE_CODE (captures[3]) == INTEGER_CST
986 5692 : && (mul = wi::mul (wi::to_wide (captures[2]), wi::to_wide (captures[3]),
987 0 : TYPE_SIGN (type), &overflow),
988 0 : !overflow)
989 5692 : && (TYPE_UNSIGNED (type)
990 5692 : || known_eq (factor, 1)
991 0 : || (get_range_pos_neg (captures[0])
992 0 : | (((op == PLUS_EXPR) ^ (tree_int_cst_sgn (captures[2]) < 0))
993 0 : ? 1 : 2)) != 3)
994 : )
995 : {
996 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail332;
997 0 : {
998 0 : tree res_op0;
999 0 : {
1000 0 : tree _o1[2], _r1;
1001 0 : _o1[0] = captures[0];
1002 0 : _o1[1] = wide_int_to_tree (type, factor);
1003 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1004 0 : res_op0 = _r1;
1005 : }
1006 0 : tree res_op1;
1007 0 : res_op1 = wide_int_to_tree (type, mul);
1008 0 : tree _r;
1009 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1010 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1011 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1012 0 : if (TREE_SIDE_EFFECTS (captures[2]))
1013 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1014 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1015 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1016 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 247, __FILE__, __LINE__, true);
1017 0 : return _r;
1018 : }
1019 0 : next_after_fail332:;
1020 : }
1021 : else
1022 : {
1023 5692 : {
1024 5692 : tree utype = unsigned_type_for (type);
1025 5692 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail333;
1026 5692 : {
1027 5692 : tree res_op0;
1028 5692 : {
1029 5692 : tree _o1[2], _r1;
1030 5692 : {
1031 5692 : tree _o2[2], _r2;
1032 5692 : {
1033 5692 : tree _o3[1], _r3;
1034 5692 : _o3[0] = captures[0];
1035 5692 : if (TREE_TYPE (_o3[0]) != utype)
1036 : {
1037 5692 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
1038 : }
1039 : else
1040 : _r3 = _o3[0];
1041 5692 : _o2[0] = _r3;
1042 : }
1043 5692 : _o2[1] = wide_int_to_tree (utype, factor);
1044 5692 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1045 5692 : _o1[0] = _r2;
1046 : }
1047 5692 : {
1048 5692 : tree _o2[2], _r2;
1049 5692 : {
1050 5692 : tree _o3[1], _r3;
1051 5692 : _o3[0] = captures[3];
1052 5692 : if (TREE_TYPE (_o3[0]) != utype)
1053 : {
1054 14 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
1055 : }
1056 : else
1057 : _r3 = _o3[0];
1058 5692 : _o2[0] = _r3;
1059 : }
1060 5692 : {
1061 5692 : tree _o3[1], _r3;
1062 5692 : _o3[0] = captures[2];
1063 5692 : if (TREE_TYPE (_o3[0]) != utype)
1064 : {
1065 46 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
1066 : }
1067 : else
1068 : _r3 = _o3[0];
1069 5692 : _o2[1] = _r3;
1070 : }
1071 5692 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1072 5692 : _o1[1] = _r2;
1073 : }
1074 5692 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1075 5692 : res_op0 = _r1;
1076 : }
1077 5692 : tree _r;
1078 5692 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1079 5692 : if (TREE_SIDE_EFFECTS (captures[1]))
1080 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1081 5692 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 248, __FILE__, __LINE__, true);
1082 5692 : return _r;
1083 : }
1084 0 : next_after_fail333:;
1085 : }
1086 : }
1087 0 : }
1088 : }
1089 5769 : }
1090 77 : return NULL_TREE;
1091 : }
1092 :
1093 : tree
1094 54220 : generic_simplify_222 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1095 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1096 : const enum tree_code ARG_UNUSED (neeq))
1097 : {
1098 54220 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1099 54220 : {
1100 54220 : poly_int64 diff; tree inner_type = TREE_TYPE (captures[1]);
1101 54220 : if (ptr_difference_const (captures[2], captures[0], &diff)
1102 : )
1103 : {
1104 11304 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail378;
1105 11304 : {
1106 11304 : tree res_op0;
1107 11304 : res_op0 = build_int_cst_type (inner_type, diff);
1108 11304 : tree res_op1;
1109 11304 : res_op1 = captures[1];
1110 11304 : tree _r;
1111 11304 : _r = fold_build2_loc (loc, neeq, type, res_op0, res_op1);
1112 11304 : if (TREE_SIDE_EFFECTS (captures[0]))
1113 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1114 11304 : if (TREE_SIDE_EFFECTS (captures[2]))
1115 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1116 11304 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 291, __FILE__, __LINE__, true);
1117 11304 : return _r;
1118 : }
1119 0 : next_after_fail378:;
1120 : }
1121 : }
1122 42916 : return NULL_TREE;
1123 : }
1124 :
1125 : tree
1126 725 : generic_simplify_230 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1127 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1128 : const enum tree_code ARG_UNUSED (cmp))
1129 : {
1130 725 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1131 725 : if (wi::gt_p (wi::to_wide (captures[1]), wi::to_wide (captures[2]),
1132 725 : TYPE_SIGN (TREE_TYPE (captures[0])))
1133 : )
1134 : {
1135 42 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail387;
1136 42 : {
1137 42 : tree _r;
1138 42 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1139 42 : if (TREE_SIDE_EFFECTS (captures[0]))
1140 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1141 42 : if (TREE_SIDE_EFFECTS (captures[1]))
1142 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1143 42 : if (TREE_SIDE_EFFECTS (captures[2]))
1144 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1145 42 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 300, __FILE__, __LINE__, true);
1146 42 : return _r;
1147 : }
1148 0 : next_after_fail387:;
1149 : }
1150 : else
1151 : {
1152 683 : if (wi::lt_p (wi::to_wide (captures[1]), wi::to_wide (captures[2]),
1153 683 : TYPE_SIGN (TREE_TYPE (captures[0])))
1154 : )
1155 : {
1156 683 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail388;
1157 683 : {
1158 683 : tree res_op0;
1159 683 : res_op0 = captures[0];
1160 683 : tree res_op1;
1161 683 : res_op1 = captures[2];
1162 683 : tree _r;
1163 683 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1164 683 : if (TREE_SIDE_EFFECTS (captures[1]))
1165 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1166 683 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 301, __FILE__, __LINE__, true);
1167 683 : return _r;
1168 : }
1169 0 : next_after_fail388:;
1170 : }
1171 : }
1172 : return NULL_TREE;
1173 : }
1174 :
1175 : tree
1176 47 : generic_simplify_241 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1177 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
1178 : {
1179 47 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1180 47 : if (TREE_CODE (TREE_TYPE (captures[1])) != COMPLEX_TYPE
1181 47 : && (!VECTOR_MODE_P (TYPE_MODE (TREE_TYPE (captures[1])))
1182 7 : || !target_supports_op_p (TREE_TYPE (captures[1]), TRUNC_DIV_EXPR,
1183 : optab_vector)
1184 0 : || target_supports_op_p (TREE_TYPE (captures[1]), TRUNC_MOD_EXPR,
1185 : optab_vector))
1186 : )
1187 : {
1188 47 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail409;
1189 47 : {
1190 47 : tree res_op0;
1191 47 : {
1192 47 : tree _o1[2], _r1;
1193 47 : _o1[0] = captures[1];
1194 47 : _o1[1] = captures[2];
1195 47 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1196 47 : res_op0 = _r1;
1197 : }
1198 47 : tree res_op1;
1199 47 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
1200 47 : tree _r;
1201 47 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
1202 47 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 322, __FILE__, __LINE__, true);
1203 47 : return _r;
1204 : }
1205 0 : next_after_fail409:;
1206 : }
1207 : return NULL_TREE;
1208 : }
1209 :
1210 : tree
1211 61676 : generic_simplify_249 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1212 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1213 : const enum tree_code ARG_UNUSED (cmp))
1214 : {
1215 61676 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1216 123352 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1217 123352 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
1218 139740 : && wi::to_wide (captures[1]) != 0
1219 : )
1220 : {
1221 16388 : {
1222 16388 : widest_int quot;
1223 16388 : if (wi::multiple_of_p (wi::to_widest (captures[2]), wi::to_widest (captures[1]),
1224 16388 : TYPE_SIGN (TREE_TYPE (captures[0])), ")
1225 : )
1226 : {
1227 12377 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail420;
1228 12377 : {
1229 12377 : tree res_op0;
1230 12377 : res_op0 = captures[0];
1231 12377 : tree res_op1;
1232 12377 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[0]), quot);
1233 12377 : tree _r;
1234 12377 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1235 12377 : if (TREE_SIDE_EFFECTS (captures[1]))
1236 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1237 12377 : if (TREE_SIDE_EFFECTS (captures[2]))
1238 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1239 12377 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 332, __FILE__, __LINE__, true);
1240 12377 : return _r;
1241 : }
1242 0 : next_after_fail420:;
1243 : }
1244 : else
1245 : {
1246 4011 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail421;
1247 4011 : {
1248 4011 : tree _r;
1249 4011 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1250 4011 : if (TREE_SIDE_EFFECTS (captures[0]))
1251 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1252 4011 : if (TREE_SIDE_EFFECTS (captures[1]))
1253 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1254 4011 : if (TREE_SIDE_EFFECTS (captures[2]))
1255 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1256 4011 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 333, __FILE__, __LINE__, true);
1257 4011 : return _r;
1258 : }
1259 0 : next_after_fail421:;
1260 : }
1261 16388 : }
1262 : }
1263 : else
1264 : {
1265 90576 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1266 45288 : && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0]))
1267 90576 : && (wi::bit_and (wi::to_wide (captures[1]), 1) == 1)
1268 : )
1269 : {
1270 1077 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail422;
1271 1077 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail422;
1272 1077 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail422;
1273 1077 : {
1274 1077 : tree res_op0;
1275 1077 : res_op0 = captures[0];
1276 1077 : tree res_op1;
1277 1077 : tree itype = TREE_TYPE (captures[0]);
1278 1077 : int p = TYPE_PRECISION (itype);
1279 1077 : wide_int m = wi::one (p + 1) << p;
1280 1077 : wide_int a = wide_int::from (wi::to_wide (captures[1]), p + 1, UNSIGNED);
1281 1077 : wide_int i = wide_int::from (wi::mod_inv (a, m),
1282 2154 : p, TYPE_SIGN (itype)); res_op1 =
1283 1077 : wide_int_to_tree (itype, wi::mul (i, wi::to_wide (captures[2])));
1284 1077 : tree _r;
1285 1077 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1286 1077 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 334, __FILE__, __LINE__, true);
1287 1077 : return _r;
1288 1077 : }
1289 : next_after_fail422:;
1290 : }
1291 : }
1292 : return NULL_TREE;
1293 : }
1294 :
1295 : tree
1296 5979251 : generic_simplify_265 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1297 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1298 : const enum tree_code ARG_UNUSED (cmp))
1299 : {
1300 5979251 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1301 11958478 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1302 2476010 : && !(targetm.have_canonicalize_funcptr_for_compare ()
1303 0 : && ((POINTER_TYPE_P (TREE_TYPE (captures[1]))
1304 0 : && FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[1]))))
1305 0 : || (POINTER_TYPE_P (TREE_TYPE (captures[3]))
1306 0 : && FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[3]))))))
1307 5979251 : && single_use (captures[0])
1308 : )
1309 : {
1310 2476010 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[0]))
1311 1736938 : && (TREE_CODE (captures[3]) == INTEGER_CST
1312 1736938 : || captures[2] != captures[3])
1313 1736938 : && (TYPE_UNSIGNED (TREE_TYPE (captures[1])) == TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1314 : || cmp == NE_EXPR
1315 987335 : || cmp == EQ_EXPR)
1316 788748 : && !POINTER_TYPE_P (TREE_TYPE (captures[1]))
1317 3152531 : && (TREE_CODE (TREE_TYPE (captures[1])) != BOOLEAN_TYPE
1318 390 : || TREE_CODE (TREE_TYPE (captures[3])) == BOOLEAN_TYPE)
1319 : )
1320 : {
1321 676521 : if (TREE_CODE (captures[2]) == INTEGER_CST
1322 : )
1323 : {
1324 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail480;
1325 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail480;
1326 0 : {
1327 0 : tree res_op0;
1328 0 : res_op0 = captures[1];
1329 0 : tree res_op1;
1330 0 : res_op1 = force_fit_type (TREE_TYPE (captures[1]),
1331 0 : wide_int::from (wi::to_wide (captures[2]),
1332 0 : MAX (TYPE_PRECISION (TREE_TYPE (captures[2])),
1333 : TYPE_PRECISION (TREE_TYPE (captures[1]))),
1334 0 : TYPE_SIGN (TREE_TYPE (captures[2]))),
1335 0 : 0, TREE_OVERFLOW (captures[2]));
1336 0 : tree _r;
1337 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1338 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1339 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1340 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 391, __FILE__, __LINE__, true);
1341 0 : return _r;
1342 : }
1343 : next_after_fail480:;
1344 : }
1345 : else
1346 : {
1347 676521 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail481;
1348 584544 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail481;
1349 584544 : {
1350 584544 : tree res_op0;
1351 584544 : res_op0 = captures[1];
1352 584544 : tree res_op1;
1353 584544 : {
1354 584544 : tree _o1[1], _r1;
1355 584544 : _o1[0] = captures[2];
1356 584544 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1357 : {
1358 584422 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1359 : }
1360 : else
1361 : _r1 = _o1[0];
1362 584544 : res_op1 = _r1;
1363 : }
1364 584544 : tree _r;
1365 584544 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1366 584544 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 392, __FILE__, __LINE__, true);
1367 584544 : return _r;
1368 : }
1369 : next_after_fail481:;
1370 : }
1371 : }
1372 : else
1373 : {
1374 1799489 : if (TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))
1375 : )
1376 : {
1377 680136 : if ((cmp == EQ_EXPR || cmp == NE_EXPR
1378 220853 : || TYPE_UNSIGNED (TREE_TYPE (captures[0])) == TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1379 113051 : || (!TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1380 111979 : && TYPE_UNSIGNED (TREE_TYPE (captures[1]))))
1381 899917 : && (types_match (TREE_TYPE (captures[3]), TREE_TYPE (captures[1]))
1382 114099 : || ((TYPE_PRECISION (TREE_TYPE (captures[1]))
1383 114099 : >= TYPE_PRECISION (TREE_TYPE (captures[3])))
1384 48728 : && (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
1385 48728 : == TYPE_UNSIGNED (TREE_TYPE (captures[3]))))
1386 77217 : || (TREE_CODE (captures[2]) == INTEGER_CST
1387 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1388 0 : && int_fits_type_p (captures[2], TREE_TYPE (captures[1]))))
1389 : )
1390 : {
1391 601847 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail482;
1392 601847 : {
1393 601847 : tree res_op0;
1394 601847 : res_op0 = captures[1];
1395 601847 : tree res_op1;
1396 601847 : {
1397 601847 : tree _o1[1], _r1;
1398 601847 : _o1[0] = captures[3];
1399 601847 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
1400 : {
1401 131194 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
1402 : }
1403 : else
1404 : _r1 = _o1[0];
1405 601847 : res_op1 = _r1;
1406 : }
1407 601847 : tree _r;
1408 601847 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1409 601847 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 393, __FILE__, __LINE__, true);
1410 601847 : return _r;
1411 : }
1412 0 : next_after_fail482:;
1413 : }
1414 : else
1415 : {
1416 78289 : if (TREE_CODE (captures[2]) == INTEGER_CST
1417 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1418 78289 : && !int_fits_type_p (captures[2], TREE_TYPE (captures[1]))
1419 : )
1420 : {
1421 0 : {
1422 0 : tree min = lower_bound_in_type (TREE_TYPE (captures[3]), TREE_TYPE (captures[1]));
1423 0 : tree max = upper_bound_in_type (TREE_TYPE (captures[3]), TREE_TYPE (captures[1]));
1424 0 : bool above = integer_nonzerop (const_binop (LT_EXPR, type, max, captures[2]));
1425 0 : bool below = integer_nonzerop (const_binop (LT_EXPR, type, captures[2], min));
1426 0 : if (above || below
1427 : )
1428 : {
1429 0 : if (cmp == EQ_EXPR || cmp == NE_EXPR
1430 : )
1431 : {
1432 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail483;
1433 0 : {
1434 0 : tree _r;
1435 0 : _r = constant_boolean_node (cmp == EQ_EXPR ? false : true, type);
1436 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1437 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1438 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1439 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1440 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 394, __FILE__, __LINE__, true);
1441 0 : return _r;
1442 : }
1443 0 : next_after_fail483:;
1444 : }
1445 : else
1446 : {
1447 0 : if (cmp == LT_EXPR || cmp == LE_EXPR
1448 : )
1449 : {
1450 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail484;
1451 0 : {
1452 0 : tree _r;
1453 0 : _r = constant_boolean_node (above ? true : false, type);
1454 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1455 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1456 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1457 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1458 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 395, __FILE__, __LINE__, true);
1459 0 : return _r;
1460 : }
1461 0 : next_after_fail484:;
1462 : }
1463 : else
1464 : {
1465 0 : if (cmp == GT_EXPR || cmp == GE_EXPR
1466 : )
1467 : {
1468 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail485;
1469 0 : {
1470 0 : tree _r;
1471 0 : _r = constant_boolean_node (above ? false : true, type);
1472 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1473 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1474 0 : if (TREE_SIDE_EFFECTS (captures[3]))
1475 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
1476 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 396, __FILE__, __LINE__, true);
1477 0 : return _r;
1478 : }
1479 0 : next_after_fail485:;
1480 : }
1481 : }
1482 : }
1483 : }
1484 : }
1485 : }
1486 : }
1487 : }
1488 : }
1489 : }
1490 : else
1491 : {
1492 6963958 : if (FLOAT_TYPE_P (TREE_TYPE (captures[1]))
1493 85130 : && (DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1494 42565 : == DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[1])))
1495 3588363 : && (DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1496 42561 : == DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[3])))
1497 : )
1498 : {
1499 42557 : {
1500 42557 : tree type1 = TREE_TYPE (captures[3]);
1501 42557 : if (TREE_CODE (captures[3]) == REAL_CST && !DECIMAL_FLOAT_TYPE_P (type1))
1502 : {
1503 0 : REAL_VALUE_TYPE orig = TREE_REAL_CST (captures[3]);
1504 0 : if (TYPE_PRECISION (type1) > TYPE_PRECISION (float_type_node)
1505 0 : && exact_real_truncate (TYPE_MODE (float_type_node), &orig))
1506 0 : type1 = float_type_node;
1507 0 : if (TYPE_PRECISION (type1) > TYPE_PRECISION (double_type_node)
1508 0 : && exact_real_truncate (TYPE_MODE (double_type_node), &orig))
1509 0 : type1 = double_type_node;
1510 : }
1511 42557 : tree newtype
1512 42557 : = (element_precision (TREE_TYPE (captures[1])) > element_precision (type1)
1513 42557 : ? TREE_TYPE (captures[1]) : type1);
1514 42557 : if (element_precision (TREE_TYPE (captures[0])) > element_precision (newtype)
1515 42557 : && (!VECTOR_TYPE_P (type) || is_truth_type_for (newtype, type))
1516 : )
1517 : {
1518 1527 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail486;
1519 1527 : {
1520 1527 : tree res_op0;
1521 1527 : {
1522 1527 : tree _o1[1], _r1;
1523 1527 : _o1[0] = captures[1];
1524 1527 : if (TREE_TYPE (_o1[0]) != newtype)
1525 : {
1526 9 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
1527 : }
1528 : else
1529 : _r1 = _o1[0];
1530 1527 : res_op0 = _r1;
1531 : }
1532 1527 : tree res_op1;
1533 1527 : {
1534 1527 : tree _o1[1], _r1;
1535 1527 : _o1[0] = captures[3];
1536 1527 : if (TREE_TYPE (_o1[0]) != newtype)
1537 : {
1538 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, newtype, _o1[0]);
1539 : }
1540 : else
1541 : _r1 = _o1[0];
1542 1527 : res_op1 = _r1;
1543 : }
1544 1527 : tree _r;
1545 1527 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1546 1527 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 397, __FILE__, __LINE__, true);
1547 1527 : return _r;
1548 : }
1549 0 : next_after_fail486:;
1550 : }
1551 : }
1552 : }
1553 : }
1554 : return NULL_TREE;
1555 : }
1556 :
1557 : tree
1558 374 : generic_simplify_294 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1559 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1560 : const enum tree_code ARG_UNUSED (op),
1561 : const combined_fn ARG_UNUSED (ctz))
1562 : {
1563 374 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1564 374 : {
1565 374 : tree type0 = TREE_TYPE (captures[1]);
1566 374 : int prec = TYPE_PRECISION (type0);
1567 374 : bool ok = true;
1568 374 : if (sanitize_flags_p (SANITIZE_BUILTIN)
1569 374 : && (!cfun
1570 64 : || (cfun->curr_properties & PROP_ssa) == 0))
1571 : ok = false;
1572 620 : if (ok && prec <= MAX_FIXED_MODE_SIZE
1573 : )
1574 : {
1575 310 : if (tree_int_cst_sgn (captures[2]) < 0 || wi::to_widest (captures[2]) >= prec
1576 : )
1577 : {
1578 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail553;
1579 36 : {
1580 36 : tree _r;
1581 36 : _r = constant_boolean_node (op == EQ_EXPR ? false : true, type);
1582 36 : if (TREE_SIDE_EFFECTS (captures[1]))
1583 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1584 36 : if (TREE_SIDE_EFFECTS (captures[2]))
1585 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1586 36 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 447, __FILE__, __LINE__, true);
1587 310 : return _r;
1588 : }
1589 0 : next_after_fail553:;
1590 : }
1591 : else
1592 : {
1593 274 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail554;
1594 274 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail554;
1595 274 : {
1596 274 : tree res_op0;
1597 274 : {
1598 274 : tree _o1[2], _r1;
1599 274 : _o1[0] = captures[1];
1600 274 : _o1[1] = wide_int_to_tree (type0,
1601 274 : wi::mask (tree_to_uhwi (captures[2]) + 1,
1602 : false, prec));
1603 274 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1604 274 : res_op0 = _r1;
1605 : }
1606 274 : tree res_op1;
1607 274 : res_op1 = wide_int_to_tree (type0,
1608 274 : wi::shifted_mask (tree_to_uhwi (captures[2]), 1,
1609 : false, prec));
1610 274 : tree _r;
1611 274 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1612 274 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 448, __FILE__, __LINE__, true);
1613 274 : return _r;
1614 : }
1615 64 : next_after_fail554:;
1616 : }
1617 : }
1618 : }
1619 64 : return NULL_TREE;
1620 : }
1621 :
1622 : tree
1623 0 : generic_simplify_304 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1624 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1625 : const combined_fn ARG_UNUSED (copysigns))
1626 : {
1627 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1628 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail568;
1629 0 : {
1630 0 : tree res_op0;
1631 0 : res_op0 = captures[0];
1632 0 : tree res_op1;
1633 0 : res_op1 = captures[2];
1634 0 : tree _r;
1635 0 : _r = maybe_build_call_expr_loc (loc, copysigns, type, 2, res_op0, res_op1);
1636 0 : if (!_r)
1637 0 : goto next_after_fail568;
1638 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1639 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1640 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 462, __FILE__, __LINE__, true);
1641 : return _r;
1642 : }
1643 : next_after_fail568:;
1644 : return NULL_TREE;
1645 : }
1646 :
1647 : tree
1648 2749 : generic_simplify_311 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1649 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1650 : const enum tree_code ARG_UNUSED (div))
1651 : {
1652 2749 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1653 2749 : if (!TYPE_UNSIGNED (type)
1654 : )
1655 : {
1656 1683 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail577;
1657 1683 : {
1658 1683 : tree res_op0;
1659 1683 : res_op0 = captures[0];
1660 1683 : tree _r;
1661 1683 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
1662 1683 : if (TREE_SIDE_EFFECTS (captures[1]))
1663 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1664 1683 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 469, __FILE__, __LINE__, true);
1665 1683 : return _r;
1666 : }
1667 0 : next_after_fail577:;
1668 : }
1669 : return NULL_TREE;
1670 : }
1671 :
1672 : tree
1673 45442 : generic_simplify_317 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1674 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1675 : const enum tree_code ARG_UNUSED (div))
1676 : {
1677 45442 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1678 45442 : if (integer_pow2p (captures[2])
1679 36426 : && tree_int_cst_sgn (captures[2]) > 0
1680 36426 : && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
1681 90884 : && wi::to_wide (captures[2]) + wi::to_wide (captures[1]) == 0
1682 : )
1683 : {
1684 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail584;
1685 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail584;
1686 1 : {
1687 1 : tree res_op0;
1688 1 : {
1689 1 : tree _o1[1], _r1;
1690 1 : _o1[0] = captures[0];
1691 1 : if (TREE_TYPE (_o1[0]) != type)
1692 : {
1693 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1694 : }
1695 : else
1696 : _r1 = _o1[0];
1697 1 : res_op0 = _r1;
1698 : }
1699 1 : tree res_op1;
1700 1 : res_op1 = build_int_cst (integer_type_node,
1701 1 : wi::exact_log2 (wi::to_wide (captures[2])));
1702 1 : tree _r;
1703 1 : _r = fold_build2_loc (loc, RSHIFT_EXPR, type, res_op0, res_op1);
1704 1 : if (TREE_SIDE_EFFECTS (captures[1]))
1705 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1706 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 476, __FILE__, __LINE__, true);
1707 1 : return _r;
1708 : }
1709 : next_after_fail584:;
1710 : }
1711 : return NULL_TREE;
1712 : }
1713 :
1714 : tree
1715 529 : generic_simplify_324 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1716 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1717 : const enum tree_code ARG_UNUSED (mod))
1718 : {
1719 529 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1720 529 : if (!TYPE_UNSIGNED (type)
1721 : )
1722 : {
1723 20 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail591;
1724 20 : {
1725 20 : tree _r;
1726 20 : _r = build_zero_cst (type);
1727 20 : if (TREE_SIDE_EFFECTS (captures[0]))
1728 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1729 20 : if (TREE_SIDE_EFFECTS (captures[1]))
1730 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1731 20 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 483, __FILE__, __LINE__, true);
1732 20 : return _r;
1733 : }
1734 0 : next_after_fail591:;
1735 : }
1736 : return NULL_TREE;
1737 : }
1738 :
1739 : tree
1740 6 : generic_simplify_336 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1741 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1742 : const combined_fn ARG_UNUSED (COS),
1743 : const combined_fn ARG_UNUSED (SIN),
1744 : const combined_fn ARG_UNUSED (TAN))
1745 : {
1746 6 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1747 6 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1748 : )
1749 : {
1750 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail605;
1751 6 : {
1752 6 : tree res_op0;
1753 6 : res_op0 = build_one_cst (type);
1754 6 : tree res_op1;
1755 6 : {
1756 6 : tree _o1[1], _r1;
1757 6 : _o1[0] = captures[1];
1758 6 : _r1 = maybe_build_call_expr_loc (loc, TAN, TREE_TYPE (_o1[0]), 1, _o1[0]);
1759 6 : if (!_r1)
1760 0 : goto next_after_fail605;
1761 6 : res_op1 = _r1;
1762 : }
1763 6 : tree _r;
1764 6 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
1765 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 497, __FILE__, __LINE__, true);
1766 6 : return _r;
1767 : }
1768 : next_after_fail605:;
1769 : }
1770 : return NULL_TREE;
1771 : }
1772 :
1773 : tree
1774 2 : generic_simplify_344 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1775 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1776 : const enum tree_code ARG_UNUSED (cmp),
1777 : const enum tree_code ARG_UNUSED (minmax))
1778 : {
1779 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1780 2 : {
1781 2 : tree_code code = minmax_from_comparison (cmp, captures[0], captures[3], captures[0], captures[1]);
1782 2 : if (code == MIN_EXPR
1783 : )
1784 : {
1785 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail616;
1786 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail616;
1787 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail616;
1788 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail616;
1789 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail616;
1790 0 : {
1791 0 : tree res_op0;
1792 0 : {
1793 0 : tree _o1[2], _r1;
1794 0 : _o1[0] = captures[0];
1795 0 : _o1[1] = captures[3];
1796 0 : _r1 = fold_build2_loc (loc, MIN_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1797 0 : res_op0 = _r1;
1798 : }
1799 0 : tree res_op1;
1800 0 : res_op1 = captures[2];
1801 0 : tree _r;
1802 0 : _r = fold_build2_loc (loc, minmax, type, res_op0, res_op1);
1803 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 508, __FILE__, __LINE__, true);
1804 0 : return _r;
1805 : }
1806 : next_after_fail616:;
1807 : }
1808 : else
1809 : {
1810 2 : if (code == MAX_EXPR
1811 : )
1812 : {
1813 2 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail617;
1814 2 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail617;
1815 2 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail617;
1816 2 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail617;
1817 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail617;
1818 2 : {
1819 2 : tree res_op0;
1820 2 : {
1821 2 : tree _o1[2], _r1;
1822 2 : _o1[0] = captures[0];
1823 2 : _o1[1] = captures[3];
1824 2 : _r1 = fold_build2_loc (loc, MAX_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1825 2 : res_op0 = _r1;
1826 : }
1827 2 : tree res_op1;
1828 2 : res_op1 = captures[2];
1829 2 : tree _r;
1830 2 : _r = fold_build2_loc (loc, minmax, type, res_op0, res_op1);
1831 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 509, __FILE__, __LINE__, true);
1832 2 : return _r;
1833 : }
1834 : next_after_fail617:;
1835 : }
1836 : }
1837 : }
1838 : return NULL_TREE;
1839 : }
1840 :
1841 : tree
1842 15 : generic_simplify_357 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1843 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1844 : const enum tree_code ARG_UNUSED (op))
1845 : {
1846 15 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1847 15 : if (INTEGRAL_TYPE_P (type)
1848 15 : && TYPE_PRECISION (type) > 1
1849 15 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1850 30 : && expr_no_side_effects_p (captures[1])
1851 : )
1852 : {
1853 8 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail632;
1854 8 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail632;
1855 8 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail632;
1856 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail632;
1857 8 : {
1858 8 : tree res_op0;
1859 8 : {
1860 8 : tree _o1[2], _r1;
1861 8 : {
1862 8 : tree _o2[1], _r2;
1863 8 : _o2[0] = captures[0];
1864 8 : if (TREE_TYPE (_o2[0]) != type)
1865 : {
1866 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
1867 : }
1868 : else
1869 : _r2 = _o2[0];
1870 8 : _o1[0] = _r2;
1871 : }
1872 8 : _o1[1] = captures[1];
1873 8 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1874 8 : res_op0 = _r1;
1875 : }
1876 8 : tree res_op1;
1877 8 : res_op1 = captures[2];
1878 8 : tree _r;
1879 8 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1880 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 524, __FILE__, __LINE__, true);
1881 8 : return _r;
1882 : }
1883 : next_after_fail632:;
1884 : }
1885 : return NULL_TREE;
1886 : }
1887 :
1888 : tree
1889 22 : generic_simplify_372 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1890 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1891 : const enum tree_code ARG_UNUSED (cmp))
1892 : {
1893 22 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1894 22 : if (INTEGRAL_TYPE_P (type)
1895 22 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
1896 22 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1897 44 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (type)
1898 : )
1899 : {
1900 22 : {
1901 22 : tree shifter = build_int_cst (integer_type_node, TYPE_PRECISION (type) - 1);
1902 22 : if (cmp == LT_EXPR
1903 : )
1904 : {
1905 13 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail648;
1906 13 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail648;
1907 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail648;
1908 13 : {
1909 13 : tree res_op0;
1910 13 : {
1911 13 : tree _o1[1], _r1;
1912 13 : {
1913 13 : tree _o2[2], _r2;
1914 13 : _o2[0] = captures[0];
1915 13 : _o2[1] = shifter;
1916 13 : _r2 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
1917 13 : _o1[0] = _r2;
1918 : }
1919 13 : if (TREE_TYPE (_o1[0]) != type)
1920 : {
1921 1 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1922 : }
1923 : else
1924 : _r1 = _o1[0];
1925 13 : res_op0 = _r1;
1926 : }
1927 13 : tree res_op1;
1928 13 : res_op1 = captures[1];
1929 13 : tree _r;
1930 13 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
1931 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 538, __FILE__, __LINE__, true);
1932 13 : return _r;
1933 : }
1934 : next_after_fail648:;
1935 : }
1936 : else
1937 : {
1938 9 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail649;
1939 9 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail649;
1940 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail649;
1941 9 : {
1942 9 : tree res_op0;
1943 9 : {
1944 9 : tree _o1[2], _r1;
1945 9 : {
1946 9 : tree _o2[1], _r2;
1947 9 : {
1948 9 : tree _o3[2], _r3;
1949 9 : _o3[0] = captures[0];
1950 9 : _o3[1] = shifter;
1951 9 : _r3 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
1952 9 : _o2[0] = _r3;
1953 : }
1954 9 : if (TREE_TYPE (_o2[0]) != type)
1955 : {
1956 1 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
1957 : }
1958 : else
1959 : _r2 = _o2[0];
1960 9 : _o1[0] = _r2;
1961 : }
1962 9 : _o1[1] = captures[1];
1963 9 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1964 9 : res_op0 = _r1;
1965 : }
1966 9 : tree _r;
1967 9 : _r = fold_build1_loc (loc, BIT_NOT_EXPR, type, res_op0);
1968 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 539, __FILE__, __LINE__, true);
1969 9 : return _r;
1970 : }
1971 : next_after_fail649:;
1972 : }
1973 : }
1974 : }
1975 : return NULL_TREE;
1976 : }
1977 :
1978 : tree
1979 0 : generic_simplify_391 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1980 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1981 : const enum tree_code ARG_UNUSED (cmp),
1982 : const enum tree_code ARG_UNUSED (cmp2))
1983 : {
1984 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1985 0 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
1986 0 : && TYPE_UNSIGNED (TREE_TYPE (captures[2])) && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1987 0 : && wi::gt_p (wi::to_wide (captures[1]), 0, TYPE_SIGN (TREE_TYPE (captures[1])))
1988 : )
1989 : {
1990 0 : {
1991 0 : tree utype = TREE_TYPE (captures[2]);
1992 0 : wide_int denom = wi::to_wide (captures[1]);
1993 0 : wide_int right = wi::to_wide (captures[2]);
1994 0 : wide_int smax = wi::sdiv_trunc (wi::max_value (TREE_TYPE (captures[0])), denom);
1995 0 : wide_int smin = wi::sdiv_trunc (wi::min_value (TREE_TYPE (captures[0])), denom);
1996 0 : bool small = wi::leu_p (right, smax);
1997 0 : bool large = wi::geu_p (right, smin);
1998 0 : if (small || large
1999 : )
2000 : {
2001 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail673;
2002 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail673;
2003 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail673;
2004 0 : {
2005 0 : tree res_op0;
2006 0 : {
2007 0 : tree _o1[1], _r1;
2008 0 : _o1[0] = captures[0];
2009 0 : if (TREE_TYPE (_o1[0]) != utype)
2010 : {
2011 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, utype, _o1[0]);
2012 : }
2013 : else
2014 : _r1 = _o1[0];
2015 0 : res_op0 = _r1;
2016 : }
2017 0 : tree res_op1;
2018 0 : {
2019 0 : tree _o1[2], _r1;
2020 0 : _o1[0] = captures[2];
2021 0 : {
2022 0 : tree _o2[1], _r2;
2023 0 : _o2[0] = captures[1];
2024 0 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (res_op0))
2025 : {
2026 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o2[0]);
2027 : }
2028 : else
2029 : _r2 = _o2[0];
2030 0 : _o1[1] = _r2;
2031 : }
2032 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2033 0 : res_op1 = _r1;
2034 : }
2035 0 : tree _r;
2036 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2037 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 563, __FILE__, __LINE__, true);
2038 0 : return _r;
2039 : }
2040 0 : next_after_fail673:;
2041 : }
2042 : else
2043 : {
2044 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail674;
2045 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail674;
2046 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail674;
2047 0 : {
2048 0 : tree res_op0;
2049 0 : res_op0 = captures[0];
2050 0 : tree res_op1;
2051 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
2052 0 : tree _r;
2053 0 : _r = fold_build2_loc (loc, cmp2, type, res_op0, res_op1);
2054 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 564, __FILE__, __LINE__, true);
2055 0 : return _r;
2056 : }
2057 0 : next_after_fail674:;
2058 : }
2059 0 : }
2060 : }
2061 : return NULL_TREE;
2062 : }
2063 :
2064 : tree
2065 0 : generic_simplify_407 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2066 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2067 : const enum tree_code ARG_UNUSED (cmp))
2068 : {
2069 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2070 0 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2071 0 : && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
2072 : )
2073 : {
2074 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail727;
2075 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail727;
2076 0 : {
2077 0 : tree res_op0;
2078 0 : res_op0 = captures[1];
2079 0 : tree res_op1;
2080 0 : res_op1 = captures[0];
2081 0 : tree _r;
2082 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2083 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 582, __FILE__, __LINE__, true);
2084 0 : return _r;
2085 : }
2086 : next_after_fail727:;
2087 : }
2088 : return NULL_TREE;
2089 : }
2090 :
2091 : tree
2092 0 : generic_simplify_411 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2093 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2094 : const combined_fn ARG_UNUSED (logs),
2095 : const combined_fn ARG_UNUSED (exps),
2096 : const enum tree_code ARG_UNUSED (cmp))
2097 : {
2098 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2099 0 : if (flag_unsafe_math_optimizations
2100 : )
2101 : {
2102 0 : if (! HONOR_SIGN_DEPENDENT_ROUNDING (type)
2103 0 : && ! HONOR_NANS (type) && ! HONOR_INFINITIES (type)
2104 0 : && ! flag_trapping_math
2105 0 : && ! flag_errno_math
2106 : )
2107 : {
2108 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail731;
2109 0 : {
2110 0 : tree res_op0;
2111 0 : res_op0 = captures[1];
2112 0 : tree res_op1;
2113 0 : {
2114 0 : tree _o1[1], _r1;
2115 0 : _o1[0] = captures[2];
2116 0 : _r1 = maybe_build_call_expr_loc (loc, exps, TREE_TYPE (_o1[0]), 1, _o1[0]);
2117 0 : if (!_r1)
2118 0 : goto next_after_fail731;
2119 0 : if (EXPR_P (_r1))
2120 0 : goto next_after_fail731;
2121 0 : res_op1 = _r1;
2122 : }
2123 0 : tree _r;
2124 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2125 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 600, __FILE__, __LINE__, true);
2126 0 : return _r;
2127 : }
2128 : next_after_fail731:;
2129 : }
2130 : }
2131 : return NULL_TREE;
2132 : }
2133 :
2134 : tree
2135 330 : generic_simplify_419 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2136 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2137 : const enum tree_code ARG_UNUSED (shiftrotate))
2138 : {
2139 330 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2140 330 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail743;
2141 330 : {
2142 330 : tree _r;
2143 330 : _r = captures[0];
2144 330 : if (TREE_SIDE_EFFECTS (captures[1]))
2145 42 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2146 330 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 612, __FILE__, __LINE__, true);
2147 : return _r;
2148 : }
2149 0 : next_after_fail743:;
2150 0 : return NULL_TREE;
2151 : }
2152 :
2153 : tree
2154 18 : generic_simplify_423 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2155 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2156 : const enum tree_code ARG_UNUSED (bit_op),
2157 : const enum tree_code ARG_UNUSED (shift))
2158 : {
2159 18 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2160 18 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[2]))
2161 : )
2162 : {
2163 16 : {
2164 16 : tree mask = int_const_binop (shift, fold_convert (type, captures[3]), captures[4]);
2165 16 : if (mask
2166 : )
2167 : {
2168 16 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail750;
2169 16 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail750;
2170 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail750;
2171 16 : {
2172 16 : tree res_op0;
2173 16 : {
2174 16 : tree _o1[2], _r1;
2175 16 : {
2176 16 : tree _o2[1], _r2;
2177 16 : _o2[0] = captures[2];
2178 16 : if (TREE_TYPE (_o2[0]) != type)
2179 : {
2180 16 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
2181 : }
2182 : else
2183 : _r2 = _o2[0];
2184 16 : _o1[0] = _r2;
2185 : }
2186 16 : _o1[1] = captures[4];
2187 16 : _r1 = fold_build2_loc (loc, shift, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2188 16 : res_op0 = _r1;
2189 : }
2190 16 : tree res_op1;
2191 16 : res_op1 = mask;
2192 16 : tree _r;
2193 16 : _r = fold_build2_loc (loc, bit_op, type, res_op0, res_op1);
2194 16 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 618, __FILE__, __LINE__, true);
2195 16 : return _r;
2196 : }
2197 : next_after_fail750:;
2198 : }
2199 : }
2200 : }
2201 : return NULL_TREE;
2202 : }
2203 :
2204 : tree
2205 2235 : generic_simplify_429 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2206 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2207 : const enum tree_code ARG_UNUSED (eqne))
2208 : {
2209 2235 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2210 2235 : if ((integer_zerop (captures[1]) || integer_onep (captures[1]))
2211 : )
2212 : {
2213 2233 : if ((eqne == EQ_EXPR) ^ integer_zerop (captures[1])
2214 : )
2215 : {
2216 1530 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail761;
2217 1530 : {
2218 1530 : tree res_op0;
2219 1530 : res_op0 = captures[0];
2220 1530 : tree _r;
2221 1530 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2222 1530 : if (TREE_SIDE_EFFECTS (captures[1]))
2223 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2224 1530 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 628, __FILE__, __LINE__, true);
2225 1530 : return _r;
2226 : }
2227 0 : next_after_fail761:;
2228 : }
2229 : else
2230 : {
2231 703 : if (types_match (type, TREE_TYPE (captures[0]))
2232 : )
2233 : {
2234 41 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail762;
2235 41 : {
2236 41 : tree res_op0;
2237 41 : res_op0 = captures[0];
2238 41 : tree res_op1;
2239 41 : res_op1 = build_one_cst (type);
2240 41 : tree _r;
2241 41 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
2242 41 : if (TREE_SIDE_EFFECTS (captures[1]))
2243 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2244 41 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 629, __FILE__, __LINE__, true);
2245 41 : return _r;
2246 : }
2247 0 : next_after_fail762:;
2248 : }
2249 : }
2250 : }
2251 : return NULL_TREE;
2252 : }
2253 :
2254 : tree
2255 0 : generic_simplify_436 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2256 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2257 : const combined_fn ARG_UNUSED (copysigns),
2258 : const combined_fn ARG_UNUSED (coss))
2259 : {
2260 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2261 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail781;
2262 0 : {
2263 0 : tree res_op0;
2264 0 : res_op0 = captures[0];
2265 0 : tree _r;
2266 0 : _r = maybe_build_call_expr_loc (loc, coss, type, 1, res_op0);
2267 0 : if (!_r)
2268 0 : goto next_after_fail781;
2269 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2270 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2271 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 636, __FILE__, __LINE__, true);
2272 : return _r;
2273 : }
2274 : next_after_fail781:;
2275 : return NULL_TREE;
2276 : }
2277 :
2278 : tree
2279 0 : generic_simplify_439 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2280 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2281 : const combined_fn ARG_UNUSED (copysigns),
2282 : const combined_fn ARG_UNUSED (pows))
2283 : {
2284 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2285 0 : {
2286 0 : HOST_WIDE_INT n;
2287 0 : if (real_isinteger (&TREE_REAL_CST (captures[2]), &n) && (n & 1) == 0
2288 : )
2289 : {
2290 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail784;
2291 0 : {
2292 0 : tree res_op0;
2293 0 : res_op0 = captures[0];
2294 0 : tree res_op1;
2295 0 : res_op1 = captures[2];
2296 0 : tree _r;
2297 0 : _r = maybe_build_call_expr_loc (loc, pows, type, 2, res_op0, res_op1);
2298 0 : if (!_r)
2299 0 : goto next_after_fail784;
2300 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2301 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2302 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 639, __FILE__, __LINE__, true);
2303 0 : return _r;
2304 : }
2305 0 : next_after_fail784:;
2306 : }
2307 : }
2308 0 : return NULL_TREE;
2309 : }
2310 :
2311 : tree
2312 0 : generic_simplify_441 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2313 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2314 : const combined_fn ARG_UNUSED (pow))
2315 : {
2316 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2317 0 : if (flag_unsafe_math_optimizations
2318 : )
2319 : {
2320 0 : if (! HONOR_INFINITIES (type)
2321 0 : && ! flag_trapping_math
2322 0 : && ! flag_errno_math
2323 : )
2324 : {
2325 0 : if (! HONOR_NANS (type) && ! HONOR_SIGNED_ZEROS (type)
2326 : )
2327 : {
2328 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail786;
2329 0 : {
2330 0 : tree _r;
2331 0 : _r = captures[0];
2332 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2333 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2334 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 641, __FILE__, __LINE__, true);
2335 0 : return _r;
2336 : }
2337 0 : next_after_fail786:;
2338 : }
2339 : }
2340 : }
2341 : return NULL_TREE;
2342 : }
2343 :
2344 : tree
2345 0 : generic_simplify_444 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2346 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2347 : const combined_fn ARG_UNUSED (copysigns),
2348 : const combined_fn ARG_UNUSED (hypots))
2349 : {
2350 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2351 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail789;
2352 0 : {
2353 0 : tree res_op0;
2354 0 : res_op0 = captures[0];
2355 0 : tree res_op1;
2356 0 : res_op1 = captures[2];
2357 0 : tree _r;
2358 0 : _r = maybe_build_call_expr_loc (loc, hypots, type, 2, res_op0, res_op1);
2359 0 : if (!_r)
2360 0 : goto next_after_fail789;
2361 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2362 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2363 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 644, __FILE__, __LINE__, true);
2364 : return _r;
2365 : }
2366 : next_after_fail789:;
2367 : return NULL_TREE;
2368 : }
2369 :
2370 : tree
2371 8 : generic_simplify_449 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2372 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2373 : {
2374 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2375 16 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2376 16 : && TYPE_PRECISION (TREE_TYPE (captures[0])) == 1
2377 : )
2378 : {
2379 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail794;
2380 0 : {
2381 0 : tree res_op0;
2382 0 : res_op0 = captures[0];
2383 0 : tree res_op1;
2384 0 : res_op1 = captures[1];
2385 0 : tree _r;
2386 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2387 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 649, __FILE__, __LINE__, true);
2388 0 : return _r;
2389 : }
2390 0 : next_after_fail794:;
2391 : }
2392 : return NULL_TREE;
2393 : }
2394 :
2395 : tree
2396 124239 : generic_simplify_453 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2397 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2398 : {
2399 124239 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2400 124239 : {
2401 124239 : bool wascmp;
2402 124239 : if (bitwise_inverted_equal_p (captures[0], captures[1], wascmp)
2403 124239 : && (!wascmp || element_precision (type) == 1)
2404 : )
2405 : {
2406 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail798;
2407 1 : {
2408 1 : tree res_op0;
2409 1 : res_op0 = captures[0];
2410 1 : tree res_op1;
2411 1 : res_op1 = captures[2];
2412 1 : tree _r;
2413 1 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2414 1 : if (TREE_SIDE_EFFECTS (captures[1]))
2415 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2416 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 653, __FILE__, __LINE__, true);
2417 1 : return _r;
2418 : }
2419 0 : next_after_fail798:;
2420 : }
2421 : }
2422 124238 : return NULL_TREE;
2423 : }
2424 :
2425 : tree
2426 104 : generic_simplify_462 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2427 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2428 : {
2429 104 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2430 104 : {
2431 104 : bool wascmp;
2432 104 : if (bitwise_inverted_equal_p (captures[0], captures[2], wascmp)
2433 104 : && (!wascmp || element_precision (type) == 1)
2434 : )
2435 : {
2436 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail807;
2437 0 : {
2438 0 : tree res_op0;
2439 0 : res_op0 = captures[0];
2440 0 : tree res_op1;
2441 0 : res_op1 = captures[1];
2442 0 : tree _r;
2443 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2444 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2445 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2446 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 661, __FILE__, __LINE__, true);
2447 0 : return _r;
2448 : }
2449 0 : next_after_fail807:;
2450 : }
2451 : }
2452 104 : return NULL_TREE;
2453 : }
2454 :
2455 : tree
2456 0 : generic_simplify_467 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2457 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2458 : const enum tree_code ARG_UNUSED (cmp))
2459 : {
2460 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2461 0 : if (fold_before_rtl_expansion_p ()
2462 : )
2463 : {
2464 0 : if (INTEGRAL_TYPE_P (type)
2465 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2466 : )
2467 : {
2468 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail812;
2469 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail812;
2470 0 : {
2471 0 : tree res_op0;
2472 0 : res_op0 = captures[0];
2473 0 : tree res_op1;
2474 0 : res_op1 = captures[3];
2475 0 : tree res_op2;
2476 0 : res_op2 = build_zero_cst (type);
2477 0 : tree _r;
2478 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
2479 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 665, __FILE__, __LINE__, true);
2480 0 : return _r;
2481 : }
2482 : next_after_fail812:;
2483 : }
2484 : }
2485 : return NULL_TREE;
2486 : }
2487 :
2488 : tree
2489 0 : generic_simplify_477 (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 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2493 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail844;
2494 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail844;
2495 0 : {
2496 0 : tree _r;
2497 0 : _r = captures[2];
2498 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2499 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2500 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 686, __FILE__, __LINE__, true);
2501 : return _r;
2502 : }
2503 : next_after_fail844:;
2504 : return NULL_TREE;
2505 : }
2506 :
2507 : tree
2508 4 : generic_simplify_482 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2509 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2510 : {
2511 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2512 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail861;
2513 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail861;
2514 4 : {
2515 4 : tree _r;
2516 4 : _r = captures[2];
2517 4 : if (TREE_SIDE_EFFECTS (captures[1]))
2518 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2519 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 686, __FILE__, __LINE__, true);
2520 : return _r;
2521 : }
2522 : next_after_fail861:;
2523 : return NULL_TREE;
2524 : }
2525 :
2526 : tree
2527 62075 : generic_simplify_486 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2528 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2529 : const enum tree_code ARG_UNUSED (shift))
2530 : {
2531 62075 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2532 62075 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
2533 62075 : && TYPE_PRECISION (type) <= HOST_BITS_PER_WIDE_INT
2534 61964 : && tree_fits_uhwi_p (captures[4])
2535 61915 : && tree_to_uhwi (captures[4]) > 0
2536 123989 : && tree_to_uhwi (captures[4]) < TYPE_PRECISION (type)
2537 : )
2538 : {
2539 61914 : {
2540 61914 : unsigned int shiftc = tree_to_uhwi (captures[4]);
2541 61914 : unsigned HOST_WIDE_INT mask = TREE_INT_CST_LOW (captures[5]);
2542 61914 : unsigned HOST_WIDE_INT newmask, zerobits = 0;
2543 61914 : tree shift_type = TREE_TYPE (captures[2]);
2544 61914 : unsigned int prec;
2545 61914 : if (shift == LSHIFT_EXPR)
2546 27903 : zerobits = ((HOST_WIDE_INT_1U << shiftc) - 1);
2547 34011 : else if (shift == RSHIFT_EXPR
2548 34011 : && type_has_mode_precision_p (shift_type))
2549 : {
2550 34011 : prec = TYPE_PRECISION (TREE_TYPE (captures[2]));
2551 34011 : tree arg00 = captures[3];
2552 34011 : if (captures[2] != captures[3]
2553 34011 : && TYPE_UNSIGNED (TREE_TYPE (captures[3])))
2554 : {
2555 0 : tree inner_type = TREE_TYPE (captures[3]);
2556 0 : if (type_has_mode_precision_p (inner_type)
2557 0 : && TYPE_PRECISION (inner_type) < prec)
2558 : {
2559 0 : prec = TYPE_PRECISION (inner_type);
2560 0 : if (shiftc < prec)
2561 0 : shift_type = inner_type;
2562 : }
2563 : }
2564 34011 : zerobits = HOST_WIDE_INT_M1U;
2565 34011 : if (shiftc < prec)
2566 : {
2567 34011 : zerobits >>= HOST_BITS_PER_WIDE_INT - shiftc;
2568 34011 : zerobits <<= prec - shiftc;
2569 : }
2570 34011 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[2]))
2571 34011 : && prec == TYPE_PRECISION (TREE_TYPE (captures[2])))
2572 : {
2573 2894 : if ((mask & zerobits) == 0)
2574 2883 : shift_type = unsigned_type_for (TREE_TYPE (captures[2]));
2575 : else
2576 : zerobits = 0;
2577 : }
2578 : }
2579 61903 : if ((mask & zerobits) == mask
2580 : )
2581 : {
2582 3 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail867;
2583 3 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail867;
2584 3 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail867;
2585 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail867;
2586 3 : {
2587 3 : tree _r;
2588 3 : _r = build_int_cst (type, 0);
2589 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 689, __FILE__, __LINE__, true);
2590 3 : return _r;
2591 : }
2592 : next_after_fail867:;
2593 : }
2594 : else
2595 : {
2596 61911 : {
2597 61911 : newmask = mask | zerobits;
2598 61911 : if (newmask != mask && (newmask & (newmask + 1)) == 0
2599 : )
2600 : {
2601 : {
2602 18410 : for (prec = BITS_PER_UNIT;
2603 33993 : prec < HOST_BITS_PER_WIDE_INT; prec <<= 1)
2604 31881 : if (newmask == (HOST_WIDE_INT_1U << prec) - 1)
2605 : break;
2606 15583 : if (prec < HOST_BITS_PER_WIDE_INT
2607 2112 : || newmask == HOST_WIDE_INT_M1U
2608 : )
2609 : {
2610 13638 : {
2611 13638 : tree newmaskt = build_int_cst_type (TREE_TYPE (captures[5]), newmask);
2612 13638 : if (!tree_int_cst_equal (newmaskt, captures[5])
2613 : )
2614 : {
2615 13638 : if (shift_type != TREE_TYPE (captures[2])
2616 : )
2617 : {
2618 85 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail868;
2619 85 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail868;
2620 85 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail868;
2621 85 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail868;
2622 85 : {
2623 85 : tree res_op0;
2624 85 : {
2625 85 : tree _o1[1], _r1;
2626 85 : {
2627 85 : tree _o2[2], _r2;
2628 85 : {
2629 85 : tree _o3[1], _r3;
2630 85 : _o3[0] = captures[2];
2631 85 : if (TREE_TYPE (_o3[0]) != shift_type)
2632 : {
2633 85 : _r3 = fold_build1_loc (loc, NOP_EXPR, shift_type, _o3[0]);
2634 : }
2635 : else
2636 : _r3 = _o3[0];
2637 85 : _o2[0] = _r3;
2638 : }
2639 85 : _o2[1] = captures[4];
2640 85 : _r2 = fold_build2_loc (loc, shift, shift_type, _o2[0], _o2[1]);
2641 85 : _o1[0] = _r2;
2642 : }
2643 85 : if (TREE_TYPE (_o1[0]) != type)
2644 : {
2645 85 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2646 : }
2647 : else
2648 : _r1 = _o1[0];
2649 85 : res_op0 = _r1;
2650 : }
2651 85 : tree res_op1;
2652 85 : res_op1 = newmaskt;
2653 85 : tree _r;
2654 85 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2655 85 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 690, __FILE__, __LINE__, true);
2656 85 : return _r;
2657 : }
2658 : next_after_fail868:;
2659 : }
2660 : else
2661 : {
2662 13553 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail869;
2663 12521 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail869;
2664 12521 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail869;
2665 12521 : {
2666 12521 : tree res_op0;
2667 12521 : res_op0 = captures[0];
2668 12521 : tree res_op1;
2669 12521 : res_op1 = newmaskt;
2670 12521 : tree _r;
2671 12521 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2672 12521 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 691, __FILE__, __LINE__, true);
2673 12521 : return _r;
2674 : }
2675 : next_after_fail869:;
2676 : }
2677 : }
2678 : }
2679 : }
2680 : }
2681 : }
2682 : }
2683 : }
2684 : }
2685 : }
2686 : return NULL_TREE;
2687 : }
2688 :
2689 : tree
2690 42 : generic_simplify_496 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2691 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2692 : {
2693 42 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2694 42 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail885;
2695 42 : {
2696 42 : tree res_op0;
2697 42 : res_op0 = captures[1];
2698 42 : tree res_op1;
2699 42 : {
2700 42 : tree _o1[1], _r1;
2701 42 : _o1[0] = captures[2];
2702 42 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2703 42 : res_op1 = _r1;
2704 : }
2705 42 : tree _r;
2706 42 : _r = fold_build2_loc (loc, BIT_IOR_EXPR, type, res_op0, res_op1);
2707 42 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 700, __FILE__, __LINE__, true);
2708 : return _r;
2709 : }
2710 0 : next_after_fail885:;
2711 0 : return NULL_TREE;
2712 : }
2713 :
2714 : tree
2715 31 : generic_simplify_501 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2716 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2717 : {
2718 31 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2719 31 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[2]))
2720 54 : && (element_precision (TREE_TYPE (captures[2]))
2721 23 : <= element_precision (TREE_TYPE (captures[3]))
2722 1 : || !TYPE_UNSIGNED (TREE_TYPE (captures[3])))
2723 : )
2724 : {
2725 22 : {
2726 22 : tree shift_type = TREE_TYPE (captures[2]);
2727 22 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail890;
2728 22 : {
2729 22 : tree res_op0;
2730 22 : {
2731 22 : tree _o1[2], _r1;
2732 22 : {
2733 22 : tree _o2[1], _r2;
2734 22 : _o2[0] = captures[3];
2735 22 : if (TREE_TYPE (_o2[0]) != shift_type)
2736 : {
2737 1 : _r2 = fold_build1_loc (loc, NOP_EXPR, shift_type, _o2[0]);
2738 : }
2739 : else
2740 : _r2 = _o2[0];
2741 22 : _o1[0] = _r2;
2742 : }
2743 22 : _o1[1] = captures[4];
2744 22 : _r1 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2745 22 : res_op0 = _r1;
2746 : }
2747 22 : tree _r;
2748 22 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2749 22 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 705, __FILE__, __LINE__, true);
2750 22 : return _r;
2751 : }
2752 0 : next_after_fail890:;
2753 : }
2754 : }
2755 : return NULL_TREE;
2756 : }
2757 :
2758 : tree
2759 3777 : generic_simplify_513 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2760 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures))
2761 : {
2762 3777 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2763 3777 : if (!TYPE_SATURATING (type)
2764 : )
2765 : {
2766 3742 : if (!TYPE_OVERFLOW_SANITIZED (type)
2767 7506 : && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[0]))
2768 : )
2769 : {
2770 3764 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail903;
2771 3764 : {
2772 3764 : tree res_op0;
2773 3764 : {
2774 3764 : tree _o1[1], _r1;
2775 3764 : _o1[0] = captures[0];
2776 3764 : if (TREE_TYPE (_o1[0]) != type)
2777 : {
2778 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
2779 : }
2780 : else
2781 : _r1 = _o1[0];
2782 3764 : res_op0 = _r1;
2783 : }
2784 3764 : tree _r;
2785 3764 : _r = non_lvalue_loc (loc, res_op0);
2786 3764 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 716, __FILE__, __LINE__, true);
2787 3764 : return _r;
2788 : }
2789 0 : next_after_fail903:;
2790 : }
2791 : }
2792 : return NULL_TREE;
2793 : }
2794 :
2795 : tree
2796 4 : generic_simplify_520 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2797 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2798 : {
2799 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2800 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail911;
2801 4 : {
2802 4 : tree _r;
2803 4 : _r = captures[1];
2804 4 : if (TREE_SIDE_EFFECTS (captures[0]))
2805 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2806 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 723, __FILE__, __LINE__, true);
2807 : return _r;
2808 : }
2809 0 : next_after_fail911:;
2810 0 : return NULL_TREE;
2811 : }
2812 :
2813 : tree
2814 20 : generic_simplify_529 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2815 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2816 : const enum tree_code ARG_UNUSED (minmax),
2817 : const enum tree_code ARG_UNUSED (cmp))
2818 : {
2819 20 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2820 20 : {
2821 20 : poly_int64 off0, off1;
2822 20 : tree base0, base1;
2823 20 : int equal = address_compare (cmp, TREE_TYPE (captures[0]), captures[1], captures[3], base0, base1,
2824 : off0, off1,
2825 : 1
2826 : );
2827 20 : if (equal == 1
2828 : )
2829 : {
2830 0 : if (minmax == MIN_EXPR
2831 : )
2832 : {
2833 0 : if (known_le (off0, off1)
2834 : )
2835 : {
2836 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail931;
2837 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail931;
2838 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail931;
2839 0 : {
2840 0 : tree _r;
2841 0 : _r = captures[0];
2842 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 731, __FILE__, __LINE__, true);
2843 0 : return _r;
2844 : }
2845 20 : next_after_fail931:;
2846 : }
2847 : else
2848 : {
2849 0 : if (known_gt (off0, off1)
2850 : )
2851 : {
2852 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail932;
2853 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail932;
2854 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail932;
2855 0 : {
2856 0 : tree _r;
2857 0 : _r = captures[2];
2858 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 732, __FILE__, __LINE__, true);
2859 0 : return _r;
2860 : }
2861 20 : next_after_fail932:;
2862 : }
2863 : }
2864 : }
2865 : else
2866 : {
2867 0 : if (known_ge (off0, off1)
2868 : )
2869 : {
2870 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail933;
2871 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail933;
2872 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail933;
2873 0 : {
2874 0 : tree _r;
2875 0 : _r = captures[0];
2876 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 733, __FILE__, __LINE__, true);
2877 0 : return _r;
2878 : }
2879 20 : next_after_fail933:;
2880 : }
2881 : else
2882 : {
2883 0 : if (known_lt (off0, off1)
2884 : )
2885 : {
2886 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail934;
2887 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail934;
2888 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail934;
2889 0 : {
2890 0 : tree _r;
2891 0 : _r = captures[2];
2892 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 734, __FILE__, __LINE__, true);
2893 0 : return _r;
2894 : }
2895 20 : next_after_fail934:;
2896 : }
2897 : }
2898 : }
2899 : }
2900 : }
2901 20 : return NULL_TREE;
2902 : }
2903 :
2904 : tree
2905 0 : generic_simplify_550 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2906 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2907 : const combined_fn ARG_UNUSED (cond_len_op))
2908 : {
2909 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2910 0 : {
2911 0 : tree op_type = TREE_TYPE (captures[6]);
2912 0 : if (inverse_conditions_p (captures[0], captures[2])
2913 0 : && element_precision (type) == element_precision (op_type)
2914 : )
2915 : {
2916 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail955;
2917 0 : {
2918 0 : tree res_op0;
2919 0 : {
2920 0 : tree _o1[7], _r1;
2921 0 : _o1[0] = captures[2];
2922 0 : _o1[1] = captures[3];
2923 0 : _o1[2] = captures[4];
2924 0 : _o1[3] = captures[5];
2925 0 : {
2926 0 : tree _o2[1], _r2;
2927 0 : _o2[0] = captures[1];
2928 0 : if (TREE_TYPE (_o2[0]) != op_type)
2929 : {
2930 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, op_type, _o2[0]);
2931 : }
2932 : else
2933 : _r2 = _o2[0];
2934 0 : _o1[4] = _r2;
2935 : }
2936 0 : _o1[5] = captures[7];
2937 0 : _o1[6] = captures[8];
2938 0 : _r1 = maybe_build_call_expr_loc (loc, cond_len_op, TREE_TYPE (_o1[1]), 7, _o1[0], _o1[1], _o1[2], _o1[3], _o1[4], _o1[5], _o1[6]);
2939 0 : if (!_r1)
2940 0 : goto next_after_fail955;
2941 0 : res_op0 = _r1;
2942 : }
2943 0 : tree _r;
2944 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
2945 0 : if (TREE_SIDE_EFFECTS (captures[0]))
2946 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2947 0 : if (TREE_SIDE_EFFECTS (captures[6]))
2948 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[6]), _r);
2949 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 750, __FILE__, __LINE__, true);
2950 0 : return _r;
2951 : }
2952 : next_after_fail955:;
2953 : }
2954 : }
2955 : return NULL_TREE;
2956 : }
2957 :
2958 : tree
2959 0 : generic_simplify_563 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2960 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2961 : const combined_fn ARG_UNUSED (ovf))
2962 : {
2963 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2964 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2965 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
2966 0 : && TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))
2967 0 : && (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) || TYPE_UNSIGNED (TREE_TYPE (captures[1])))
2968 : )
2969 : {
2970 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail971;
2971 0 : {
2972 0 : tree res_op0;
2973 0 : res_op0 = captures[1];
2974 0 : tree res_op1;
2975 0 : res_op1 = captures[2];
2976 0 : tree _r;
2977 0 : _r = maybe_build_call_expr_loc (loc, ovf, type, 2, res_op0, res_op1);
2978 0 : if (!_r)
2979 0 : goto next_after_fail971;
2980 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 766, __FILE__, __LINE__, true);
2981 0 : return _r;
2982 : }
2983 : next_after_fail971:;
2984 : }
2985 : return NULL_TREE;
2986 : }
2987 :
2988 : tree
2989 0 : generic_simplify_571 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2990 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2991 : const combined_fn ARG_UNUSED (fns))
2992 : {
2993 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2994 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail979;
2995 0 : {
2996 0 : tree res_op0;
2997 0 : res_op0 = captures[0];
2998 0 : tree _r;
2999 0 : _r = maybe_build_call_expr_loc (loc, fns, type, 1, res_op0);
3000 0 : if (!_r)
3001 0 : goto next_after_fail979;
3002 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 774, __FILE__, __LINE__, true);
3003 : return _r;
3004 : }
3005 : next_after_fail979:;
3006 : return NULL_TREE;
3007 : }
3008 :
3009 : tree
3010 0 : generic_simplify_579 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3011 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3012 : const combined_fn ARG_UNUSED (froms),
3013 : const combined_fn ARG_UNUSED (tos))
3014 : {
3015 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3016 0 : if (optimize && canonicalize_math_p ()
3017 : )
3018 : {
3019 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail987;
3020 0 : {
3021 0 : tree res_op0;
3022 0 : res_op0 = captures[0];
3023 0 : tree _r;
3024 0 : _r = maybe_build_call_expr_loc (loc, tos, type, 1, res_op0);
3025 0 : if (!_r)
3026 0 : goto next_after_fail987;
3027 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 782, __FILE__, __LINE__, true);
3028 0 : return _r;
3029 : }
3030 : next_after_fail987:;
3031 : }
3032 : return NULL_TREE;
3033 : }
3034 :
3035 : tree
3036 0 : generic_simplify_587 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3037 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
3038 : const combined_fn ARG_UNUSED (fmas))
3039 : {
3040 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3041 0 : if (canonicalize_math_after_vectorization_p ()
3042 : )
3043 : {
3044 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail995;
3045 : {
3046 : tree res_op0;
3047 : res_op0 = captures[0];
3048 : tree res_op1;
3049 : res_op1 = captures[1];
3050 : tree res_op2;
3051 : res_op2 = captures[2];
3052 : tree _r;
3053 : _r = maybe_build_call_expr_loc (loc, CFN_FNMA, type, 3, res_op0, res_op1, res_op2);
3054 : if (!_r)
3055 : goto next_after_fail995;
3056 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 790, __FILE__, __LINE__, true);
3057 : return _r;
3058 : }
3059 0 : next_after_fail995:;
3060 : }
3061 0 : return NULL_TREE;
3062 : }
3063 :
3064 : tree
3065 0 : generic_simplify_597 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3066 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree ARG_UNUSED (_p3), tree ARG_UNUSED (_p4), tree *ARG_UNUSED (captures),
3067 : const combined_fn ARG_UNUSED (fmas))
3068 : {
3069 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3070 0 : if (canonicalize_math_after_vectorization_p ()
3071 : )
3072 : {
3073 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1005;
3074 : {
3075 : tree res_op0;
3076 : res_op0 = captures[0];
3077 : tree res_op1;
3078 : res_op1 = captures[1];
3079 : tree res_op2;
3080 : res_op2 = captures[2];
3081 : tree res_op3;
3082 : res_op3 = captures[3];
3083 : tree res_op4;
3084 : res_op4 = captures[4];
3085 : tree _r;
3086 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FNMS, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3087 : if (!_r)
3088 : goto next_after_fail1005;
3089 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 800, __FILE__, __LINE__, true);
3090 : return _r;
3091 : }
3092 0 : next_after_fail1005:;
3093 : }
3094 0 : return NULL_TREE;
3095 : }
3096 :
3097 : tree
3098 0 : generic_simplify_607 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3099 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3100 : const combined_fn ARG_UNUSED (ctz))
3101 : {
3102 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3103 0 : {
3104 0 : tree t = TREE_TYPE (captures[0]);
3105 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1015;
3106 0 : {
3107 0 : tree res_op0;
3108 0 : {
3109 0 : tree _o1[1], _r1;
3110 0 : _o1[0] = captures[1];
3111 0 : if (TREE_TYPE (_o1[0]) != t)
3112 : {
3113 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, t, _o1[0]);
3114 : }
3115 : else
3116 : _r1 = _o1[0];
3117 0 : res_op0 = _r1;
3118 : }
3119 0 : tree _r;
3120 0 : _r = maybe_build_call_expr_loc (loc, ctz, type, 1, res_op0);
3121 0 : if (!_r)
3122 0 : goto next_after_fail1015;
3123 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 807, __FILE__, __LINE__, true);
3124 : return _r;
3125 : }
3126 : next_after_fail1015:;
3127 : }
3128 : return NULL_TREE;
3129 : }
3130 :
3131 : tree
3132 0 : generic_simplify_617 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3133 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3134 : const combined_fn ARG_UNUSED (bswap),
3135 : const combined_fn ARG_UNUSED (parity))
3136 : {
3137 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3138 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3139 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3140 0 : && TYPE_PRECISION (TREE_TYPE (captures[0]))
3141 0 : >= TYPE_PRECISION (TREE_TYPE (captures[1]))
3142 : )
3143 : {
3144 0 : {
3145 0 : tree type0 = TREE_TYPE (captures[0]);
3146 0 : tree type1 = TREE_TYPE (captures[1]);
3147 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1026;
3148 0 : {
3149 0 : tree res_op0;
3150 0 : {
3151 0 : tree _o1[1], _r1;
3152 0 : {
3153 0 : tree _o2[1], _r2;
3154 0 : _o2[0] = captures[2];
3155 0 : if (TREE_TYPE (_o2[0]) != type1)
3156 : {
3157 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type1, _o2[0]);
3158 : }
3159 : else
3160 : _r2 = _o2[0];
3161 0 : _o1[0] = _r2;
3162 : }
3163 0 : if (TREE_TYPE (_o1[0]) != type0)
3164 : {
3165 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3166 : }
3167 : else
3168 : _r1 = _o1[0];
3169 0 : res_op0 = _r1;
3170 : }
3171 0 : tree _r;
3172 0 : _r = maybe_build_call_expr_loc (loc, parity, type, 1, res_op0);
3173 0 : if (!_r)
3174 0 : goto next_after_fail1026;
3175 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 814, __FILE__, __LINE__, true);
3176 0 : return _r;
3177 : }
3178 : next_after_fail1026:;
3179 : }
3180 : }
3181 : return NULL_TREE;
3182 : }
3183 :
3184 : tree
3185 942 : generic_simplify_ABSU_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3186 : {
3187 942 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3188 942 : switch (TREE_CODE (_p0))
3189 : {
3190 541 : CASE_CONVERT:
3191 541 : {
3192 541 : tree _q20 = TREE_OPERAND (_p0, 0);
3193 541 : switch (TREE_CODE (_q20))
3194 : {
3195 0 : case ABSU_EXPR:
3196 0 : {
3197 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3198 0 : {
3199 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
3200 0 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
3201 : )
3202 : {
3203 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1069;
3204 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1069;
3205 0 : {
3206 0 : tree _r;
3207 0 : _r = captures[1];
3208 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 849, __FILE__, __LINE__, true);
3209 0 : return _r;
3210 : }
3211 0 : next_after_fail1069:;
3212 : }
3213 : }
3214 0 : break;
3215 : }
3216 : default:;
3217 : }
3218 : break;
3219 : }
3220 6 : case NEGATE_EXPR:
3221 6 : {
3222 6 : tree _q20 = TREE_OPERAND (_p0, 0);
3223 6 : {
3224 6 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3225 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1070;
3226 6 : {
3227 6 : tree res_op0;
3228 6 : res_op0 = captures[0];
3229 6 : tree _r;
3230 6 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
3231 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 850, __FILE__, __LINE__, true);
3232 942 : return _r;
3233 : }
3234 0 : next_after_fail1070:;
3235 : }
3236 0 : break;
3237 : }
3238 0 : case VEC_COND_EXPR:
3239 0 : {
3240 0 : tree _q20 = TREE_OPERAND (_p0, 0);
3241 0 : tree _q21 = TREE_OPERAND (_p0, 1);
3242 0 : tree _q22 = TREE_OPERAND (_p0, 2);
3243 0 : {
3244 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3245 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1071;
3246 0 : {
3247 0 : tree res_op0;
3248 0 : res_op0 = captures[1];
3249 0 : tree res_op1;
3250 0 : {
3251 0 : tree _o1[1], _r1;
3252 0 : _o1[0] = captures[2];
3253 0 : _r1 = fold_build1_loc (loc, ABSU_EXPR, type, _o1[0]);
3254 0 : if (EXPR_P (_r1))
3255 0 : goto next_after_fail1071;
3256 0 : res_op1 = _r1;
3257 : }
3258 0 : tree res_op2;
3259 0 : {
3260 0 : tree _o1[1], _r1;
3261 0 : _o1[0] = captures[3];
3262 0 : _r1 = fold_build1_loc (loc, ABSU_EXPR, type, _o1[0]);
3263 0 : if (EXPR_P (_r1))
3264 0 : goto next_after_fail1071;
3265 0 : res_op2 = _r1;
3266 : }
3267 0 : tree _r;
3268 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
3269 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 824, __FILE__, __LINE__, true);
3270 0 : return _r;
3271 : }
3272 0 : next_after_fail1071:;
3273 : }
3274 0 : break;
3275 : }
3276 936 : default:;
3277 : }
3278 936 : if (tree_expr_nonnegative_p (_p0))
3279 : {
3280 0 : {
3281 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3282 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1072;
3283 0 : {
3284 0 : tree res_op0;
3285 0 : res_op0 = captures[0];
3286 0 : tree _r;
3287 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3288 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 851, __FILE__, __LINE__, true);
3289 0 : return _r;
3290 : }
3291 0 : next_after_fail1072:;
3292 : }
3293 : }
3294 : return NULL_TREE;
3295 : }
3296 :
3297 : tree
3298 1910916 : generic_simplify_IMAGPART_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3299 : {
3300 1910916 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3301 1910916 : switch (TREE_CODE (_p0))
3302 : {
3303 1731 : case COMPLEX_EXPR:
3304 1731 : {
3305 1731 : tree _q20 = TREE_OPERAND (_p0, 0);
3306 1731 : tree _q21 = TREE_OPERAND (_p0, 1);
3307 1731 : {
3308 1731 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
3309 1731 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1141;
3310 1731 : {
3311 1731 : tree _r;
3312 1731 : _r = captures[1];
3313 1731 : if (TREE_SIDE_EFFECTS (captures[0]))
3314 522 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3315 1731 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 878, __FILE__, __LINE__, true);
3316 1731 : return _r;
3317 : }
3318 0 : next_after_fail1141:;
3319 : }
3320 0 : break;
3321 : }
3322 45368 : CASE_CONVERT:
3323 45368 : {
3324 45368 : tree _q20 = TREE_OPERAND (_p0, 0);
3325 45368 : switch (TREE_CODE (_q20))
3326 : {
3327 0 : case CONJ_EXPR:
3328 0 : {
3329 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3330 0 : {
3331 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
3332 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1142;
3333 0 : {
3334 0 : tree res_op0;
3335 0 : {
3336 0 : tree _o1[1], _r1;
3337 0 : {
3338 0 : tree _o2[1], _r2;
3339 0 : _o2[0] = captures[2];
3340 0 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3341 0 : _o1[0] = _r2;
3342 : }
3343 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3344 0 : res_op0 = _r1;
3345 : }
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", 879, __FILE__, __LINE__, true);
3349 0 : return _r;
3350 : }
3351 0 : next_after_fail1142:;
3352 : }
3353 0 : break;
3354 : }
3355 0 : case PLUS_EXPR:
3356 0 : {
3357 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3358 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3359 0 : {
3360 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3361 0 : const enum tree_code op = PLUS_EXPR;
3362 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1143;
3363 0 : {
3364 0 : tree res_op0;
3365 0 : {
3366 0 : tree _o1[2], _r1;
3367 0 : {
3368 0 : tree _o2[1], _r2;
3369 0 : _o2[0] = captures[2];
3370 0 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3371 0 : _o1[0] = _r2;
3372 : }
3373 0 : {
3374 0 : tree _o2[1], _r2;
3375 0 : _o2[0] = captures[3];
3376 0 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3377 0 : _o1[1] = _r2;
3378 : }
3379 0 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3380 0 : res_op0 = _r1;
3381 : }
3382 0 : tree _r;
3383 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3384 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 876, __FILE__, __LINE__, true);
3385 0 : return _r;
3386 : }
3387 0 : next_after_fail1143:;
3388 : }
3389 0 : break;
3390 : }
3391 0 : case MINUS_EXPR:
3392 0 : {
3393 0 : tree _q30 = TREE_OPERAND (_q20, 0);
3394 0 : tree _q31 = TREE_OPERAND (_q20, 1);
3395 0 : {
3396 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
3397 0 : const enum tree_code op = MINUS_EXPR;
3398 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1144;
3399 0 : {
3400 0 : tree res_op0;
3401 0 : {
3402 0 : tree _o1[2], _r1;
3403 0 : {
3404 0 : tree _o2[1], _r2;
3405 0 : _o2[0] = captures[2];
3406 0 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3407 0 : _o1[0] = _r2;
3408 : }
3409 0 : {
3410 0 : tree _o2[1], _r2;
3411 0 : _o2[0] = captures[3];
3412 0 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3413 0 : _o1[1] = _r2;
3414 : }
3415 0 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3416 0 : res_op0 = _r1;
3417 : }
3418 0 : tree _r;
3419 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3420 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 876, __FILE__, __LINE__, true);
3421 0 : return _r;
3422 : }
3423 0 : next_after_fail1144:;
3424 : }
3425 0 : break;
3426 : }
3427 0 : case CALL_EXPR:
3428 0 : switch (get_call_combined_fn (_q20))
3429 : {
3430 0 : case CFN_BUILT_IN_CEXPIF:
3431 0 : if (call_expr_nargs (_q20) == 1)
3432 : {
3433 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
3434 0 : {
3435 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
3436 0 : if (single_use (captures[1]) && single_use (captures[0])
3437 : )
3438 : {
3439 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1145;
3440 0 : {
3441 0 : tree res_op0;
3442 0 : {
3443 0 : tree _o1[1], _r1;
3444 0 : _o1[0] = captures[2];
3445 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SINF, TREE_TYPE (_o1[0]), 1, _o1[0]);
3446 0 : if (!_r1)
3447 0 : goto next_after_fail1145;
3448 0 : res_op0 = _r1;
3449 : }
3450 0 : tree _r;
3451 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3452 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 880, __FILE__, __LINE__, true);
3453 0 : return _r;
3454 : }
3455 0 : next_after_fail1145:;
3456 : }
3457 : }
3458 : }
3459 : break;
3460 0 : case CFN_BUILT_IN_CEXPIL:
3461 0 : if (call_expr_nargs (_q20) == 1)
3462 : {
3463 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
3464 0 : {
3465 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q30 };
3466 0 : if (single_use (captures[1]) && single_use (captures[0])
3467 : )
3468 : {
3469 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1146;
3470 0 : {
3471 0 : tree res_op0;
3472 0 : {
3473 0 : tree _o1[1], _r1;
3474 0 : _o1[0] = captures[2];
3475 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SINL, TREE_TYPE (_o1[0]), 1, _o1[0]);
3476 0 : if (!_r1)
3477 0 : goto next_after_fail1146;
3478 0 : res_op0 = _r1;
3479 : }
3480 0 : tree _r;
3481 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3482 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 880, __FILE__, __LINE__, true);
3483 0 : return _r;
3484 : }
3485 0 : next_after_fail1146:;
3486 : }
3487 : }
3488 : }
3489 : break;
3490 0 : case CFN_BUILT_IN_CEXPI:
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_fail1147;
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_SIN, TREE_TYPE (_o1[0]), 1, _o1[0]);
3506 0 : if (!_r1)
3507 0 : goto next_after_fail1147;
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", 880, __FILE__, __LINE__, true);
3513 0 : return _r;
3514 : }
3515 0 : next_after_fail1147:;
3516 : }
3517 : }
3518 : }
3519 : break;
3520 : default:;
3521 : }
3522 : break;
3523 : default:;
3524 : }
3525 : break;
3526 : }
3527 16 : case CONJ_EXPR:
3528 16 : {
3529 16 : tree _q20 = TREE_OPERAND (_p0, 0);
3530 16 : {
3531 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
3532 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1148;
3533 16 : {
3534 16 : tree res_op0;
3535 16 : {
3536 16 : tree _o1[1], _r1;
3537 16 : {
3538 16 : tree _o2[1], _r2;
3539 16 : _o2[0] = captures[2];
3540 16 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3541 16 : _o1[0] = _r2;
3542 : }
3543 16 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
3544 16 : res_op0 = _r1;
3545 : }
3546 16 : tree _r;
3547 16 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3548 16 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 879, __FILE__, __LINE__, true);
3549 16 : return _r;
3550 : }
3551 0 : next_after_fail1148:;
3552 : }
3553 0 : break;
3554 : }
3555 365 : case PLUS_EXPR:
3556 365 : {
3557 365 : tree _q20 = TREE_OPERAND (_p0, 0);
3558 365 : tree _q21 = TREE_OPERAND (_p0, 1);
3559 365 : {
3560 365 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
3561 365 : const enum tree_code op = PLUS_EXPR;
3562 365 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1149;
3563 365 : {
3564 365 : tree res_op0;
3565 365 : {
3566 365 : tree _o1[2], _r1;
3567 365 : {
3568 365 : tree _o2[1], _r2;
3569 365 : _o2[0] = captures[2];
3570 365 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3571 365 : _o1[0] = _r2;
3572 : }
3573 365 : {
3574 365 : tree _o2[1], _r2;
3575 365 : _o2[0] = captures[3];
3576 365 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3577 365 : _o1[1] = _r2;
3578 : }
3579 365 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3580 365 : res_op0 = _r1;
3581 : }
3582 365 : tree _r;
3583 365 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3584 365 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 876, __FILE__, __LINE__, true);
3585 365 : return _r;
3586 : }
3587 0 : next_after_fail1149:;
3588 : }
3589 0 : break;
3590 : }
3591 47 : case MINUS_EXPR:
3592 47 : {
3593 47 : tree _q20 = TREE_OPERAND (_p0, 0);
3594 47 : tree _q21 = TREE_OPERAND (_p0, 1);
3595 47 : {
3596 47 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
3597 47 : const enum tree_code op = MINUS_EXPR;
3598 47 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1150;
3599 47 : {
3600 47 : tree res_op0;
3601 47 : {
3602 47 : tree _o1[2], _r1;
3603 47 : {
3604 47 : tree _o2[1], _r2;
3605 47 : _o2[0] = captures[2];
3606 47 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3607 47 : _o1[0] = _r2;
3608 : }
3609 47 : {
3610 47 : tree _o2[1], _r2;
3611 47 : _o2[0] = captures[3];
3612 47 : _r2 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o2[0])), _o2[0]);
3613 47 : _o1[1] = _r2;
3614 : }
3615 47 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3616 47 : res_op0 = _r1;
3617 : }
3618 47 : tree _r;
3619 47 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3620 47 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 876, __FILE__, __LINE__, true);
3621 47 : return _r;
3622 : }
3623 0 : next_after_fail1150:;
3624 : }
3625 0 : break;
3626 : }
3627 54942 : case CALL_EXPR:
3628 54942 : switch (get_call_combined_fn (_p0))
3629 : {
3630 20600 : case CFN_MUL_OVERFLOW:
3631 20600 : if (call_expr_nargs (_p0) == 2)
3632 : {
3633 20600 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3634 20600 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
3635 20600 : if (integer_nonzerop (_q21))
3636 : {
3637 2784 : {
3638 2784 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
3639 2784 : tree res = generic_simplify_555 (loc, type, _p0, captures);
3640 2784 : if (res) return res;
3641 : }
3642 : }
3643 19647 : if (integer_nonzerop (_q20))
3644 : {
3645 3002 : {
3646 3002 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
3647 3002 : tree res = generic_simplify_555 (loc, type, _p0, captures);
3648 3002 : if (res) return res;
3649 : }
3650 : }
3651 : }
3652 : break;
3653 0 : case CFN_BUILT_IN_CEXPIF:
3654 0 : if (call_expr_nargs (_p0) == 1)
3655 : {
3656 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3657 0 : {
3658 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
3659 0 : if (single_use (captures[1]) && single_use (captures[0])
3660 : )
3661 : {
3662 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1151;
3663 0 : {
3664 0 : tree res_op0;
3665 0 : {
3666 0 : tree _o1[1], _r1;
3667 0 : _o1[0] = captures[2];
3668 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SINF, TREE_TYPE (_o1[0]), 1, _o1[0]);
3669 0 : if (!_r1)
3670 0 : goto next_after_fail1151;
3671 0 : res_op0 = _r1;
3672 : }
3673 0 : tree _r;
3674 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3675 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 880, __FILE__, __LINE__, true);
3676 0 : return _r;
3677 : }
3678 0 : next_after_fail1151:;
3679 : }
3680 : }
3681 : }
3682 : break;
3683 0 : case CFN_BUILT_IN_CEXPIL:
3684 0 : if (call_expr_nargs (_p0) == 1)
3685 : {
3686 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3687 0 : {
3688 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
3689 0 : if (single_use (captures[1]) && single_use (captures[0])
3690 : )
3691 : {
3692 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1152;
3693 0 : {
3694 0 : tree res_op0;
3695 0 : {
3696 0 : tree _o1[1], _r1;
3697 0 : _o1[0] = captures[2];
3698 0 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SINL, TREE_TYPE (_o1[0]), 1, _o1[0]);
3699 0 : if (!_r1)
3700 0 : goto next_after_fail1152;
3701 0 : res_op0 = _r1;
3702 : }
3703 0 : tree _r;
3704 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3705 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 880, __FILE__, __LINE__, true);
3706 0 : return _r;
3707 : }
3708 0 : next_after_fail1152:;
3709 : }
3710 : }
3711 : }
3712 : break;
3713 1 : case CFN_BUILT_IN_CEXPI:
3714 1 : if (call_expr_nargs (_p0) == 1)
3715 : {
3716 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
3717 1 : {
3718 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q20 };
3719 1 : if (single_use (captures[1]) && single_use (captures[0])
3720 : )
3721 : {
3722 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1153;
3723 1 : {
3724 1 : tree res_op0;
3725 1 : {
3726 1 : tree _o1[1], _r1;
3727 1 : _o1[0] = captures[2];
3728 1 : _r1 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SIN, TREE_TYPE (_o1[0]), 1, _o1[0]);
3729 1 : if (!_r1)
3730 0 : goto next_after_fail1153;
3731 1 : res_op0 = _r1;
3732 : }
3733 1 : tree _r;
3734 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3735 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 880, __FILE__, __LINE__, true);
3736 1 : return _r;
3737 : }
3738 0 : next_after_fail1153:;
3739 : }
3740 : }
3741 : }
3742 : break;
3743 : default:;
3744 : }
3745 : break;
3746 : default:;
3747 : }
3748 : return NULL_TREE;
3749 : }
3750 :
3751 : tree
3752 70109507 : generic_simplify_MULT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
3753 : {
3754 70109507 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3755 70109507 : switch (TREE_CODE (_p1))
3756 : {
3757 380 : case VECTOR_CST:
3758 380 : {
3759 380 : {
3760 380 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
3761 380 : if (initializer_each_zero_or_onep (captures[1])
3762 5 : && !HONOR_SNANS (type)
3763 385 : && !HONOR_SIGNED_ZEROS (type)
3764 : )
3765 : {
3766 5 : {
3767 5 : tree itype = FLOAT_TYPE_P (type) ? unsigned_type_for (type) : type;
3768 5 : if (itype
3769 5 : && (!VECTOR_MODE_P (TYPE_MODE (type))
3770 5 : || (VECTOR_MODE_P (TYPE_MODE (itype))
3771 5 : && optab_handler (and_optab,
3772 5 : TYPE_MODE (itype)) != CODE_FOR_nothing))
3773 : )
3774 : {
3775 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1386;
3776 5 : {
3777 5 : tree res_op0;
3778 5 : {
3779 5 : tree _o1[2], _r1;
3780 5 : {
3781 5 : tree _o2[1], _r2;
3782 5 : _o2[0] = captures[0];
3783 5 : if (TREE_TYPE (_o2[0]) != itype)
3784 : {
3785 1 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, itype, _o2[0]);
3786 : }
3787 : else
3788 : _r2 = _o2[0];
3789 5 : _o1[0] = _r2;
3790 : }
3791 5 : {
3792 5 : tree _o2[2], _r2;
3793 5 : _o2[0] = captures[1];
3794 5 : _o2[1] = build_zero_cst (type);
3795 5 : _r2 = fold_build2_loc (loc, NE_EXPR, itype, _o2[0], _o2[1]);
3796 5 : _o1[1] = _r2;
3797 : }
3798 5 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, itype, _o1[0], _o1[1]);
3799 5 : res_op0 = _r1;
3800 : }
3801 5 : tree _r;
3802 5 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3803 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 955, __FILE__, __LINE__, true);
3804 5 : return _r;
3805 : }
3806 0 : next_after_fail1386:;
3807 : }
3808 : }
3809 : }
3810 : }
3811 375 : break;
3812 : }
3813 70109502 : default:;
3814 : }
3815 70109502 : if (integer_zerop (_p1))
3816 : {
3817 33482 : {
3818 33482 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
3819 33482 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1387;
3820 33482 : {
3821 33482 : tree _r;
3822 33482 : _r = captures[1];
3823 33482 : if (TREE_SIDE_EFFECTS (captures[0]))
3824 2458 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3825 33482 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 956, __FILE__, __LINE__, true);
3826 33482 : return _r;
3827 : }
3828 0 : next_after_fail1387:;
3829 : }
3830 : }
3831 70076020 : if (real_zerop (_p1))
3832 : {
3833 330 : {
3834 330 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
3835 330 : if (!tree_expr_maybe_nan_p (captures[0])
3836 122 : && (!HONOR_NANS (type) || !tree_expr_maybe_infinite_p (captures[0]))
3837 340 : && (!HONOR_SIGNED_ZEROS (type) || tree_expr_nonnegative_p (captures[0]))
3838 : )
3839 : {
3840 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1388;
3841 4 : {
3842 4 : tree _r;
3843 4 : _r = captures[1];
3844 4 : if (TREE_SIDE_EFFECTS (captures[0]))
3845 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3846 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 957, __FILE__, __LINE__, true);
3847 4 : return _r;
3848 : }
3849 0 : next_after_fail1388:;
3850 : }
3851 : }
3852 : }
3853 70076016 : if (real_onep (_p1))
3854 : {
3855 1237 : {
3856 1237 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3857 1237 : if (!tree_expr_maybe_signaling_nan_p (captures[0])
3858 1237 : && (!HONOR_SIGNED_ZEROS (type)
3859 1116 : || !COMPLEX_FLOAT_TYPE_P (type))
3860 : )
3861 : {
3862 754 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1389;
3863 754 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1389;
3864 754 : {
3865 754 : tree res_op0;
3866 754 : res_op0 = captures[0];
3867 754 : tree _r;
3868 754 : _r = non_lvalue_loc (loc, res_op0);
3869 754 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 958, __FILE__, __LINE__, true);
3870 754 : return _r;
3871 : }
3872 : next_after_fail1389:;
3873 : }
3874 : }
3875 : }
3876 70075262 : if (real_minus_onep (_p1))
3877 : {
3878 42291 : {
3879 42291 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3880 42291 : if (!tree_expr_maybe_signaling_nan_p (captures[0])
3881 42291 : && (!HONOR_SIGNED_ZEROS (type)
3882 39383 : || !COMPLEX_FLOAT_TYPE_P (type))
3883 : )
3884 : {
3885 41907 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1390;
3886 41907 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1390;
3887 41907 : {
3888 41907 : tree res_op0;
3889 41907 : res_op0 = captures[0];
3890 41907 : tree _r;
3891 41907 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
3892 41907 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 959, __FILE__, __LINE__, true);
3893 41907 : return _r;
3894 : }
3895 : next_after_fail1390:;
3896 : }
3897 : }
3898 : }
3899 70033355 : switch (TREE_CODE (_p0))
3900 : {
3901 60758 : case BIT_AND_EXPR:
3902 60758 : {
3903 60758 : tree _q20 = TREE_OPERAND (_p0, 0);
3904 60758 : tree _q21 = TREE_OPERAND (_p0, 1);
3905 60758 : switch (TREE_CODE (_q20))
3906 : {
3907 275 : case RSHIFT_EXPR:
3908 275 : {
3909 275 : tree _q30 = TREE_OPERAND (_q20, 0);
3910 275 : tree _q31 = TREE_OPERAND (_q20, 1);
3911 275 : if (uniform_integer_cst_p (_q31))
3912 : {
3913 14 : if (uniform_integer_cst_p (_q21))
3914 : {
3915 14 : if (uniform_integer_cst_p (_p1))
3916 : {
3917 14 : {
3918 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
3919 14 : {
3920 14 : tree rshift_cst = uniform_integer_cst_p (captures[1]);
3921 14 : tree bit_and_cst = uniform_integer_cst_p (captures[2]);
3922 14 : tree mult_cst = uniform_integer_cst_p (captures[3]);
3923 14 : if (VECTOR_TYPE_P (type)
3924 0 : && tree_fits_uhwi_p (rshift_cst)
3925 0 : && tree_fits_uhwi_p (mult_cst)
3926 0 : && tree_fits_uhwi_p (bit_and_cst)
3927 : )
3928 : {
3929 0 : {
3930 0 : HOST_WIDE_INT vec_elem_bits = vector_element_bits (type);
3931 0 : poly_int64 vec_nelts = TYPE_VECTOR_SUBPARTS (type);
3932 0 : poly_int64 vec_bits = vec_elem_bits * vec_nelts;
3933 0 : unsigned HOST_WIDE_INT cmp_bits_i, bit_and_i, mult_i;
3934 0 : unsigned HOST_WIDE_INT target_mult_i, target_bit_and_i;
3935 0 : cmp_bits_i = tree_to_uhwi (rshift_cst) + 1;
3936 0 : mult_i = tree_to_uhwi (mult_cst);
3937 0 : target_mult_i = (HOST_WIDE_INT_1U << cmp_bits_i) - 1;
3938 0 : bit_and_i = tree_to_uhwi (bit_and_cst);
3939 0 : target_bit_and_i = 0;
3940 0 : for (unsigned i = 0; i < vec_elem_bits / cmp_bits_i; i++)
3941 0 : target_bit_and_i = (target_bit_and_i << cmp_bits_i) | 1U;
3942 0 : if ((exact_log2 (cmp_bits_i)) >= 0
3943 0 : && cmp_bits_i < HOST_BITS_PER_WIDE_INT
3944 0 : && multiple_p (vec_bits, cmp_bits_i)
3945 0 : && vec_elem_bits <= HOST_BITS_PER_WIDE_INT
3946 0 : && target_mult_i == mult_i
3947 0 : && target_bit_and_i == bit_and_i
3948 : )
3949 : {
3950 0 : {
3951 0 : tree cmp_type = build_nonstandard_integer_type (cmp_bits_i, 0);
3952 0 : poly_int64 vector_type_nelts = exact_div (vec_bits, cmp_bits_i);
3953 0 : tree vec_cmp_type = build_vector_type (cmp_type, vector_type_nelts);
3954 0 : tree vec_truth_type = truth_type_for (vec_cmp_type);
3955 0 : tree zeros = build_zero_cst (vec_cmp_type);
3956 0 : tree ones = build_all_ones_cst (vec_cmp_type);
3957 0 : if (expand_vec_cmp_expr_p (vec_cmp_type, vec_truth_type, LT_EXPR)
3958 0 : && expand_vec_cond_expr_p (vec_cmp_type, vec_truth_type)
3959 : )
3960 : {
3961 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1391;
3962 0 : {
3963 0 : tree res_op0;
3964 0 : {
3965 0 : tree _o1[3], _r1;
3966 0 : {
3967 0 : tree _o2[2], _r2;
3968 0 : {
3969 0 : tree _o3[1], _r3;
3970 0 : _o3[0] = captures[0];
3971 0 : if (TREE_TYPE (_o3[0]) != vec_cmp_type)
3972 : {
3973 0 : _r3 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, vec_cmp_type, _o3[0]);
3974 : }
3975 : else
3976 : _r3 = _o3[0];
3977 0 : _o2[0] = _r3;
3978 : }
3979 0 : _o2[1] = zeros;
3980 0 : _r2 = fold_build2_loc (loc, LT_EXPR, vec_truth_type, _o2[0], _o2[1]);
3981 0 : _o1[0] = _r2;
3982 : }
3983 0 : _o1[1] = ones;
3984 0 : _o1[2] = zeros;
3985 0 : _r1 = fold_build3_loc (loc, VEC_COND_EXPR, TREE_TYPE (_o1[1]), _o1[0], _o1[1], _o1[2]);
3986 0 : res_op0 = _r1;
3987 : }
3988 0 : tree _r;
3989 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3990 0 : if (TREE_SIDE_EFFECTS (captures[1]))
3991 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
3992 0 : if (TREE_SIDE_EFFECTS (captures[2]))
3993 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
3994 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3995 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3996 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 960, __FILE__, __LINE__, true);
3997 0 : return _r;
3998 : }
3999 0 : next_after_fail1391:;
4000 : }
4001 : }
4002 : }
4003 : }
4004 : }
4005 : }
4006 : }
4007 : }
4008 : }
4009 : }
4010 : break;
4011 : }
4012 : default:;
4013 : }
4014 : break;
4015 : }
4016 70033355 : default:;
4017 : }
4018 70033355 : switch (TREE_CODE (_p1))
4019 : {
4020 3037 : case COND_EXPR:
4021 3037 : {
4022 3037 : tree _q30 = TREE_OPERAND (_p1, 0);
4023 3037 : tree _q31 = TREE_OPERAND (_p1, 1);
4024 3037 : tree _q32 = TREE_OPERAND (_p1, 2);
4025 3037 : switch (TREE_CODE (_q30))
4026 : {
4027 546 : case GT_EXPR:
4028 546 : {
4029 546 : tree _q40 = TREE_OPERAND (_q30, 0);
4030 546 : tree _q41 = TREE_OPERAND (_q30, 1);
4031 546 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4032 : {
4033 0 : if (real_zerop (_q41))
4034 : {
4035 0 : if (real_onep (_q31))
4036 : {
4037 0 : if (real_minus_onep (_q32))
4038 : {
4039 0 : {
4040 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4041 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4042 : )
4043 : {
4044 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1392;
4045 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1392;
4046 0 : {
4047 0 : tree res_op0;
4048 0 : {
4049 0 : tree _o1[1], _r1;
4050 0 : _o1[0] = captures[0];
4051 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4052 0 : res_op0 = _r1;
4053 : }
4054 0 : tree _r;
4055 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4056 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 961, __FILE__, __LINE__, true);
4057 0 : return _r;
4058 : }
4059 0 : next_after_fail1392:;
4060 : }
4061 : }
4062 : }
4063 : }
4064 : }
4065 : }
4066 : break;
4067 : }
4068 24 : case GE_EXPR:
4069 24 : {
4070 24 : tree _q40 = TREE_OPERAND (_q30, 0);
4071 24 : tree _q41 = TREE_OPERAND (_q30, 1);
4072 24 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4073 : {
4074 0 : if (real_zerop (_q41))
4075 : {
4076 0 : if (real_onep (_q31))
4077 : {
4078 0 : if (real_minus_onep (_q32))
4079 : {
4080 0 : {
4081 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4082 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4083 : )
4084 : {
4085 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1393;
4086 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1393;
4087 0 : {
4088 0 : tree res_op0;
4089 0 : {
4090 0 : tree _o1[1], _r1;
4091 0 : _o1[0] = captures[0];
4092 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4093 0 : res_op0 = _r1;
4094 : }
4095 0 : tree _r;
4096 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4097 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 961, __FILE__, __LINE__, true);
4098 0 : return _r;
4099 : }
4100 0 : next_after_fail1393:;
4101 : }
4102 : }
4103 : }
4104 : }
4105 : }
4106 : }
4107 : break;
4108 : }
4109 51 : case LT_EXPR:
4110 51 : {
4111 51 : tree _q40 = TREE_OPERAND (_q30, 0);
4112 51 : tree _q41 = TREE_OPERAND (_q30, 1);
4113 51 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4114 : {
4115 0 : if (real_zerop (_q41))
4116 : {
4117 0 : if (real_onep (_q31))
4118 : {
4119 0 : if (real_minus_onep (_q32))
4120 : {
4121 0 : {
4122 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4123 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4124 : )
4125 : {
4126 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1394;
4127 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1394;
4128 0 : {
4129 0 : tree res_op0;
4130 0 : {
4131 0 : tree _o1[1], _r1;
4132 0 : _o1[0] = captures[0];
4133 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4134 0 : res_op0 = _r1;
4135 : }
4136 0 : tree _r;
4137 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4138 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 961, __FILE__, __LINE__, true);
4139 0 : return _r;
4140 : }
4141 0 : next_after_fail1394:;
4142 : }
4143 : }
4144 : }
4145 : }
4146 : }
4147 : }
4148 : break;
4149 : }
4150 5 : case LE_EXPR:
4151 5 : {
4152 5 : tree _q40 = TREE_OPERAND (_q30, 0);
4153 5 : tree _q41 = TREE_OPERAND (_q30, 1);
4154 5 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4155 : {
4156 0 : if (real_zerop (_q41))
4157 : {
4158 0 : if (real_onep (_q31))
4159 : {
4160 0 : if (real_minus_onep (_q32))
4161 : {
4162 0 : {
4163 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
4164 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4165 : )
4166 : {
4167 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1395;
4168 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1395;
4169 0 : {
4170 0 : tree res_op0;
4171 0 : {
4172 0 : tree _o1[1], _r1;
4173 0 : _o1[0] = captures[0];
4174 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4175 0 : res_op0 = _r1;
4176 : }
4177 0 : tree _r;
4178 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4179 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 961, __FILE__, __LINE__, true);
4180 0 : return _r;
4181 : }
4182 0 : next_after_fail1395:;
4183 : }
4184 : }
4185 : }
4186 : }
4187 : }
4188 : }
4189 : break;
4190 : }
4191 : default:;
4192 : }
4193 : break;
4194 : }
4195 70033355 : default:;
4196 : }
4197 70033355 : switch (TREE_CODE (_p0))
4198 : {
4199 84390 : case COND_EXPR:
4200 84390 : {
4201 84390 : tree _q20 = TREE_OPERAND (_p0, 0);
4202 84390 : tree _q21 = TREE_OPERAND (_p0, 1);
4203 84390 : tree _q22 = TREE_OPERAND (_p0, 2);
4204 84390 : switch (TREE_CODE (_q20))
4205 : {
4206 19529 : case GT_EXPR:
4207 19529 : {
4208 19529 : tree _q30 = TREE_OPERAND (_q20, 0);
4209 19529 : tree _q31 = TREE_OPERAND (_q20, 1);
4210 19529 : if (real_zerop (_q31))
4211 : {
4212 4 : if (real_onep (_q21))
4213 : {
4214 3 : if (real_minus_onep (_q22))
4215 : {
4216 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4217 : {
4218 1 : {
4219 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4220 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4221 : )
4222 : {
4223 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1396;
4224 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1396;
4225 1 : {
4226 1 : tree res_op0;
4227 1 : {
4228 1 : tree _o1[1], _r1;
4229 1 : _o1[0] = captures[0];
4230 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4231 1 : res_op0 = _r1;
4232 : }
4233 1 : tree _r;
4234 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4235 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 961, __FILE__, __LINE__, true);
4236 1 : return _r;
4237 : }
4238 0 : next_after_fail1396:;
4239 : }
4240 : }
4241 : }
4242 : }
4243 : }
4244 3 : if (real_minus_onep (_q21))
4245 : {
4246 1 : if (real_onep (_q22))
4247 : {
4248 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4249 : {
4250 1 : {
4251 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4252 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4253 : )
4254 : {
4255 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1397;
4256 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1397;
4257 1 : {
4258 1 : tree res_op0;
4259 1 : {
4260 1 : tree _o1[1], _r1;
4261 1 : _o1[0] = captures[0];
4262 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4263 1 : res_op0 = _r1;
4264 : }
4265 1 : tree _r;
4266 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4267 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 962, __FILE__, __LINE__, true);
4268 1 : return _r;
4269 : }
4270 0 : next_after_fail1397:;
4271 : }
4272 : }
4273 : }
4274 : }
4275 : }
4276 : }
4277 : break;
4278 : }
4279 8245 : case GE_EXPR:
4280 8245 : {
4281 8245 : tree _q30 = TREE_OPERAND (_q20, 0);
4282 8245 : tree _q31 = TREE_OPERAND (_q20, 1);
4283 8245 : if (real_zerop (_q31))
4284 : {
4285 2 : if (real_onep (_q21))
4286 : {
4287 1 : if (real_minus_onep (_q22))
4288 : {
4289 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4290 : {
4291 1 : {
4292 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4293 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4294 : )
4295 : {
4296 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1398;
4297 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1398;
4298 1 : {
4299 1 : tree res_op0;
4300 1 : {
4301 1 : tree _o1[1], _r1;
4302 1 : _o1[0] = captures[0];
4303 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4304 1 : res_op0 = _r1;
4305 : }
4306 1 : tree _r;
4307 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4308 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 961, __FILE__, __LINE__, true);
4309 1 : return _r;
4310 : }
4311 0 : next_after_fail1398:;
4312 : }
4313 : }
4314 : }
4315 : }
4316 : }
4317 1 : if (real_minus_onep (_q21))
4318 : {
4319 1 : if (real_onep (_q22))
4320 : {
4321 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4322 : {
4323 1 : {
4324 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4325 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4326 : )
4327 : {
4328 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1399;
4329 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1399;
4330 1 : {
4331 1 : tree res_op0;
4332 1 : {
4333 1 : tree _o1[1], _r1;
4334 1 : _o1[0] = captures[0];
4335 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4336 1 : res_op0 = _r1;
4337 : }
4338 1 : tree _r;
4339 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4340 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 962, __FILE__, __LINE__, true);
4341 1 : return _r;
4342 : }
4343 0 : next_after_fail1399:;
4344 : }
4345 : }
4346 : }
4347 : }
4348 : }
4349 : }
4350 : break;
4351 : }
4352 7743 : case LT_EXPR:
4353 7743 : {
4354 7743 : tree _q30 = TREE_OPERAND (_q20, 0);
4355 7743 : tree _q31 = TREE_OPERAND (_q20, 1);
4356 7743 : if (real_zerop (_q31))
4357 : {
4358 2 : if (real_onep (_q21))
4359 : {
4360 1 : if (real_minus_onep (_q22))
4361 : {
4362 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4363 : {
4364 1 : {
4365 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4366 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4367 : )
4368 : {
4369 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1400;
4370 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1400;
4371 1 : {
4372 1 : tree res_op0;
4373 1 : {
4374 1 : tree _o1[1], _r1;
4375 1 : _o1[0] = captures[0];
4376 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4377 1 : res_op0 = _r1;
4378 : }
4379 1 : tree _r;
4380 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4381 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 961, __FILE__, __LINE__, true);
4382 1 : return _r;
4383 : }
4384 0 : next_after_fail1400:;
4385 : }
4386 : }
4387 : }
4388 : }
4389 : }
4390 1 : if (real_minus_onep (_q21))
4391 : {
4392 1 : if (real_onep (_q22))
4393 : {
4394 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4395 : {
4396 1 : {
4397 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4398 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4399 : )
4400 : {
4401 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1401;
4402 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1401;
4403 1 : {
4404 1 : tree res_op0;
4405 1 : {
4406 1 : tree _o1[1], _r1;
4407 1 : _o1[0] = captures[0];
4408 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4409 1 : res_op0 = _r1;
4410 : }
4411 1 : tree _r;
4412 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4413 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 962, __FILE__, __LINE__, true);
4414 1 : return _r;
4415 : }
4416 0 : next_after_fail1401:;
4417 : }
4418 : }
4419 : }
4420 : }
4421 : }
4422 : }
4423 : break;
4424 : }
4425 3233 : case LE_EXPR:
4426 3233 : {
4427 3233 : tree _q30 = TREE_OPERAND (_q20, 0);
4428 3233 : tree _q31 = TREE_OPERAND (_q20, 1);
4429 3233 : if (real_zerop (_q31))
4430 : {
4431 2 : if (real_onep (_q21))
4432 : {
4433 1 : if (real_minus_onep (_q22))
4434 : {
4435 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4436 : {
4437 1 : {
4438 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
4439 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4440 : )
4441 : {
4442 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1402;
4443 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1402;
4444 1 : {
4445 1 : tree res_op0;
4446 1 : {
4447 1 : tree _o1[1], _r1;
4448 1 : _o1[0] = captures[0];
4449 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4450 1 : res_op0 = _r1;
4451 : }
4452 1 : tree _r;
4453 1 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4454 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 961, __FILE__, __LINE__, true);
4455 1 : return _r;
4456 : }
4457 0 : next_after_fail1402:;
4458 : }
4459 : }
4460 : }
4461 : }
4462 : }
4463 1 : if (real_minus_onep (_q21))
4464 : {
4465 1 : if (real_onep (_q22))
4466 : {
4467 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4468 : {
4469 1 : {
4470 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
4471 1 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4472 : )
4473 : {
4474 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1403;
4475 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1403;
4476 1 : {
4477 1 : tree res_op0;
4478 1 : {
4479 1 : tree _o1[1], _r1;
4480 1 : _o1[0] = captures[0];
4481 1 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4482 1 : res_op0 = _r1;
4483 : }
4484 1 : tree _r;
4485 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4486 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 962, __FILE__, __LINE__, true);
4487 1 : return _r;
4488 : }
4489 0 : next_after_fail1403:;
4490 : }
4491 : }
4492 : }
4493 : }
4494 : }
4495 : }
4496 : break;
4497 : }
4498 : default:;
4499 : }
4500 : break;
4501 : }
4502 70033347 : default:;
4503 : }
4504 70033347 : switch (TREE_CODE (_p1))
4505 : {
4506 3037 : case COND_EXPR:
4507 3037 : {
4508 3037 : tree _q30 = TREE_OPERAND (_p1, 0);
4509 3037 : tree _q31 = TREE_OPERAND (_p1, 1);
4510 3037 : tree _q32 = TREE_OPERAND (_p1, 2);
4511 3037 : switch (TREE_CODE (_q30))
4512 : {
4513 546 : case GT_EXPR:
4514 546 : {
4515 546 : tree _q40 = TREE_OPERAND (_q30, 0);
4516 546 : tree _q41 = TREE_OPERAND (_q30, 1);
4517 546 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4518 : {
4519 0 : if (real_zerop (_q41))
4520 : {
4521 0 : if (real_minus_onep (_q31))
4522 : {
4523 0 : if (real_onep (_q32))
4524 : {
4525 0 : {
4526 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4527 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4528 : )
4529 : {
4530 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1404;
4531 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1404;
4532 0 : {
4533 0 : tree res_op0;
4534 0 : {
4535 0 : tree _o1[1], _r1;
4536 0 : _o1[0] = captures[0];
4537 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4538 0 : res_op0 = _r1;
4539 : }
4540 0 : tree _r;
4541 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4542 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 962, __FILE__, __LINE__, true);
4543 0 : return _r;
4544 : }
4545 0 : next_after_fail1404:;
4546 : }
4547 : }
4548 : }
4549 : }
4550 : }
4551 : }
4552 : break;
4553 : }
4554 24 : case GE_EXPR:
4555 24 : {
4556 24 : tree _q40 = TREE_OPERAND (_q30, 0);
4557 24 : tree _q41 = TREE_OPERAND (_q30, 1);
4558 24 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4559 : {
4560 0 : if (real_zerop (_q41))
4561 : {
4562 0 : if (real_minus_onep (_q31))
4563 : {
4564 0 : if (real_onep (_q32))
4565 : {
4566 0 : {
4567 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4568 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4569 : )
4570 : {
4571 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1405;
4572 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1405;
4573 0 : {
4574 0 : tree res_op0;
4575 0 : {
4576 0 : tree _o1[1], _r1;
4577 0 : _o1[0] = captures[0];
4578 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4579 0 : res_op0 = _r1;
4580 : }
4581 0 : tree _r;
4582 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
4583 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 962, __FILE__, __LINE__, true);
4584 0 : return _r;
4585 : }
4586 0 : next_after_fail1405:;
4587 : }
4588 : }
4589 : }
4590 : }
4591 : }
4592 : }
4593 : break;
4594 : }
4595 51 : case LT_EXPR:
4596 51 : {
4597 51 : tree _q40 = TREE_OPERAND (_q30, 0);
4598 51 : tree _q41 = TREE_OPERAND (_q30, 1);
4599 51 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4600 : {
4601 0 : if (real_zerop (_q41))
4602 : {
4603 0 : if (real_minus_onep (_q31))
4604 : {
4605 0 : if (real_onep (_q32))
4606 : {
4607 0 : {
4608 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4609 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4610 : )
4611 : {
4612 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1406;
4613 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1406;
4614 0 : {
4615 0 : tree res_op0;
4616 0 : {
4617 0 : tree _o1[1], _r1;
4618 0 : _o1[0] = captures[0];
4619 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4620 0 : res_op0 = _r1;
4621 : }
4622 0 : tree _r;
4623 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4624 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 962, __FILE__, __LINE__, true);
4625 0 : return _r;
4626 : }
4627 0 : next_after_fail1406:;
4628 : }
4629 : }
4630 : }
4631 : }
4632 : }
4633 : }
4634 : break;
4635 : }
4636 5 : case LE_EXPR:
4637 5 : {
4638 5 : tree _q40 = TREE_OPERAND (_q30, 0);
4639 5 : tree _q41 = TREE_OPERAND (_q30, 1);
4640 5 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
4641 : {
4642 0 : if (real_zerop (_q41))
4643 : {
4644 0 : if (real_minus_onep (_q31))
4645 : {
4646 0 : if (real_onep (_q32))
4647 : {
4648 0 : {
4649 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
4650 0 : if (!tree_expr_maybe_nan_p (captures[0]) && !HONOR_SIGNED_ZEROS (type)
4651 : )
4652 : {
4653 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1407;
4654 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1407;
4655 0 : {
4656 0 : tree res_op0;
4657 0 : {
4658 0 : tree _o1[1], _r1;
4659 0 : _o1[0] = captures[0];
4660 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
4661 0 : res_op0 = _r1;
4662 : }
4663 0 : tree _r;
4664 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
4665 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 962, __FILE__, __LINE__, true);
4666 0 : return _r;
4667 : }
4668 0 : next_after_fail1407:;
4669 : }
4670 : }
4671 : }
4672 : }
4673 : }
4674 : }
4675 : break;
4676 : }
4677 : default:;
4678 : }
4679 : break;
4680 : }
4681 866170 : case CALL_EXPR:
4682 866170 : switch (get_call_combined_fn (_p1))
4683 : {
4684 20 : case CFN_BUILT_IN_COPYSIGNF16:
4685 20 : if (call_expr_nargs (_p1) == 2)
4686 : {
4687 20 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4688 20 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4689 20 : if (real_onep (_q30))
4690 : {
4691 20 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4692 : {
4693 0 : {
4694 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4695 0 : tree res = generic_simplify_176 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
4696 0 : if (res) return res;
4697 : }
4698 : }
4699 : }
4700 : }
4701 : break;
4702 0 : case CFN_BUILT_IN_COPYSIGNF32:
4703 0 : if (call_expr_nargs (_p1) == 2)
4704 : {
4705 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4706 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4707 0 : if (real_onep (_q30))
4708 : {
4709 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4710 : {
4711 0 : {
4712 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4713 0 : tree res = generic_simplify_176 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
4714 0 : if (res) return res;
4715 : }
4716 : }
4717 : }
4718 : }
4719 : break;
4720 0 : case CFN_BUILT_IN_COPYSIGNF64:
4721 0 : if (call_expr_nargs (_p1) == 2)
4722 : {
4723 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4724 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4725 0 : if (real_onep (_q30))
4726 : {
4727 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4728 : {
4729 0 : {
4730 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4731 0 : tree res = generic_simplify_176 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
4732 0 : if (res) return res;
4733 : }
4734 : }
4735 : }
4736 : }
4737 : break;
4738 0 : case CFN_BUILT_IN_COPYSIGNF128X:
4739 0 : if (call_expr_nargs (_p1) == 2)
4740 : {
4741 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4742 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4743 0 : if (real_onep (_q30))
4744 : {
4745 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4746 : {
4747 0 : {
4748 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4749 0 : tree res = generic_simplify_176 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
4750 0 : if (res) return res;
4751 : }
4752 : }
4753 : }
4754 : }
4755 : break;
4756 0 : case CFN_BUILT_IN_COPYSIGNF128:
4757 0 : if (call_expr_nargs (_p1) == 2)
4758 : {
4759 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4760 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4761 0 : if (real_onep (_q30))
4762 : {
4763 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4764 : {
4765 0 : {
4766 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4767 0 : tree res = generic_simplify_176 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
4768 0 : if (res) return res;
4769 : }
4770 : }
4771 : }
4772 : }
4773 : break;
4774 0 : case CFN_BUILT_IN_COPYSIGNF32X:
4775 0 : if (call_expr_nargs (_p1) == 2)
4776 : {
4777 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4778 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4779 0 : if (real_onep (_q30))
4780 : {
4781 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4782 : {
4783 0 : {
4784 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4785 0 : tree res = generic_simplify_176 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
4786 0 : if (res) return res;
4787 : }
4788 : }
4789 : }
4790 : }
4791 : break;
4792 0 : case CFN_BUILT_IN_COPYSIGNF64X:
4793 0 : if (call_expr_nargs (_p1) == 2)
4794 : {
4795 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4796 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4797 0 : if (real_onep (_q30))
4798 : {
4799 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4800 : {
4801 0 : {
4802 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4803 0 : tree res = generic_simplify_176 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
4804 0 : if (res) return res;
4805 : }
4806 : }
4807 : }
4808 : }
4809 : break;
4810 18 : case CFN_BUILT_IN_COPYSIGN:
4811 18 : if (call_expr_nargs (_p1) == 2)
4812 : {
4813 18 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4814 18 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4815 18 : if (real_onep (_q30))
4816 : {
4817 14 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4818 : {
4819 0 : {
4820 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4821 0 : tree res = generic_simplify_176 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
4822 0 : if (res) return res;
4823 : }
4824 : }
4825 : }
4826 : }
4827 : break;
4828 14 : case CFN_BUILT_IN_COPYSIGNF:
4829 14 : if (call_expr_nargs (_p1) == 2)
4830 : {
4831 14 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4832 14 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4833 14 : if (real_onep (_q30))
4834 : {
4835 12 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4836 : {
4837 0 : {
4838 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4839 0 : tree res = generic_simplify_176 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
4840 0 : if (res) return res;
4841 : }
4842 : }
4843 : }
4844 : }
4845 : break;
4846 0 : case CFN_BUILT_IN_COPYSIGNL:
4847 0 : if (call_expr_nargs (_p1) == 2)
4848 : {
4849 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4850 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4851 0 : if (real_onep (_q30))
4852 : {
4853 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4854 : {
4855 0 : {
4856 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4857 0 : tree res = generic_simplify_176 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
4858 0 : if (res) return res;
4859 : }
4860 : }
4861 : }
4862 : }
4863 : break;
4864 0 : case CFN_COPYSIGN:
4865 0 : if (call_expr_nargs (_p1) == 2)
4866 : {
4867 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
4868 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
4869 0 : if (real_onep (_q30))
4870 : {
4871 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4872 : {
4873 0 : {
4874 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4875 0 : tree res = generic_simplify_176 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
4876 0 : if (res) return res;
4877 : }
4878 : }
4879 : }
4880 : }
4881 : break;
4882 : default:;
4883 : }
4884 : break;
4885 70033347 : default:;
4886 : }
4887 70033347 : switch (TREE_CODE (_p0))
4888 : {
4889 2627369 : case CALL_EXPR:
4890 2627369 : switch (get_call_combined_fn (_p0))
4891 : {
4892 1 : case CFN_BUILT_IN_COPYSIGNF16:
4893 1 : if (call_expr_nargs (_p0) == 2)
4894 : {
4895 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4896 1 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4897 1 : if (real_onep (_q20))
4898 : {
4899 1 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4900 : {
4901 0 : {
4902 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
4903 0 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
4904 0 : if (res) return res;
4905 : }
4906 : }
4907 1 : switch (TREE_CODE (_q21))
4908 : {
4909 0 : case NEGATE_EXPR:
4910 0 : {
4911 0 : tree _q40 = TREE_OPERAND (_q21, 0);
4912 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
4913 : {
4914 0 : {
4915 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
4916 0 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
4917 0 : if (res) return res;
4918 : }
4919 : }
4920 : break;
4921 : }
4922 : default:;
4923 : }
4924 : }
4925 : }
4926 : break;
4927 0 : case CFN_BUILT_IN_COPYSIGNF32:
4928 0 : if (call_expr_nargs (_p0) == 2)
4929 : {
4930 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4931 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4932 0 : if (real_onep (_q20))
4933 : {
4934 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4935 : {
4936 0 : {
4937 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
4938 0 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
4939 0 : if (res) return res;
4940 : }
4941 : }
4942 0 : switch (TREE_CODE (_q21))
4943 : {
4944 0 : case NEGATE_EXPR:
4945 0 : {
4946 0 : tree _q40 = TREE_OPERAND (_q21, 0);
4947 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
4948 : {
4949 0 : {
4950 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
4951 0 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
4952 0 : if (res) return res;
4953 : }
4954 : }
4955 : break;
4956 : }
4957 : default:;
4958 : }
4959 : }
4960 : }
4961 : break;
4962 0 : case CFN_BUILT_IN_COPYSIGNF64:
4963 0 : if (call_expr_nargs (_p0) == 2)
4964 : {
4965 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
4966 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
4967 0 : if (real_onep (_q20))
4968 : {
4969 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4970 : {
4971 0 : {
4972 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
4973 0 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
4974 0 : if (res) return res;
4975 : }
4976 : }
4977 0 : switch (TREE_CODE (_q21))
4978 : {
4979 0 : case NEGATE_EXPR:
4980 0 : {
4981 0 : tree _q40 = TREE_OPERAND (_q21, 0);
4982 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
4983 : {
4984 0 : {
4985 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
4986 0 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
4987 0 : if (res) return res;
4988 : }
4989 : }
4990 : break;
4991 : }
4992 : default:;
4993 : }
4994 : }
4995 : }
4996 : break;
4997 0 : case CFN_BUILT_IN_COPYSIGNF128X:
4998 0 : if (call_expr_nargs (_p0) == 2)
4999 : {
5000 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5001 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5002 0 : if (real_onep (_q20))
5003 : {
5004 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5005 : {
5006 0 : {
5007 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5008 0 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5009 0 : if (res) return res;
5010 : }
5011 : }
5012 0 : switch (TREE_CODE (_q21))
5013 : {
5014 0 : case NEGATE_EXPR:
5015 0 : {
5016 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5017 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5018 : {
5019 0 : {
5020 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5021 0 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5022 0 : if (res) return res;
5023 : }
5024 : }
5025 : break;
5026 : }
5027 : default:;
5028 : }
5029 : }
5030 : }
5031 : break;
5032 8 : case CFN_BUILT_IN_COPYSIGNF128:
5033 8 : if (call_expr_nargs (_p0) == 2)
5034 : {
5035 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5036 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5037 8 : if (real_onep (_q20))
5038 : {
5039 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5040 : {
5041 0 : {
5042 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5043 0 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5044 0 : if (res) return res;
5045 : }
5046 : }
5047 0 : switch (TREE_CODE (_q21))
5048 : {
5049 0 : case NEGATE_EXPR:
5050 0 : {
5051 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5052 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5053 : {
5054 0 : {
5055 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5056 0 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5057 0 : if (res) return res;
5058 : }
5059 : }
5060 : break;
5061 : }
5062 : default:;
5063 : }
5064 : }
5065 : }
5066 : break;
5067 0 : case CFN_BUILT_IN_COPYSIGNF32X:
5068 0 : if (call_expr_nargs (_p0) == 2)
5069 : {
5070 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5071 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5072 0 : if (real_onep (_q20))
5073 : {
5074 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5075 : {
5076 0 : {
5077 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5078 0 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5079 0 : if (res) return res;
5080 : }
5081 : }
5082 0 : switch (TREE_CODE (_q21))
5083 : {
5084 0 : case NEGATE_EXPR:
5085 0 : {
5086 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5087 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5088 : {
5089 0 : {
5090 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5091 0 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5092 0 : if (res) return res;
5093 : }
5094 : }
5095 : break;
5096 : }
5097 : default:;
5098 : }
5099 : }
5100 : }
5101 : break;
5102 0 : case CFN_BUILT_IN_COPYSIGNF64X:
5103 0 : if (call_expr_nargs (_p0) == 2)
5104 : {
5105 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5106 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5107 0 : if (real_onep (_q20))
5108 : {
5109 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5110 : {
5111 0 : {
5112 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5113 0 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5114 0 : if (res) return res;
5115 : }
5116 : }
5117 0 : switch (TREE_CODE (_q21))
5118 : {
5119 0 : case NEGATE_EXPR:
5120 0 : {
5121 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5122 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5123 : {
5124 0 : {
5125 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5126 0 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5127 0 : if (res) return res;
5128 : }
5129 : }
5130 : break;
5131 : }
5132 : default:;
5133 : }
5134 : }
5135 : }
5136 : break;
5137 18 : case CFN_BUILT_IN_COPYSIGN:
5138 18 : if (call_expr_nargs (_p0) == 2)
5139 : {
5140 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5141 18 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5142 18 : if (real_onep (_q20))
5143 : {
5144 3 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5145 : {
5146 0 : {
5147 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5148 0 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
5149 0 : if (res) return res;
5150 : }
5151 : }
5152 3 : switch (TREE_CODE (_q21))
5153 : {
5154 0 : case NEGATE_EXPR:
5155 0 : {
5156 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5157 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5158 : {
5159 0 : {
5160 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5161 0 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
5162 0 : if (res) return res;
5163 : }
5164 : }
5165 : break;
5166 : }
5167 : default:;
5168 : }
5169 : }
5170 : }
5171 : break;
5172 36 : case CFN_BUILT_IN_COPYSIGNF:
5173 36 : if (call_expr_nargs (_p0) == 2)
5174 : {
5175 36 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5176 36 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5177 36 : if (real_onep (_q20))
5178 : {
5179 12 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5180 : {
5181 4 : {
5182 4 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5183 4 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
5184 4 : if (res) return res;
5185 : }
5186 : }
5187 12 : switch (TREE_CODE (_q21))
5188 : {
5189 0 : case NEGATE_EXPR:
5190 0 : {
5191 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5192 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5193 : {
5194 0 : {
5195 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5196 0 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
5197 0 : if (res) return res;
5198 : }
5199 : }
5200 : break;
5201 : }
5202 : default:;
5203 : }
5204 : }
5205 : }
5206 : break;
5207 8 : case CFN_BUILT_IN_COPYSIGNL:
5208 8 : if (call_expr_nargs (_p0) == 2)
5209 : {
5210 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5211 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5212 8 : if (real_onep (_q20))
5213 : {
5214 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5215 : {
5216 0 : {
5217 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5218 0 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
5219 0 : if (res) return res;
5220 : }
5221 : }
5222 0 : switch (TREE_CODE (_q21))
5223 : {
5224 0 : case NEGATE_EXPR:
5225 0 : {
5226 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5227 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5228 : {
5229 0 : {
5230 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5231 0 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
5232 0 : if (res) return res;
5233 : }
5234 : }
5235 : break;
5236 : }
5237 : default:;
5238 : }
5239 : }
5240 : }
5241 : break;
5242 0 : case CFN_COPYSIGN:
5243 0 : if (call_expr_nargs (_p0) == 2)
5244 : {
5245 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5246 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5247 0 : if (real_onep (_q20))
5248 : {
5249 0 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5250 : {
5251 0 : {
5252 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q21 };
5253 0 : tree res = generic_simplify_177 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
5254 0 : if (res) return res;
5255 : }
5256 : }
5257 0 : switch (TREE_CODE (_q21))
5258 : {
5259 0 : case NEGATE_EXPR:
5260 0 : {
5261 0 : tree _q40 = TREE_OPERAND (_q21, 0);
5262 0 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5263 : {
5264 0 : {
5265 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
5266 0 : tree res = generic_simplify_178 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
5267 0 : if (res) return res;
5268 : }
5269 : }
5270 : break;
5271 : }
5272 : default:;
5273 : }
5274 : }
5275 : }
5276 : break;
5277 : default:;
5278 : }
5279 : break;
5280 70033347 : default:;
5281 : }
5282 70033347 : switch (TREE_CODE (_p1))
5283 : {
5284 866170 : case CALL_EXPR:
5285 866170 : switch (get_call_combined_fn (_p1))
5286 : {
5287 20 : case CFN_BUILT_IN_COPYSIGNF16:
5288 20 : if (call_expr_nargs (_p1) == 2)
5289 : {
5290 20 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5291 20 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5292 20 : if (real_onep (_q30))
5293 : {
5294 20 : switch (TREE_CODE (_q31))
5295 : {
5296 0 : case NEGATE_EXPR:
5297 0 : {
5298 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5299 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5300 : {
5301 0 : {
5302 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5303 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
5304 0 : if (res) return res;
5305 : }
5306 : }
5307 : break;
5308 : }
5309 : default:;
5310 : }
5311 : }
5312 : }
5313 : break;
5314 0 : case CFN_BUILT_IN_COPYSIGNF32:
5315 0 : if (call_expr_nargs (_p1) == 2)
5316 : {
5317 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5318 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5319 0 : if (real_onep (_q30))
5320 : {
5321 0 : switch (TREE_CODE (_q31))
5322 : {
5323 0 : case NEGATE_EXPR:
5324 0 : {
5325 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5326 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5327 : {
5328 0 : {
5329 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5330 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
5331 0 : if (res) return res;
5332 : }
5333 : }
5334 : break;
5335 : }
5336 : default:;
5337 : }
5338 : }
5339 : }
5340 : break;
5341 0 : case CFN_BUILT_IN_COPYSIGNF64:
5342 0 : if (call_expr_nargs (_p1) == 2)
5343 : {
5344 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5345 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5346 0 : if (real_onep (_q30))
5347 : {
5348 0 : switch (TREE_CODE (_q31))
5349 : {
5350 0 : case NEGATE_EXPR:
5351 0 : {
5352 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5353 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5354 : {
5355 0 : {
5356 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5357 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
5358 0 : if (res) return res;
5359 : }
5360 : }
5361 : break;
5362 : }
5363 : default:;
5364 : }
5365 : }
5366 : }
5367 : break;
5368 0 : case CFN_BUILT_IN_COPYSIGNF128X:
5369 0 : if (call_expr_nargs (_p1) == 2)
5370 : {
5371 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5372 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5373 0 : if (real_onep (_q30))
5374 : {
5375 0 : switch (TREE_CODE (_q31))
5376 : {
5377 0 : case NEGATE_EXPR:
5378 0 : {
5379 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5380 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5381 : {
5382 0 : {
5383 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5384 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5385 0 : if (res) return res;
5386 : }
5387 : }
5388 : break;
5389 : }
5390 : default:;
5391 : }
5392 : }
5393 : }
5394 : break;
5395 0 : case CFN_BUILT_IN_COPYSIGNF128:
5396 0 : if (call_expr_nargs (_p1) == 2)
5397 : {
5398 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5399 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5400 0 : if (real_onep (_q30))
5401 : {
5402 0 : switch (TREE_CODE (_q31))
5403 : {
5404 0 : case NEGATE_EXPR:
5405 0 : {
5406 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5407 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5408 : {
5409 0 : {
5410 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5411 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5412 0 : if (res) return res;
5413 : }
5414 : }
5415 : break;
5416 : }
5417 : default:;
5418 : }
5419 : }
5420 : }
5421 : break;
5422 0 : case CFN_BUILT_IN_COPYSIGNF32X:
5423 0 : if (call_expr_nargs (_p1) == 2)
5424 : {
5425 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5426 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5427 0 : if (real_onep (_q30))
5428 : {
5429 0 : switch (TREE_CODE (_q31))
5430 : {
5431 0 : case NEGATE_EXPR:
5432 0 : {
5433 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5434 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5435 : {
5436 0 : {
5437 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5438 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5439 0 : if (res) return res;
5440 : }
5441 : }
5442 : break;
5443 : }
5444 : default:;
5445 : }
5446 : }
5447 : }
5448 : break;
5449 0 : case CFN_BUILT_IN_COPYSIGNF64X:
5450 0 : if (call_expr_nargs (_p1) == 2)
5451 : {
5452 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5453 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5454 0 : if (real_onep (_q30))
5455 : {
5456 0 : switch (TREE_CODE (_q31))
5457 : {
5458 0 : case NEGATE_EXPR:
5459 0 : {
5460 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5461 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5462 : {
5463 0 : {
5464 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5465 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5466 0 : if (res) return res;
5467 : }
5468 : }
5469 : break;
5470 : }
5471 : default:;
5472 : }
5473 : }
5474 : }
5475 : break;
5476 18 : case CFN_BUILT_IN_COPYSIGN:
5477 18 : if (call_expr_nargs (_p1) == 2)
5478 : {
5479 18 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5480 18 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5481 18 : if (real_onep (_q30))
5482 : {
5483 14 : switch (TREE_CODE (_q31))
5484 : {
5485 0 : case NEGATE_EXPR:
5486 0 : {
5487 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5488 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5489 : {
5490 0 : {
5491 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5492 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
5493 0 : if (res) return res;
5494 : }
5495 : }
5496 : break;
5497 : }
5498 : default:;
5499 : }
5500 : }
5501 : }
5502 : break;
5503 14 : case CFN_BUILT_IN_COPYSIGNF:
5504 14 : if (call_expr_nargs (_p1) == 2)
5505 : {
5506 14 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5507 14 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5508 14 : if (real_onep (_q30))
5509 : {
5510 12 : switch (TREE_CODE (_q31))
5511 : {
5512 0 : case NEGATE_EXPR:
5513 0 : {
5514 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5515 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5516 : {
5517 0 : {
5518 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5519 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
5520 0 : if (res) return res;
5521 : }
5522 : }
5523 : break;
5524 : }
5525 : default:;
5526 : }
5527 : }
5528 : }
5529 : break;
5530 0 : case CFN_BUILT_IN_COPYSIGNL:
5531 0 : if (call_expr_nargs (_p1) == 2)
5532 : {
5533 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5534 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5535 0 : if (real_onep (_q30))
5536 : {
5537 0 : switch (TREE_CODE (_q31))
5538 : {
5539 0 : case NEGATE_EXPR:
5540 0 : {
5541 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5542 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5543 : {
5544 0 : {
5545 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5546 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
5547 0 : if (res) return res;
5548 : }
5549 : }
5550 : break;
5551 : }
5552 : default:;
5553 : }
5554 : }
5555 : }
5556 : break;
5557 0 : case CFN_COPYSIGN:
5558 0 : if (call_expr_nargs (_p1) == 2)
5559 : {
5560 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
5561 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
5562 0 : if (real_onep (_q30))
5563 : {
5564 0 : switch (TREE_CODE (_q31))
5565 : {
5566 0 : case NEGATE_EXPR:
5567 0 : {
5568 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5569 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5570 : {
5571 0 : {
5572 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5573 0 : tree res = generic_simplify_179 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
5574 0 : if (res) return res;
5575 : }
5576 : }
5577 : break;
5578 : }
5579 : default:;
5580 : }
5581 : }
5582 : }
5583 : break;
5584 : default:;
5585 : }
5586 : break;
5587 70033347 : default:;
5588 : }
5589 70033347 : if (integer_onep (_p1))
5590 : {
5591 3285180 : {
5592 3285180 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5593 3285180 : tree res = generic_simplify_180 (loc, type, _p0, _p1, captures, MULT_EXPR);
5594 3285180 : if (res) return res;
5595 : }
5596 : }
5597 66748167 : switch (TREE_CODE (_p0))
5598 : {
5599 5604973 : case MULT_EXPR:
5600 5604973 : {
5601 5604973 : tree _q20 = TREE_OPERAND (_p0, 0);
5602 5604973 : tree _q21 = TREE_OPERAND (_p0, 1);
5603 5604973 : switch (TREE_CODE (_q21))
5604 : {
5605 1107805 : case INTEGER_CST:
5606 1107805 : {
5607 1107805 : switch (TREE_CODE (_p1))
5608 : {
5609 979840 : case INTEGER_CST:
5610 979840 : {
5611 979840 : {
5612 979840 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5613 979840 : {
5614 979840 : wi::overflow_type overflow;
5615 979840 : wide_int mul = wi::mul (wi::to_wide (captures[1]), wi::to_wide (captures[2]),
5616 1959680 : TYPE_SIGN (type), &overflow);
5617 979840 : if (!overflow || TYPE_OVERFLOW_WRAPS (type)
5618 : )
5619 : {
5620 979810 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1408;
5621 979810 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1408;
5622 979810 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1408;
5623 979810 : {
5624 979810 : tree res_op0;
5625 979810 : res_op0 = captures[0];
5626 979810 : tree res_op1;
5627 979810 : res_op1 = wide_int_to_tree (type, mul);
5628 979810 : tree _r;
5629 979810 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5630 979810 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 963, __FILE__, __LINE__, true);
5631 979810 : return _r;
5632 : }
5633 30 : next_after_fail1408:;
5634 : }
5635 979810 : }
5636 : }
5637 30 : break;
5638 : }
5639 : default:;
5640 : }
5641 : break;
5642 : }
5643 : default:;
5644 : }
5645 : break;
5646 : }
5647 7188590 : case PLUS_EXPR:
5648 7188590 : {
5649 7188590 : tree _q20 = TREE_OPERAND (_p0, 0);
5650 7188590 : tree _q21 = TREE_OPERAND (_p0, 1);
5651 7188590 : switch (TREE_CODE (_q20))
5652 : {
5653 1130278 : case MULT_EXPR:
5654 1130278 : {
5655 1130278 : tree _q30 = TREE_OPERAND (_q20, 0);
5656 1130278 : tree _q31 = TREE_OPERAND (_q20, 1);
5657 1130278 : switch (TREE_CODE (_q31))
5658 : {
5659 308498 : case INTEGER_CST:
5660 308498 : {
5661 308498 : switch (TREE_CODE (_q21))
5662 : {
5663 37158 : case INTEGER_CST:
5664 37158 : {
5665 37158 : switch (TREE_CODE (_p1))
5666 : {
5667 13505 : case INTEGER_CST:
5668 13505 : {
5669 13505 : {
5670 13505 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
5671 13505 : {
5672 13505 : bool overflowed = true;
5673 13505 : wi::overflow_type ovf1, ovf2;
5674 13505 : wide_int mul = wi::mul (wi::to_wide (captures[3]), wi::to_wide (captures[5]),
5675 27010 : TYPE_SIGN (type), &ovf1);
5676 13505 : wide_int add = wi::mul (wi::to_wide (captures[4]), wi::to_wide (captures[5]),
5677 27010 : TYPE_SIGN (type), &ovf2);
5678 13505 : if (TYPE_OVERFLOW_UNDEFINED (type))
5679 : {
5680 : }
5681 : else
5682 5586 : overflowed = false;
5683 5586 : if (!overflowed
5684 : )
5685 : {
5686 5586 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1409;
5687 5586 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1409;
5688 5586 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail1409;
5689 5586 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1409;
5690 5586 : {
5691 5586 : tree res_op0;
5692 5586 : {
5693 5586 : tree _o1[2], _r1;
5694 5586 : _o1[0] = captures[2];
5695 5586 : _o1[1] = wide_int_to_tree (type, mul);
5696 5586 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
5697 5586 : res_op0 = _r1;
5698 : }
5699 5586 : tree res_op1;
5700 5586 : res_op1 = wide_int_to_tree (type, add);
5701 5586 : tree _r;
5702 5586 : _r = fold_build2_loc (loc, PLUS_EXPR, type, res_op0, res_op1);
5703 5586 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 964, __FILE__, __LINE__, true);
5704 5586 : return _r;
5705 : }
5706 7919 : next_after_fail1409:;
5707 : }
5708 13505 : }
5709 : }
5710 7919 : break;
5711 : }
5712 : default:;
5713 : }
5714 : break;
5715 : }
5716 : default:;
5717 : }
5718 : break;
5719 : }
5720 : default:;
5721 : }
5722 : break;
5723 : }
5724 : default:;
5725 : }
5726 : break;
5727 : }
5728 84215 : case TRUNC_DIV_EXPR:
5729 84215 : {
5730 84215 : tree _q20 = TREE_OPERAND (_p0, 0);
5731 84215 : tree _q21 = TREE_OPERAND (_p0, 1);
5732 84215 : if (integer_pow2p (_q21))
5733 : {
5734 63282 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5735 : {
5736 41471 : {
5737 41471 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5738 41471 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[0]))
5739 : )
5740 : {
5741 41407 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1410;
5742 41407 : {
5743 41407 : tree res_op0;
5744 41407 : res_op0 = captures[0];
5745 41407 : tree res_op1;
5746 41407 : {
5747 41407 : tree _o1[1], _r1;
5748 41407 : _o1[0] = captures[1];
5749 41407 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
5750 41407 : res_op1 = _r1;
5751 : }
5752 41407 : tree _r;
5753 41407 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
5754 41407 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 965, __FILE__, __LINE__, true);
5755 41407 : return _r;
5756 : }
5757 0 : next_after_fail1410:;
5758 : }
5759 : }
5760 : }
5761 : }
5762 : break;
5763 : }
5764 260 : case ABS_EXPR:
5765 260 : {
5766 260 : tree _q20 = TREE_OPERAND (_p0, 0);
5767 260 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5768 : {
5769 2 : {
5770 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
5771 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1411;
5772 2 : {
5773 2 : if (! tree_invariant_p (captures[1])) goto next_after_fail1411;
5774 0 : tree res_op0;
5775 0 : res_op0 = unshare_expr (captures[1]);
5776 0 : tree res_op1;
5777 0 : res_op1 = captures[1];
5778 0 : tree _r;
5779 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5780 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 966, __FILE__, __LINE__, true);
5781 0 : return _r;
5782 : }
5783 2 : next_after_fail1411:;
5784 : }
5785 : }
5786 : break;
5787 : }
5788 0 : case ABSU_EXPR:
5789 0 : {
5790 0 : tree _q20 = TREE_OPERAND (_p0, 0);
5791 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5792 : {
5793 0 : {
5794 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20 };
5795 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1412;
5796 0 : {
5797 0 : tree res_op0;
5798 0 : {
5799 0 : tree _o1[1], _r1;
5800 0 : _o1[0] = captures[1];
5801 0 : if (TREE_TYPE (_o1[0]) != type)
5802 : {
5803 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
5804 : }
5805 : else
5806 : _r1 = _o1[0];
5807 0 : captures[2] = _r1;
5808 : }
5809 0 : res_op0 = unshare_expr (captures[2]);
5810 0 : tree res_op1;
5811 0 : res_op1 = captures[2];
5812 0 : tree _r;
5813 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
5814 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 967, __FILE__, __LINE__, true);
5815 0 : return _r;
5816 : }
5817 0 : next_after_fail1412:;
5818 : }
5819 : }
5820 : break;
5821 : }
5822 2414243 : case CALL_EXPR:
5823 2414243 : switch (get_call_combined_fn (_p0))
5824 : {
5825 1 : case CFN_BUILT_IN_COPYSIGNF16:
5826 1 : if (call_expr_nargs (_p0) == 2)
5827 : {
5828 1 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5829 1 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5830 1 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5831 : {
5832 0 : {
5833 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5834 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF16);
5835 0 : if (res) return res;
5836 : }
5837 : }
5838 : }
5839 : break;
5840 0 : case CFN_BUILT_IN_COPYSIGNF32:
5841 0 : if (call_expr_nargs (_p0) == 2)
5842 : {
5843 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5844 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5845 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5846 : {
5847 0 : {
5848 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5849 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32);
5850 0 : if (res) return res;
5851 : }
5852 : }
5853 : }
5854 : break;
5855 0 : case CFN_BUILT_IN_COPYSIGNF64:
5856 0 : if (call_expr_nargs (_p0) == 2)
5857 : {
5858 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5859 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5860 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5861 : {
5862 0 : {
5863 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5864 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64);
5865 0 : if (res) return res;
5866 : }
5867 : }
5868 : }
5869 : break;
5870 0 : case CFN_BUILT_IN_COPYSIGNF128X:
5871 0 : if (call_expr_nargs (_p0) == 2)
5872 : {
5873 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5874 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5875 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
5876 : {
5877 0 : {
5878 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
5879 0 : tree res = generic_simplify_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128X);
5880 0 : if (res) return res;
5881 : }
5882 : }
5883 : }
5884 : break;
5885 8 : case CFN_BUILT_IN_COPYSIGNF128:
5886 8 : if (call_expr_nargs (_p0) == 2)
5887 : {
5888 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5889 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5890 8 : 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_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF128);
5895 0 : if (res) return res;
5896 : }
5897 : }
5898 : }
5899 : break;
5900 0 : case CFN_BUILT_IN_COPYSIGNF32X:
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_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF32X);
5910 0 : if (res) return res;
5911 : }
5912 : }
5913 : }
5914 : break;
5915 0 : case CFN_BUILT_IN_COPYSIGNF64X:
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_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF64X);
5925 0 : if (res) return res;
5926 : }
5927 : }
5928 : }
5929 : break;
5930 18 : case CFN_BUILT_IN_COPYSIGN:
5931 18 : if (call_expr_nargs (_p0) == 2)
5932 : {
5933 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5934 18 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5935 18 : 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_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGN);
5940 0 : if (res) return res;
5941 : }
5942 : }
5943 : }
5944 : break;
5945 36 : case CFN_BUILT_IN_COPYSIGNF:
5946 36 : if (call_expr_nargs (_p0) == 2)
5947 : {
5948 36 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5949 36 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5950 36 : 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_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNF);
5955 0 : if (res) return res;
5956 : }
5957 : }
5958 : }
5959 : break;
5960 8 : case CFN_BUILT_IN_COPYSIGNL:
5961 8 : if (call_expr_nargs (_p0) == 2)
5962 : {
5963 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
5964 8 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
5965 8 : 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_181 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_COPYSIGNL);
5970 0 : if (res) return res;
5971 : }
5972 : }
5973 : }
5974 : break;
5975 0 : case CFN_COPYSIGN:
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_181 (loc, type, _p0, _p1, captures, CFN_COPYSIGN);
5985 0 : if (res) return res;
5986 : }
5987 : }
5988 : }
5989 : break;
5990 : default:;
5991 : }
5992 : break;
5993 65721364 : default:;
5994 : }
5995 65721364 : switch (TREE_CODE (_p1))
5996 : {
5997 6991466 : CASE_CONVERT:
5998 6991466 : {
5999 6991466 : tree _q30 = TREE_OPERAND (_p1, 0);
6000 6991466 : switch (TREE_CODE (_q30))
6001 : {
6002 0 : case LSHIFT_EXPR:
6003 0 : {
6004 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6005 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6006 0 : if (integer_onep (_q40))
6007 : {
6008 0 : {
6009 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q40, _q41 };
6010 0 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures);
6011 0 : if (res) return res;
6012 : }
6013 : }
6014 : break;
6015 : }
6016 : default:;
6017 : }
6018 : break;
6019 : }
6020 65721364 : default:;
6021 : }
6022 65721364 : switch (TREE_CODE (_p0))
6023 : {
6024 31664565 : CASE_CONVERT:
6025 31664565 : {
6026 31664565 : tree _q20 = TREE_OPERAND (_p0, 0);
6027 31664565 : switch (TREE_CODE (_q20))
6028 : {
6029 20 : case LSHIFT_EXPR:
6030 20 : {
6031 20 : tree _q30 = TREE_OPERAND (_q20, 0);
6032 20 : tree _q31 = TREE_OPERAND (_q20, 1);
6033 20 : if (integer_onep (_q30))
6034 : {
6035 1 : {
6036 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q30, _q31 };
6037 1 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures);
6038 1 : if (res) return res;
6039 : }
6040 : }
6041 : break;
6042 : }
6043 1 : case EQ_EXPR:
6044 1 : {
6045 1 : tree _q30 = TREE_OPERAND (_q20, 0);
6046 1 : tree _q31 = TREE_OPERAND (_q20, 1);
6047 1 : if (integer_zerop (_q31))
6048 : {
6049 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6050 : {
6051 0 : {
6052 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
6053 0 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures);
6054 0 : if (res) return res;
6055 : }
6056 : }
6057 : }
6058 : break;
6059 : }
6060 : default:;
6061 : }
6062 : break;
6063 : }
6064 65721364 : default:;
6065 : }
6066 65721364 : switch (TREE_CODE (_p1))
6067 : {
6068 844 : case LSHIFT_EXPR:
6069 844 : {
6070 844 : tree _q30 = TREE_OPERAND (_p1, 0);
6071 844 : tree _q31 = TREE_OPERAND (_p1, 1);
6072 844 : if (integer_onep (_q30))
6073 : {
6074 165 : {
6075 165 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
6076 165 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures);
6077 165 : if (res) return res;
6078 : }
6079 : }
6080 : break;
6081 : }
6082 65721199 : default:;
6083 : }
6084 65721199 : switch (TREE_CODE (_p0))
6085 : {
6086 3699 : case LSHIFT_EXPR:
6087 3699 : {
6088 3699 : tree _q20 = TREE_OPERAND (_p0, 0);
6089 3699 : tree _q21 = TREE_OPERAND (_p0, 1);
6090 3699 : if (integer_onep (_q20))
6091 : {
6092 3477 : {
6093 3477 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
6094 3477 : tree res = generic_simplify_182 (loc, type, _p0, _p1, captures);
6095 3477 : if (res) return res;
6096 : }
6097 : }
6098 : break;
6099 : }
6100 65717722 : default:;
6101 : }
6102 65717722 : switch (TREE_CODE (_p1))
6103 : {
6104 6991075 : CASE_CONVERT:
6105 6991075 : {
6106 6991075 : tree _q30 = TREE_OPERAND (_p1, 0);
6107 6991075 : switch (TREE_CODE (_q30))
6108 : {
6109 0 : case EQ_EXPR:
6110 0 : {
6111 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6112 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6113 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6114 : {
6115 0 : if (integer_zerop (_q41))
6116 : {
6117 0 : {
6118 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6119 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures);
6120 0 : if (res) return res;
6121 : }
6122 : }
6123 : }
6124 : break;
6125 : }
6126 : default:;
6127 : }
6128 : break;
6129 : }
6130 0 : case EQ_EXPR:
6131 0 : {
6132 0 : tree _q30 = TREE_OPERAND (_p1, 0);
6133 0 : tree _q31 = TREE_OPERAND (_p1, 1);
6134 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
6135 : {
6136 0 : if (integer_zerop (_q31))
6137 : {
6138 0 : {
6139 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6140 0 : tree res = generic_simplify_184 (loc, type, _p0, _p1, captures);
6141 0 : if (res) return res;
6142 : }
6143 : }
6144 : }
6145 : break;
6146 : }
6147 65717722 : default:;
6148 : }
6149 65717722 : switch (TREE_CODE (_p0))
6150 : {
6151 183 : case EQ_EXPR:
6152 183 : {
6153 183 : tree _q20 = TREE_OPERAND (_p0, 0);
6154 183 : tree _q21 = TREE_OPERAND (_p0, 1);
6155 183 : if (integer_zerop (_q21))
6156 : {
6157 59 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
6158 : {
6159 3 : {
6160 3 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6161 3 : tree res = generic_simplify_183 (loc, type, _p0, _p1, captures);
6162 3 : if (res) return res;
6163 : }
6164 : }
6165 : }
6166 : break;
6167 : }
6168 65717719 : default:;
6169 : }
6170 65717719 : switch (TREE_CODE (_p1))
6171 : {
6172 0 : case VEC_COND_EXPR:
6173 0 : {
6174 0 : tree _q30 = TREE_OPERAND (_p1, 0);
6175 0 : tree _q31 = TREE_OPERAND (_p1, 1);
6176 0 : tree _q32 = TREE_OPERAND (_p1, 2);
6177 0 : switch (TREE_CODE (_q30))
6178 : {
6179 0 : case EQ_EXPR:
6180 0 : {
6181 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6182 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6183 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6184 : {
6185 0 : if (integer_zerop (_q41))
6186 : {
6187 0 : if (integer_zerop (_q32))
6188 : {
6189 0 : {
6190 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
6191 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1413;
6192 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1413;
6193 0 : {
6194 0 : tree _r;
6195 0 : _r = build_zero_cst (type);
6196 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 968, __FILE__, __LINE__, true);
6197 0 : return _r;
6198 : }
6199 0 : next_after_fail1413:;
6200 : }
6201 : }
6202 : }
6203 : }
6204 : break;
6205 : }
6206 : default:;
6207 : }
6208 : break;
6209 : }
6210 65717719 : default:;
6211 : }
6212 65717719 : switch (TREE_CODE (_p0))
6213 : {
6214 37 : case VEC_COND_EXPR:
6215 37 : {
6216 37 : tree _q20 = TREE_OPERAND (_p0, 0);
6217 37 : tree _q21 = TREE_OPERAND (_p0, 1);
6218 37 : tree _q22 = TREE_OPERAND (_p0, 2);
6219 37 : switch (TREE_CODE (_q20))
6220 : {
6221 1 : case EQ_EXPR:
6222 1 : {
6223 1 : tree _q30 = TREE_OPERAND (_q20, 0);
6224 1 : tree _q31 = TREE_OPERAND (_q20, 1);
6225 1 : if (integer_zerop (_q31))
6226 : {
6227 1 : if (integer_zerop (_q22))
6228 : {
6229 1 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6230 : {
6231 1 : {
6232 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q21 };
6233 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1414;
6234 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1414;
6235 1 : {
6236 1 : tree _r;
6237 1 : _r = build_zero_cst (type);
6238 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 968, __FILE__, __LINE__, true);
6239 1 : return _r;
6240 : }
6241 0 : next_after_fail1414:;
6242 : }
6243 : }
6244 : }
6245 : }
6246 : break;
6247 : }
6248 0 : case NE_EXPR:
6249 0 : {
6250 0 : tree _q30 = TREE_OPERAND (_q20, 0);
6251 0 : tree _q31 = TREE_OPERAND (_q20, 1);
6252 0 : if (integer_zerop (_q31))
6253 : {
6254 0 : if (integer_zerop (_q21))
6255 : {
6256 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
6257 : {
6258 0 : {
6259 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q22 };
6260 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1415;
6261 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1415;
6262 0 : {
6263 0 : tree _r;
6264 0 : _r = build_zero_cst (type);
6265 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 969, __FILE__, __LINE__, true);
6266 0 : return _r;
6267 : }
6268 0 : next_after_fail1415:;
6269 : }
6270 : }
6271 : }
6272 : }
6273 : break;
6274 : }
6275 : default:;
6276 : }
6277 : break;
6278 : }
6279 65717718 : default:;
6280 : }
6281 65717718 : switch (TREE_CODE (_p1))
6282 : {
6283 0 : case VEC_COND_EXPR:
6284 0 : {
6285 0 : tree _q30 = TREE_OPERAND (_p1, 0);
6286 0 : tree _q31 = TREE_OPERAND (_p1, 1);
6287 0 : tree _q32 = TREE_OPERAND (_p1, 2);
6288 0 : switch (TREE_CODE (_q30))
6289 : {
6290 0 : case NE_EXPR:
6291 0 : {
6292 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6293 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6294 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
6295 : {
6296 0 : if (integer_zerop (_q41))
6297 : {
6298 0 : if (integer_zerop (_q31))
6299 : {
6300 0 : {
6301 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q32 };
6302 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1416;
6303 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1416;
6304 0 : {
6305 0 : tree _r;
6306 0 : _r = build_zero_cst (type);
6307 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 969, __FILE__, __LINE__, true);
6308 0 : return _r;
6309 : }
6310 0 : next_after_fail1416:;
6311 : }
6312 : }
6313 : }
6314 : }
6315 : break;
6316 : }
6317 : default:;
6318 : }
6319 : break;
6320 : }
6321 65717718 : default:;
6322 : }
6323 65717718 : switch (TREE_CODE (_p0))
6324 : {
6325 736925 : case RDIV_EXPR:
6326 736925 : {
6327 736925 : tree _q20 = TREE_OPERAND (_p0, 0);
6328 736925 : tree _q21 = TREE_OPERAND (_p0, 1);
6329 736925 : switch (TREE_CODE (_q20))
6330 : {
6331 56215 : case REAL_CST:
6332 56215 : {
6333 56215 : switch (TREE_CODE (_p1))
6334 : {
6335 1 : case REAL_CST:
6336 1 : {
6337 1 : {
6338 1 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
6339 1 : if (flag_associative_math
6340 1 : && single_use (captures[0])
6341 : )
6342 : {
6343 1 : {
6344 1 : tree tem = const_binop (MULT_EXPR, type, captures[1], captures[3]);
6345 1 : if (tem
6346 : )
6347 : {
6348 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1417;
6349 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1417;
6350 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1417;
6351 1 : {
6352 1 : tree res_op0;
6353 1 : res_op0 = tem;
6354 1 : tree res_op1;
6355 1 : res_op1 = captures[2];
6356 1 : tree _r;
6357 1 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
6358 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 970, __FILE__, __LINE__, true);
6359 1 : return _r;
6360 : }
6361 0 : next_after_fail1417:;
6362 : }
6363 : }
6364 : }
6365 : }
6366 0 : break;
6367 : }
6368 : default:;
6369 : }
6370 : break;
6371 : }
6372 : default:;
6373 : }
6374 : break;
6375 : }
6376 65717717 : default:;
6377 : }
6378 65717717 : {
6379 65717717 : tree _p0_pops[1];
6380 65717717 : if (tree_nop_convert (_p0, _p0_pops))
6381 : {
6382 22902759 : tree _q20 = _p0_pops[0];
6383 22902759 : switch (TREE_CODE (_q20))
6384 : {
6385 4 : case BIT_IOR_EXPR:
6386 4 : {
6387 4 : tree _q30 = TREE_OPERAND (_q20, 0);
6388 4 : tree _q31 = TREE_OPERAND (_q20, 1);
6389 4 : switch (TREE_CODE (_q30))
6390 : {
6391 4 : case NEGATE_EXPR:
6392 4 : {
6393 4 : tree _q40 = TREE_OPERAND (_q30, 0);
6394 4 : switch (TREE_CODE (_q40))
6395 : {
6396 0 : CASE_CONVERT:
6397 0 : {
6398 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6399 0 : switch (TREE_CODE (_q50))
6400 : {
6401 0 : case LT_EXPR:
6402 0 : {
6403 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6404 0 : tree _q61 = TREE_OPERAND (_q50, 1);
6405 0 : if (integer_zerop (_q61))
6406 : {
6407 0 : if (integer_onep (_q31))
6408 : {
6409 0 : {
6410 0 : tree _p1_pops[1];
6411 0 : if (tree_nop_convert (_p1, _p1_pops))
6412 : {
6413 0 : tree _q100 = _p1_pops[0];
6414 0 : if ((_q100 == _q60 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q60, 0) && types_match (_q100, _q60)))
6415 : {
6416 0 : {
6417 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6418 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
6419 0 : if (res) return res;
6420 : }
6421 : }
6422 : }
6423 : }
6424 0 : if ((_p1 == _q60 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q60, 0) && types_match (_p1, _q60)))
6425 : {
6426 0 : {
6427 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6428 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
6429 0 : if (res) return res;
6430 : }
6431 : }
6432 : }
6433 : }
6434 : break;
6435 : }
6436 : default:;
6437 : }
6438 : break;
6439 : }
6440 4 : case LT_EXPR:
6441 4 : {
6442 4 : tree _q50 = TREE_OPERAND (_q40, 0);
6443 4 : tree _q51 = TREE_OPERAND (_q40, 1);
6444 4 : if (integer_zerop (_q51))
6445 : {
6446 4 : if (integer_onep (_q31))
6447 : {
6448 4 : {
6449 4 : tree _p1_pops[1];
6450 4 : if (tree_nop_convert (_p1, _p1_pops))
6451 : {
6452 4 : tree _q90 = _p1_pops[0];
6453 4 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
6454 : {
6455 4 : {
6456 4 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
6457 4 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
6458 4 : if (res) return res;
6459 : }
6460 : }
6461 : }
6462 : }
6463 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
6464 : {
6465 0 : {
6466 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
6467 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
6468 0 : if (res) return res;
6469 : }
6470 : }
6471 : }
6472 : }
6473 : break;
6474 : }
6475 : default:;
6476 : }
6477 : break;
6478 : }
6479 0 : default:;
6480 : }
6481 0 : {
6482 0 : tree _q30_pops[1];
6483 0 : if (tree_nop_convert (_q30, _q30_pops))
6484 : {
6485 0 : tree _q40 = _q30_pops[0];
6486 0 : switch (TREE_CODE (_q40))
6487 : {
6488 0 : case NEGATE_EXPR:
6489 0 : {
6490 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6491 0 : switch (TREE_CODE (_q50))
6492 : {
6493 0 : CASE_CONVERT:
6494 0 : {
6495 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6496 0 : switch (TREE_CODE (_q60))
6497 : {
6498 0 : case LT_EXPR:
6499 0 : {
6500 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6501 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6502 0 : if (integer_zerop (_q71))
6503 : {
6504 0 : if (integer_onep (_q31))
6505 : {
6506 0 : {
6507 0 : tree _p1_pops[1];
6508 0 : if (tree_nop_convert (_p1, _p1_pops))
6509 : {
6510 0 : tree _q110 = _p1_pops[0];
6511 0 : if ((_q110 == _q70 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q70, 0) && types_match (_q110, _q70)))
6512 : {
6513 0 : {
6514 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q70 };
6515 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
6516 0 : if (res) return res;
6517 : }
6518 : }
6519 : }
6520 : }
6521 0 : if ((_p1 == _q70 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q70, 0) && types_match (_p1, _q70)))
6522 : {
6523 0 : {
6524 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q70 };
6525 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
6526 0 : if (res) return res;
6527 : }
6528 : }
6529 : }
6530 : }
6531 : break;
6532 : }
6533 : default:;
6534 : }
6535 : break;
6536 : }
6537 0 : case LT_EXPR:
6538 0 : {
6539 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6540 0 : tree _q61 = TREE_OPERAND (_q50, 1);
6541 0 : if (integer_zerop (_q61))
6542 : {
6543 0 : if (integer_onep (_q31))
6544 : {
6545 0 : {
6546 0 : tree _p1_pops[1];
6547 0 : if (tree_nop_convert (_p1, _p1_pops))
6548 : {
6549 0 : tree _q100 = _p1_pops[0];
6550 0 : if ((_q100 == _q60 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q60, 0) && types_match (_q100, _q60)))
6551 : {
6552 0 : {
6553 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6554 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
6555 0 : if (res) return res;
6556 : }
6557 : }
6558 : }
6559 : }
6560 0 : if ((_p1 == _q60 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q60, 0) && types_match (_p1, _q60)))
6561 : {
6562 0 : {
6563 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
6564 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
6565 0 : if (res) return res;
6566 : }
6567 : }
6568 : }
6569 : }
6570 : break;
6571 : }
6572 : default:;
6573 : }
6574 : break;
6575 : }
6576 : default:;
6577 : }
6578 : }
6579 : }
6580 0 : break;
6581 : }
6582 22902755 : default:;
6583 : }
6584 22902755 : switch (TREE_CODE (_p1))
6585 : {
6586 0 : case BIT_IOR_EXPR:
6587 0 : {
6588 0 : tree _q40 = TREE_OPERAND (_p1, 0);
6589 0 : tree _q41 = TREE_OPERAND (_p1, 1);
6590 0 : switch (TREE_CODE (_q40))
6591 : {
6592 0 : case NEGATE_EXPR:
6593 0 : {
6594 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6595 0 : switch (TREE_CODE (_q50))
6596 : {
6597 0 : CASE_CONVERT:
6598 0 : {
6599 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6600 0 : switch (TREE_CODE (_q60))
6601 : {
6602 0 : case LT_EXPR:
6603 0 : {
6604 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6605 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6606 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6607 : {
6608 0 : if (integer_zerop (_q71))
6609 : {
6610 0 : if (integer_onep (_q41))
6611 : {
6612 0 : {
6613 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6614 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6615 0 : if (res) return res;
6616 : }
6617 : }
6618 : }
6619 : }
6620 : break;
6621 : }
6622 : default:;
6623 : }
6624 : break;
6625 : }
6626 0 : case LT_EXPR:
6627 0 : {
6628 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6629 0 : tree _q61 = TREE_OPERAND (_q50, 1);
6630 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6631 : {
6632 0 : if (integer_zerop (_q61))
6633 : {
6634 0 : if (integer_onep (_q41))
6635 : {
6636 0 : {
6637 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6638 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6639 0 : if (res) return res;
6640 : }
6641 : }
6642 : }
6643 : }
6644 : break;
6645 : }
6646 : default:;
6647 : }
6648 : break;
6649 : }
6650 0 : default:;
6651 : }
6652 0 : {
6653 0 : tree _q40_pops[1];
6654 0 : if (tree_nop_convert (_q40, _q40_pops))
6655 : {
6656 0 : tree _q50 = _q40_pops[0];
6657 0 : switch (TREE_CODE (_q50))
6658 : {
6659 0 : case NEGATE_EXPR:
6660 0 : {
6661 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6662 0 : switch (TREE_CODE (_q60))
6663 : {
6664 0 : CASE_CONVERT:
6665 0 : {
6666 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6667 0 : switch (TREE_CODE (_q70))
6668 : {
6669 0 : case LT_EXPR:
6670 0 : {
6671 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6672 0 : tree _q81 = TREE_OPERAND (_q70, 1);
6673 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
6674 : {
6675 0 : if (integer_zerop (_q81))
6676 : {
6677 0 : if (integer_onep (_q41))
6678 : {
6679 0 : {
6680 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6681 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6682 0 : if (res) return res;
6683 : }
6684 : }
6685 : }
6686 : }
6687 : break;
6688 : }
6689 : default:;
6690 : }
6691 : break;
6692 : }
6693 0 : case LT_EXPR:
6694 0 : {
6695 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6696 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6697 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6698 : {
6699 0 : if (integer_zerop (_q71))
6700 : {
6701 0 : if (integer_onep (_q41))
6702 : {
6703 0 : {
6704 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6705 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6706 0 : if (res) return res;
6707 : }
6708 : }
6709 : }
6710 : }
6711 : break;
6712 : }
6713 : default:;
6714 : }
6715 : break;
6716 : }
6717 : default:;
6718 : }
6719 : }
6720 : }
6721 0 : break;
6722 : }
6723 22902755 : default:;
6724 : }
6725 22902755 : {
6726 22902755 : tree _p1_pops[1];
6727 22902755 : if (tree_nop_convert (_p1, _p1_pops))
6728 : {
6729 2412639 : tree _q40 = _p1_pops[0];
6730 2412639 : switch (TREE_CODE (_q40))
6731 : {
6732 0 : case BIT_IOR_EXPR:
6733 0 : {
6734 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6735 0 : tree _q51 = TREE_OPERAND (_q40, 1);
6736 0 : switch (TREE_CODE (_q50))
6737 : {
6738 0 : case NEGATE_EXPR:
6739 0 : {
6740 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6741 0 : switch (TREE_CODE (_q60))
6742 : {
6743 0 : CASE_CONVERT:
6744 0 : {
6745 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6746 0 : switch (TREE_CODE (_q70))
6747 : {
6748 0 : case LT_EXPR:
6749 0 : {
6750 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6751 0 : tree _q81 = TREE_OPERAND (_q70, 1);
6752 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
6753 : {
6754 0 : if (integer_zerop (_q81))
6755 : {
6756 0 : if (integer_onep (_q51))
6757 : {
6758 0 : {
6759 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6760 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6761 0 : if (res) return res;
6762 : }
6763 : }
6764 : }
6765 : }
6766 : break;
6767 : }
6768 : default:;
6769 : }
6770 : break;
6771 : }
6772 0 : case LT_EXPR:
6773 0 : {
6774 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6775 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6776 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
6777 : {
6778 0 : if (integer_zerop (_q71))
6779 : {
6780 0 : if (integer_onep (_q51))
6781 : {
6782 0 : {
6783 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6784 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6785 0 : if (res) return res;
6786 : }
6787 : }
6788 : }
6789 : }
6790 : break;
6791 : }
6792 : default:;
6793 : }
6794 : break;
6795 : }
6796 0 : default:;
6797 : }
6798 0 : {
6799 0 : tree _q50_pops[1];
6800 0 : if (tree_nop_convert (_q50, _q50_pops))
6801 : {
6802 0 : tree _q60 = _q50_pops[0];
6803 0 : switch (TREE_CODE (_q60))
6804 : {
6805 0 : case NEGATE_EXPR:
6806 0 : {
6807 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6808 0 : switch (TREE_CODE (_q70))
6809 : {
6810 0 : CASE_CONVERT:
6811 0 : {
6812 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6813 0 : switch (TREE_CODE (_q80))
6814 : {
6815 0 : case LT_EXPR:
6816 0 : {
6817 0 : tree _q90 = TREE_OPERAND (_q80, 0);
6818 0 : tree _q91 = TREE_OPERAND (_q80, 1);
6819 0 : if ((_q90 == _q20 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q20, 0) && types_match (_q90, _q20)))
6820 : {
6821 0 : if (integer_zerop (_q91))
6822 : {
6823 0 : if (integer_onep (_q51))
6824 : {
6825 0 : {
6826 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6827 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6828 0 : if (res) return res;
6829 : }
6830 : }
6831 : }
6832 : }
6833 : break;
6834 : }
6835 : default:;
6836 : }
6837 : break;
6838 : }
6839 0 : case LT_EXPR:
6840 0 : {
6841 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6842 0 : tree _q81 = TREE_OPERAND (_q70, 1);
6843 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
6844 : {
6845 0 : if (integer_zerop (_q81))
6846 : {
6847 0 : if (integer_onep (_q51))
6848 : {
6849 0 : {
6850 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
6851 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6852 0 : if (res) return res;
6853 : }
6854 : }
6855 : }
6856 : }
6857 : break;
6858 : }
6859 : default:;
6860 : }
6861 : break;
6862 : }
6863 : default:;
6864 : }
6865 : }
6866 : }
6867 0 : break;
6868 : }
6869 : default:;
6870 : }
6871 : }
6872 : }
6873 : }
6874 : }
6875 65717713 : {
6876 65717713 : tree _p1_pops[1];
6877 65717713 : if (tree_nop_convert (_p1, _p1_pops))
6878 : {
6879 6906850 : tree _q30 = _p1_pops[0];
6880 6906850 : switch (TREE_CODE (_q30))
6881 : {
6882 0 : case BIT_IOR_EXPR:
6883 0 : {
6884 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6885 0 : tree _q41 = TREE_OPERAND (_q30, 1);
6886 0 : switch (TREE_CODE (_q40))
6887 : {
6888 0 : case NEGATE_EXPR:
6889 0 : {
6890 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6891 0 : switch (TREE_CODE (_q50))
6892 : {
6893 0 : CASE_CONVERT:
6894 0 : {
6895 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6896 0 : switch (TREE_CODE (_q60))
6897 : {
6898 0 : case LT_EXPR:
6899 0 : {
6900 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6901 0 : tree _q71 = TREE_OPERAND (_q60, 1);
6902 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
6903 : {
6904 0 : if (integer_zerop (_q71))
6905 : {
6906 0 : if (integer_onep (_q41))
6907 : {
6908 0 : {
6909 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6910 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6911 0 : if (res) return res;
6912 : }
6913 : }
6914 : }
6915 : }
6916 : break;
6917 : }
6918 : default:;
6919 : }
6920 : break;
6921 : }
6922 : default:;
6923 : }
6924 : break;
6925 : }
6926 0 : default:;
6927 : }
6928 0 : {
6929 0 : tree _q40_pops[1];
6930 0 : if (tree_nop_convert (_q40, _q40_pops))
6931 : {
6932 0 : tree _q50 = _q40_pops[0];
6933 0 : switch (TREE_CODE (_q50))
6934 : {
6935 0 : case NEGATE_EXPR:
6936 0 : {
6937 0 : tree _q60 = TREE_OPERAND (_q50, 0);
6938 0 : switch (TREE_CODE (_q60))
6939 : {
6940 0 : CASE_CONVERT:
6941 0 : {
6942 0 : tree _q70 = TREE_OPERAND (_q60, 0);
6943 0 : switch (TREE_CODE (_q70))
6944 : {
6945 0 : case LT_EXPR:
6946 0 : {
6947 0 : tree _q80 = TREE_OPERAND (_q70, 0);
6948 0 : tree _q81 = TREE_OPERAND (_q70, 1);
6949 0 : if ((_q80 == _p0 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _p0, 0) && types_match (_q80, _p0)))
6950 : {
6951 0 : if (integer_zerop (_q81))
6952 : {
6953 0 : if (integer_onep (_q41))
6954 : {
6955 0 : {
6956 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
6957 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
6958 0 : if (res) return res;
6959 : }
6960 : }
6961 : }
6962 : }
6963 : break;
6964 : }
6965 : default:;
6966 : }
6967 : break;
6968 : }
6969 : default:;
6970 : }
6971 : break;
6972 : }
6973 : default:;
6974 : }
6975 : }
6976 : }
6977 0 : break;
6978 : }
6979 : default:;
6980 : }
6981 : }
6982 : }
6983 65717713 : switch (TREE_CODE (_p0))
6984 : {
6985 299 : case BIT_IOR_EXPR:
6986 299 : {
6987 299 : tree _q20 = TREE_OPERAND (_p0, 0);
6988 299 : tree _q21 = TREE_OPERAND (_p0, 1);
6989 299 : switch (TREE_CODE (_q20))
6990 : {
6991 1 : case NEGATE_EXPR:
6992 1 : {
6993 1 : tree _q30 = TREE_OPERAND (_q20, 0);
6994 1 : switch (TREE_CODE (_q30))
6995 : {
6996 0 : CASE_CONVERT:
6997 0 : {
6998 0 : tree _q40 = TREE_OPERAND (_q30, 0);
6999 0 : switch (TREE_CODE (_q40))
7000 : {
7001 0 : case LT_EXPR:
7002 0 : {
7003 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7004 0 : tree _q51 = TREE_OPERAND (_q40, 1);
7005 0 : if (integer_zerop (_q51))
7006 : {
7007 0 : if (integer_onep (_q21))
7008 : {
7009 0 : {
7010 0 : tree _p1_pops[1];
7011 0 : if (tree_nop_convert (_p1, _p1_pops))
7012 : {
7013 0 : tree _q90 = _p1_pops[0];
7014 0 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
7015 : {
7016 0 : {
7017 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7018 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
7019 0 : if (res) return res;
7020 : }
7021 : }
7022 : }
7023 : }
7024 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
7025 : {
7026 0 : {
7027 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7028 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
7029 0 : if (res) return res;
7030 : }
7031 : }
7032 : }
7033 : }
7034 : break;
7035 : }
7036 : default:;
7037 : }
7038 : break;
7039 : }
7040 1 : case LT_EXPR:
7041 1 : {
7042 1 : tree _q40 = TREE_OPERAND (_q30, 0);
7043 1 : tree _q41 = TREE_OPERAND (_q30, 1);
7044 1 : if (integer_zerop (_q41))
7045 : {
7046 1 : if (integer_onep (_q21))
7047 : {
7048 1 : {
7049 1 : tree _p1_pops[1];
7050 1 : if (tree_nop_convert (_p1, _p1_pops))
7051 : {
7052 0 : tree _q80 = _p1_pops[0];
7053 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
7054 : {
7055 0 : {
7056 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
7057 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
7058 0 : if (res) return res;
7059 : }
7060 : }
7061 : }
7062 : }
7063 1 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
7064 : {
7065 1 : {
7066 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
7067 1 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
7068 1 : if (res) return res;
7069 : }
7070 : }
7071 : }
7072 : }
7073 : break;
7074 : }
7075 : default:;
7076 : }
7077 : break;
7078 : }
7079 298 : default:;
7080 : }
7081 298 : {
7082 298 : tree _q20_pops[1];
7083 298 : if (tree_nop_convert (_q20, _q20_pops))
7084 : {
7085 1 : tree _q30 = _q20_pops[0];
7086 1 : switch (TREE_CODE (_q30))
7087 : {
7088 1 : case NEGATE_EXPR:
7089 1 : {
7090 1 : tree _q40 = TREE_OPERAND (_q30, 0);
7091 1 : switch (TREE_CODE (_q40))
7092 : {
7093 0 : CASE_CONVERT:
7094 0 : {
7095 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7096 0 : switch (TREE_CODE (_q50))
7097 : {
7098 0 : case LT_EXPR:
7099 0 : {
7100 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7101 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7102 0 : if (integer_zerop (_q61))
7103 : {
7104 0 : if (integer_onep (_q21))
7105 : {
7106 0 : {
7107 0 : tree _p1_pops[1];
7108 0 : if (tree_nop_convert (_p1, _p1_pops))
7109 : {
7110 0 : tree _q100 = _p1_pops[0];
7111 0 : if ((_q100 == _q60 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q60, 0) && types_match (_q100, _q60)))
7112 : {
7113 0 : {
7114 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
7115 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
7116 0 : if (res) return res;
7117 : }
7118 : }
7119 : }
7120 : }
7121 0 : if ((_p1 == _q60 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q60, 0) && types_match (_p1, _q60)))
7122 : {
7123 0 : {
7124 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q60 };
7125 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
7126 0 : if (res) return res;
7127 : }
7128 : }
7129 : }
7130 : }
7131 : break;
7132 : }
7133 : default:;
7134 : }
7135 : break;
7136 : }
7137 1 : case LT_EXPR:
7138 1 : {
7139 1 : tree _q50 = TREE_OPERAND (_q40, 0);
7140 1 : tree _q51 = TREE_OPERAND (_q40, 1);
7141 1 : if (integer_zerop (_q51))
7142 : {
7143 1 : if (integer_onep (_q21))
7144 : {
7145 1 : {
7146 1 : tree _p1_pops[1];
7147 1 : if (tree_nop_convert (_p1, _p1_pops))
7148 : {
7149 1 : tree _q90 = _p1_pops[0];
7150 1 : if ((_q90 == _q50 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q50, 0) && types_match (_q90, _q50)))
7151 : {
7152 1 : {
7153 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7154 1 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
7155 1 : if (res) return res;
7156 : }
7157 : }
7158 : }
7159 : }
7160 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
7161 : {
7162 0 : {
7163 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q50 };
7164 0 : tree res = generic_simplify_185 (loc, type, _p0, _p1, captures);
7165 0 : if (res) return res;
7166 : }
7167 : }
7168 : }
7169 : }
7170 : break;
7171 : }
7172 : default:;
7173 : }
7174 : break;
7175 : }
7176 : default:;
7177 : }
7178 : }
7179 : }
7180 297 : break;
7181 : }
7182 65717711 : default:;
7183 : }
7184 65717711 : switch (TREE_CODE (_p1))
7185 : {
7186 0 : case BIT_IOR_EXPR:
7187 0 : {
7188 0 : tree _q30 = TREE_OPERAND (_p1, 0);
7189 0 : tree _q31 = TREE_OPERAND (_p1, 1);
7190 0 : switch (TREE_CODE (_q30))
7191 : {
7192 0 : case NEGATE_EXPR:
7193 0 : {
7194 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7195 0 : switch (TREE_CODE (_q40))
7196 : {
7197 0 : CASE_CONVERT:
7198 0 : {
7199 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7200 0 : switch (TREE_CODE (_q50))
7201 : {
7202 0 : case LT_EXPR:
7203 0 : {
7204 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7205 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7206 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
7207 : {
7208 0 : if (integer_zerop (_q61))
7209 : {
7210 0 : if (integer_onep (_q31))
7211 : {
7212 0 : {
7213 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7214 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
7215 0 : if (res) return res;
7216 : }
7217 : }
7218 : }
7219 : }
7220 : break;
7221 : }
7222 : default:;
7223 : }
7224 : break;
7225 : }
7226 0 : case LT_EXPR:
7227 0 : {
7228 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7229 0 : tree _q51 = TREE_OPERAND (_q40, 1);
7230 0 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
7231 : {
7232 0 : if (integer_zerop (_q51))
7233 : {
7234 0 : if (integer_onep (_q31))
7235 : {
7236 0 : {
7237 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7238 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
7239 0 : if (res) return res;
7240 : }
7241 : }
7242 : }
7243 : }
7244 : break;
7245 : }
7246 : default:;
7247 : }
7248 : break;
7249 : }
7250 0 : default:;
7251 : }
7252 0 : {
7253 0 : tree _q30_pops[1];
7254 0 : if (tree_nop_convert (_q30, _q30_pops))
7255 : {
7256 0 : tree _q40 = _q30_pops[0];
7257 0 : switch (TREE_CODE (_q40))
7258 : {
7259 0 : case NEGATE_EXPR:
7260 0 : {
7261 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7262 0 : switch (TREE_CODE (_q50))
7263 : {
7264 0 : CASE_CONVERT:
7265 0 : {
7266 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7267 0 : switch (TREE_CODE (_q60))
7268 : {
7269 0 : case LT_EXPR:
7270 0 : {
7271 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7272 0 : tree _q71 = TREE_OPERAND (_q60, 1);
7273 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
7274 : {
7275 0 : if (integer_zerop (_q71))
7276 : {
7277 0 : if (integer_onep (_q31))
7278 : {
7279 0 : {
7280 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7281 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
7282 0 : if (res) return res;
7283 : }
7284 : }
7285 : }
7286 : }
7287 : break;
7288 : }
7289 : default:;
7290 : }
7291 : break;
7292 : }
7293 0 : case LT_EXPR:
7294 0 : {
7295 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7296 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7297 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
7298 : {
7299 0 : if (integer_zerop (_q61))
7300 : {
7301 0 : if (integer_onep (_q31))
7302 : {
7303 0 : {
7304 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7305 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
7306 0 : if (res) return res;
7307 : }
7308 : }
7309 : }
7310 : }
7311 : break;
7312 : }
7313 : default:;
7314 : }
7315 : break;
7316 : }
7317 : default:;
7318 : }
7319 : }
7320 : }
7321 0 : break;
7322 : }
7323 65717711 : default:;
7324 : }
7325 65717711 : {
7326 65717711 : tree _p1_pops[1];
7327 65717711 : if (tree_nop_convert (_p1, _p1_pops))
7328 : {
7329 6906849 : tree _q30 = _p1_pops[0];
7330 6906849 : switch (TREE_CODE (_q30))
7331 : {
7332 0 : case BIT_IOR_EXPR:
7333 0 : {
7334 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7335 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7336 0 : switch (TREE_CODE (_q40))
7337 : {
7338 0 : case NEGATE_EXPR:
7339 0 : {
7340 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7341 0 : switch (TREE_CODE (_q50))
7342 : {
7343 0 : case LT_EXPR:
7344 0 : {
7345 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7346 0 : tree _q61 = TREE_OPERAND (_q50, 1);
7347 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
7348 : {
7349 0 : if (integer_zerop (_q61))
7350 : {
7351 0 : if (integer_onep (_q41))
7352 : {
7353 0 : {
7354 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7355 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
7356 0 : if (res) return res;
7357 : }
7358 : }
7359 : }
7360 : }
7361 : break;
7362 : }
7363 : default:;
7364 : }
7365 : break;
7366 : }
7367 0 : default:;
7368 : }
7369 0 : {
7370 0 : tree _q40_pops[1];
7371 0 : if (tree_nop_convert (_q40, _q40_pops))
7372 : {
7373 0 : tree _q50 = _q40_pops[0];
7374 0 : switch (TREE_CODE (_q50))
7375 : {
7376 0 : case NEGATE_EXPR:
7377 0 : {
7378 0 : tree _q60 = TREE_OPERAND (_q50, 0);
7379 0 : switch (TREE_CODE (_q60))
7380 : {
7381 0 : case LT_EXPR:
7382 0 : {
7383 0 : tree _q70 = TREE_OPERAND (_q60, 0);
7384 0 : tree _q71 = TREE_OPERAND (_q60, 1);
7385 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
7386 : {
7387 0 : if (integer_zerop (_q71))
7388 : {
7389 0 : if (integer_onep (_q41))
7390 : {
7391 0 : {
7392 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
7393 0 : tree res = generic_simplify_186 (loc, type, _p0, _p1, captures);
7394 0 : if (res) return res;
7395 : }
7396 : }
7397 : }
7398 : }
7399 : break;
7400 : }
7401 : default:;
7402 : }
7403 : break;
7404 : }
7405 : default:;
7406 : }
7407 : }
7408 : }
7409 0 : break;
7410 : }
7411 : default:;
7412 : }
7413 : }
7414 : }
7415 65717711 : switch (TREE_CODE (_p0))
7416 : {
7417 31664429 : CASE_CONVERT:
7418 31664429 : {
7419 31664429 : tree _q20 = TREE_OPERAND (_p0, 0);
7420 31664429 : switch (TREE_CODE (_q20))
7421 : {
7422 6180 : case NEGATE_EXPR:
7423 6180 : {
7424 6180 : tree _q30 = TREE_OPERAND (_q20, 0);
7425 6180 : switch (TREE_CODE (_p1))
7426 : {
7427 473 : CASE_CONVERT:
7428 473 : {
7429 473 : tree _q50 = TREE_OPERAND (_p1, 0);
7430 473 : if (tree_negate_expr_p (_q50))
7431 : {
7432 0 : {
7433 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q50 };
7434 0 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
7435 0 : if (res) return res;
7436 : }
7437 : }
7438 : break;
7439 : }
7440 6180 : default:;
7441 : }
7442 6180 : if (tree_negate_expr_p (_p1))
7443 : {
7444 3360 : {
7445 3360 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p1 };
7446 3360 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
7447 3360 : if (res) return res;
7448 : }
7449 : }
7450 : break;
7451 : }
7452 4 : case LT_EXPR:
7453 4 : {
7454 4 : tree _q30 = TREE_OPERAND (_q20, 0);
7455 4 : tree _q31 = TREE_OPERAND (_q20, 1);
7456 4 : {
7457 4 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7458 4 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, LT_EXPR);
7459 4 : if (res) return res;
7460 : }
7461 4 : break;
7462 : }
7463 6 : case LE_EXPR:
7464 6 : {
7465 6 : tree _q30 = TREE_OPERAND (_q20, 0);
7466 6 : tree _q31 = TREE_OPERAND (_q20, 1);
7467 6 : {
7468 6 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7469 6 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, LE_EXPR);
7470 6 : if (res) return res;
7471 : }
7472 6 : break;
7473 : }
7474 1 : case EQ_EXPR:
7475 1 : {
7476 1 : tree _q30 = TREE_OPERAND (_q20, 0);
7477 1 : tree _q31 = TREE_OPERAND (_q20, 1);
7478 1 : {
7479 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7480 1 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, EQ_EXPR);
7481 1 : if (res) return res;
7482 : }
7483 1 : break;
7484 : }
7485 1157 : case NE_EXPR:
7486 1157 : {
7487 1157 : tree _q30 = TREE_OPERAND (_q20, 0);
7488 1157 : tree _q31 = TREE_OPERAND (_q20, 1);
7489 1157 : {
7490 1157 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7491 1157 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, NE_EXPR);
7492 1157 : if (res) return res;
7493 : }
7494 1157 : break;
7495 : }
7496 19 : case GE_EXPR:
7497 19 : {
7498 19 : tree _q30 = TREE_OPERAND (_q20, 0);
7499 19 : tree _q31 = TREE_OPERAND (_q20, 1);
7500 19 : {
7501 19 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7502 19 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, GE_EXPR);
7503 19 : if (res) return res;
7504 : }
7505 19 : break;
7506 : }
7507 19 : case GT_EXPR:
7508 19 : {
7509 19 : tree _q30 = TREE_OPERAND (_q20, 0);
7510 19 : tree _q31 = TREE_OPERAND (_q20, 1);
7511 19 : {
7512 19 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7513 19 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, GT_EXPR);
7514 19 : if (res) return res;
7515 : }
7516 19 : break;
7517 : }
7518 0 : case UNORDERED_EXPR:
7519 0 : {
7520 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7521 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7522 0 : {
7523 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7524 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, UNORDERED_EXPR);
7525 0 : if (res) return res;
7526 : }
7527 0 : break;
7528 : }
7529 0 : case ORDERED_EXPR:
7530 0 : {
7531 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7532 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7533 0 : {
7534 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7535 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, ORDERED_EXPR);
7536 0 : if (res) return res;
7537 : }
7538 0 : break;
7539 : }
7540 0 : case UNLT_EXPR:
7541 0 : {
7542 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7543 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7544 0 : {
7545 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7546 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, UNLT_EXPR);
7547 0 : if (res) return res;
7548 : }
7549 0 : break;
7550 : }
7551 0 : case UNLE_EXPR:
7552 0 : {
7553 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7554 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7555 0 : {
7556 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7557 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, UNLE_EXPR);
7558 0 : if (res) return res;
7559 : }
7560 0 : break;
7561 : }
7562 0 : case UNGT_EXPR:
7563 0 : {
7564 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7565 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7566 0 : {
7567 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7568 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, UNGT_EXPR);
7569 0 : if (res) return res;
7570 : }
7571 0 : break;
7572 : }
7573 0 : case UNGE_EXPR:
7574 0 : {
7575 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7576 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7577 0 : {
7578 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7579 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, UNGE_EXPR);
7580 0 : if (res) return res;
7581 : }
7582 0 : break;
7583 : }
7584 0 : case UNEQ_EXPR:
7585 0 : {
7586 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7587 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7588 0 : {
7589 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7590 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, UNEQ_EXPR);
7591 0 : if (res) return res;
7592 : }
7593 0 : break;
7594 : }
7595 0 : case LTGT_EXPR:
7596 0 : {
7597 0 : tree _q30 = TREE_OPERAND (_q20, 0);
7598 0 : tree _q31 = TREE_OPERAND (_q20, 1);
7599 0 : {
7600 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p1 };
7601 0 : tree res = generic_simplify_188 (loc, type, _p0, _p1, captures, LTGT_EXPR);
7602 0 : if (res) return res;
7603 : }
7604 0 : break;
7605 : }
7606 31663686 : default:;
7607 : }
7608 31663686 : if (tree_negate_expr_p (_q20))
7609 : {
7610 21771 : switch (TREE_CODE (_p1))
7611 : {
7612 2640 : CASE_CONVERT:
7613 2640 : {
7614 2640 : tree _q40 = TREE_OPERAND (_p1, 0);
7615 2640 : switch (TREE_CODE (_q40))
7616 : {
7617 0 : case NEGATE_EXPR:
7618 0 : {
7619 0 : tree _q50 = TREE_OPERAND (_q40, 0);
7620 0 : {
7621 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q20 };
7622 0 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
7623 0 : if (res) return res;
7624 : }
7625 0 : break;
7626 : }
7627 : default:;
7628 : }
7629 : break;
7630 : }
7631 6 : case NEGATE_EXPR:
7632 6 : {
7633 6 : tree _q40 = TREE_OPERAND (_p1, 0);
7634 6 : {
7635 6 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
7636 6 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
7637 6 : if (res) return res;
7638 : }
7639 0 : break;
7640 : }
7641 : default:;
7642 : }
7643 : }
7644 : break;
7645 : }
7646 425743 : case NEGATE_EXPR:
7647 425743 : {
7648 425743 : tree _q20 = TREE_OPERAND (_p0, 0);
7649 425743 : switch (TREE_CODE (_p1))
7650 : {
7651 149918 : CASE_CONVERT:
7652 149918 : {
7653 149918 : tree _q40 = TREE_OPERAND (_p1, 0);
7654 149918 : if (tree_negate_expr_p (_q40))
7655 : {
7656 0 : {
7657 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
7658 0 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
7659 0 : if (res) return res;
7660 : }
7661 : }
7662 : break;
7663 : }
7664 425743 : default:;
7665 : }
7666 425743 : if (tree_negate_expr_p (_p1))
7667 : {
7668 32698 : {
7669 32698 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7670 32698 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
7671 32698 : if (res) return res;
7672 : }
7673 : }
7674 : break;
7675 : }
7676 65684264 : default:;
7677 : }
7678 65684264 : if (tree_negate_expr_p (_p0))
7679 : {
7680 663123 : switch (TREE_CODE (_p1))
7681 : {
7682 154267 : CASE_CONVERT:
7683 154267 : {
7684 154267 : tree _q30 = TREE_OPERAND (_p1, 0);
7685 154267 : switch (TREE_CODE (_q30))
7686 : {
7687 0 : case NEGATE_EXPR:
7688 0 : {
7689 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7690 0 : {
7691 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
7692 0 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
7693 0 : if (res) return res;
7694 : }
7695 0 : break;
7696 : }
7697 : default:;
7698 : }
7699 : break;
7700 : }
7701 6 : case NEGATE_EXPR:
7702 6 : {
7703 6 : tree _q30 = TREE_OPERAND (_p1, 0);
7704 6 : {
7705 6 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
7706 6 : tree res = generic_simplify_187 (loc, type, _p0, _p1, captures);
7707 6 : if (res) return res;
7708 : }
7709 0 : break;
7710 : }
7711 : default:;
7712 : }
7713 : }
7714 65684258 : if (tree_zero_one_valued_p (_p0))
7715 : {
7716 183793 : if (tree_zero_one_valued_p (_p1))
7717 : {
7718 12049 : {
7719 12049 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
7720 12049 : if (INTEGRAL_TYPE_P (type)
7721 : )
7722 : {
7723 12049 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1418;
7724 12049 : {
7725 12049 : tree res_op0;
7726 12049 : res_op0 = captures[0];
7727 12049 : tree res_op1;
7728 12049 : res_op1 = captures[1];
7729 12049 : tree _r;
7730 12049 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
7731 12049 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 971, __FILE__, __LINE__, true);
7732 12049 : return _r;
7733 : }
7734 0 : next_after_fail1418:;
7735 : }
7736 : }
7737 : }
7738 : }
7739 65672209 : switch (TREE_CODE (_p1))
7740 : {
7741 6979024 : CASE_CONVERT:
7742 6979024 : {
7743 6979024 : tree _q30 = TREE_OPERAND (_p1, 0);
7744 6979024 : switch (TREE_CODE (_q30))
7745 : {
7746 0 : case LT_EXPR:
7747 0 : {
7748 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7749 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7750 0 : {
7751 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7752 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, LT_EXPR);
7753 0 : if (res) return res;
7754 : }
7755 0 : break;
7756 : }
7757 0 : case LE_EXPR:
7758 0 : {
7759 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7760 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7761 0 : {
7762 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7763 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, LE_EXPR);
7764 0 : if (res) return res;
7765 : }
7766 0 : break;
7767 : }
7768 0 : case EQ_EXPR:
7769 0 : {
7770 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7771 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7772 0 : {
7773 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7774 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, EQ_EXPR);
7775 0 : if (res) return res;
7776 : }
7777 0 : break;
7778 : }
7779 0 : case NE_EXPR:
7780 0 : {
7781 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7782 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7783 0 : {
7784 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7785 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, NE_EXPR);
7786 0 : if (res) return res;
7787 : }
7788 0 : break;
7789 : }
7790 0 : case GE_EXPR:
7791 0 : {
7792 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7793 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7794 0 : {
7795 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7796 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, GE_EXPR);
7797 0 : if (res) return res;
7798 : }
7799 0 : break;
7800 : }
7801 0 : case GT_EXPR:
7802 0 : {
7803 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7804 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7805 0 : {
7806 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7807 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, GT_EXPR);
7808 0 : if (res) return res;
7809 : }
7810 0 : break;
7811 : }
7812 0 : case UNORDERED_EXPR:
7813 0 : {
7814 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7815 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7816 0 : {
7817 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7818 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, UNORDERED_EXPR);
7819 0 : if (res) return res;
7820 : }
7821 0 : break;
7822 : }
7823 0 : case ORDERED_EXPR:
7824 0 : {
7825 0 : tree _q40 = TREE_OPERAND (_q30, 0);
7826 0 : tree _q41 = TREE_OPERAND (_q30, 1);
7827 0 : {
7828 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q40, _q41, _p0 };
7829 0 : tree res = generic_simplify_189 (loc, type, _p0, _p1, captures, ORDERED_EXPR);
7830 0 : if (res) return res;
7831 : }
7832 0 : break;
7833 : }
7834 0 : case UNLT_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_189 (loc, type, _p0, _p1, captures, UNLT_EXPR);
7841 0 : if (res) return res;
7842 : }
7843 0 : break;
7844 : }
7845 0 : case UNLE_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_189 (loc, type, _p0, _p1, captures, UNLE_EXPR);
7852 0 : if (res) return res;
7853 : }
7854 0 : break;
7855 : }
7856 0 : case UNGT_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_189 (loc, type, _p0, _p1, captures, UNGT_EXPR);
7863 0 : if (res) return res;
7864 : }
7865 0 : break;
7866 : }
7867 0 : case UNGE_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_189 (loc, type, _p0, _p1, captures, UNGE_EXPR);
7874 0 : if (res) return res;
7875 : }
7876 0 : break;
7877 : }
7878 0 : case UNEQ_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_189 (loc, type, _p0, _p1, captures, UNEQ_EXPR);
7885 0 : if (res) return res;
7886 : }
7887 0 : break;
7888 : }
7889 0 : case LTGT_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_189 (loc, type, _p0, _p1, captures, LTGT_EXPR);
7896 0 : if (res) return res;
7897 : }
7898 0 : break;
7899 : }
7900 : default:;
7901 : }
7902 : break;
7903 : }
7904 65672209 : default:;
7905 : }
7906 65672209 : switch (TREE_CODE (_p0))
7907 : {
7908 3 : case MIN_EXPR:
7909 3 : {
7910 3 : tree _q20 = TREE_OPERAND (_p0, 0);
7911 3 : tree _q21 = TREE_OPERAND (_p0, 1);
7912 3 : switch (TREE_CODE (_p1))
7913 : {
7914 0 : case MAX_EXPR:
7915 0 : {
7916 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7917 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7918 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7919 : {
7920 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7921 : {
7922 0 : {
7923 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7924 0 : if (!HONOR_NANS (captures[0])
7925 : )
7926 : {
7927 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1419;
7928 0 : {
7929 0 : tree res_op0;
7930 0 : res_op0 = captures[0];
7931 0 : tree res_op1;
7932 0 : res_op1 = captures[1];
7933 0 : tree _r;
7934 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
7935 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 889, __FILE__, __LINE__, true);
7936 0 : return _r;
7937 : }
7938 0 : next_after_fail1419:;
7939 : }
7940 : }
7941 : }
7942 : }
7943 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7944 : {
7945 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7946 : {
7947 0 : {
7948 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7949 0 : if (!HONOR_NANS (captures[0])
7950 : )
7951 : {
7952 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1420;
7953 0 : {
7954 0 : tree res_op0;
7955 0 : res_op0 = captures[0];
7956 0 : tree res_op1;
7957 0 : res_op1 = captures[1];
7958 0 : tree _r;
7959 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
7960 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 889, __FILE__, __LINE__, true);
7961 0 : return _r;
7962 : }
7963 0 : next_after_fail1420:;
7964 : }
7965 : }
7966 : }
7967 : }
7968 : break;
7969 : }
7970 : default:;
7971 : }
7972 : break;
7973 : }
7974 146 : case MAX_EXPR:
7975 146 : {
7976 146 : tree _q20 = TREE_OPERAND (_p0, 0);
7977 146 : tree _q21 = TREE_OPERAND (_p0, 1);
7978 146 : switch (TREE_CODE (_p1))
7979 : {
7980 0 : case MIN_EXPR:
7981 0 : {
7982 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7983 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7984 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7985 : {
7986 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7987 : {
7988 0 : {
7989 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7990 0 : if (!HONOR_NANS (captures[0])
7991 : )
7992 : {
7993 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1421;
7994 0 : {
7995 0 : tree res_op0;
7996 0 : res_op0 = captures[0];
7997 0 : tree res_op1;
7998 0 : res_op1 = captures[1];
7999 0 : tree _r;
8000 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
8001 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 889, __FILE__, __LINE__, true);
8002 0 : return _r;
8003 : }
8004 0 : next_after_fail1421:;
8005 : }
8006 : }
8007 : }
8008 : }
8009 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
8010 : {
8011 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
8012 : {
8013 0 : {
8014 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
8015 0 : if (!HONOR_NANS (captures[0])
8016 : )
8017 : {
8018 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1422;
8019 0 : {
8020 0 : tree res_op0;
8021 0 : res_op0 = captures[0];
8022 0 : tree res_op1;
8023 0 : res_op1 = captures[1];
8024 0 : tree _r;
8025 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
8026 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 889, __FILE__, __LINE__, true);
8027 0 : return _r;
8028 : }
8029 0 : next_after_fail1422:;
8030 : }
8031 : }
8032 : }
8033 : }
8034 : break;
8035 : }
8036 : default:;
8037 : }
8038 : break;
8039 : }
8040 31651634 : CASE_CONVERT:
8041 31651634 : {
8042 31651634 : tree _q20 = TREE_OPERAND (_p0, 0);
8043 31651634 : switch (TREE_CODE (_q20))
8044 : {
8045 82 : case BIT_AND_EXPR:
8046 82 : {
8047 82 : tree _q30 = TREE_OPERAND (_q20, 0);
8048 82 : tree _q31 = TREE_OPERAND (_q20, 1);
8049 82 : switch (TREE_CODE (_q30))
8050 : {
8051 0 : CASE_CONVERT:
8052 0 : {
8053 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8054 0 : switch (TREE_CODE (_q40))
8055 : {
8056 0 : case RSHIFT_EXPR:
8057 0 : {
8058 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8059 0 : tree _q51 = TREE_OPERAND (_q40, 1);
8060 0 : switch (TREE_CODE (_q51))
8061 : {
8062 0 : case INTEGER_CST:
8063 0 : {
8064 0 : switch (TREE_CODE (_q31))
8065 : {
8066 0 : case INTEGER_CST:
8067 0 : {
8068 0 : switch (TREE_CODE (_p1))
8069 : {
8070 0 : case INTEGER_CST:
8071 0 : {
8072 0 : {
8073 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q50, _q51, _q31, _p1 };
8074 0 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
8075 0 : if (res) return res;
8076 : }
8077 0 : break;
8078 : }
8079 : default:;
8080 : }
8081 : break;
8082 : }
8083 : default:;
8084 : }
8085 : break;
8086 : }
8087 : default:;
8088 : }
8089 : break;
8090 : }
8091 : default:;
8092 : }
8093 : break;
8094 : }
8095 : default:;
8096 : }
8097 : break;
8098 : }
8099 31593 : case EXACT_DIV_EXPR:
8100 31593 : {
8101 31593 : tree _q30 = TREE_OPERAND (_q20, 0);
8102 31593 : tree _q31 = TREE_OPERAND (_q20, 1);
8103 31593 : switch (TREE_CODE (_p1))
8104 : {
8105 0 : CASE_CONVERT:
8106 0 : {
8107 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8108 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || operand_equal_p (_q60, _q31, 0))
8109 : {
8110 0 : {
8111 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q31 };
8112 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
8113 0 : if (res) return res;
8114 : }
8115 : }
8116 : break;
8117 : }
8118 31593 : default:;
8119 : }
8120 31593 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q31, 0))
8121 : {
8122 21807 : {
8123 21807 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q31 };
8124 21807 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
8125 21807 : if (res) return res;
8126 : }
8127 : }
8128 9786 : switch (TREE_CODE (_q31))
8129 : {
8130 9786 : case INTEGER_CST:
8131 9786 : {
8132 9786 : if (poly_int_tree_p (_p1))
8133 : {
8134 9786 : {
8135 9786 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
8136 9786 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
8137 9786 : if (res) return res;
8138 : }
8139 : }
8140 : break;
8141 : }
8142 : default:;
8143 : }
8144 : break;
8145 : }
8146 1345248 : case PLUS_EXPR:
8147 1345248 : {
8148 1345248 : tree _q30 = TREE_OPERAND (_q20, 0);
8149 1345248 : tree _q31 = TREE_OPERAND (_q20, 1);
8150 1345248 : switch (TREE_CODE (_q30))
8151 : {
8152 175333 : CASE_CONVERT:
8153 175333 : {
8154 175333 : tree _q40 = TREE_OPERAND (_q30, 0);
8155 175333 : switch (TREE_CODE (_q40))
8156 : {
8157 0 : case EXACT_DIV_EXPR:
8158 0 : {
8159 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8160 0 : tree _q51 = TREE_OPERAND (_q40, 1);
8161 0 : switch (TREE_CODE (_q51))
8162 : {
8163 0 : case INTEGER_CST:
8164 0 : {
8165 0 : if (poly_int_tree_p (_q31))
8166 : {
8167 0 : if (poly_int_tree_p (_p1))
8168 : {
8169 0 : {
8170 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q50, _q51, _q31, _p1 };
8171 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8172 0 : if (res) return res;
8173 : }
8174 : }
8175 : }
8176 : break;
8177 : }
8178 : default:;
8179 : }
8180 : break;
8181 : }
8182 : default:;
8183 : }
8184 : break;
8185 : }
8186 112 : case EXACT_DIV_EXPR:
8187 112 : {
8188 112 : tree _q40 = TREE_OPERAND (_q30, 0);
8189 112 : tree _q41 = TREE_OPERAND (_q30, 1);
8190 112 : switch (TREE_CODE (_q41))
8191 : {
8192 112 : case INTEGER_CST:
8193 112 : {
8194 112 : if (poly_int_tree_p (_q31))
8195 : {
8196 112 : if (poly_int_tree_p (_p1))
8197 : {
8198 112 : {
8199 112 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q31, _p1 };
8200 112 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8201 112 : if (res) return res;
8202 : }
8203 : }
8204 : }
8205 : break;
8206 : }
8207 : default:;
8208 : }
8209 : break;
8210 : }
8211 : default:;
8212 : }
8213 : break;
8214 : }
8215 100152 : case MINUS_EXPR:
8216 100152 : {
8217 100152 : tree _q30 = TREE_OPERAND (_q20, 0);
8218 100152 : tree _q31 = TREE_OPERAND (_q20, 1);
8219 100152 : switch (TREE_CODE (_q30))
8220 : {
8221 25500 : CASE_CONVERT:
8222 25500 : {
8223 25500 : tree _q40 = TREE_OPERAND (_q30, 0);
8224 25500 : switch (TREE_CODE (_q40))
8225 : {
8226 0 : case EXACT_DIV_EXPR:
8227 0 : {
8228 0 : tree _q50 = TREE_OPERAND (_q40, 0);
8229 0 : tree _q51 = TREE_OPERAND (_q40, 1);
8230 0 : switch (TREE_CODE (_q51))
8231 : {
8232 0 : case INTEGER_CST:
8233 0 : {
8234 0 : if (poly_int_tree_p (_q31))
8235 : {
8236 0 : if (poly_int_tree_p (_p1))
8237 : {
8238 0 : {
8239 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q50, _q51, _q31, _p1 };
8240 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8241 0 : if (res) return res;
8242 : }
8243 : }
8244 : }
8245 : break;
8246 : }
8247 : default:;
8248 : }
8249 : break;
8250 : }
8251 : default:;
8252 : }
8253 : break;
8254 : }
8255 0 : case EXACT_DIV_EXPR:
8256 0 : {
8257 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8258 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8259 0 : switch (TREE_CODE (_q41))
8260 : {
8261 0 : case INTEGER_CST:
8262 0 : {
8263 0 : if (poly_int_tree_p (_q31))
8264 : {
8265 0 : if (poly_int_tree_p (_p1))
8266 : {
8267 0 : {
8268 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q31, _p1 };
8269 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8270 0 : if (res) return res;
8271 : }
8272 : }
8273 : }
8274 : break;
8275 : }
8276 : default:;
8277 : }
8278 : break;
8279 : }
8280 : default:;
8281 : }
8282 : break;
8283 : }
8284 : default:;
8285 : }
8286 : break;
8287 : }
8288 59635 : case BIT_AND_EXPR:
8289 59635 : {
8290 59635 : tree _q20 = TREE_OPERAND (_p0, 0);
8291 59635 : tree _q21 = TREE_OPERAND (_p0, 1);
8292 59635 : switch (TREE_CODE (_q20))
8293 : {
8294 275 : case RSHIFT_EXPR:
8295 275 : {
8296 275 : tree _q30 = TREE_OPERAND (_q20, 0);
8297 275 : tree _q31 = TREE_OPERAND (_q20, 1);
8298 275 : switch (TREE_CODE (_q31))
8299 : {
8300 14 : case INTEGER_CST:
8301 14 : {
8302 14 : switch (TREE_CODE (_q21))
8303 : {
8304 14 : case INTEGER_CST:
8305 14 : {
8306 14 : switch (TREE_CODE (_p1))
8307 : {
8308 14 : case INTEGER_CST:
8309 14 : {
8310 14 : {
8311 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
8312 14 : tree res = generic_simplify_190 (loc, type, _p0, _p1, captures);
8313 14 : if (res) return res;
8314 : }
8315 8 : break;
8316 : }
8317 : default:;
8318 : }
8319 : break;
8320 : }
8321 : default:;
8322 : }
8323 : break;
8324 : }
8325 : default:;
8326 : }
8327 : break;
8328 : }
8329 : default:;
8330 : }
8331 : break;
8332 : }
8333 181505 : case EXACT_DIV_EXPR:
8334 181505 : {
8335 181505 : tree _q20 = TREE_OPERAND (_p0, 0);
8336 181505 : tree _q21 = TREE_OPERAND (_p0, 1);
8337 181505 : switch (TREE_CODE (_p1))
8338 : {
8339 104 : CASE_CONVERT:
8340 104 : {
8341 104 : tree _q50 = TREE_OPERAND (_p1, 0);
8342 104 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || operand_equal_p (_q50, _q21, 0))
8343 : {
8344 0 : {
8345 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q21 };
8346 0 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
8347 0 : if (res) return res;
8348 : }
8349 : }
8350 : break;
8351 : }
8352 181505 : default:;
8353 : }
8354 181505 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || operand_equal_p (_p1, _q21, 0))
8355 : {
8356 21798 : {
8357 21798 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q21 };
8358 21798 : tree res = generic_simplify_191 (loc, type, _p0, _p1, captures);
8359 21798 : if (res) return res;
8360 : }
8361 : }
8362 159707 : switch (TREE_CODE (_q21))
8363 : {
8364 159707 : case INTEGER_CST:
8365 159707 : {
8366 159707 : if (poly_int_tree_p (_p1))
8367 : {
8368 159603 : {
8369 159603 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8370 159603 : tree res = generic_simplify_192 (loc, type, _p0, _p1, captures);
8371 159603 : if (res) return res;
8372 : }
8373 : }
8374 : break;
8375 : }
8376 : default:;
8377 : }
8378 : break;
8379 : }
8380 7182977 : case PLUS_EXPR:
8381 7182977 : {
8382 7182977 : tree _q20 = TREE_OPERAND (_p0, 0);
8383 7182977 : tree _q21 = TREE_OPERAND (_p0, 1);
8384 7182977 : switch (TREE_CODE (_q20))
8385 : {
8386 3367919 : CASE_CONVERT:
8387 3367919 : {
8388 3367919 : tree _q30 = TREE_OPERAND (_q20, 0);
8389 3367919 : switch (TREE_CODE (_q30))
8390 : {
8391 5657 : case EXACT_DIV_EXPR:
8392 5657 : {
8393 5657 : tree _q40 = TREE_OPERAND (_q30, 0);
8394 5657 : tree _q41 = TREE_OPERAND (_q30, 1);
8395 5657 : switch (TREE_CODE (_q41))
8396 : {
8397 5657 : case INTEGER_CST:
8398 5657 : {
8399 5657 : if (poly_int_tree_p (_q21))
8400 : {
8401 5657 : if (poly_int_tree_p (_p1))
8402 : {
8403 5657 : {
8404 5657 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q21, _p1 };
8405 5657 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8406 5657 : if (res) return res;
8407 : }
8408 : }
8409 : }
8410 : break;
8411 : }
8412 : default:;
8413 : }
8414 : break;
8415 : }
8416 : default:;
8417 : }
8418 : break;
8419 : }
8420 0 : case EXACT_DIV_EXPR:
8421 0 : {
8422 0 : tree _q30 = TREE_OPERAND (_q20, 0);
8423 0 : tree _q31 = TREE_OPERAND (_q20, 1);
8424 0 : switch (TREE_CODE (_q31))
8425 : {
8426 0 : case INTEGER_CST:
8427 0 : {
8428 0 : if (poly_int_tree_p (_q21))
8429 : {
8430 0 : if (poly_int_tree_p (_p1))
8431 : {
8432 0 : {
8433 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
8434 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, PLUS_EXPR);
8435 0 : if (res) return res;
8436 : }
8437 : }
8438 : }
8439 : break;
8440 : }
8441 : default:;
8442 : }
8443 : break;
8444 : }
8445 : default:;
8446 : }
8447 : break;
8448 : }
8449 1118019 : case MINUS_EXPR:
8450 1118019 : {
8451 1118019 : tree _q20 = TREE_OPERAND (_p0, 0);
8452 1118019 : tree _q21 = TREE_OPERAND (_p0, 1);
8453 1118019 : switch (TREE_CODE (_q20))
8454 : {
8455 264401 : CASE_CONVERT:
8456 264401 : {
8457 264401 : tree _q30 = TREE_OPERAND (_q20, 0);
8458 264401 : switch (TREE_CODE (_q30))
8459 : {
8460 0 : case EXACT_DIV_EXPR:
8461 0 : {
8462 0 : tree _q40 = TREE_OPERAND (_q30, 0);
8463 0 : tree _q41 = TREE_OPERAND (_q30, 1);
8464 0 : switch (TREE_CODE (_q41))
8465 : {
8466 0 : case INTEGER_CST:
8467 0 : {
8468 0 : if (poly_int_tree_p (_q21))
8469 : {
8470 0 : if (poly_int_tree_p (_p1))
8471 : {
8472 0 : {
8473 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q40, _q41, _q21, _p1 };
8474 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8475 0 : if (res) return res;
8476 : }
8477 : }
8478 : }
8479 : break;
8480 : }
8481 : default:;
8482 : }
8483 : break;
8484 : }
8485 : default:;
8486 : }
8487 : break;
8488 : }
8489 0 : case EXACT_DIV_EXPR:
8490 0 : {
8491 0 : tree _q30 = TREE_OPERAND (_q20, 0);
8492 0 : tree _q31 = TREE_OPERAND (_q20, 1);
8493 0 : switch (TREE_CODE (_q31))
8494 : {
8495 0 : case INTEGER_CST:
8496 0 : {
8497 0 : if (poly_int_tree_p (_q21))
8498 : {
8499 0 : if (poly_int_tree_p (_p1))
8500 : {
8501 0 : {
8502 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _q21, _p1 };
8503 0 : tree res = generic_simplify_193 (loc, type, _p0, _p1, captures, MINUS_EXPR);
8504 0 : if (res) return res;
8505 : }
8506 : }
8507 : }
8508 : break;
8509 : }
8510 : default:;
8511 : }
8512 : break;
8513 : }
8514 : default:;
8515 : }
8516 : break;
8517 : }
8518 65571123 : default:;
8519 : }
8520 65571123 : if (integer_minus_onep (_p1))
8521 : {
8522 433154 : {
8523 433154 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8524 433154 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1423;
8525 433154 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1423;
8526 433154 : {
8527 433154 : tree res_op0;
8528 433154 : res_op0 = captures[0];
8529 433154 : tree _r;
8530 433154 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
8531 433154 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 972, __FILE__, __LINE__, true);
8532 433154 : return _r;
8533 : }
8534 : next_after_fail1423:;
8535 : }
8536 : }
8537 65137969 : switch (TREE_CODE (_p0))
8538 : {
8539 4624986 : case MULT_EXPR:
8540 4624986 : {
8541 4624986 : tree _q20 = TREE_OPERAND (_p0, 0);
8542 4624986 : tree _q21 = TREE_OPERAND (_p0, 1);
8543 4624986 : switch (TREE_CODE (_q21))
8544 : {
8545 127995 : case INTEGER_CST:
8546 127995 : {
8547 127995 : {
8548 127995 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
8549 127995 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures);
8550 127995 : if (res) return res;
8551 : }
8552 30 : break;
8553 : }
8554 : default:;
8555 : }
8556 : break;
8557 : }
8558 65010004 : default:;
8559 : }
8560 65010004 : switch (TREE_CODE (_p1))
8561 : {
8562 23577 : case MULT_EXPR:
8563 23577 : {
8564 23577 : tree _q30 = TREE_OPERAND (_p1, 0);
8565 23577 : tree _q31 = TREE_OPERAND (_p1, 1);
8566 23577 : switch (TREE_CODE (_q31))
8567 : {
8568 17214 : case INTEGER_CST:
8569 17214 : {
8570 17214 : {
8571 17214 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q31, _p0 };
8572 17214 : tree res = generic_simplify_194 (loc, type, _p0, _p1, captures);
8573 17214 : if (res) return res;
8574 : }
8575 0 : break;
8576 : }
8577 : default:;
8578 : }
8579 : break;
8580 : }
8581 64992790 : default:;
8582 : }
8583 64992790 : switch (TREE_CODE (_p0))
8584 : {
8585 36 : case VEC_COND_EXPR:
8586 36 : {
8587 36 : tree _q20 = TREE_OPERAND (_p0, 0);
8588 36 : tree _q21 = TREE_OPERAND (_p0, 1);
8589 36 : tree _q22 = TREE_OPERAND (_p0, 2);
8590 36 : switch (TREE_CODE (_p1))
8591 : {
8592 0 : case VEC_COND_EXPR:
8593 0 : {
8594 0 : tree _q60 = TREE_OPERAND (_p1, 0);
8595 0 : tree _q61 = TREE_OPERAND (_p1, 1);
8596 0 : tree _q62 = TREE_OPERAND (_p1, 2);
8597 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
8598 : {
8599 0 : {
8600 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
8601 0 : if (VECTOR_TYPE_P (type)
8602 0 : && (TREE_CODE_CLASS (MULT_EXPR) != tcc_comparison
8603 : || types_match (type, TREE_TYPE (captures[2]))
8604 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8605 : || (optimize_vectors_before_lowering_p ()
8606 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8607 : )
8608 : {
8609 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1424;
8610 0 : {
8611 0 : tree res_op0;
8612 0 : res_op0 = captures[1];
8613 0 : tree res_op1;
8614 0 : {
8615 0 : tree _o1[2], _r1;
8616 0 : _o1[0] = captures[2];
8617 0 : _o1[1] = captures[5];
8618 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8619 0 : if (EXPR_P (_r1))
8620 0 : goto next_after_fail1424;
8621 0 : res_op1 = _r1;
8622 : }
8623 0 : tree res_op2;
8624 0 : {
8625 0 : tree _o1[2], _r1;
8626 0 : _o1[0] = captures[3];
8627 0 : _o1[1] = captures[6];
8628 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8629 0 : if (EXPR_P (_r1))
8630 0 : goto next_after_fail1424;
8631 0 : res_op2 = _r1;
8632 : }
8633 0 : tree _r;
8634 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8635 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 890, __FILE__, __LINE__, true);
8636 0 : return _r;
8637 : }
8638 0 : next_after_fail1424:;
8639 : }
8640 : }
8641 : }
8642 : break;
8643 : }
8644 36 : default:;
8645 : }
8646 36 : {
8647 36 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
8648 36 : if (VECTOR_TYPE_P (type)
8649 36 : && (TREE_CODE_CLASS (MULT_EXPR) != tcc_comparison
8650 : || types_match (type, TREE_TYPE (captures[2]))
8651 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
8652 : || (optimize_vectors_before_lowering_p ()
8653 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
8654 : )
8655 : {
8656 36 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1425;
8657 36 : {
8658 36 : if (! tree_invariant_p (captures[4])) goto next_after_fail1425;
8659 0 : tree res_op0;
8660 0 : res_op0 = captures[1];
8661 0 : tree res_op1;
8662 0 : {
8663 0 : tree _o1[2], _r1;
8664 0 : _o1[0] = captures[2];
8665 0 : _o1[1] = unshare_expr (captures[4]);
8666 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8667 0 : if (EXPR_P (_r1))
8668 0 : goto next_after_fail1425;
8669 0 : res_op1 = _r1;
8670 : }
8671 0 : tree res_op2;
8672 0 : {
8673 0 : tree _o1[2], _r1;
8674 0 : _o1[0] = captures[3];
8675 0 : _o1[1] = captures[4];
8676 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8677 0 : if (EXPR_P (_r1))
8678 0 : goto next_after_fail1425;
8679 0 : res_op2 = _r1;
8680 : }
8681 0 : tree _r;
8682 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8683 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 892, __FILE__, __LINE__, true);
8684 0 : return _r;
8685 : }
8686 36 : next_after_fail1425:;
8687 : }
8688 : }
8689 36 : break;
8690 : }
8691 64992790 : default:;
8692 : }
8693 64992790 : switch (TREE_CODE (_p1))
8694 : {
8695 0 : case VEC_COND_EXPR:
8696 0 : {
8697 0 : tree _q30 = TREE_OPERAND (_p1, 0);
8698 0 : tree _q31 = TREE_OPERAND (_p1, 1);
8699 0 : tree _q32 = TREE_OPERAND (_p1, 2);
8700 0 : {
8701 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8702 0 : if (VECTOR_TYPE_P (type)
8703 0 : && (TREE_CODE_CLASS (MULT_EXPR) != tcc_comparison
8704 : || types_match (type, TREE_TYPE (captures[3]))
8705 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8706 : || (optimize_vectors_before_lowering_p ()
8707 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8708 : )
8709 : {
8710 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1426;
8711 0 : {
8712 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1426;
8713 0 : tree res_op0;
8714 0 : res_op0 = captures[2];
8715 0 : tree res_op1;
8716 0 : {
8717 0 : tree _o1[2], _r1;
8718 0 : _o1[0] = unshare_expr (captures[0]);
8719 0 : _o1[1] = captures[3];
8720 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8721 0 : if (EXPR_P (_r1))
8722 0 : goto next_after_fail1426;
8723 0 : res_op1 = _r1;
8724 : }
8725 0 : tree res_op2;
8726 0 : {
8727 0 : tree _o1[2], _r1;
8728 0 : _o1[0] = captures[0];
8729 0 : _o1[1] = captures[4];
8730 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, type, _o1[0], _o1[1]);
8731 0 : if (EXPR_P (_r1))
8732 0 : goto next_after_fail1426;
8733 0 : res_op2 = _r1;
8734 : }
8735 0 : tree _r;
8736 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8737 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 893, __FILE__, __LINE__, true);
8738 0 : return _r;
8739 : }
8740 0 : next_after_fail1426:;
8741 : }
8742 : }
8743 0 : break;
8744 : }
8745 64992790 : default:;
8746 : }
8747 64992790 : switch (TREE_CODE (_p0))
8748 : {
8749 2384 : case REAL_CST:
8750 2384 : {
8751 2384 : switch (TREE_CODE (_p1))
8752 : {
8753 0 : case CALL_EXPR:
8754 0 : switch (get_call_combined_fn (_p1))
8755 : {
8756 0 : case CFN_BUILT_IN_LDEXPF:
8757 0 : if (call_expr_nargs (_p1) == 2)
8758 : {
8759 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
8760 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
8761 0 : {
8762 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
8763 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
8764 0 : if (res) return res;
8765 : }
8766 : }
8767 : break;
8768 0 : case CFN_BUILT_IN_LDEXPL:
8769 0 : if (call_expr_nargs (_p1) == 2)
8770 : {
8771 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
8772 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
8773 0 : {
8774 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
8775 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
8776 0 : if (res) return res;
8777 : }
8778 : }
8779 : break;
8780 0 : case CFN_LDEXP:
8781 0 : if (call_expr_nargs (_p1) == 2)
8782 : {
8783 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
8784 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
8785 0 : {
8786 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
8787 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_LDEXP);
8788 0 : if (res) return res;
8789 : }
8790 : }
8791 : break;
8792 0 : case CFN_BUILT_IN_LDEXP:
8793 0 : if (call_expr_nargs (_p1) == 2)
8794 : {
8795 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
8796 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
8797 0 : {
8798 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
8799 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
8800 0 : if (res) return res;
8801 : }
8802 : }
8803 : break;
8804 : default:;
8805 : }
8806 : break;
8807 : default:;
8808 : }
8809 : break;
8810 : }
8811 2414243 : case CALL_EXPR:
8812 2414243 : switch (get_call_combined_fn (_p0))
8813 : {
8814 55 : case CFN_BUILT_IN_SQRTF:
8815 55 : if (call_expr_nargs (_p0) == 1)
8816 : {
8817 55 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8818 55 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8819 : {
8820 0 : {
8821 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
8822 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF);
8823 0 : if (res) return res;
8824 : }
8825 : }
8826 55 : switch (TREE_CODE (_p1))
8827 : {
8828 13 : case CALL_EXPR:
8829 13 : switch (get_call_combined_fn (_p1))
8830 : {
8831 13 : case CFN_BUILT_IN_SQRTF:
8832 13 : if (call_expr_nargs (_p1) == 1)
8833 : {
8834 13 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8835 13 : {
8836 13 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8837 13 : if (flag_unsafe_math_optimizations
8838 : )
8839 : {
8840 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1427;
8841 13 : {
8842 13 : tree res_op0;
8843 13 : {
8844 13 : tree _o1[2], _r1;
8845 13 : _o1[0] = captures[1];
8846 13 : _o1[1] = captures[3];
8847 13 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8848 13 : res_op0 = _r1;
8849 : }
8850 13 : tree _r;
8851 13 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRTF, type, 1, res_op0);
8852 13 : if (!_r)
8853 0 : goto next_after_fail1427;
8854 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 973, __FILE__, __LINE__, true);
8855 13 : return _r;
8856 : }
8857 0 : next_after_fail1427:;
8858 : }
8859 : }
8860 : }
8861 : break;
8862 : default:;
8863 : }
8864 : break;
8865 : default:;
8866 : }
8867 : }
8868 : break;
8869 48 : case CFN_BUILT_IN_SQRTL:
8870 48 : if (call_expr_nargs (_p0) == 1)
8871 : {
8872 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8873 48 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8874 : {
8875 0 : {
8876 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
8877 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL);
8878 0 : if (res) return res;
8879 : }
8880 : }
8881 48 : switch (TREE_CODE (_p1))
8882 : {
8883 13 : case CALL_EXPR:
8884 13 : switch (get_call_combined_fn (_p1))
8885 : {
8886 13 : case CFN_BUILT_IN_SQRTL:
8887 13 : if (call_expr_nargs (_p1) == 1)
8888 : {
8889 13 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8890 13 : {
8891 13 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8892 13 : if (flag_unsafe_math_optimizations
8893 : )
8894 : {
8895 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1428;
8896 13 : {
8897 13 : tree res_op0;
8898 13 : {
8899 13 : tree _o1[2], _r1;
8900 13 : _o1[0] = captures[1];
8901 13 : _o1[1] = captures[3];
8902 13 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8903 13 : res_op0 = _r1;
8904 : }
8905 13 : tree _r;
8906 13 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRTL, type, 1, res_op0);
8907 13 : if (!_r)
8908 0 : goto next_after_fail1428;
8909 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 973, __FILE__, __LINE__, true);
8910 13 : return _r;
8911 : }
8912 0 : next_after_fail1428:;
8913 : }
8914 : }
8915 : }
8916 : break;
8917 : default:;
8918 : }
8919 : break;
8920 : default:;
8921 : }
8922 : }
8923 : break;
8924 287 : case CFN_BUILT_IN_EXP:
8925 287 : if (call_expr_nargs (_p0) == 1)
8926 : {
8927 287 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8928 287 : switch (TREE_CODE (_p1))
8929 : {
8930 81 : case CALL_EXPR:
8931 81 : switch (get_call_combined_fn (_p1))
8932 : {
8933 31 : case CFN_BUILT_IN_EXP:
8934 31 : if (call_expr_nargs (_p1) == 1)
8935 : {
8936 31 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8937 31 : {
8938 31 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
8939 31 : if (flag_unsafe_math_optimizations
8940 : )
8941 : {
8942 27 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1429;
8943 27 : {
8944 27 : tree res_op0;
8945 27 : {
8946 27 : tree _o1[2], _r1;
8947 27 : _o1[0] = captures[1];
8948 27 : _o1[1] = captures[3];
8949 27 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8950 27 : res_op0 = _r1;
8951 : }
8952 27 : tree _r;
8953 27 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP, type, 1, res_op0);
8954 27 : if (!_r)
8955 0 : goto next_after_fail1429;
8956 27 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 974, __FILE__, __LINE__, true);
8957 27 : return _r;
8958 : }
8959 4 : next_after_fail1429:;
8960 : }
8961 : }
8962 : }
8963 : break;
8964 0 : case CFN_BUILT_IN_POW:
8965 0 : if (call_expr_nargs (_p1) == 2)
8966 : {
8967 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8968 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
8969 0 : switch (TREE_CODE (_q40))
8970 : {
8971 0 : case REAL_CST:
8972 0 : {
8973 0 : {
8974 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
8975 0 : if (flag_unsafe_math_optimizations
8976 : )
8977 : {
8978 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
8979 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
8980 : )
8981 : {
8982 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1430;
8983 0 : {
8984 0 : tree res_op0;
8985 0 : {
8986 0 : tree _o1[2], _r1;
8987 0 : {
8988 0 : tree _o2[2], _r2;
8989 0 : {
8990 0 : tree _o3[1], _r3;
8991 0 : _o3[0] = captures[1];
8992 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
8993 0 : if (!_r3)
8994 0 : goto next_after_fail1430;
8995 0 : _o2[0] = _r3;
8996 : }
8997 0 : _o2[1] = captures[2];
8998 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8999 0 : _o1[0] = _r2;
9000 : }
9001 0 : _o1[1] = captures[4];
9002 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9003 0 : res_op0 = _r1;
9004 : }
9005 0 : tree _r;
9006 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP, type, 1, res_op0);
9007 0 : if (!_r)
9008 0 : goto next_after_fail1430;
9009 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
9010 0 : return _r;
9011 : }
9012 0 : next_after_fail1430:;
9013 : }
9014 : }
9015 : }
9016 0 : break;
9017 : }
9018 : default:;
9019 : }
9020 : }
9021 : break;
9022 : default:;
9023 : }
9024 : break;
9025 : default:;
9026 : }
9027 : }
9028 : break;
9029 123 : case CFN_BUILT_IN_POW:
9030 123 : if (call_expr_nargs (_p0) == 2)
9031 : {
9032 123 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9033 123 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
9034 123 : switch (TREE_CODE (_q20))
9035 : {
9036 1 : case REAL_CST:
9037 1 : {
9038 1 : switch (TREE_CODE (_p1))
9039 : {
9040 1 : case CALL_EXPR:
9041 1 : switch (get_call_combined_fn (_p1))
9042 : {
9043 0 : case CFN_BUILT_IN_EXP:
9044 0 : if (call_expr_nargs (_p1) == 1)
9045 : {
9046 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9047 0 : {
9048 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9049 0 : if (flag_unsafe_math_optimizations
9050 : )
9051 : {
9052 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9053 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9054 : )
9055 : {
9056 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1431;
9057 0 : {
9058 0 : tree res_op0;
9059 0 : {
9060 0 : tree _o1[2], _r1;
9061 0 : {
9062 0 : tree _o2[2], _r2;
9063 0 : {
9064 0 : tree _o3[1], _r3;
9065 0 : _o3[0] = captures[1];
9066 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
9067 0 : if (!_r3)
9068 0 : goto next_after_fail1431;
9069 0 : _o2[0] = _r3;
9070 : }
9071 0 : _o2[1] = captures[2];
9072 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9073 0 : _o1[0] = _r2;
9074 : }
9075 0 : _o1[1] = captures[4];
9076 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9077 0 : res_op0 = _r1;
9078 : }
9079 0 : tree _r;
9080 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP, type, 1, res_op0);
9081 0 : if (!_r)
9082 0 : goto next_after_fail1431;
9083 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
9084 0 : return _r;
9085 : }
9086 0 : next_after_fail1431:;
9087 : }
9088 : }
9089 : }
9090 : }
9091 : break;
9092 0 : case CFN_BUILT_IN_EXP2:
9093 0 : if (call_expr_nargs (_p1) == 1)
9094 : {
9095 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9096 0 : {
9097 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9098 0 : if (flag_unsafe_math_optimizations
9099 : )
9100 : {
9101 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9102 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9103 : )
9104 : {
9105 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1432;
9106 0 : {
9107 0 : tree res_op0;
9108 0 : {
9109 0 : tree _o1[2], _r1;
9110 0 : {
9111 0 : tree _o2[2], _r2;
9112 0 : {
9113 0 : tree _o3[1], _r3;
9114 0 : _o3[0] = captures[1];
9115 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
9116 0 : if (!_r3)
9117 0 : goto next_after_fail1432;
9118 0 : _o2[0] = _r3;
9119 : }
9120 0 : _o2[1] = captures[2];
9121 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9122 0 : _o1[0] = _r2;
9123 : }
9124 0 : _o1[1] = captures[4];
9125 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9126 0 : res_op0 = _r1;
9127 : }
9128 0 : tree _r;
9129 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2, type, 1, res_op0);
9130 0 : if (!_r)
9131 0 : goto next_after_fail1432;
9132 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
9133 0 : return _r;
9134 : }
9135 0 : next_after_fail1432:;
9136 : }
9137 : }
9138 : }
9139 : }
9140 : break;
9141 0 : case CFN_BUILT_IN_EXP10:
9142 0 : if (call_expr_nargs (_p1) == 1)
9143 : {
9144 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9145 0 : {
9146 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9147 0 : if (flag_unsafe_math_optimizations
9148 : )
9149 : {
9150 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9151 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9152 : )
9153 : {
9154 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1433;
9155 0 : {
9156 0 : tree res_op0;
9157 0 : {
9158 0 : tree _o1[2], _r1;
9159 0 : {
9160 0 : tree _o2[2], _r2;
9161 0 : {
9162 0 : tree _o3[1], _r3;
9163 0 : _o3[0] = captures[1];
9164 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
9165 0 : if (!_r3)
9166 0 : goto next_after_fail1433;
9167 0 : _o2[0] = _r3;
9168 : }
9169 0 : _o2[1] = captures[2];
9170 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9171 0 : _o1[0] = _r2;
9172 : }
9173 0 : _o1[1] = captures[4];
9174 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9175 0 : res_op0 = _r1;
9176 : }
9177 0 : tree _r;
9178 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10, type, 1, res_op0);
9179 0 : if (!_r)
9180 0 : goto next_after_fail1433;
9181 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
9182 0 : return _r;
9183 : }
9184 0 : next_after_fail1433:;
9185 : }
9186 : }
9187 : }
9188 : }
9189 : break;
9190 0 : case CFN_BUILT_IN_POW10:
9191 0 : if (call_expr_nargs (_p1) == 1)
9192 : {
9193 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9194 0 : {
9195 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9196 0 : if (flag_unsafe_math_optimizations
9197 : )
9198 : {
9199 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9200 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9201 : )
9202 : {
9203 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1434;
9204 0 : {
9205 0 : tree res_op0;
9206 0 : {
9207 0 : tree _o1[2], _r1;
9208 0 : {
9209 0 : tree _o2[2], _r2;
9210 0 : {
9211 0 : tree _o3[1], _r3;
9212 0 : _o3[0] = captures[1];
9213 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
9214 0 : if (!_r3)
9215 0 : goto next_after_fail1434;
9216 0 : _o2[0] = _r3;
9217 : }
9218 0 : _o2[1] = captures[2];
9219 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9220 0 : _o1[0] = _r2;
9221 : }
9222 0 : _o1[1] = captures[4];
9223 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9224 0 : res_op0 = _r1;
9225 : }
9226 0 : tree _r;
9227 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10, type, 1, res_op0);
9228 0 : if (!_r)
9229 0 : goto next_after_fail1434;
9230 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
9231 0 : return _r;
9232 : }
9233 0 : next_after_fail1434:;
9234 : }
9235 : }
9236 : }
9237 : }
9238 : break;
9239 : default:;
9240 : }
9241 : break;
9242 : default:;
9243 : }
9244 : break;
9245 : }
9246 123 : default:;
9247 : }
9248 123 : switch (TREE_CODE (_q21))
9249 : {
9250 12 : case REAL_CST:
9251 12 : {
9252 12 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9253 : {
9254 8 : {
9255 8 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
9256 8 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
9257 8 : if (res) return res;
9258 : }
9259 : }
9260 : break;
9261 : }
9262 : default:;
9263 : }
9264 : }
9265 : break;
9266 48 : case CFN_BUILT_IN_EXP10F:
9267 48 : if (call_expr_nargs (_p0) == 1)
9268 : {
9269 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9270 48 : switch (TREE_CODE (_p1))
9271 : {
9272 24 : case CALL_EXPR:
9273 24 : switch (get_call_combined_fn (_p1))
9274 : {
9275 24 : case CFN_BUILT_IN_EXP10F:
9276 24 : if (call_expr_nargs (_p1) == 1)
9277 : {
9278 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9279 24 : {
9280 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9281 24 : if (flag_unsafe_math_optimizations
9282 : )
9283 : {
9284 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1435;
9285 24 : {
9286 24 : tree res_op0;
9287 24 : {
9288 24 : tree _o1[2], _r1;
9289 24 : _o1[0] = captures[1];
9290 24 : _o1[1] = captures[3];
9291 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9292 24 : res_op0 = _r1;
9293 : }
9294 24 : tree _r;
9295 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10F, type, 1, res_op0);
9296 24 : if (!_r)
9297 0 : goto next_after_fail1435;
9298 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 974, __FILE__, __LINE__, true);
9299 24 : return _r;
9300 : }
9301 0 : next_after_fail1435:;
9302 : }
9303 : }
9304 : }
9305 : break;
9306 0 : case CFN_BUILT_IN_POWF:
9307 0 : if (call_expr_nargs (_p1) == 2)
9308 : {
9309 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9310 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9311 0 : switch (TREE_CODE (_q40))
9312 : {
9313 0 : case REAL_CST:
9314 0 : {
9315 0 : {
9316 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9317 0 : if (flag_unsafe_math_optimizations
9318 : )
9319 : {
9320 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9321 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9322 : )
9323 : {
9324 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1436;
9325 0 : {
9326 0 : tree res_op0;
9327 0 : {
9328 0 : tree _o1[2], _r1;
9329 0 : {
9330 0 : tree _o2[2], _r2;
9331 0 : {
9332 0 : tree _o3[1], _r3;
9333 0 : _o3[0] = captures[1];
9334 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
9335 0 : if (!_r3)
9336 0 : goto next_after_fail1436;
9337 0 : _o2[0] = _r3;
9338 : }
9339 0 : _o2[1] = captures[2];
9340 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9341 0 : _o1[0] = _r2;
9342 : }
9343 0 : _o1[1] = captures[4];
9344 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9345 0 : res_op0 = _r1;
9346 : }
9347 0 : tree _r;
9348 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10F, type, 1, res_op0);
9349 0 : if (!_r)
9350 0 : goto next_after_fail1436;
9351 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
9352 0 : return _r;
9353 : }
9354 0 : next_after_fail1436:;
9355 : }
9356 : }
9357 : }
9358 0 : break;
9359 : }
9360 : default:;
9361 : }
9362 : }
9363 : break;
9364 : default:;
9365 : }
9366 : break;
9367 : default:;
9368 : }
9369 : }
9370 : break;
9371 48 : case CFN_BUILT_IN_EXP10L:
9372 48 : if (call_expr_nargs (_p0) == 1)
9373 : {
9374 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9375 48 : switch (TREE_CODE (_p1))
9376 : {
9377 24 : case CALL_EXPR:
9378 24 : switch (get_call_combined_fn (_p1))
9379 : {
9380 24 : case CFN_BUILT_IN_EXP10L:
9381 24 : if (call_expr_nargs (_p1) == 1)
9382 : {
9383 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9384 24 : {
9385 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9386 24 : if (flag_unsafe_math_optimizations
9387 : )
9388 : {
9389 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1437;
9390 24 : {
9391 24 : tree res_op0;
9392 24 : {
9393 24 : tree _o1[2], _r1;
9394 24 : _o1[0] = captures[1];
9395 24 : _o1[1] = captures[3];
9396 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9397 24 : res_op0 = _r1;
9398 : }
9399 24 : tree _r;
9400 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10L, type, 1, res_op0);
9401 24 : if (!_r)
9402 0 : goto next_after_fail1437;
9403 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 974, __FILE__, __LINE__, true);
9404 24 : return _r;
9405 : }
9406 0 : next_after_fail1437:;
9407 : }
9408 : }
9409 : }
9410 : break;
9411 0 : case CFN_BUILT_IN_POWL:
9412 0 : if (call_expr_nargs (_p1) == 2)
9413 : {
9414 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9415 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9416 0 : switch (TREE_CODE (_q40))
9417 : {
9418 0 : case REAL_CST:
9419 0 : {
9420 0 : {
9421 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9422 0 : if (flag_unsafe_math_optimizations
9423 : )
9424 : {
9425 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9426 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9427 : )
9428 : {
9429 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1438;
9430 0 : {
9431 0 : tree res_op0;
9432 0 : {
9433 0 : tree _o1[2], _r1;
9434 0 : {
9435 0 : tree _o2[2], _r2;
9436 0 : {
9437 0 : tree _o3[1], _r3;
9438 0 : _o3[0] = captures[1];
9439 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
9440 0 : if (!_r3)
9441 0 : goto next_after_fail1438;
9442 0 : _o2[0] = _r3;
9443 : }
9444 0 : _o2[1] = captures[2];
9445 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9446 0 : _o1[0] = _r2;
9447 : }
9448 0 : _o1[1] = captures[4];
9449 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9450 0 : res_op0 = _r1;
9451 : }
9452 0 : tree _r;
9453 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10L, type, 1, res_op0);
9454 0 : if (!_r)
9455 0 : goto next_after_fail1438;
9456 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
9457 0 : return _r;
9458 : }
9459 0 : next_after_fail1438:;
9460 : }
9461 : }
9462 : }
9463 0 : break;
9464 : }
9465 : default:;
9466 : }
9467 : }
9468 : break;
9469 : default:;
9470 : }
9471 : break;
9472 : default:;
9473 : }
9474 : }
9475 : break;
9476 18 : case CFN_BUILT_IN_CBRT:
9477 18 : if (call_expr_nargs (_p0) == 1)
9478 : {
9479 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9480 18 : switch (TREE_CODE (_p1))
9481 : {
9482 14 : case CALL_EXPR:
9483 14 : switch (get_call_combined_fn (_p1))
9484 : {
9485 14 : case CFN_BUILT_IN_CBRT:
9486 14 : if (call_expr_nargs (_p1) == 1)
9487 : {
9488 14 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9489 14 : {
9490 14 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9491 14 : if (flag_unsafe_math_optimizations
9492 : )
9493 : {
9494 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1439;
9495 12 : {
9496 12 : tree res_op0;
9497 12 : {
9498 12 : tree _o1[2], _r1;
9499 12 : _o1[0] = captures[1];
9500 12 : _o1[1] = captures[3];
9501 12 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9502 12 : res_op0 = _r1;
9503 : }
9504 12 : tree _r;
9505 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRT, type, 1, res_op0);
9506 12 : if (!_r)
9507 0 : goto next_after_fail1439;
9508 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 973, __FILE__, __LINE__, true);
9509 12 : return _r;
9510 : }
9511 2 : next_after_fail1439:;
9512 : }
9513 : }
9514 : }
9515 : break;
9516 : default:;
9517 : }
9518 : break;
9519 : default:;
9520 : }
9521 : }
9522 : break;
9523 48 : case CFN_BUILT_IN_EXP2:
9524 48 : if (call_expr_nargs (_p0) == 1)
9525 : {
9526 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9527 48 : switch (TREE_CODE (_p1))
9528 : {
9529 24 : case CALL_EXPR:
9530 24 : switch (get_call_combined_fn (_p1))
9531 : {
9532 0 : case CFN_BUILT_IN_POW:
9533 0 : if (call_expr_nargs (_p1) == 2)
9534 : {
9535 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9536 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9537 0 : switch (TREE_CODE (_q40))
9538 : {
9539 0 : case REAL_CST:
9540 0 : {
9541 0 : {
9542 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9543 0 : if (flag_unsafe_math_optimizations
9544 : )
9545 : {
9546 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9547 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9548 : )
9549 : {
9550 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1440;
9551 0 : {
9552 0 : tree res_op0;
9553 0 : {
9554 0 : tree _o1[2], _r1;
9555 0 : {
9556 0 : tree _o2[2], _r2;
9557 0 : {
9558 0 : tree _o3[1], _r3;
9559 0 : _o3[0] = captures[1];
9560 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
9561 0 : if (!_r3)
9562 0 : goto next_after_fail1440;
9563 0 : _o2[0] = _r3;
9564 : }
9565 0 : _o2[1] = captures[2];
9566 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9567 0 : _o1[0] = _r2;
9568 : }
9569 0 : _o1[1] = captures[4];
9570 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9571 0 : res_op0 = _r1;
9572 : }
9573 0 : tree _r;
9574 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2, type, 1, res_op0);
9575 0 : if (!_r)
9576 0 : goto next_after_fail1440;
9577 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
9578 0 : return _r;
9579 : }
9580 0 : next_after_fail1440:;
9581 : }
9582 : }
9583 : }
9584 0 : break;
9585 : }
9586 : default:;
9587 : }
9588 : }
9589 : break;
9590 24 : case CFN_BUILT_IN_EXP2:
9591 24 : if (call_expr_nargs (_p1) == 1)
9592 : {
9593 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9594 24 : {
9595 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9596 24 : if (flag_unsafe_math_optimizations
9597 : )
9598 : {
9599 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1441;
9600 24 : {
9601 24 : tree res_op0;
9602 24 : {
9603 24 : tree _o1[2], _r1;
9604 24 : _o1[0] = captures[1];
9605 24 : _o1[1] = captures[3];
9606 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9607 24 : res_op0 = _r1;
9608 : }
9609 24 : tree _r;
9610 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2, type, 1, res_op0);
9611 24 : if (!_r)
9612 0 : goto next_after_fail1441;
9613 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 974, __FILE__, __LINE__, true);
9614 24 : return _r;
9615 : }
9616 0 : next_after_fail1441:;
9617 : }
9618 : }
9619 : }
9620 : break;
9621 : default:;
9622 : }
9623 : break;
9624 : default:;
9625 : }
9626 : }
9627 : break;
9628 66 : case CFN_BUILT_IN_EXPF:
9629 66 : if (call_expr_nargs (_p0) == 1)
9630 : {
9631 66 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9632 66 : switch (TREE_CODE (_p1))
9633 : {
9634 36 : case CALL_EXPR:
9635 36 : switch (get_call_combined_fn (_p1))
9636 : {
9637 29 : case CFN_BUILT_IN_EXPF:
9638 29 : if (call_expr_nargs (_p1) == 1)
9639 : {
9640 29 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9641 29 : {
9642 29 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9643 29 : if (flag_unsafe_math_optimizations
9644 : )
9645 : {
9646 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1442;
9647 25 : {
9648 25 : tree res_op0;
9649 25 : {
9650 25 : tree _o1[2], _r1;
9651 25 : _o1[0] = captures[1];
9652 25 : _o1[1] = captures[3];
9653 25 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9654 25 : res_op0 = _r1;
9655 : }
9656 25 : tree _r;
9657 25 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPF, type, 1, res_op0);
9658 25 : if (!_r)
9659 0 : goto next_after_fail1442;
9660 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 974, __FILE__, __LINE__, true);
9661 25 : return _r;
9662 : }
9663 4 : next_after_fail1442:;
9664 : }
9665 : }
9666 : }
9667 : break;
9668 0 : case CFN_BUILT_IN_POWF:
9669 0 : if (call_expr_nargs (_p1) == 2)
9670 : {
9671 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9672 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9673 0 : switch (TREE_CODE (_q40))
9674 : {
9675 0 : case REAL_CST:
9676 0 : {
9677 0 : {
9678 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9679 0 : if (flag_unsafe_math_optimizations
9680 : )
9681 : {
9682 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9683 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9684 : )
9685 : {
9686 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1443;
9687 0 : {
9688 0 : tree res_op0;
9689 0 : {
9690 0 : tree _o1[2], _r1;
9691 0 : {
9692 0 : tree _o2[2], _r2;
9693 0 : {
9694 0 : tree _o3[1], _r3;
9695 0 : _o3[0] = captures[1];
9696 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGF, TREE_TYPE (_o3[0]), 1, _o3[0]);
9697 0 : if (!_r3)
9698 0 : goto next_after_fail1443;
9699 0 : _o2[0] = _r3;
9700 : }
9701 0 : _o2[1] = captures[2];
9702 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9703 0 : _o1[0] = _r2;
9704 : }
9705 0 : _o1[1] = captures[4];
9706 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9707 0 : res_op0 = _r1;
9708 : }
9709 0 : tree _r;
9710 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPF, type, 1, res_op0);
9711 0 : if (!_r)
9712 0 : goto next_after_fail1443;
9713 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
9714 0 : return _r;
9715 : }
9716 0 : next_after_fail1443:;
9717 : }
9718 : }
9719 : }
9720 0 : break;
9721 : }
9722 : default:;
9723 : }
9724 : }
9725 : break;
9726 : default:;
9727 : }
9728 : break;
9729 : default:;
9730 : }
9731 : }
9732 : break;
9733 59 : case CFN_BUILT_IN_EXPL:
9734 59 : if (call_expr_nargs (_p0) == 1)
9735 : {
9736 59 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9737 59 : switch (TREE_CODE (_p1))
9738 : {
9739 29 : case CALL_EXPR:
9740 29 : switch (get_call_combined_fn (_p1))
9741 : {
9742 29 : case CFN_BUILT_IN_EXPL:
9743 29 : if (call_expr_nargs (_p1) == 1)
9744 : {
9745 29 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9746 29 : {
9747 29 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9748 29 : if (flag_unsafe_math_optimizations
9749 : )
9750 : {
9751 25 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1444;
9752 25 : {
9753 25 : tree res_op0;
9754 25 : {
9755 25 : tree _o1[2], _r1;
9756 25 : _o1[0] = captures[1];
9757 25 : _o1[1] = captures[3];
9758 25 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9759 25 : res_op0 = _r1;
9760 : }
9761 25 : tree _r;
9762 25 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPL, type, 1, res_op0);
9763 25 : if (!_r)
9764 0 : goto next_after_fail1444;
9765 25 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 974, __FILE__, __LINE__, true);
9766 25 : return _r;
9767 : }
9768 4 : next_after_fail1444:;
9769 : }
9770 : }
9771 : }
9772 : break;
9773 0 : case CFN_BUILT_IN_POWL:
9774 0 : if (call_expr_nargs (_p1) == 2)
9775 : {
9776 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9777 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
9778 0 : switch (TREE_CODE (_q40))
9779 : {
9780 0 : case REAL_CST:
9781 0 : {
9782 0 : {
9783 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
9784 0 : if (flag_unsafe_math_optimizations
9785 : )
9786 : {
9787 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9788 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9789 : )
9790 : {
9791 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1445;
9792 0 : {
9793 0 : tree res_op0;
9794 0 : {
9795 0 : tree _o1[2], _r1;
9796 0 : {
9797 0 : tree _o2[2], _r2;
9798 0 : {
9799 0 : tree _o3[1], _r3;
9800 0 : _o3[0] = captures[1];
9801 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGL, TREE_TYPE (_o3[0]), 1, _o3[0]);
9802 0 : if (!_r3)
9803 0 : goto next_after_fail1445;
9804 0 : _o2[0] = _r3;
9805 : }
9806 0 : _o2[1] = captures[2];
9807 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9808 0 : _o1[0] = _r2;
9809 : }
9810 0 : _o1[1] = captures[4];
9811 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9812 0 : res_op0 = _r1;
9813 : }
9814 0 : tree _r;
9815 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPL, type, 1, res_op0);
9816 0 : if (!_r)
9817 0 : goto next_after_fail1445;
9818 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
9819 0 : return _r;
9820 : }
9821 0 : next_after_fail1445:;
9822 : }
9823 : }
9824 : }
9825 0 : break;
9826 : }
9827 : default:;
9828 : }
9829 : }
9830 : break;
9831 : default:;
9832 : }
9833 : break;
9834 : default:;
9835 : }
9836 : }
9837 : break;
9838 19 : case CFN_BUILT_IN_POWF:
9839 19 : if (call_expr_nargs (_p0) == 2)
9840 : {
9841 19 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9842 19 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
9843 19 : switch (TREE_CODE (_q20))
9844 : {
9845 0 : case REAL_CST:
9846 0 : {
9847 0 : switch (TREE_CODE (_p1))
9848 : {
9849 0 : case CALL_EXPR:
9850 0 : switch (get_call_combined_fn (_p1))
9851 : {
9852 0 : case CFN_BUILT_IN_EXP10F:
9853 0 : if (call_expr_nargs (_p1) == 1)
9854 : {
9855 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9856 0 : {
9857 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9858 0 : if (flag_unsafe_math_optimizations
9859 : )
9860 : {
9861 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9862 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9863 : )
9864 : {
9865 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1446;
9866 0 : {
9867 0 : tree res_op0;
9868 0 : {
9869 0 : tree _o1[2], _r1;
9870 0 : {
9871 0 : tree _o2[2], _r2;
9872 0 : {
9873 0 : tree _o3[1], _r3;
9874 0 : _o3[0] = captures[1];
9875 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
9876 0 : if (!_r3)
9877 0 : goto next_after_fail1446;
9878 0 : _o2[0] = _r3;
9879 : }
9880 0 : _o2[1] = captures[2];
9881 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9882 0 : _o1[0] = _r2;
9883 : }
9884 0 : _o1[1] = captures[4];
9885 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9886 0 : res_op0 = _r1;
9887 : }
9888 0 : tree _r;
9889 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10F, type, 1, res_op0);
9890 0 : if (!_r)
9891 0 : goto next_after_fail1446;
9892 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
9893 0 : return _r;
9894 : }
9895 0 : next_after_fail1446:;
9896 : }
9897 : }
9898 : }
9899 : }
9900 : break;
9901 0 : case CFN_BUILT_IN_EXPF:
9902 0 : if (call_expr_nargs (_p1) == 1)
9903 : {
9904 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9905 0 : {
9906 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9907 0 : if (flag_unsafe_math_optimizations
9908 : )
9909 : {
9910 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9911 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9912 : )
9913 : {
9914 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1447;
9915 0 : {
9916 0 : tree res_op0;
9917 0 : {
9918 0 : tree _o1[2], _r1;
9919 0 : {
9920 0 : tree _o2[2], _r2;
9921 0 : {
9922 0 : tree _o3[1], _r3;
9923 0 : _o3[0] = captures[1];
9924 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGF, TREE_TYPE (_o3[0]), 1, _o3[0]);
9925 0 : if (!_r3)
9926 0 : goto next_after_fail1447;
9927 0 : _o2[0] = _r3;
9928 : }
9929 0 : _o2[1] = captures[2];
9930 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9931 0 : _o1[0] = _r2;
9932 : }
9933 0 : _o1[1] = captures[4];
9934 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9935 0 : res_op0 = _r1;
9936 : }
9937 0 : tree _r;
9938 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPF, type, 1, res_op0);
9939 0 : if (!_r)
9940 0 : goto next_after_fail1447;
9941 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
9942 0 : return _r;
9943 : }
9944 0 : next_after_fail1447:;
9945 : }
9946 : }
9947 : }
9948 : }
9949 : break;
9950 0 : case CFN_BUILT_IN_POW10F:
9951 0 : if (call_expr_nargs (_p1) == 1)
9952 : {
9953 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
9954 0 : {
9955 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9956 0 : if (flag_unsafe_math_optimizations
9957 : )
9958 : {
9959 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
9960 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
9961 : )
9962 : {
9963 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1448;
9964 0 : {
9965 0 : tree res_op0;
9966 0 : {
9967 0 : tree _o1[2], _r1;
9968 0 : {
9969 0 : tree _o2[2], _r2;
9970 0 : {
9971 0 : tree _o3[1], _r3;
9972 0 : _o3[0] = captures[1];
9973 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
9974 0 : if (!_r3)
9975 0 : goto next_after_fail1448;
9976 0 : _o2[0] = _r3;
9977 : }
9978 0 : _o2[1] = captures[2];
9979 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
9980 0 : _o1[0] = _r2;
9981 : }
9982 0 : _o1[1] = captures[4];
9983 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
9984 0 : res_op0 = _r1;
9985 : }
9986 0 : tree _r;
9987 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10F, type, 1, res_op0);
9988 0 : if (!_r)
9989 0 : goto next_after_fail1448;
9990 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
9991 0 : return _r;
9992 : }
9993 0 : next_after_fail1448:;
9994 : }
9995 : }
9996 : }
9997 : }
9998 : break;
9999 0 : case CFN_BUILT_IN_EXP2F:
10000 0 : if (call_expr_nargs (_p1) == 1)
10001 : {
10002 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10003 0 : {
10004 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10005 0 : if (flag_unsafe_math_optimizations
10006 : )
10007 : {
10008 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10009 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10010 : )
10011 : {
10012 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1449;
10013 0 : {
10014 0 : tree res_op0;
10015 0 : {
10016 0 : tree _o1[2], _r1;
10017 0 : {
10018 0 : tree _o2[2], _r2;
10019 0 : {
10020 0 : tree _o3[1], _r3;
10021 0 : _o3[0] = captures[1];
10022 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2F, TREE_TYPE (_o3[0]), 1, _o3[0]);
10023 0 : if (!_r3)
10024 0 : goto next_after_fail1449;
10025 0 : _o2[0] = _r3;
10026 : }
10027 0 : _o2[1] = captures[2];
10028 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10029 0 : _o1[0] = _r2;
10030 : }
10031 0 : _o1[1] = captures[4];
10032 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10033 0 : res_op0 = _r1;
10034 : }
10035 0 : tree _r;
10036 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2F, type, 1, res_op0);
10037 0 : if (!_r)
10038 0 : goto next_after_fail1449;
10039 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
10040 0 : return _r;
10041 : }
10042 0 : next_after_fail1449:;
10043 : }
10044 : }
10045 : }
10046 : }
10047 : break;
10048 : default:;
10049 : }
10050 : break;
10051 : default:;
10052 : }
10053 : break;
10054 : }
10055 19 : default:;
10056 : }
10057 19 : switch (TREE_CODE (_q21))
10058 : {
10059 5 : case REAL_CST:
10060 5 : {
10061 5 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10062 : {
10063 0 : {
10064 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
10065 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
10066 0 : if (res) return res;
10067 : }
10068 : }
10069 : break;
10070 : }
10071 : default:;
10072 : }
10073 : }
10074 : break;
10075 12 : case CFN_BUILT_IN_POWL:
10076 12 : if (call_expr_nargs (_p0) == 2)
10077 : {
10078 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10079 12 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10080 12 : switch (TREE_CODE (_q20))
10081 : {
10082 0 : case REAL_CST:
10083 0 : {
10084 0 : switch (TREE_CODE (_p1))
10085 : {
10086 0 : case CALL_EXPR:
10087 0 : switch (get_call_combined_fn (_p1))
10088 : {
10089 0 : case CFN_BUILT_IN_EXP10L:
10090 0 : if (call_expr_nargs (_p1) == 1)
10091 : {
10092 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10093 0 : {
10094 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10095 0 : if (flag_unsafe_math_optimizations
10096 : )
10097 : {
10098 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10099 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10100 : )
10101 : {
10102 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1450;
10103 0 : {
10104 0 : tree res_op0;
10105 0 : {
10106 0 : tree _o1[2], _r1;
10107 0 : {
10108 0 : tree _o2[2], _r2;
10109 0 : {
10110 0 : tree _o3[1], _r3;
10111 0 : _o3[0] = captures[1];
10112 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
10113 0 : if (!_r3)
10114 0 : goto next_after_fail1450;
10115 0 : _o2[0] = _r3;
10116 : }
10117 0 : _o2[1] = captures[2];
10118 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10119 0 : _o1[0] = _r2;
10120 : }
10121 0 : _o1[1] = captures[4];
10122 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10123 0 : res_op0 = _r1;
10124 : }
10125 0 : tree _r;
10126 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10L, type, 1, res_op0);
10127 0 : if (!_r)
10128 0 : goto next_after_fail1450;
10129 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
10130 0 : return _r;
10131 : }
10132 0 : next_after_fail1450:;
10133 : }
10134 : }
10135 : }
10136 : }
10137 : break;
10138 0 : case CFN_BUILT_IN_EXPL:
10139 0 : if (call_expr_nargs (_p1) == 1)
10140 : {
10141 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10142 0 : {
10143 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10144 0 : if (flag_unsafe_math_optimizations
10145 : )
10146 : {
10147 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10148 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10149 : )
10150 : {
10151 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1451;
10152 0 : {
10153 0 : tree res_op0;
10154 0 : {
10155 0 : tree _o1[2], _r1;
10156 0 : {
10157 0 : tree _o2[2], _r2;
10158 0 : {
10159 0 : tree _o3[1], _r3;
10160 0 : _o3[0] = captures[1];
10161 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOGL, TREE_TYPE (_o3[0]), 1, _o3[0]);
10162 0 : if (!_r3)
10163 0 : goto next_after_fail1451;
10164 0 : _o2[0] = _r3;
10165 : }
10166 0 : _o2[1] = captures[2];
10167 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10168 0 : _o1[0] = _r2;
10169 : }
10170 0 : _o1[1] = captures[4];
10171 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10172 0 : res_op0 = _r1;
10173 : }
10174 0 : tree _r;
10175 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXPL, type, 1, res_op0);
10176 0 : if (!_r)
10177 0 : goto next_after_fail1451;
10178 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
10179 0 : return _r;
10180 : }
10181 0 : next_after_fail1451:;
10182 : }
10183 : }
10184 : }
10185 : }
10186 : break;
10187 0 : case CFN_BUILT_IN_POW10L:
10188 0 : if (call_expr_nargs (_p1) == 1)
10189 : {
10190 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10191 0 : {
10192 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10193 0 : if (flag_unsafe_math_optimizations
10194 : )
10195 : {
10196 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10197 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10198 : )
10199 : {
10200 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1452;
10201 0 : {
10202 0 : tree res_op0;
10203 0 : {
10204 0 : tree _o1[2], _r1;
10205 0 : {
10206 0 : tree _o2[2], _r2;
10207 0 : {
10208 0 : tree _o3[1], _r3;
10209 0 : _o3[0] = captures[1];
10210 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
10211 0 : if (!_r3)
10212 0 : goto next_after_fail1452;
10213 0 : _o2[0] = _r3;
10214 : }
10215 0 : _o2[1] = captures[2];
10216 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10217 0 : _o1[0] = _r2;
10218 : }
10219 0 : _o1[1] = captures[4];
10220 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10221 0 : res_op0 = _r1;
10222 : }
10223 0 : tree _r;
10224 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10L, type, 1, res_op0);
10225 0 : if (!_r)
10226 0 : goto next_after_fail1452;
10227 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
10228 0 : return _r;
10229 : }
10230 0 : next_after_fail1452:;
10231 : }
10232 : }
10233 : }
10234 : }
10235 : break;
10236 0 : case CFN_BUILT_IN_EXP2L:
10237 0 : if (call_expr_nargs (_p1) == 1)
10238 : {
10239 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10240 0 : {
10241 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10242 0 : if (flag_unsafe_math_optimizations
10243 : )
10244 : {
10245 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10246 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10247 : )
10248 : {
10249 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1453;
10250 0 : {
10251 0 : tree res_op0;
10252 0 : {
10253 0 : tree _o1[2], _r1;
10254 0 : {
10255 0 : tree _o2[2], _r2;
10256 0 : {
10257 0 : tree _o3[1], _r3;
10258 0 : _o3[0] = captures[1];
10259 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2L, TREE_TYPE (_o3[0]), 1, _o3[0]);
10260 0 : if (!_r3)
10261 0 : goto next_after_fail1453;
10262 0 : _o2[0] = _r3;
10263 : }
10264 0 : _o2[1] = captures[2];
10265 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10266 0 : _o1[0] = _r2;
10267 : }
10268 0 : _o1[1] = captures[4];
10269 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10270 0 : res_op0 = _r1;
10271 : }
10272 0 : tree _r;
10273 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2L, type, 1, res_op0);
10274 0 : if (!_r)
10275 0 : goto next_after_fail1453;
10276 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
10277 0 : return _r;
10278 : }
10279 0 : next_after_fail1453:;
10280 : }
10281 : }
10282 : }
10283 : }
10284 : break;
10285 : default:;
10286 : }
10287 : break;
10288 : default:;
10289 : }
10290 : break;
10291 : }
10292 12 : default:;
10293 : }
10294 12 : switch (TREE_CODE (_q21))
10295 : {
10296 0 : case REAL_CST:
10297 0 : {
10298 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10299 : {
10300 0 : {
10301 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
10302 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
10303 0 : if (res) return res;
10304 : }
10305 : }
10306 : break;
10307 : }
10308 : default:;
10309 : }
10310 : }
10311 : break;
10312 19026 : case CFN_BUILT_IN_SQRT:
10313 19026 : if (call_expr_nargs (_p0) == 1)
10314 : {
10315 19026 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10316 19026 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10317 : {
10318 2 : {
10319 2 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10320 2 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT);
10321 2 : if (res) return res;
10322 : }
10323 : }
10324 19024 : switch (TREE_CODE (_p1))
10325 : {
10326 100 : case CALL_EXPR:
10327 100 : switch (get_call_combined_fn (_p1))
10328 : {
10329 37 : case CFN_BUILT_IN_SQRT:
10330 37 : if (call_expr_nargs (_p1) == 1)
10331 : {
10332 37 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10333 37 : {
10334 37 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10335 37 : if (flag_unsafe_math_optimizations
10336 : )
10337 : {
10338 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1454;
10339 15 : {
10340 15 : tree res_op0;
10341 15 : {
10342 15 : tree _o1[2], _r1;
10343 15 : _o1[0] = captures[1];
10344 15 : _o1[1] = captures[3];
10345 15 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10346 15 : res_op0 = _r1;
10347 : }
10348 15 : tree _r;
10349 15 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_SQRT, type, 1, res_op0);
10350 15 : if (!_r)
10351 0 : goto next_after_fail1454;
10352 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 973, __FILE__, __LINE__, true);
10353 15 : return _r;
10354 : }
10355 22 : next_after_fail1454:;
10356 : }
10357 : }
10358 : }
10359 : break;
10360 : default:;
10361 : }
10362 : break;
10363 : default:;
10364 : }
10365 : }
10366 : break;
10367 5 : case CFN_BUILT_IN_LDEXPF:
10368 5 : if (call_expr_nargs (_p0) == 2)
10369 : {
10370 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10371 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10372 5 : switch (TREE_CODE (_p1))
10373 : {
10374 2 : case REAL_CST:
10375 2 : {
10376 2 : {
10377 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10378 2 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
10379 2 : if (res) return res;
10380 : }
10381 1 : break;
10382 : }
10383 4 : default:;
10384 : }
10385 4 : switch (TREE_CODE (_q20))
10386 : {
10387 3 : case REAL_CST:
10388 3 : {
10389 3 : {
10390 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10391 3 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
10392 3 : if (res) return res;
10393 : }
10394 0 : break;
10395 : }
10396 : default:;
10397 : }
10398 : }
10399 : break;
10400 5 : case CFN_BUILT_IN_LDEXPL:
10401 5 : if (call_expr_nargs (_p0) == 2)
10402 : {
10403 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10404 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10405 5 : switch (TREE_CODE (_p1))
10406 : {
10407 2 : case REAL_CST:
10408 2 : {
10409 2 : {
10410 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10411 2 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
10412 2 : if (res) return res;
10413 : }
10414 1 : break;
10415 : }
10416 4 : default:;
10417 : }
10418 4 : switch (TREE_CODE (_q20))
10419 : {
10420 3 : case REAL_CST:
10421 3 : {
10422 3 : {
10423 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
10424 3 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
10425 3 : if (res) return res;
10426 : }
10427 0 : break;
10428 : }
10429 : default:;
10430 : }
10431 : }
10432 : break;
10433 4 : case CFN_BUILT_IN_SQRTF128:
10434 4 : if (call_expr_nargs (_p0) == 1)
10435 : {
10436 4 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10437 4 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10438 : {
10439 0 : {
10440 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10441 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF128);
10442 0 : if (res) return res;
10443 : }
10444 : }
10445 : }
10446 : break;
10447 0 : case CFN_BUILT_IN_SQRTF32X:
10448 0 : if (call_expr_nargs (_p0) == 1)
10449 : {
10450 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10451 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10452 : {
10453 0 : {
10454 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10455 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF32X);
10456 0 : if (res) return res;
10457 : }
10458 : }
10459 : }
10460 : break;
10461 0 : case CFN_BUILT_IN_SQRTF64X:
10462 0 : if (call_expr_nargs (_p0) == 1)
10463 : {
10464 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10465 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10466 : {
10467 0 : {
10468 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10469 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF64X);
10470 0 : if (res) return res;
10471 : }
10472 : }
10473 : }
10474 : break;
10475 0 : case CFN_BUILT_IN_SQRTF16:
10476 0 : if (call_expr_nargs (_p0) == 1)
10477 : {
10478 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10479 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10480 : {
10481 0 : {
10482 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10483 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF16);
10484 0 : if (res) return res;
10485 : }
10486 : }
10487 : }
10488 : break;
10489 0 : case CFN_BUILT_IN_SQRTF32:
10490 0 : if (call_expr_nargs (_p0) == 1)
10491 : {
10492 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10493 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10494 : {
10495 0 : {
10496 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10497 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF32);
10498 0 : if (res) return res;
10499 : }
10500 : }
10501 : }
10502 : break;
10503 0 : case CFN_BUILT_IN_SQRTF64:
10504 0 : if (call_expr_nargs (_p0) == 1)
10505 : {
10506 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10507 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
10508 : {
10509 0 : {
10510 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
10511 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF64);
10512 0 : if (res) return res;
10513 : }
10514 : }
10515 : }
10516 : break;
10517 0 : case CFN_EXP:
10518 0 : if (call_expr_nargs (_p0) == 1)
10519 : {
10520 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10521 0 : switch (TREE_CODE (_p1))
10522 : {
10523 0 : case CALL_EXPR:
10524 0 : switch (get_call_combined_fn (_p1))
10525 : {
10526 0 : case CFN_EXP:
10527 0 : if (call_expr_nargs (_p1) == 1)
10528 : {
10529 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10530 0 : {
10531 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10532 0 : if (flag_unsafe_math_optimizations
10533 : )
10534 : {
10535 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1455;
10536 0 : {
10537 0 : tree res_op0;
10538 0 : {
10539 0 : tree _o1[2], _r1;
10540 0 : _o1[0] = captures[1];
10541 0 : _o1[1] = captures[3];
10542 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10543 0 : res_op0 = _r1;
10544 : }
10545 0 : tree _r;
10546 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP, type, 1, res_op0);
10547 0 : if (!_r)
10548 0 : goto next_after_fail1455;
10549 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 974, __FILE__, __LINE__, true);
10550 0 : return _r;
10551 : }
10552 0 : next_after_fail1455:;
10553 : }
10554 : }
10555 : }
10556 : break;
10557 0 : case CFN_POW:
10558 0 : if (call_expr_nargs (_p1) == 2)
10559 : {
10560 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10561 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
10562 0 : switch (TREE_CODE (_q40))
10563 : {
10564 0 : case REAL_CST:
10565 0 : {
10566 0 : {
10567 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
10568 0 : if (flag_unsafe_math_optimizations
10569 : )
10570 : {
10571 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10572 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10573 : )
10574 : {
10575 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1456;
10576 0 : {
10577 0 : tree res_op0;
10578 0 : {
10579 0 : tree _o1[2], _r1;
10580 0 : {
10581 0 : tree _o2[2], _r2;
10582 0 : {
10583 0 : tree _o3[1], _r3;
10584 0 : _o3[0] = captures[1];
10585 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
10586 0 : if (!_r3)
10587 0 : goto next_after_fail1456;
10588 0 : _o2[0] = _r3;
10589 : }
10590 0 : _o2[1] = captures[2];
10591 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10592 0 : _o1[0] = _r2;
10593 : }
10594 0 : _o1[1] = captures[4];
10595 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10596 0 : res_op0 = _r1;
10597 : }
10598 0 : tree _r;
10599 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP, type, 1, res_op0);
10600 0 : if (!_r)
10601 0 : goto next_after_fail1456;
10602 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
10603 0 : return _r;
10604 : }
10605 0 : next_after_fail1456:;
10606 : }
10607 : }
10608 : }
10609 0 : break;
10610 : }
10611 : default:;
10612 : }
10613 : }
10614 : break;
10615 : default:;
10616 : }
10617 : break;
10618 : default:;
10619 : }
10620 : }
10621 : break;
10622 0 : case CFN_POW:
10623 0 : if (call_expr_nargs (_p0) == 2)
10624 : {
10625 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10626 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
10627 0 : switch (TREE_CODE (_q20))
10628 : {
10629 0 : case REAL_CST:
10630 0 : {
10631 0 : switch (TREE_CODE (_p1))
10632 : {
10633 0 : case CALL_EXPR:
10634 0 : switch (get_call_combined_fn (_p1))
10635 : {
10636 0 : case CFN_EXP:
10637 0 : if (call_expr_nargs (_p1) == 1)
10638 : {
10639 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10640 0 : {
10641 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10642 0 : if (flag_unsafe_math_optimizations
10643 : )
10644 : {
10645 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10646 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10647 : )
10648 : {
10649 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1457;
10650 0 : {
10651 0 : tree res_op0;
10652 0 : {
10653 0 : tree _o1[2], _r1;
10654 0 : {
10655 0 : tree _o2[2], _r2;
10656 0 : {
10657 0 : tree _o3[1], _r3;
10658 0 : _o3[0] = captures[1];
10659 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG, TREE_TYPE (_o3[0]), 1, _o3[0]);
10660 0 : if (!_r3)
10661 0 : goto next_after_fail1457;
10662 0 : _o2[0] = _r3;
10663 : }
10664 0 : _o2[1] = captures[2];
10665 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10666 0 : _o1[0] = _r2;
10667 : }
10668 0 : _o1[1] = captures[4];
10669 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10670 0 : res_op0 = _r1;
10671 : }
10672 0 : tree _r;
10673 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP, type, 1, res_op0);
10674 0 : if (!_r)
10675 0 : goto next_after_fail1457;
10676 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
10677 0 : return _r;
10678 : }
10679 0 : next_after_fail1457:;
10680 : }
10681 : }
10682 : }
10683 : }
10684 : break;
10685 0 : case CFN_EXP2:
10686 0 : if (call_expr_nargs (_p1) == 1)
10687 : {
10688 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10689 0 : {
10690 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10691 0 : if (flag_unsafe_math_optimizations
10692 : )
10693 : {
10694 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10695 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10696 : )
10697 : {
10698 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1458;
10699 0 : {
10700 0 : tree res_op0;
10701 0 : {
10702 0 : tree _o1[2], _r1;
10703 0 : {
10704 0 : tree _o2[2], _r2;
10705 0 : {
10706 0 : tree _o3[1], _r3;
10707 0 : _o3[0] = captures[1];
10708 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
10709 0 : if (!_r3)
10710 0 : goto next_after_fail1458;
10711 0 : _o2[0] = _r3;
10712 : }
10713 0 : _o2[1] = captures[2];
10714 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10715 0 : _o1[0] = _r2;
10716 : }
10717 0 : _o1[1] = captures[4];
10718 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10719 0 : res_op0 = _r1;
10720 : }
10721 0 : tree _r;
10722 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP2, type, 1, res_op0);
10723 0 : if (!_r)
10724 0 : goto next_after_fail1458;
10725 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
10726 0 : return _r;
10727 : }
10728 0 : next_after_fail1458:;
10729 : }
10730 : }
10731 : }
10732 : }
10733 : break;
10734 0 : case CFN_EXP10:
10735 0 : if (call_expr_nargs (_p1) == 1)
10736 : {
10737 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
10738 0 : {
10739 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
10740 0 : if (flag_unsafe_math_optimizations
10741 : )
10742 : {
10743 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10744 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10745 : )
10746 : {
10747 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1459;
10748 0 : {
10749 0 : tree res_op0;
10750 0 : {
10751 0 : tree _o1[2], _r1;
10752 0 : {
10753 0 : tree _o2[2], _r2;
10754 0 : {
10755 0 : tree _o3[1], _r3;
10756 0 : _o3[0] = captures[1];
10757 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
10758 0 : if (!_r3)
10759 0 : goto next_after_fail1459;
10760 0 : _o2[0] = _r3;
10761 : }
10762 0 : _o2[1] = captures[2];
10763 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10764 0 : _o1[0] = _r2;
10765 : }
10766 0 : _o1[1] = captures[4];
10767 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10768 0 : res_op0 = _r1;
10769 : }
10770 0 : tree _r;
10771 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP10, type, 1, res_op0);
10772 0 : if (!_r)
10773 0 : goto next_after_fail1459;
10774 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
10775 0 : return _r;
10776 : }
10777 0 : next_after_fail1459:;
10778 : }
10779 : }
10780 : }
10781 : }
10782 : break;
10783 : default:;
10784 : }
10785 : break;
10786 : default:;
10787 : }
10788 : break;
10789 : }
10790 0 : default:;
10791 : }
10792 0 : switch (TREE_CODE (_q21))
10793 : {
10794 0 : case REAL_CST:
10795 0 : {
10796 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
10797 : {
10798 0 : {
10799 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
10800 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, CFN_POW);
10801 0 : if (res) return res;
10802 : }
10803 : }
10804 : break;
10805 : }
10806 : default:;
10807 : }
10808 : }
10809 : break;
10810 24 : case CFN_BUILT_IN_POW10F:
10811 24 : if (call_expr_nargs (_p0) == 1)
10812 : {
10813 24 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10814 24 : switch (TREE_CODE (_p1))
10815 : {
10816 12 : case CALL_EXPR:
10817 12 : switch (get_call_combined_fn (_p1))
10818 : {
10819 0 : case CFN_BUILT_IN_POWF:
10820 0 : if (call_expr_nargs (_p1) == 2)
10821 : {
10822 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10823 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
10824 0 : switch (TREE_CODE (_q40))
10825 : {
10826 0 : case REAL_CST:
10827 0 : {
10828 0 : {
10829 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
10830 0 : if (flag_unsafe_math_optimizations
10831 : )
10832 : {
10833 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10834 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10835 : )
10836 : {
10837 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1460;
10838 0 : {
10839 0 : tree res_op0;
10840 0 : {
10841 0 : tree _o1[2], _r1;
10842 0 : {
10843 0 : tree _o2[2], _r2;
10844 0 : {
10845 0 : tree _o3[1], _r3;
10846 0 : _o3[0] = captures[1];
10847 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10F, TREE_TYPE (_o3[0]), 1, _o3[0]);
10848 0 : if (!_r3)
10849 0 : goto next_after_fail1460;
10850 0 : _o2[0] = _r3;
10851 : }
10852 0 : _o2[1] = captures[2];
10853 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10854 0 : _o1[0] = _r2;
10855 : }
10856 0 : _o1[1] = captures[4];
10857 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10858 0 : res_op0 = _r1;
10859 : }
10860 0 : tree _r;
10861 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10F, type, 1, res_op0);
10862 0 : if (!_r)
10863 0 : goto next_after_fail1460;
10864 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
10865 0 : return _r;
10866 : }
10867 0 : next_after_fail1460:;
10868 : }
10869 : }
10870 : }
10871 0 : break;
10872 : }
10873 : default:;
10874 : }
10875 : }
10876 : break;
10877 12 : case CFN_BUILT_IN_POW10F:
10878 12 : if (call_expr_nargs (_p1) == 1)
10879 : {
10880 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10881 12 : {
10882 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10883 12 : if (flag_unsafe_math_optimizations
10884 : )
10885 : {
10886 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1461;
10887 12 : {
10888 12 : tree res_op0;
10889 12 : {
10890 12 : tree _o1[2], _r1;
10891 12 : _o1[0] = captures[1];
10892 12 : _o1[1] = captures[3];
10893 12 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10894 12 : res_op0 = _r1;
10895 : }
10896 12 : tree _r;
10897 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10F, type, 1, res_op0);
10898 12 : if (!_r)
10899 12 : goto next_after_fail1461;
10900 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 974, __FILE__, __LINE__, true);
10901 0 : return _r;
10902 : }
10903 12 : next_after_fail1461:;
10904 : }
10905 : }
10906 : }
10907 : break;
10908 : default:;
10909 : }
10910 : break;
10911 : default:;
10912 : }
10913 : }
10914 : break;
10915 24 : case CFN_BUILT_IN_POW10L:
10916 24 : if (call_expr_nargs (_p0) == 1)
10917 : {
10918 24 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10919 24 : switch (TREE_CODE (_p1))
10920 : {
10921 12 : case CALL_EXPR:
10922 12 : switch (get_call_combined_fn (_p1))
10923 : {
10924 0 : case CFN_BUILT_IN_POWL:
10925 0 : if (call_expr_nargs (_p1) == 2)
10926 : {
10927 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10928 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
10929 0 : switch (TREE_CODE (_q40))
10930 : {
10931 0 : case REAL_CST:
10932 0 : {
10933 0 : {
10934 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
10935 0 : if (flag_unsafe_math_optimizations
10936 : )
10937 : {
10938 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
10939 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
10940 : )
10941 : {
10942 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1462;
10943 0 : {
10944 0 : tree res_op0;
10945 0 : {
10946 0 : tree _o1[2], _r1;
10947 0 : {
10948 0 : tree _o2[2], _r2;
10949 0 : {
10950 0 : tree _o3[1], _r3;
10951 0 : _o3[0] = captures[1];
10952 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10L, TREE_TYPE (_o3[0]), 1, _o3[0]);
10953 0 : if (!_r3)
10954 0 : goto next_after_fail1462;
10955 0 : _o2[0] = _r3;
10956 : }
10957 0 : _o2[1] = captures[2];
10958 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
10959 0 : _o1[0] = _r2;
10960 : }
10961 0 : _o1[1] = captures[4];
10962 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10963 0 : res_op0 = _r1;
10964 : }
10965 0 : tree _r;
10966 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10L, type, 1, res_op0);
10967 0 : if (!_r)
10968 0 : goto next_after_fail1462;
10969 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
10970 0 : return _r;
10971 : }
10972 0 : next_after_fail1462:;
10973 : }
10974 : }
10975 : }
10976 0 : break;
10977 : }
10978 : default:;
10979 : }
10980 : }
10981 : break;
10982 12 : case CFN_BUILT_IN_POW10L:
10983 12 : if (call_expr_nargs (_p1) == 1)
10984 : {
10985 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
10986 12 : {
10987 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
10988 12 : if (flag_unsafe_math_optimizations
10989 : )
10990 : {
10991 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1463;
10992 12 : {
10993 12 : tree res_op0;
10994 12 : {
10995 12 : tree _o1[2], _r1;
10996 12 : _o1[0] = captures[1];
10997 12 : _o1[1] = captures[3];
10998 12 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
10999 12 : res_op0 = _r1;
11000 : }
11001 12 : tree _r;
11002 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10L, type, 1, res_op0);
11003 12 : if (!_r)
11004 12 : goto next_after_fail1463;
11005 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 974, __FILE__, __LINE__, true);
11006 0 : return _r;
11007 : }
11008 12 : next_after_fail1463:;
11009 : }
11010 : }
11011 : }
11012 : break;
11013 : default:;
11014 : }
11015 : break;
11016 : default:;
11017 : }
11018 : }
11019 : break;
11020 0 : case CFN_BUILT_IN_SQRTF128X:
11021 0 : if (call_expr_nargs (_p0) == 1)
11022 : {
11023 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11024 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11025 : {
11026 0 : {
11027 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
11028 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF128X);
11029 0 : if (res) return res;
11030 : }
11031 : }
11032 : }
11033 : break;
11034 0 : case CFN_EXP2:
11035 0 : if (call_expr_nargs (_p0) == 1)
11036 : {
11037 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11038 0 : switch (TREE_CODE (_p1))
11039 : {
11040 0 : case CALL_EXPR:
11041 0 : switch (get_call_combined_fn (_p1))
11042 : {
11043 0 : case CFN_POW:
11044 0 : if (call_expr_nargs (_p1) == 2)
11045 : {
11046 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11047 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11048 0 : switch (TREE_CODE (_q40))
11049 : {
11050 0 : case REAL_CST:
11051 0 : {
11052 0 : {
11053 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11054 0 : if (flag_unsafe_math_optimizations
11055 : )
11056 : {
11057 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11058 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11059 : )
11060 : {
11061 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1464;
11062 0 : {
11063 0 : tree res_op0;
11064 0 : {
11065 0 : tree _o1[2], _r1;
11066 0 : {
11067 0 : tree _o2[2], _r2;
11068 0 : {
11069 0 : tree _o3[1], _r3;
11070 0 : _o3[0] = captures[1];
11071 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG2, TREE_TYPE (_o3[0]), 1, _o3[0]);
11072 0 : if (!_r3)
11073 0 : goto next_after_fail1464;
11074 0 : _o2[0] = _r3;
11075 : }
11076 0 : _o2[1] = captures[2];
11077 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11078 0 : _o1[0] = _r2;
11079 : }
11080 0 : _o1[1] = captures[4];
11081 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11082 0 : res_op0 = _r1;
11083 : }
11084 0 : tree _r;
11085 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP2, type, 1, res_op0);
11086 0 : if (!_r)
11087 0 : goto next_after_fail1464;
11088 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
11089 0 : return _r;
11090 : }
11091 0 : next_after_fail1464:;
11092 : }
11093 : }
11094 : }
11095 0 : break;
11096 : }
11097 : default:;
11098 : }
11099 : }
11100 : break;
11101 0 : case CFN_EXP2:
11102 0 : if (call_expr_nargs (_p1) == 1)
11103 : {
11104 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11105 0 : {
11106 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11107 0 : if (flag_unsafe_math_optimizations
11108 : )
11109 : {
11110 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1465;
11111 0 : {
11112 0 : tree res_op0;
11113 0 : {
11114 0 : tree _o1[2], _r1;
11115 0 : _o1[0] = captures[1];
11116 0 : _o1[1] = captures[3];
11117 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11118 0 : res_op0 = _r1;
11119 : }
11120 0 : tree _r;
11121 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP2, type, 1, res_op0);
11122 0 : if (!_r)
11123 0 : goto next_after_fail1465;
11124 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 974, __FILE__, __LINE__, true);
11125 0 : return _r;
11126 : }
11127 0 : next_after_fail1465:;
11128 : }
11129 : }
11130 : }
11131 : break;
11132 : default:;
11133 : }
11134 : break;
11135 : default:;
11136 : }
11137 : }
11138 : break;
11139 0 : case CFN_SQRT:
11140 0 : if (call_expr_nargs (_p0) == 1)
11141 : {
11142 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11143 0 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11144 : {
11145 0 : {
11146 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
11147 0 : tree res = generic_simplify_195 (loc, type, _p0, _p1, captures, CFN_SQRT);
11148 0 : if (res) return res;
11149 : }
11150 : }
11151 0 : switch (TREE_CODE (_p1))
11152 : {
11153 0 : case CALL_EXPR:
11154 0 : switch (get_call_combined_fn (_p1))
11155 : {
11156 0 : case CFN_SQRT:
11157 0 : if (call_expr_nargs (_p1) == 1)
11158 : {
11159 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11160 0 : {
11161 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11162 0 : if (flag_unsafe_math_optimizations
11163 : )
11164 : {
11165 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1466;
11166 0 : {
11167 0 : tree res_op0;
11168 0 : {
11169 0 : tree _o1[2], _r1;
11170 0 : _o1[0] = captures[1];
11171 0 : _o1[1] = captures[3];
11172 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11173 0 : res_op0 = _r1;
11174 : }
11175 0 : tree _r;
11176 0 : _r = maybe_build_call_expr_loc (loc, CFN_SQRT, type, 1, res_op0);
11177 0 : if (!_r)
11178 0 : goto next_after_fail1466;
11179 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 973, __FILE__, __LINE__, true);
11180 0 : return _r;
11181 : }
11182 0 : next_after_fail1466:;
11183 : }
11184 : }
11185 : }
11186 : break;
11187 : default:;
11188 : }
11189 : break;
11190 : default:;
11191 : }
11192 : }
11193 : break;
11194 0 : case CFN_EXP10:
11195 0 : if (call_expr_nargs (_p0) == 1)
11196 : {
11197 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11198 0 : switch (TREE_CODE (_p1))
11199 : {
11200 0 : case CALL_EXPR:
11201 0 : switch (get_call_combined_fn (_p1))
11202 : {
11203 0 : case CFN_POW:
11204 0 : if (call_expr_nargs (_p1) == 2)
11205 : {
11206 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11207 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11208 0 : switch (TREE_CODE (_q40))
11209 : {
11210 0 : case REAL_CST:
11211 0 : {
11212 0 : {
11213 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11214 0 : if (flag_unsafe_math_optimizations
11215 : )
11216 : {
11217 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11218 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11219 : )
11220 : {
11221 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1467;
11222 0 : {
11223 0 : tree res_op0;
11224 0 : {
11225 0 : tree _o1[2], _r1;
11226 0 : {
11227 0 : tree _o2[2], _r2;
11228 0 : {
11229 0 : tree _o3[1], _r3;
11230 0 : _o3[0] = captures[1];
11231 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
11232 0 : if (!_r3)
11233 0 : goto next_after_fail1467;
11234 0 : _o2[0] = _r3;
11235 : }
11236 0 : _o2[1] = captures[2];
11237 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11238 0 : _o1[0] = _r2;
11239 : }
11240 0 : _o1[1] = captures[4];
11241 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11242 0 : res_op0 = _r1;
11243 : }
11244 0 : tree _r;
11245 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP10, type, 1, res_op0);
11246 0 : if (!_r)
11247 0 : goto next_after_fail1467;
11248 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
11249 0 : return _r;
11250 : }
11251 0 : next_after_fail1467:;
11252 : }
11253 : }
11254 : }
11255 0 : break;
11256 : }
11257 : default:;
11258 : }
11259 : }
11260 : break;
11261 0 : case CFN_EXP10:
11262 0 : if (call_expr_nargs (_p1) == 1)
11263 : {
11264 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11265 0 : {
11266 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11267 0 : if (flag_unsafe_math_optimizations
11268 : )
11269 : {
11270 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1468;
11271 0 : {
11272 0 : tree res_op0;
11273 0 : {
11274 0 : tree _o1[2], _r1;
11275 0 : _o1[0] = captures[1];
11276 0 : _o1[1] = captures[3];
11277 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11278 0 : res_op0 = _r1;
11279 : }
11280 0 : tree _r;
11281 0 : _r = maybe_build_call_expr_loc (loc, CFN_EXP10, type, 1, res_op0);
11282 0 : if (!_r)
11283 0 : goto next_after_fail1468;
11284 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 974, __FILE__, __LINE__, true);
11285 0 : return _r;
11286 : }
11287 0 : next_after_fail1468:;
11288 : }
11289 : }
11290 : }
11291 : break;
11292 : default:;
11293 : }
11294 : break;
11295 : default:;
11296 : }
11297 : }
11298 : break;
11299 12 : case CFN_BUILT_IN_CBRTF:
11300 12 : if (call_expr_nargs (_p0) == 1)
11301 : {
11302 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11303 12 : switch (TREE_CODE (_p1))
11304 : {
11305 12 : case CALL_EXPR:
11306 12 : switch (get_call_combined_fn (_p1))
11307 : {
11308 12 : case CFN_BUILT_IN_CBRTF:
11309 12 : if (call_expr_nargs (_p1) == 1)
11310 : {
11311 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11312 12 : {
11313 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11314 12 : if (flag_unsafe_math_optimizations
11315 : )
11316 : {
11317 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1469;
11318 12 : {
11319 12 : tree res_op0;
11320 12 : {
11321 12 : tree _o1[2], _r1;
11322 12 : _o1[0] = captures[1];
11323 12 : _o1[1] = captures[3];
11324 12 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11325 12 : res_op0 = _r1;
11326 : }
11327 12 : tree _r;
11328 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRTF, type, 1, res_op0);
11329 12 : if (!_r)
11330 0 : goto next_after_fail1469;
11331 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 973, __FILE__, __LINE__, true);
11332 12 : return _r;
11333 : }
11334 0 : next_after_fail1469:;
11335 : }
11336 : }
11337 : }
11338 : break;
11339 : default:;
11340 : }
11341 : break;
11342 : default:;
11343 : }
11344 : }
11345 : break;
11346 12 : case CFN_BUILT_IN_CBRTL:
11347 12 : if (call_expr_nargs (_p0) == 1)
11348 : {
11349 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11350 12 : switch (TREE_CODE (_p1))
11351 : {
11352 12 : case CALL_EXPR:
11353 12 : switch (get_call_combined_fn (_p1))
11354 : {
11355 12 : case CFN_BUILT_IN_CBRTL:
11356 12 : if (call_expr_nargs (_p1) == 1)
11357 : {
11358 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11359 12 : {
11360 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11361 12 : if (flag_unsafe_math_optimizations
11362 : )
11363 : {
11364 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1470;
11365 12 : {
11366 12 : tree res_op0;
11367 12 : {
11368 12 : tree _o1[2], _r1;
11369 12 : _o1[0] = captures[1];
11370 12 : _o1[1] = captures[3];
11371 12 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11372 12 : res_op0 = _r1;
11373 : }
11374 12 : tree _r;
11375 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_CBRTL, type, 1, res_op0);
11376 12 : if (!_r)
11377 0 : goto next_after_fail1470;
11378 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 973, __FILE__, __LINE__, true);
11379 12 : return _r;
11380 : }
11381 0 : next_after_fail1470:;
11382 : }
11383 : }
11384 : }
11385 : break;
11386 : default:;
11387 : }
11388 : break;
11389 : default:;
11390 : }
11391 : }
11392 : break;
11393 0 : case CFN_LDEXP:
11394 0 : if (call_expr_nargs (_p0) == 2)
11395 : {
11396 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11397 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11398 0 : switch (TREE_CODE (_p1))
11399 : {
11400 0 : case REAL_CST:
11401 0 : {
11402 0 : {
11403 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11404 0 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_LDEXP);
11405 0 : if (res) return res;
11406 : }
11407 0 : break;
11408 : }
11409 0 : default:;
11410 : }
11411 0 : switch (TREE_CODE (_q20))
11412 : {
11413 0 : case REAL_CST:
11414 0 : {
11415 0 : {
11416 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11417 0 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, CFN_LDEXP);
11418 0 : if (res) return res;
11419 : }
11420 0 : break;
11421 : }
11422 : default:;
11423 : }
11424 : }
11425 : break;
11426 48 : case CFN_BUILT_IN_EXP10:
11427 48 : if (call_expr_nargs (_p0) == 1)
11428 : {
11429 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11430 48 : switch (TREE_CODE (_p1))
11431 : {
11432 24 : case CALL_EXPR:
11433 24 : switch (get_call_combined_fn (_p1))
11434 : {
11435 0 : case CFN_BUILT_IN_POW:
11436 0 : if (call_expr_nargs (_p1) == 2)
11437 : {
11438 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11439 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11440 0 : switch (TREE_CODE (_q40))
11441 : {
11442 0 : case REAL_CST:
11443 0 : {
11444 0 : {
11445 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11446 0 : if (flag_unsafe_math_optimizations
11447 : )
11448 : {
11449 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11450 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11451 : )
11452 : {
11453 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1471;
11454 0 : {
11455 0 : tree res_op0;
11456 0 : {
11457 0 : tree _o1[2], _r1;
11458 0 : {
11459 0 : tree _o2[2], _r2;
11460 0 : {
11461 0 : tree _o3[1], _r3;
11462 0 : _o3[0] = captures[1];
11463 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
11464 0 : if (!_r3)
11465 0 : goto next_after_fail1471;
11466 0 : _o2[0] = _r3;
11467 : }
11468 0 : _o2[1] = captures[2];
11469 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11470 0 : _o1[0] = _r2;
11471 : }
11472 0 : _o1[1] = captures[4];
11473 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11474 0 : res_op0 = _r1;
11475 : }
11476 0 : tree _r;
11477 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10, type, 1, res_op0);
11478 0 : if (!_r)
11479 0 : goto next_after_fail1471;
11480 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
11481 0 : return _r;
11482 : }
11483 0 : next_after_fail1471:;
11484 : }
11485 : }
11486 : }
11487 0 : break;
11488 : }
11489 : default:;
11490 : }
11491 : }
11492 : break;
11493 24 : case CFN_BUILT_IN_EXP10:
11494 24 : if (call_expr_nargs (_p1) == 1)
11495 : {
11496 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11497 24 : {
11498 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11499 24 : if (flag_unsafe_math_optimizations
11500 : )
11501 : {
11502 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1472;
11503 24 : {
11504 24 : tree res_op0;
11505 24 : {
11506 24 : tree _o1[2], _r1;
11507 24 : _o1[0] = captures[1];
11508 24 : _o1[1] = captures[3];
11509 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11510 24 : res_op0 = _r1;
11511 : }
11512 24 : tree _r;
11513 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP10, type, 1, res_op0);
11514 24 : if (!_r)
11515 0 : goto next_after_fail1472;
11516 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 974, __FILE__, __LINE__, true);
11517 24 : return _r;
11518 : }
11519 0 : next_after_fail1472:;
11520 : }
11521 : }
11522 : }
11523 : break;
11524 : default:;
11525 : }
11526 : break;
11527 : default:;
11528 : }
11529 : }
11530 : break;
11531 48 : case CFN_BUILT_IN_EXP2F:
11532 48 : if (call_expr_nargs (_p0) == 1)
11533 : {
11534 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11535 48 : switch (TREE_CODE (_p1))
11536 : {
11537 24 : case CALL_EXPR:
11538 24 : switch (get_call_combined_fn (_p1))
11539 : {
11540 0 : case CFN_BUILT_IN_POWF:
11541 0 : if (call_expr_nargs (_p1) == 2)
11542 : {
11543 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11544 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11545 0 : switch (TREE_CODE (_q40))
11546 : {
11547 0 : case REAL_CST:
11548 0 : {
11549 0 : {
11550 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11551 0 : if (flag_unsafe_math_optimizations
11552 : )
11553 : {
11554 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11555 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11556 : )
11557 : {
11558 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1473;
11559 0 : {
11560 0 : tree res_op0;
11561 0 : {
11562 0 : tree _o1[2], _r1;
11563 0 : {
11564 0 : tree _o2[2], _r2;
11565 0 : {
11566 0 : tree _o3[1], _r3;
11567 0 : _o3[0] = captures[1];
11568 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2F, TREE_TYPE (_o3[0]), 1, _o3[0]);
11569 0 : if (!_r3)
11570 0 : goto next_after_fail1473;
11571 0 : _o2[0] = _r3;
11572 : }
11573 0 : _o2[1] = captures[2];
11574 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11575 0 : _o1[0] = _r2;
11576 : }
11577 0 : _o1[1] = captures[4];
11578 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11579 0 : res_op0 = _r1;
11580 : }
11581 0 : tree _r;
11582 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2F, type, 1, res_op0);
11583 0 : if (!_r)
11584 0 : goto next_after_fail1473;
11585 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
11586 0 : return _r;
11587 : }
11588 0 : next_after_fail1473:;
11589 : }
11590 : }
11591 : }
11592 0 : break;
11593 : }
11594 : default:;
11595 : }
11596 : }
11597 : break;
11598 24 : case CFN_BUILT_IN_EXP2F:
11599 24 : if (call_expr_nargs (_p1) == 1)
11600 : {
11601 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11602 24 : {
11603 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11604 24 : if (flag_unsafe_math_optimizations
11605 : )
11606 : {
11607 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1474;
11608 24 : {
11609 24 : tree res_op0;
11610 24 : {
11611 24 : tree _o1[2], _r1;
11612 24 : _o1[0] = captures[1];
11613 24 : _o1[1] = captures[3];
11614 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11615 24 : res_op0 = _r1;
11616 : }
11617 24 : tree _r;
11618 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2F, type, 1, res_op0);
11619 24 : if (!_r)
11620 0 : goto next_after_fail1474;
11621 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 974, __FILE__, __LINE__, true);
11622 24 : return _r;
11623 : }
11624 0 : next_after_fail1474:;
11625 : }
11626 : }
11627 : }
11628 : break;
11629 : default:;
11630 : }
11631 : break;
11632 : default:;
11633 : }
11634 : }
11635 : break;
11636 48 : case CFN_BUILT_IN_EXP2L:
11637 48 : if (call_expr_nargs (_p0) == 1)
11638 : {
11639 48 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11640 48 : switch (TREE_CODE (_p1))
11641 : {
11642 24 : case CALL_EXPR:
11643 24 : switch (get_call_combined_fn (_p1))
11644 : {
11645 0 : case CFN_BUILT_IN_POWL:
11646 0 : if (call_expr_nargs (_p1) == 2)
11647 : {
11648 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11649 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11650 0 : switch (TREE_CODE (_q40))
11651 : {
11652 0 : case REAL_CST:
11653 0 : {
11654 0 : {
11655 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11656 0 : if (flag_unsafe_math_optimizations
11657 : )
11658 : {
11659 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11660 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11661 : )
11662 : {
11663 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1475;
11664 0 : {
11665 0 : tree res_op0;
11666 0 : {
11667 0 : tree _o1[2], _r1;
11668 0 : {
11669 0 : tree _o2[2], _r2;
11670 0 : {
11671 0 : tree _o3[1], _r3;
11672 0 : _o3[0] = captures[1];
11673 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG2L, TREE_TYPE (_o3[0]), 1, _o3[0]);
11674 0 : if (!_r3)
11675 0 : goto next_after_fail1475;
11676 0 : _o2[0] = _r3;
11677 : }
11678 0 : _o2[1] = captures[2];
11679 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11680 0 : _o1[0] = _r2;
11681 : }
11682 0 : _o1[1] = captures[4];
11683 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11684 0 : res_op0 = _r1;
11685 : }
11686 0 : tree _r;
11687 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2L, type, 1, res_op0);
11688 0 : if (!_r)
11689 0 : goto next_after_fail1475;
11690 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
11691 0 : return _r;
11692 : }
11693 0 : next_after_fail1475:;
11694 : }
11695 : }
11696 : }
11697 0 : break;
11698 : }
11699 : default:;
11700 : }
11701 : }
11702 : break;
11703 24 : case CFN_BUILT_IN_EXP2L:
11704 24 : if (call_expr_nargs (_p1) == 1)
11705 : {
11706 24 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11707 24 : {
11708 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11709 24 : if (flag_unsafe_math_optimizations
11710 : )
11711 : {
11712 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1476;
11713 24 : {
11714 24 : tree res_op0;
11715 24 : {
11716 24 : tree _o1[2], _r1;
11717 24 : _o1[0] = captures[1];
11718 24 : _o1[1] = captures[3];
11719 24 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11720 24 : res_op0 = _r1;
11721 : }
11722 24 : tree _r;
11723 24 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_EXP2L, type, 1, res_op0);
11724 24 : if (!_r)
11725 0 : goto next_after_fail1476;
11726 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 974, __FILE__, __LINE__, true);
11727 24 : return _r;
11728 : }
11729 0 : next_after_fail1476:;
11730 : }
11731 : }
11732 : }
11733 : break;
11734 : default:;
11735 : }
11736 : break;
11737 : default:;
11738 : }
11739 : }
11740 : break;
11741 5 : case CFN_BUILT_IN_LDEXP:
11742 5 : if (call_expr_nargs (_p0) == 2)
11743 : {
11744 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11745 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11746 5 : switch (TREE_CODE (_p1))
11747 : {
11748 2 : case REAL_CST:
11749 2 : {
11750 2 : {
11751 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11752 2 : tree res = generic_simplify_197 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
11753 2 : if (res) return res;
11754 : }
11755 1 : break;
11756 : }
11757 4 : default:;
11758 : }
11759 4 : switch (TREE_CODE (_q20))
11760 : {
11761 3 : case REAL_CST:
11762 3 : {
11763 3 : {
11764 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _q21 };
11765 3 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
11766 3 : if (res) return res;
11767 : }
11768 0 : break;
11769 : }
11770 : default:;
11771 : }
11772 : }
11773 : break;
11774 24 : case CFN_BUILT_IN_POW10:
11775 24 : if (call_expr_nargs (_p0) == 1)
11776 : {
11777 24 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11778 24 : switch (TREE_CODE (_p1))
11779 : {
11780 12 : case CALL_EXPR:
11781 12 : switch (get_call_combined_fn (_p1))
11782 : {
11783 0 : case CFN_BUILT_IN_POW:
11784 0 : if (call_expr_nargs (_p1) == 2)
11785 : {
11786 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11787 0 : tree _q41 = CALL_EXPR_ARG (_p1, 1);
11788 0 : switch (TREE_CODE (_q40))
11789 : {
11790 0 : case REAL_CST:
11791 0 : {
11792 0 : {
11793 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p1, _q40, _q41, _p0, _q20 };
11794 0 : if (flag_unsafe_math_optimizations
11795 : )
11796 : {
11797 0 : if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0)
11798 0 : && real_isfinite (TREE_REAL_CST_PTR (captures[1]))
11799 : )
11800 : {
11801 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1477;
11802 0 : {
11803 0 : tree res_op0;
11804 0 : {
11805 0 : tree _o1[2], _r1;
11806 0 : {
11807 0 : tree _o2[2], _r2;
11808 0 : {
11809 0 : tree _o3[1], _r3;
11810 0 : _o3[0] = captures[1];
11811 0 : _r3 = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_LOG10, TREE_TYPE (_o3[0]), 1, _o3[0]);
11812 0 : if (!_r3)
11813 0 : goto next_after_fail1477;
11814 0 : _o2[0] = _r3;
11815 : }
11816 0 : _o2[1] = captures[2];
11817 0 : _r2 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
11818 0 : _o1[0] = _r2;
11819 : }
11820 0 : _o1[1] = captures[4];
11821 0 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11822 0 : res_op0 = _r1;
11823 : }
11824 0 : tree _r;
11825 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10, type, 1, res_op0);
11826 0 : if (!_r)
11827 0 : goto next_after_fail1477;
11828 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 975, __FILE__, __LINE__, true);
11829 0 : return _r;
11830 : }
11831 0 : next_after_fail1477:;
11832 : }
11833 : }
11834 : }
11835 0 : break;
11836 : }
11837 : default:;
11838 : }
11839 : }
11840 : break;
11841 12 : case CFN_BUILT_IN_POW10:
11842 12 : if (call_expr_nargs (_p1) == 1)
11843 : {
11844 12 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11845 12 : {
11846 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11847 12 : if (flag_unsafe_math_optimizations
11848 : )
11849 : {
11850 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1478;
11851 12 : {
11852 12 : tree res_op0;
11853 12 : {
11854 12 : tree _o1[2], _r1;
11855 12 : _o1[0] = captures[1];
11856 12 : _o1[1] = captures[3];
11857 12 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
11858 12 : res_op0 = _r1;
11859 : }
11860 12 : tree _r;
11861 12 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POW10, type, 1, res_op0);
11862 12 : if (!_r)
11863 12 : goto next_after_fail1478;
11864 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 974, __FILE__, __LINE__, true);
11865 0 : return _r;
11866 : }
11867 12 : next_after_fail1478:;
11868 : }
11869 : }
11870 : }
11871 : break;
11872 : default:;
11873 : }
11874 : break;
11875 : default:;
11876 : }
11877 : }
11878 : break;
11879 : default:;
11880 : }
11881 : break;
11882 64992470 : default:;
11883 : }
11884 64992470 : switch (TREE_CODE (_p1))
11885 : {
11886 865870 : case CALL_EXPR:
11887 865870 : switch (get_call_combined_fn (_p1))
11888 : {
11889 0 : case CFN_BUILT_IN_LDEXPF:
11890 0 : if (call_expr_nargs (_p1) == 2)
11891 : {
11892 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
11893 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
11894 0 : switch (TREE_CODE (_q30))
11895 : {
11896 0 : case REAL_CST:
11897 0 : {
11898 0 : {
11899 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
11900 0 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPF);
11901 0 : if (res) return res;
11902 : }
11903 0 : break;
11904 : }
11905 : default:;
11906 : }
11907 : }
11908 : break;
11909 0 : case CFN_BUILT_IN_LDEXPL:
11910 0 : if (call_expr_nargs (_p1) == 2)
11911 : {
11912 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
11913 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
11914 0 : switch (TREE_CODE (_q30))
11915 : {
11916 0 : case REAL_CST:
11917 0 : {
11918 0 : {
11919 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
11920 0 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXPL);
11921 0 : if (res) return res;
11922 : }
11923 0 : break;
11924 : }
11925 : default:;
11926 : }
11927 : }
11928 : break;
11929 0 : case CFN_LDEXP:
11930 0 : if (call_expr_nargs (_p1) == 2)
11931 : {
11932 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
11933 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
11934 0 : switch (TREE_CODE (_q30))
11935 : {
11936 0 : case REAL_CST:
11937 0 : {
11938 0 : {
11939 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
11940 0 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, CFN_LDEXP);
11941 0 : if (res) return res;
11942 : }
11943 0 : break;
11944 : }
11945 : default:;
11946 : }
11947 : }
11948 : break;
11949 0 : case CFN_BUILT_IN_LDEXP:
11950 0 : if (call_expr_nargs (_p1) == 2)
11951 : {
11952 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
11953 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
11954 0 : switch (TREE_CODE (_q30))
11955 : {
11956 0 : case REAL_CST:
11957 0 : {
11958 0 : {
11959 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q30, _q31 };
11960 0 : tree res = generic_simplify_198 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_LDEXP);
11961 0 : if (res) return res;
11962 : }
11963 0 : break;
11964 : }
11965 : default:;
11966 : }
11967 : }
11968 : break;
11969 : default:;
11970 : }
11971 : break;
11972 64992470 : default:;
11973 : }
11974 64992470 : switch (TREE_CODE (_p0))
11975 : {
11976 2413923 : case CALL_EXPR:
11977 2413923 : switch (get_call_combined_fn (_p0))
11978 : {
11979 29 : case CFN_BUILT_IN_COS:
11980 29 : if (call_expr_nargs (_p0) == 1)
11981 : {
11982 29 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11983 29 : switch (TREE_CODE (_p1))
11984 : {
11985 4 : case CALL_EXPR:
11986 4 : switch (get_call_combined_fn (_p1))
11987 : {
11988 2 : case CFN_BUILT_IN_TAN:
11989 2 : if (call_expr_nargs (_p1) == 1)
11990 : {
11991 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
11992 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
11993 : {
11994 2 : {
11995 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
11996 2 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TAN, CFN_BUILT_IN_COS, CFN_BUILT_IN_SIN);
11997 2 : if (res) return res;
11998 : }
11999 : }
12000 : }
12001 : break;
12002 : default:;
12003 : }
12004 : break;
12005 : default:;
12006 : }
12007 : }
12008 : break;
12009 2 : case CFN_BUILT_IN_TAN:
12010 2 : if (call_expr_nargs (_p0) == 1)
12011 : {
12012 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12013 2 : switch (TREE_CODE (_p1))
12014 : {
12015 2 : case CALL_EXPR:
12016 2 : switch (get_call_combined_fn (_p1))
12017 : {
12018 2 : case CFN_BUILT_IN_COS:
12019 2 : if (call_expr_nargs (_p1) == 1)
12020 : {
12021 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12022 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12023 : {
12024 2 : {
12025 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12026 2 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TAN, CFN_BUILT_IN_COS, CFN_BUILT_IN_SIN);
12027 2 : if (res) return res;
12028 : }
12029 : }
12030 : }
12031 : break;
12032 : default:;
12033 : }
12034 : break;
12035 : default:;
12036 : }
12037 : }
12038 : break;
12039 18 : case CFN_BUILT_IN_COSF:
12040 18 : if (call_expr_nargs (_p0) == 1)
12041 : {
12042 18 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12043 18 : switch (TREE_CODE (_p1))
12044 : {
12045 9 : case CALL_EXPR:
12046 9 : switch (get_call_combined_fn (_p1))
12047 : {
12048 2 : case CFN_BUILT_IN_TANF:
12049 2 : if (call_expr_nargs (_p1) == 1)
12050 : {
12051 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12052 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12053 : {
12054 2 : {
12055 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12056 2 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANF, CFN_BUILT_IN_COSF, CFN_BUILT_IN_SINF);
12057 2 : if (res) return res;
12058 : }
12059 : }
12060 : }
12061 : break;
12062 : default:;
12063 : }
12064 : break;
12065 : default:;
12066 : }
12067 : }
12068 : break;
12069 2 : case CFN_BUILT_IN_COSL:
12070 2 : if (call_expr_nargs (_p0) == 1)
12071 : {
12072 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12073 2 : switch (TREE_CODE (_p1))
12074 : {
12075 2 : case CALL_EXPR:
12076 2 : switch (get_call_combined_fn (_p1))
12077 : {
12078 2 : case CFN_BUILT_IN_TANL:
12079 2 : if (call_expr_nargs (_p1) == 1)
12080 : {
12081 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12082 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12083 : {
12084 2 : {
12085 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12086 2 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANL, CFN_BUILT_IN_COSL, CFN_BUILT_IN_SINL);
12087 2 : if (res) return res;
12088 : }
12089 : }
12090 : }
12091 : break;
12092 : default:;
12093 : }
12094 : break;
12095 : default:;
12096 : }
12097 : }
12098 : break;
12099 2 : case CFN_BUILT_IN_TANF:
12100 2 : if (call_expr_nargs (_p0) == 1)
12101 : {
12102 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12103 2 : switch (TREE_CODE (_p1))
12104 : {
12105 2 : case CALL_EXPR:
12106 2 : switch (get_call_combined_fn (_p1))
12107 : {
12108 2 : case CFN_BUILT_IN_COSF:
12109 2 : if (call_expr_nargs (_p1) == 1)
12110 : {
12111 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12112 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12113 : {
12114 2 : {
12115 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12116 2 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANF, CFN_BUILT_IN_COSF, CFN_BUILT_IN_SINF);
12117 2 : if (res) return res;
12118 : }
12119 : }
12120 : }
12121 : break;
12122 : default:;
12123 : }
12124 : break;
12125 : default:;
12126 : }
12127 : }
12128 : break;
12129 2 : case CFN_BUILT_IN_TANL:
12130 2 : if (call_expr_nargs (_p0) == 1)
12131 : {
12132 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12133 2 : switch (TREE_CODE (_p1))
12134 : {
12135 2 : case CALL_EXPR:
12136 2 : switch (get_call_combined_fn (_p1))
12137 : {
12138 2 : case CFN_BUILT_IN_COSL:
12139 2 : if (call_expr_nargs (_p1) == 1)
12140 : {
12141 2 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12142 2 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12143 : {
12144 2 : {
12145 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12146 2 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_TANL, CFN_BUILT_IN_COSL, CFN_BUILT_IN_SINL);
12147 2 : if (res) return res;
12148 : }
12149 : }
12150 : }
12151 : break;
12152 : default:;
12153 : }
12154 : break;
12155 : default:;
12156 : }
12157 : }
12158 : break;
12159 0 : case CFN_COS:
12160 0 : if (call_expr_nargs (_p0) == 1)
12161 : {
12162 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12163 0 : switch (TREE_CODE (_p1))
12164 : {
12165 0 : case CALL_EXPR:
12166 0 : switch (get_call_combined_fn (_p1))
12167 : {
12168 0 : case CFN_TAN:
12169 0 : if (call_expr_nargs (_p1) == 1)
12170 : {
12171 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12172 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12173 : {
12174 0 : {
12175 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p1, _q20, _p0 };
12176 0 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_TAN, CFN_COS, CFN_SIN);
12177 0 : if (res) return res;
12178 : }
12179 : }
12180 : }
12181 : break;
12182 : default:;
12183 : }
12184 : break;
12185 : default:;
12186 : }
12187 : }
12188 : break;
12189 0 : case CFN_TAN:
12190 0 : if (call_expr_nargs (_p0) == 1)
12191 : {
12192 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12193 0 : switch (TREE_CODE (_p1))
12194 : {
12195 0 : case CALL_EXPR:
12196 0 : switch (get_call_combined_fn (_p1))
12197 : {
12198 0 : case CFN_COS:
12199 0 : if (call_expr_nargs (_p1) == 1)
12200 : {
12201 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
12202 0 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
12203 : {
12204 0 : {
12205 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
12206 0 : tree res = generic_simplify_199 (loc, type, _p0, _p1, captures, CFN_TAN, CFN_COS, CFN_SIN);
12207 0 : if (res) return res;
12208 : }
12209 : }
12210 : }
12211 : break;
12212 : default:;
12213 : }
12214 : break;
12215 : default:;
12216 : }
12217 : }
12218 : break;
12219 : default:;
12220 : }
12221 : break;
12222 64992458 : default:;
12223 : }
12224 64992458 : switch (TREE_CODE (_p1))
12225 : {
12226 865858 : case CALL_EXPR:
12227 865858 : switch (get_call_combined_fn (_p1))
12228 : {
12229 60 : case CFN_BUILT_IN_POW:
12230 60 : if (call_expr_nargs (_p1) == 2)
12231 : {
12232 60 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12233 60 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12234 60 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12235 : {
12236 0 : switch (TREE_CODE (_q31))
12237 : {
12238 0 : case REAL_CST:
12239 0 : {
12240 0 : {
12241 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12242 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
12243 0 : if (res) return res;
12244 : }
12245 0 : break;
12246 : }
12247 : default:;
12248 : }
12249 : }
12250 : }
12251 : break;
12252 23 : case CFN_BUILT_IN_POWF:
12253 23 : if (call_expr_nargs (_p1) == 2)
12254 : {
12255 23 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12256 23 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12257 23 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12258 : {
12259 0 : switch (TREE_CODE (_q31))
12260 : {
12261 0 : case REAL_CST:
12262 0 : {
12263 0 : {
12264 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12265 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
12266 0 : if (res) return res;
12267 : }
12268 0 : break;
12269 : }
12270 : default:;
12271 : }
12272 : }
12273 : }
12274 : break;
12275 12 : case CFN_BUILT_IN_POWL:
12276 12 : if (call_expr_nargs (_p1) == 2)
12277 : {
12278 12 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12279 12 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12280 12 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12281 : {
12282 0 : switch (TREE_CODE (_q31))
12283 : {
12284 0 : case REAL_CST:
12285 0 : {
12286 0 : {
12287 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12288 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
12289 0 : if (res) return res;
12290 : }
12291 0 : break;
12292 : }
12293 : default:;
12294 : }
12295 : }
12296 : }
12297 : break;
12298 0 : case CFN_POW:
12299 0 : if (call_expr_nargs (_p1) == 2)
12300 : {
12301 0 : tree _q30 = CALL_EXPR_ARG (_p1, 0);
12302 0 : tree _q31 = CALL_EXPR_ARG (_p1, 1);
12303 0 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
12304 : {
12305 0 : switch (TREE_CODE (_q31))
12306 : {
12307 0 : case REAL_CST:
12308 0 : {
12309 0 : {
12310 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
12311 0 : tree res = generic_simplify_196 (loc, type, _p0, _p1, captures, CFN_POW);
12312 0 : if (res) return res;
12313 : }
12314 0 : break;
12315 : }
12316 : default:;
12317 : }
12318 : }
12319 : }
12320 : break;
12321 : default:;
12322 : }
12323 : break;
12324 64992458 : default:;
12325 : }
12326 64992458 : switch (TREE_CODE (_p0))
12327 : {
12328 1 : case VEC_PERM_EXPR:
12329 1 : {
12330 1 : tree _q20 = TREE_OPERAND (_p0, 0);
12331 1 : tree _q21 = TREE_OPERAND (_p0, 1);
12332 1 : tree _q22 = TREE_OPERAND (_p0, 2);
12333 1 : if ((_q21 == _q20 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q20, 0) && types_match (_q21, _q20)))
12334 : {
12335 1 : switch (TREE_CODE (_p1))
12336 : {
12337 0 : case VEC_PERM_EXPR:
12338 0 : {
12339 0 : tree _q60 = TREE_OPERAND (_p1, 0);
12340 0 : tree _q61 = TREE_OPERAND (_p1, 1);
12341 0 : tree _q62 = TREE_OPERAND (_p1, 2);
12342 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
12343 : {
12344 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
12345 : {
12346 0 : {
12347 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
12348 0 : if (VECTOR_INTEGER_TYPE_P (type)
12349 : )
12350 : {
12351 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1479;
12352 0 : {
12353 0 : tree res_op0;
12354 0 : {
12355 0 : tree _o1[2], _r1;
12356 0 : _o1[0] = captures[0];
12357 0 : _o1[1] = captures[2];
12358 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12359 0 : captures[3] = _r1;
12360 : }
12361 0 : res_op0 = unshare_expr (captures[3]);
12362 0 : tree res_op1;
12363 0 : res_op1 = captures[3];
12364 0 : tree res_op2;
12365 0 : res_op2 = captures[1];
12366 0 : tree _r;
12367 0 : _r = fold_build3_loc (loc, VEC_PERM_EXPR, type, res_op0, res_op1, res_op2);
12368 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 894, __FILE__, __LINE__, true);
12369 0 : return _r;
12370 : }
12371 0 : next_after_fail1479:;
12372 : }
12373 : }
12374 : }
12375 : }
12376 : break;
12377 : }
12378 1 : default:;
12379 : }
12380 1 : switch (TREE_CODE (_q22))
12381 : {
12382 0 : case VECTOR_CST:
12383 0 : {
12384 0 : switch (TREE_CODE (_p1))
12385 : {
12386 0 : case VEC_PERM_EXPR:
12387 0 : {
12388 0 : tree _q60 = TREE_OPERAND (_p1, 0);
12389 0 : tree _q61 = TREE_OPERAND (_p1, 1);
12390 0 : tree _q62 = TREE_OPERAND (_p1, 2);
12391 0 : if ((_q61 == _q60 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q60, 0) && types_match (_q61, _q60)))
12392 : {
12393 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
12394 : {
12395 0 : switch (TREE_CODE (_q62))
12396 : {
12397 0 : case VECTOR_CST:
12398 0 : {
12399 0 : {
12400 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q22, _q60 };
12401 0 : tree res = generic_simplify_83 (loc, type, _p0, _p1, captures, MULT_EXPR);
12402 0 : if (res) return res;
12403 : }
12404 0 : break;
12405 : }
12406 : default:;
12407 : }
12408 : }
12409 : }
12410 : break;
12411 : }
12412 : default:;
12413 : }
12414 : break;
12415 : }
12416 : default:;
12417 : }
12418 : }
12419 : break;
12420 : }
12421 2413911 : case CALL_EXPR:
12422 2413911 : switch (get_call_combined_fn (_p0))
12423 : {
12424 115 : case CFN_BUILT_IN_POW:
12425 115 : if (call_expr_nargs (_p0) == 2)
12426 : {
12427 115 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12428 115 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12429 115 : switch (TREE_CODE (_p1))
12430 : {
12431 80 : case CALL_EXPR:
12432 80 : switch (get_call_combined_fn (_p1))
12433 : {
12434 20 : case CFN_BUILT_IN_POW:
12435 20 : if (call_expr_nargs (_p1) == 2)
12436 : {
12437 20 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12438 20 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12439 20 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12440 : {
12441 14 : {
12442 14 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12443 14 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
12444 14 : if (res) return res;
12445 : }
12446 : }
12447 6 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12448 : {
12449 2 : {
12450 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12451 2 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POW);
12452 2 : if (res) return res;
12453 : }
12454 : }
12455 : }
12456 : break;
12457 : default:;
12458 : }
12459 : break;
12460 : default:;
12461 : }
12462 : }
12463 : break;
12464 19 : case CFN_BUILT_IN_POWF:
12465 19 : if (call_expr_nargs (_p0) == 2)
12466 : {
12467 19 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12468 19 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12469 19 : switch (TREE_CODE (_p1))
12470 : {
12471 13 : case CALL_EXPR:
12472 13 : switch (get_call_combined_fn (_p1))
12473 : {
12474 13 : case CFN_BUILT_IN_POWF:
12475 13 : if (call_expr_nargs (_p1) == 2)
12476 : {
12477 13 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12478 13 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12479 13 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12480 : {
12481 12 : {
12482 12 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12483 12 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
12484 12 : if (res) return res;
12485 : }
12486 : }
12487 1 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12488 : {
12489 0 : {
12490 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12491 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWF);
12492 0 : if (res) return res;
12493 : }
12494 : }
12495 : }
12496 : break;
12497 : default:;
12498 : }
12499 : break;
12500 : default:;
12501 : }
12502 : }
12503 : break;
12504 35 : case CFN_BUILT_IN_POWI:
12505 35 : if (call_expr_nargs (_p0) == 2)
12506 : {
12507 35 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12508 35 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12509 35 : switch (TREE_CODE (_p1))
12510 : {
12511 0 : case CALL_EXPR:
12512 0 : switch (get_call_combined_fn (_p1))
12513 : {
12514 0 : case CFN_BUILT_IN_POWI:
12515 0 : if (call_expr_nargs (_p1) == 2)
12516 : {
12517 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12518 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12519 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12520 : {
12521 0 : {
12522 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12523 0 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
12524 : )
12525 : {
12526 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1480;
12527 0 : {
12528 0 : tree res_op0;
12529 0 : {
12530 0 : tree _o1[2], _r1;
12531 0 : _o1[0] = captures[1];
12532 0 : _o1[1] = captures[4];
12533 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12534 0 : res_op0 = _r1;
12535 : }
12536 0 : tree res_op1;
12537 0 : res_op1 = captures[2];
12538 0 : tree _r;
12539 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POWI, type, 2, res_op0, res_op1);
12540 0 : if (!_r)
12541 0 : goto next_after_fail1480;
12542 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 976, __FILE__, __LINE__, true);
12543 0 : return _r;
12544 : }
12545 0 : next_after_fail1480:;
12546 : }
12547 : }
12548 : }
12549 : }
12550 : break;
12551 : default:;
12552 : }
12553 : break;
12554 : default:;
12555 : }
12556 : }
12557 : break;
12558 12 : case CFN_BUILT_IN_POWL:
12559 12 : if (call_expr_nargs (_p0) == 2)
12560 : {
12561 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12562 12 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12563 12 : switch (TREE_CODE (_p1))
12564 : {
12565 12 : case CALL_EXPR:
12566 12 : switch (get_call_combined_fn (_p1))
12567 : {
12568 12 : case CFN_BUILT_IN_POWL:
12569 12 : if (call_expr_nargs (_p1) == 2)
12570 : {
12571 12 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12572 12 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12573 12 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12574 : {
12575 12 : {
12576 12 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12577 12 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
12578 12 : if (res) return res;
12579 : }
12580 : }
12581 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12582 : {
12583 0 : {
12584 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12585 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_POWL);
12586 0 : if (res) return res;
12587 : }
12588 : }
12589 : }
12590 : break;
12591 : default:;
12592 : }
12593 : break;
12594 : default:;
12595 : }
12596 : }
12597 : break;
12598 0 : case CFN_POW:
12599 0 : if (call_expr_nargs (_p0) == 2)
12600 : {
12601 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12602 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12603 0 : switch (TREE_CODE (_p1))
12604 : {
12605 0 : case CALL_EXPR:
12606 0 : switch (get_call_combined_fn (_p1))
12607 : {
12608 0 : case CFN_POW:
12609 0 : if (call_expr_nargs (_p1) == 2)
12610 : {
12611 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12612 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12613 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12614 : {
12615 0 : {
12616 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
12617 0 : tree res = generic_simplify_200 (loc, type, _p0, _p1, captures, CFN_POW);
12618 0 : if (res) return res;
12619 : }
12620 : }
12621 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12622 : {
12623 0 : {
12624 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12625 0 : tree res = generic_simplify_201 (loc, type, _p0, _p1, captures, CFN_POW);
12626 0 : if (res) return res;
12627 : }
12628 : }
12629 : }
12630 : break;
12631 : default:;
12632 : }
12633 : break;
12634 : default:;
12635 : }
12636 : }
12637 : break;
12638 14 : case CFN_BUILT_IN_POWIF:
12639 14 : if (call_expr_nargs (_p0) == 2)
12640 : {
12641 14 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12642 14 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12643 14 : switch (TREE_CODE (_p1))
12644 : {
12645 0 : case CALL_EXPR:
12646 0 : switch (get_call_combined_fn (_p1))
12647 : {
12648 0 : case CFN_BUILT_IN_POWIF:
12649 0 : if (call_expr_nargs (_p1) == 2)
12650 : {
12651 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12652 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12653 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12654 : {
12655 0 : {
12656 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12657 0 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
12658 : )
12659 : {
12660 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1481;
12661 0 : {
12662 0 : tree res_op0;
12663 0 : {
12664 0 : tree _o1[2], _r1;
12665 0 : _o1[0] = captures[1];
12666 0 : _o1[1] = captures[4];
12667 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12668 0 : res_op0 = _r1;
12669 : }
12670 0 : tree res_op1;
12671 0 : res_op1 = captures[2];
12672 0 : tree _r;
12673 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POWIF, type, 2, res_op0, res_op1);
12674 0 : if (!_r)
12675 0 : goto next_after_fail1481;
12676 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 976, __FILE__, __LINE__, true);
12677 0 : return _r;
12678 : }
12679 0 : next_after_fail1481:;
12680 : }
12681 : }
12682 : }
12683 : }
12684 : break;
12685 : default:;
12686 : }
12687 : break;
12688 : default:;
12689 : }
12690 : }
12691 : break;
12692 5 : case CFN_BUILT_IN_POWIL:
12693 5 : if (call_expr_nargs (_p0) == 2)
12694 : {
12695 5 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
12696 5 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
12697 5 : switch (TREE_CODE (_p1))
12698 : {
12699 0 : case CALL_EXPR:
12700 0 : switch (get_call_combined_fn (_p1))
12701 : {
12702 0 : case CFN_BUILT_IN_POWIL:
12703 0 : if (call_expr_nargs (_p1) == 2)
12704 : {
12705 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
12706 0 : tree _q51 = CALL_EXPR_ARG (_p1, 1);
12707 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12708 : {
12709 0 : {
12710 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
12711 0 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
12712 : )
12713 : {
12714 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1482;
12715 0 : {
12716 0 : tree res_op0;
12717 0 : {
12718 0 : tree _o1[2], _r1;
12719 0 : _o1[0] = captures[1];
12720 0 : _o1[1] = captures[4];
12721 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
12722 0 : res_op0 = _r1;
12723 : }
12724 0 : tree res_op1;
12725 0 : res_op1 = captures[2];
12726 0 : tree _r;
12727 0 : _r = maybe_build_call_expr_loc (loc, CFN_BUILT_IN_POWIL, type, 2, res_op0, res_op1);
12728 0 : if (!_r)
12729 0 : goto next_after_fail1482;
12730 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 976, __FILE__, __LINE__, true);
12731 0 : return _r;
12732 : }
12733 0 : next_after_fail1482:;
12734 : }
12735 : }
12736 : }
12737 : }
12738 : break;
12739 : default:;
12740 : }
12741 : break;
12742 : default:;
12743 : }
12744 : }
12745 : break;
12746 : default:;
12747 : }
12748 : break;
12749 : default:;
12750 : }
12751 : return NULL_TREE;
12752 : }
12753 : #pragma GCC diagnostic pop
|