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 1163357197 : tree_nop_convert (tree t, tree *res_ops)
11 : {
12 1163357197 : const tree type = TREE_TYPE (t);
13 1163357197 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
14 1163357197 : if (TREE_SIDE_EFFECTS (t)) return false;
15 1116934402 : switch (TREE_CODE (t))
16 : {
17 241151933 : CASE_CONVERT:
18 241151933 : {
19 241151933 : tree _p0 = TREE_OPERAND (t, 0);
20 241151933 : {
21 241151933 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
22 241151933 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
23 : )
24 : {
25 198261633 : {
26 198261633 : res_ops[0] = captures[0];
27 198261633 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 0, __FILE__, __LINE__, false);
28 198261633 : return true;
29 : }
30 : }
31 : }
32 : break;
33 : }
34 4581950 : case VIEW_CONVERT_EXPR:
35 4581950 : {
36 4581950 : tree _p0 = TREE_OPERAND (t, 0);
37 4581950 : {
38 4581950 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
39 3214573 : if (VECTOR_TYPE_P (type) && VECTOR_TYPE_P (TREE_TYPE (captures[0]))
40 3214555 : && known_eq (TYPE_VECTOR_SUBPARTS (type),
41 : TYPE_VECTOR_SUBPARTS (TREE_TYPE (captures[0])))
42 6804481 : && tree_nop_conversion_p (TREE_TYPE (type), TREE_TYPE (TREE_TYPE (captures[0])))
43 : )
44 : {
45 2222521 : {
46 2222521 : res_ops[0] = captures[0];
47 2222521 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1, __FILE__, __LINE__, false);
48 2222521 : return true;
49 : }
50 : }
51 : }
52 2359429 : break;
53 : }
54 : default:;
55 : }
56 : return false;
57 : }
58 :
59 : bool
60 91424640 : tree_with_known_nonzero_bits (tree t)
61 : {
62 91424640 : const tree type = TREE_TYPE (t);
63 91424640 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
64 91424640 : if (TREE_SIDE_EFFECTS (t)) return false;
65 86207395 : switch (TREE_CODE (t))
66 : {
67 276868 : case BIT_IOR_EXPR:
68 276868 : {
69 276868 : tree _p0 = TREE_OPERAND (t, 0);
70 276868 : tree _p1 = TREE_OPERAND (t, 1);
71 276868 : if (tree_with_known_nonzero_bits_1 (_p0))
72 : {
73 269232 : {
74 269232 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
75 269232 : {
76 269232 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 39, __FILE__, __LINE__, false);
77 269232 : return true;
78 : }
79 : }
80 : }
81 7636 : if (tree_with_known_nonzero_bits_1 (_p1))
82 : {
83 186 : {
84 186 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
85 186 : {
86 186 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 39, __FILE__, __LINE__, false);
87 186 : return true;
88 : }
89 : }
90 : }
91 : break;
92 : }
93 85937977 : default:;
94 : }
95 85937977 : if (tree_with_known_nonzero_bits_1 (t))
96 : {
97 40029638 : {
98 40029638 : tree captures[1] ATTRIBUTE_UNUSED = { t };
99 40029638 : {
100 40029638 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 40, __FILE__, __LINE__, false);
101 40029638 : return true;
102 : }
103 : }
104 : }
105 : return false;
106 : }
107 :
108 : tree
109 15 : generic_simplify_4 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
110 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
111 : const enum tree_code ARG_UNUSED (op))
112 : {
113 15 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
114 15 : if (INTEGRAL_TYPE_P (type)
115 : )
116 : {
117 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail75;
118 15 : {
119 15 : tree res_op0;
120 15 : {
121 15 : tree _o1[2], _r1;
122 15 : _o1[0] = captures[1];
123 15 : _o1[1] = captures[4];
124 15 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
125 15 : res_op0 = _r1;
126 : }
127 15 : tree res_op1;
128 15 : res_op1 = captures[2];
129 15 : tree _r;
130 15 : _r = fold_build2_loc (loc, RSHIFT_EXPR, type, res_op0, res_op1);
131 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 52, __FILE__, __LINE__, true);
132 15 : return _r;
133 : }
134 0 : next_after_fail75:;
135 : }
136 : return NULL_TREE;
137 : }
138 :
139 : tree
140 589 : generic_simplify_12 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
141 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
142 : {
143 589 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
144 589 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail86;
145 589 : {
146 589 : if (! tree_invariant_p (captures[3])) goto next_after_fail86;
147 1 : tree res_op0;
148 1 : {
149 1 : tree _o1[2], _r1;
150 1 : _o1[0] = captures[2];
151 1 : _o1[1] = unshare_expr (captures[3]);
152 1 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
153 1 : res_op0 = _r1;
154 : }
155 1 : tree res_op1;
156 1 : {
157 1 : tree _o1[2], _r1;
158 1 : {
159 1 : tree _o2[1], _r2;
160 1 : _o2[0] = captures[4];
161 1 : _r2 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
162 1 : if (EXPR_P (_r2))
163 0 : goto next_after_fail86;
164 1 : _o1[0] = _r2;
165 : }
166 1 : _o1[1] = captures[3];
167 1 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
168 1 : if (EXPR_P (_r1))
169 0 : goto next_after_fail86;
170 1 : res_op1 = _r1;
171 : }
172 1 : tree _r;
173 1 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
174 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 61, __FILE__, __LINE__, true);
175 : return _r;
176 : }
177 : next_after_fail86:;
178 : return NULL_TREE;
179 : }
180 :
181 : tree
182 57 : generic_simplify_25 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
183 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
184 : {
185 57 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
186 57 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
187 : )
188 : {
189 33 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail99;
190 33 : {
191 33 : tree res_op0;
192 33 : {
193 33 : tree _o1[1], _r1;
194 33 : _o1[0] = captures[0];
195 33 : if (TREE_TYPE (_o1[0]) != type)
196 : {
197 2 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
198 : }
199 : else
200 : _r1 = _o1[0];
201 33 : res_op0 = _r1;
202 : }
203 33 : tree res_op1;
204 33 : {
205 33 : tree _o1[1], _r1;
206 33 : _o1[0] = captures[1];
207 33 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
208 33 : res_op1 = _r1;
209 : }
210 33 : tree _r;
211 33 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
212 33 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 74, __FILE__, __LINE__, true);
213 33 : return _r;
214 : }
215 0 : next_after_fail99:;
216 : }
217 : return NULL_TREE;
218 : }
219 :
220 : tree
221 269697 : generic_simplify_32 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
222 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
223 : const enum tree_code ARG_UNUSED (bitop),
224 : const enum tree_code ARG_UNUSED (rbitop),
225 : const enum tree_code ARG_UNUSED (resbitop))
226 : {
227 269697 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
228 269697 : {
229 269697 : bool wascmp;
230 269697 : if (bitwise_inverted_equal_p (captures[2], captures[0], wascmp)
231 269697 : && (!wascmp || element_precision (type) == 1)
232 : )
233 : {
234 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail106;
235 13 : {
236 13 : tree res_op0;
237 13 : res_op0 = captures[2];
238 13 : tree res_op1;
239 13 : res_op1 = captures[1];
240 13 : tree _r;
241 13 : _r = fold_build2_loc (loc, resbitop, type, res_op0, res_op1);
242 13 : if (TREE_SIDE_EFFECTS (captures[0]))
243 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
244 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 80, __FILE__, __LINE__, true);
245 13 : return _r;
246 : }
247 0 : next_after_fail106:;
248 : }
249 : }
250 269684 : return NULL_TREE;
251 : }
252 :
253 : tree
254 0 : generic_simplify_39 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
255 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
256 : const enum tree_code ARG_UNUSED (op))
257 : {
258 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
259 0 : if (INTEGRAL_TYPE_P (type)
260 0 : && (tree_nonzero_bits (captures[0]) & tree_nonzero_bits (captures[2])) == 0
261 : )
262 : {
263 0 : {
264 0 : tree t = type;
265 0 : if (!TYPE_OVERFLOW_WRAPS (t))
266 0 : t = unsigned_type_for (t);
267 0 : wide_int c = wi::add (wi::to_wide (captures[3]), 1);
268 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail115;
269 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail115;
270 0 : {
271 0 : tree res_op0;
272 0 : {
273 0 : tree _o1[2], _r1;
274 0 : {
275 0 : tree _o2[1], _r2;
276 0 : _o2[0] = captures[2];
277 0 : if (TREE_TYPE (_o2[0]) != t)
278 : {
279 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, t, _o2[0]);
280 : }
281 : else
282 : _r2 = _o2[0];
283 0 : _o1[0] = _r2;
284 : }
285 0 : _o1[1] = wide_int_to_tree (t, c);
286 0 : _r1 = fold_build2_loc (loc, MULT_EXPR, t, _o1[0], _o1[1]);
287 0 : res_op0 = _r1;
288 : }
289 0 : tree _r;
290 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
291 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 88, __FILE__, __LINE__, true);
292 0 : return _r;
293 : }
294 0 : next_after_fail115:;
295 0 : }
296 : }
297 : return NULL_TREE;
298 : }
299 :
300 : tree
301 5 : generic_simplify_49 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
302 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
303 : {
304 5 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
305 10 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
306 5 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
307 10 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[3]))
308 : )
309 : {
310 5 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail127;
311 5 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail127;
312 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail127;
313 5 : {
314 5 : tree res_op0;
315 5 : {
316 5 : tree _o1[2], _r1;
317 5 : _o1[0] = captures[1];
318 5 : _o1[1] = captures[3];
319 5 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
320 5 : res_op0 = _r1;
321 : }
322 5 : tree res_op1;
323 5 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
324 5 : tree _r;
325 5 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
326 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 97, __FILE__, __LINE__, true);
327 5 : return _r;
328 : }
329 : next_after_fail127:;
330 : }
331 : return NULL_TREE;
332 : }
333 :
334 : tree
335 45 : generic_simplify_57 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
336 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
337 : {
338 45 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
339 45 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail137;
340 45 : {
341 45 : if (! tree_invariant_p (captures[2])) goto next_after_fail137;
342 45 : tree res_op0;
343 45 : {
344 45 : tree _o1[2], _r1;
345 45 : _o1[0] = captures[0];
346 45 : _o1[1] = unshare_expr (captures[2]);
347 45 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
348 45 : res_op0 = _r1;
349 : }
350 45 : tree res_op1;
351 45 : {
352 45 : tree _o1[1], _r1;
353 45 : _o1[0] = captures[2];
354 45 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
355 45 : res_op1 = _r1;
356 : }
357 45 : tree _r;
358 45 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
359 45 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 106, __FILE__, __LINE__, true);
360 : return _r;
361 : }
362 : next_after_fail137:;
363 : return NULL_TREE;
364 : }
365 :
366 : tree
367 7131659 : generic_simplify_67 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
368 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
369 : const enum tree_code ARG_UNUSED (op))
370 : {
371 7131659 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
372 7131659 : if (!TYPE_SATURATING (type)
373 : )
374 : {
375 7131659 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
376 13869264 : && !FIXED_POINT_TYPE_P (type)
377 : )
378 : {
379 6737605 : if (INTEGRAL_TYPE_P (type)
380 6737313 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
381 5423300 : && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0]))
382 4613774 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
383 3998481 : && !TYPE_OVERFLOW_TRAPS (type)
384 10736086 : && !TYPE_OVERFLOW_SANITIZED (type)
385 : )
386 : {
387 3998210 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail155;
388 3998210 : {
389 3998210 : tree res_op0;
390 3998210 : {
391 3998210 : tree _o1[2], _r1;
392 3998210 : _o1[0] = captures[0];
393 3998210 : _o1[1] = captures[1];
394 3998210 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
395 3998210 : if (EXPR_P (_r1))
396 3987631 : goto next_after_fail155;
397 10579 : res_op0 = _r1;
398 : }
399 10579 : tree _r;
400 10579 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
401 10579 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 124, __FILE__, __LINE__, true);
402 10579 : return _r;
403 : }
404 : next_after_fail155:;
405 : }
406 : }
407 : }
408 : return NULL_TREE;
409 : }
410 :
411 : tree
412 2 : generic_simplify_76 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
413 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
414 : const enum tree_code ARG_UNUSED (div),
415 : const enum tree_code ARG_UNUSED (mod))
416 : {
417 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
418 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail165;
419 2 : {
420 2 : tree _r;
421 2 : _r = captures[0];
422 2 : if (TREE_SIDE_EFFECTS (captures[1]))
423 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
424 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 134, __FILE__, __LINE__, true);
425 : return _r;
426 : }
427 0 : next_after_fail165:;
428 0 : return NULL_TREE;
429 : }
430 :
431 : tree
432 19385 : generic_simplify_79 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
433 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
434 : const enum tree_code ARG_UNUSED (op))
435 : {
436 19385 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
437 19385 : if (flag_unsafe_math_optimizations
438 : )
439 : {
440 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail169;
441 12 : {
442 12 : tree res_op0;
443 12 : {
444 12 : tree _o1[2], _r1;
445 12 : _o1[0] = captures[0];
446 12 : _o1[1] = captures[2];
447 12 : _r1 = fold_build2_loc (loc, op, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
448 12 : res_op0 = _r1;
449 : }
450 12 : tree res_op1;
451 12 : res_op1 = captures[1];
452 12 : tree _r;
453 12 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
454 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 138, __FILE__, __LINE__, true);
455 12 : return _r;
456 : }
457 0 : next_after_fail169:;
458 : }
459 : return NULL_TREE;
460 : }
461 :
462 : tree
463 85 : generic_simplify_86 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
464 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
465 : {
466 85 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
467 85 : if (INTEGRAL_TYPE_P (type)
468 85 : || (VECTOR_INTEGER_TYPE_P (type)
469 : && ((optimize_vectors_before_lowering_p ()
470 1 : && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST)
471 0 : || target_supports_op_p (type, TRUNC_MOD_EXPR,
472 : optab_vector)))
473 : )
474 : {
475 85 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail176;
476 85 : {
477 85 : tree res_op0;
478 85 : {
479 85 : tree _o1[2], _r1;
480 85 : _o1[0] = captures[0];
481 85 : _o1[1] = captures[1];
482 85 : _r1 = fold_build2_loc (loc, TRUNC_MOD_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
483 85 : res_op0 = _r1;
484 : }
485 85 : tree _r;
486 85 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
487 85 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 145, __FILE__, __LINE__, true);
488 85 : return _r;
489 : }
490 0 : next_after_fail176:;
491 : }
492 : return NULL_TREE;
493 : }
494 :
495 : tree
496 5 : generic_simplify_93 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
497 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
498 : {
499 5 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
500 5 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail183;
501 5 : {
502 5 : tree res_op0;
503 5 : res_op0 = captures[1];
504 5 : tree res_op1;
505 5 : {
506 5 : tree _o1[1], _r1;
507 5 : _o1[0] = captures[2];
508 5 : _r1 = fold_build1_loc (loc, BIT_NOT_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
509 5 : res_op1 = _r1;
510 : }
511 5 : tree _r;
512 5 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
513 5 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 152, __FILE__, __LINE__, true);
514 : return _r;
515 : }
516 0 : next_after_fail183:;
517 0 : return NULL_TREE;
518 : }
519 :
520 : tree
521 317 : generic_simplify_101 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
522 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
523 : {
524 317 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
525 317 : if (!TYPE_SATURATING (type)
526 : )
527 : {
528 317 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
529 634 : && !FIXED_POINT_TYPE_P (type)
530 : )
531 : {
532 317 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail193;
533 317 : {
534 317 : tree res_op0;
535 317 : res_op0 = captures[1];
536 317 : tree _r;
537 317 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
538 317 : if (TREE_SIDE_EFFECTS (captures[0]))
539 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
540 317 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 161, __FILE__, __LINE__, true);
541 317 : return _r;
542 : }
543 0 : next_after_fail193:;
544 : }
545 : }
546 : return NULL_TREE;
547 : }
548 :
549 : tree
550 159068 : generic_simplify_107 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
551 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
552 : {
553 159068 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
554 159068 : if (!TYPE_SATURATING (type)
555 : )
556 : {
557 159068 : if ((!FLOAT_TYPE_P (type) || flag_associative_math)
558 318136 : && !FIXED_POINT_TYPE_P (type)
559 : )
560 : {
561 159068 : if (INTEGRAL_TYPE_P (type)
562 159068 : && TYPE_OVERFLOW_UNDEFINED (type)
563 67 : && element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
564 159135 : && element_precision (type) <= element_precision (TREE_TYPE (captures[2]))
565 : )
566 : {
567 67 : {
568 67 : tree utype = unsigned_type_for (type);
569 67 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail202;
570 67 : {
571 67 : tree res_op0;
572 67 : {
573 67 : tree _o1[2], _r1;
574 67 : {
575 67 : tree _o2[1], _r2;
576 67 : _o2[0] = captures[1];
577 67 : if (TREE_TYPE (_o2[0]) != utype)
578 : {
579 52 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
580 : }
581 : else
582 : _r2 = _o2[0];
583 67 : _o1[0] = _r2;
584 : }
585 67 : {
586 67 : tree _o2[1], _r2;
587 67 : _o2[0] = captures[2];
588 67 : if (TREE_TYPE (_o2[0]) != utype)
589 : {
590 52 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
591 : }
592 : else
593 : _r2 = _o2[0];
594 67 : _o1[1] = _r2;
595 : }
596 67 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
597 67 : res_op0 = _r1;
598 : }
599 67 : tree _r;
600 67 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
601 67 : if (TREE_SIDE_EFFECTS (captures[3]))
602 2 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
603 67 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 170, __FILE__, __LINE__, true);
604 67 : return _r;
605 : }
606 0 : next_after_fail202:;
607 : }
608 : }
609 : else
610 : {
611 159001 : if (((element_precision (type) <= element_precision (TREE_TYPE (captures[1])))
612 159001 : == (element_precision (type) <= element_precision (TREE_TYPE (captures[2]))))
613 159001 : && (element_precision (type) <= element_precision (TREE_TYPE (captures[1]))
614 62 : || (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
615 62 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
616 62 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
617 58 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))))
618 : )
619 : {
620 142345 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail203;
621 142345 : {
622 142345 : tree res_op0;
623 142345 : {
624 142345 : tree _o1[1], _r1;
625 142345 : _o1[0] = captures[1];
626 142345 : if (TREE_TYPE (_o1[0]) != type)
627 : {
628 142345 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
629 : }
630 : else
631 : _r1 = _o1[0];
632 142345 : res_op0 = _r1;
633 : }
634 142345 : tree res_op1;
635 142345 : {
636 142345 : tree _o1[1], _r1;
637 142345 : _o1[0] = captures[2];
638 142345 : if (TREE_TYPE (_o1[0]) != type)
639 : {
640 142345 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
641 : }
642 : else
643 : _r1 = _o1[0];
644 142345 : res_op1 = _r1;
645 : }
646 142345 : tree _r;
647 142345 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
648 142345 : if (TREE_SIDE_EFFECTS (captures[3]))
649 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
650 142345 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 171, __FILE__, __LINE__, true);
651 142345 : return _r;
652 : }
653 0 : next_after_fail203:;
654 : }
655 : }
656 : }
657 : }
658 : return NULL_TREE;
659 : }
660 :
661 : tree
662 253 : generic_simplify_132 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
663 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
664 : const enum tree_code ARG_UNUSED (bitop))
665 : {
666 253 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
667 253 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail230;
668 253 : {
669 253 : tree res_op0;
670 253 : res_op0 = captures[0];
671 253 : tree _r;
672 253 : _r = non_lvalue_loc (loc, res_op0);
673 253 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 191, __FILE__, __LINE__, true);
674 : return _r;
675 : }
676 0 : next_after_fail230:;
677 0 : return NULL_TREE;
678 : }
679 :
680 : tree
681 0 : generic_simplify_142 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
682 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
683 : const enum tree_code ARG_UNUSED (op))
684 : {
685 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
686 0 : if (tree_nop_conversion_p (type, TREE_TYPE (captures[3]))
687 0 : && tree_nop_conversion_p (type, TREE_TYPE (captures[6]))
688 : )
689 : {
690 0 : if (single_use (captures[4]) && single_use (captures[5])
691 : )
692 : {
693 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail242;
694 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail242;
695 0 : {
696 0 : tree res_op0;
697 0 : res_op0 = captures[0];
698 0 : tree res_op1;
699 0 : {
700 0 : tree _o1[1], _r1;
701 0 : _o1[0] = captures[6];
702 0 : if (TREE_TYPE (_o1[0]) != type)
703 : {
704 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
705 : }
706 : else
707 : _r1 = _o1[0];
708 0 : res_op1 = _r1;
709 : }
710 0 : tree _r;
711 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
712 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 197, __FILE__, __LINE__, true);
713 0 : return _r;
714 : }
715 : next_after_fail242:;
716 : }
717 : else
718 : {
719 : if (single_use (captures[0]) && single_use (captures[1])
720 : )
721 : {
722 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail243;
723 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail243;
724 : {
725 : tree res_op0;
726 : {
727 : tree _o1[1], _r1;
728 : _o1[0] = captures[3];
729 : if (TREE_TYPE (_o1[0]) != type)
730 : {
731 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
732 : }
733 : else
734 : _r1 = _o1[0];
735 : res_op0 = _r1;
736 : }
737 : tree res_op1;
738 : res_op1 = captures[4];
739 : tree _r;
740 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
741 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 198, __FILE__, __LINE__, true);
742 : return _r;
743 : }
744 : next_after_fail243:;
745 : }
746 : }
747 : }
748 : return NULL_TREE;
749 : }
750 :
751 : tree
752 4 : generic_simplify_157 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
753 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
754 : {
755 4 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
756 4 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail263;
757 4 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail263;
758 4 : {
759 4 : tree _r;
760 4 : _r = captures[2];
761 4 : if (TREE_SIDE_EFFECTS (captures[1]))
762 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
763 4 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 211, __FILE__, __LINE__, true);
764 : return _r;
765 : }
766 : next_after_fail263:;
767 : return NULL_TREE;
768 : }
769 :
770 : tree
771 3 : generic_simplify_160 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
772 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
773 : const enum tree_code ARG_UNUSED (code2),
774 : const enum tree_code ARG_UNUSED (code1))
775 : {
776 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
777 3 : if ((TREE_CODE (captures[2]) == INTEGER_CST
778 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
779 3 : || ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
780 3 : || (VECTOR_TYPE_P (TREE_TYPE (captures[2])))
781 0 : || POINTER_TYPE_P (TREE_TYPE (captures[2])))
782 3 : && bitwise_equal_p (captures[2], captures[5]))
783 : )
784 : {
785 3 : {
786 3 : bool one_before = false;
787 3 : bool one_after = false;
788 3 : int cmp = 0;
789 3 : bool allbits = true;
790 3 : if (TREE_CODE (captures[2]) == INTEGER_CST
791 0 : && TREE_CODE (captures[5]) == INTEGER_CST)
792 : {
793 0 : allbits = TYPE_PRECISION (TREE_TYPE (captures[2])) <= TYPE_PRECISION (TREE_TYPE (captures[5]));
794 0 : auto t1 = wi::to_wide (fold_convert (TREE_TYPE (captures[5]), captures[2]));
795 0 : auto t2 = wi::to_wide (captures[5]);
796 0 : cmp = wi::cmp (t1, t2, TYPE_SIGN (TREE_TYPE (captures[5])));
797 0 : if (cmp < 0
798 0 : && t1 == t2 - 1)
799 : one_before = true;
800 0 : if (cmp > 0
801 0 : && t1 == t2 + 1)
802 : one_after = true;
803 : }
804 3 : bool val;
805 3 : switch (code2)
806 : {
807 0 : case EQ_EXPR: val = (cmp == 0); break;
808 0 : case NE_EXPR: val = (cmp != 0); break;
809 0 : case LT_EXPR: val = (cmp < 0); break;
810 3 : case GT_EXPR: val = (cmp > 0); break;
811 0 : case LE_EXPR: val = (cmp <= 0); break;
812 0 : case GE_EXPR: val = (cmp >= 0); break;
813 0 : default: gcc_unreachable ();
814 : }
815 3 : if (code1 == EQ_EXPR && val
816 : )
817 : {
818 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail266;
819 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail266;
820 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail266;
821 0 : {
822 0 : tree _r;
823 0 : _r = captures[3];
824 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 214, __FILE__, __LINE__, true);
825 0 : return _r;
826 : }
827 : next_after_fail266:;
828 : }
829 : else
830 : {
831 3 : if (code1 == NE_EXPR && val && allbits
832 : )
833 : {
834 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail267;
835 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail267;
836 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail267;
837 0 : {
838 0 : tree _r;
839 0 : _r = constant_boolean_node (true, type);
840 0 : if (TREE_SIDE_EFFECTS (captures[1]))
841 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
842 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 215, __FILE__, __LINE__, true);
843 0 : return _r;
844 : }
845 : next_after_fail267:;
846 : }
847 : else
848 : {
849 3 : if (code1 == NE_EXPR && !val && allbits
850 : )
851 : {
852 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail268;
853 0 : if (TREE_SIDE_EFFECTS (captures[5])) goto next_after_fail268;
854 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail268;
855 0 : {
856 0 : tree _r;
857 0 : _r = captures[0];
858 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 216, __FILE__, __LINE__, true);
859 0 : return _r;
860 : }
861 : next_after_fail268:;
862 : }
863 : else
864 : {
865 3 : if (code1 == EQ_EXPR
866 3 : && code2 == GT_EXPR
867 3 : && cmp == 0
868 3 : && allbits
869 6 : && ((VECTOR_BOOLEAN_TYPE_P (type)
870 3 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
871 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
872 : )
873 : {
874 3 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail269;
875 3 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail269;
876 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail269;
877 3 : {
878 3 : tree res_op0;
879 3 : res_op0 = captures[4];
880 3 : tree res_op1;
881 3 : res_op1 = captures[5];
882 3 : tree _r;
883 3 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
884 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 217, __FILE__, __LINE__, true);
885 3 : return _r;
886 : }
887 : next_after_fail269:;
888 : }
889 : else
890 : {
891 0 : if (code1 == EQ_EXPR
892 0 : && code2 == LT_EXPR
893 0 : && cmp == 0
894 0 : && allbits
895 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
896 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
897 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
898 : )
899 : {
900 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail270;
901 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail270;
902 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail270;
903 0 : {
904 0 : tree res_op0;
905 0 : res_op0 = captures[4];
906 0 : tree res_op1;
907 0 : res_op1 = captures[5];
908 0 : tree _r;
909 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
910 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 218, __FILE__, __LINE__, true);
911 0 : return _r;
912 : }
913 : next_after_fail270:;
914 : }
915 : else
916 : {
917 0 : if (code1 == EQ_EXPR
918 0 : && code2 == GE_EXPR
919 : && one_before
920 0 : && allbits
921 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
922 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, GE_EXPR))
923 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
924 : )
925 : {
926 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail271;
927 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail271;
928 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail271;
929 0 : {
930 0 : tree res_op0;
931 0 : res_op0 = captures[4];
932 0 : tree res_op1;
933 0 : {
934 0 : tree _o1[1], _r1;
935 0 : _o1[0] = captures[2];
936 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
937 : {
938 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
939 : }
940 : else
941 : _r1 = _o1[0];
942 0 : res_op1 = _r1;
943 : }
944 0 : tree _r;
945 0 : _r = fold_build2_loc (loc, GE_EXPR, type, res_op0, res_op1);
946 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 219, __FILE__, __LINE__, true);
947 0 : return _r;
948 : }
949 : next_after_fail271:;
950 : }
951 : else
952 : {
953 0 : if (code1 == EQ_EXPR
954 0 : && code2 == LE_EXPR
955 : && one_after
956 0 : && allbits
957 0 : && ((VECTOR_BOOLEAN_TYPE_P (type)
958 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[2]), type, LE_EXPR))
959 0 : || !VECTOR_TYPE_P (TREE_TYPE (captures[2])))
960 : )
961 : {
962 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail272;
963 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail272;
964 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail272;
965 0 : {
966 0 : tree res_op0;
967 0 : res_op0 = captures[4];
968 0 : tree res_op1;
969 0 : {
970 0 : tree _o1[1], _r1;
971 0 : _o1[0] = captures[2];
972 0 : if (TREE_TYPE (_o1[0]) != TREE_TYPE (res_op0))
973 : {
974 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o1[0]);
975 : }
976 : else
977 : _r1 = _o1[0];
978 0 : res_op1 = _r1;
979 : }
980 0 : tree _r;
981 0 : _r = fold_build2_loc (loc, LE_EXPR, type, res_op0, res_op1);
982 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 220, __FILE__, __LINE__, true);
983 0 : return _r;
984 : }
985 : next_after_fail272:;
986 : }
987 : }
988 : }
989 : }
990 : }
991 : }
992 : }
993 : }
994 : }
995 : return NULL_TREE;
996 : }
997 :
998 : tree
999 8 : generic_simplify_203 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1000 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1001 : const combined_fn ARG_UNUSED (POW))
1002 : {
1003 8 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1004 8 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1005 : )
1006 : {
1007 8 : if (!TREE_OVERFLOW (captures[2])
1008 : )
1009 : {
1010 8 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail345;
1011 8 : {
1012 8 : tree res_op0;
1013 8 : res_op0 = captures[0];
1014 8 : tree res_op1;
1015 8 : {
1016 8 : tree _o1[2], _r1;
1017 8 : _o1[0] = captures[2];
1018 8 : _o1[1] = build_one_cst (type);
1019 8 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1020 8 : res_op1 = _r1;
1021 : }
1022 8 : tree _r;
1023 8 : _r = maybe_build_call_expr_loc (loc, POW, type, 2, res_op0, res_op1);
1024 8 : if (!_r)
1025 0 : goto next_after_fail345;
1026 8 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 258, __FILE__, __LINE__, true);
1027 8 : return _r;
1028 : }
1029 : next_after_fail345:;
1030 : }
1031 : }
1032 : return NULL_TREE;
1033 : }
1034 :
1035 : tree
1036 20788 : generic_simplify_210 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1037 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1038 : const enum tree_code ARG_UNUSED (cmp),
1039 : const enum tree_code ARG_UNUSED (mod))
1040 : {
1041 20788 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1042 20788 : if (!TYPE_UNSIGNED (TREE_TYPE (captures[0]))
1043 : )
1044 : {
1045 20788 : {
1046 20788 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
1047 20788 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail352;
1048 20788 : {
1049 20788 : tree res_op0;
1050 20788 : {
1051 20788 : tree _o1[2], _r1;
1052 20788 : {
1053 20788 : tree _o2[1], _r2;
1054 20788 : _o2[0] = captures[0];
1055 20788 : if (TREE_TYPE (_o2[0]) != utype)
1056 : {
1057 20788 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
1058 : }
1059 : else
1060 : _r2 = _o2[0];
1061 20788 : _o1[0] = _r2;
1062 : }
1063 20788 : {
1064 20788 : tree _o2[1], _r2;
1065 20788 : _o2[0] = captures[1];
1066 20788 : if (TREE_TYPE (_o2[0]) != utype)
1067 : {
1068 20788 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
1069 : }
1070 : else
1071 : _r2 = _o2[0];
1072 20788 : _o1[1] = _r2;
1073 : }
1074 20788 : _r1 = fold_build2_loc (loc, mod, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1075 20788 : res_op0 = _r1;
1076 : }
1077 20788 : tree res_op1;
1078 20788 : {
1079 20788 : tree _o1[1], _r1;
1080 20788 : _o1[0] = captures[2];
1081 20788 : if (TREE_TYPE (_o1[0]) != utype)
1082 : {
1083 20788 : _r1 = fold_build1_loc (loc, NOP_EXPR, utype, _o1[0]);
1084 : }
1085 : else
1086 : _r1 = _o1[0];
1087 20788 : res_op1 = _r1;
1088 : }
1089 20788 : tree _r;
1090 20788 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1091 20788 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 265, __FILE__, __LINE__, true);
1092 20788 : return _r;
1093 : }
1094 0 : next_after_fail352:;
1095 : }
1096 : }
1097 : return NULL_TREE;
1098 : }
1099 :
1100 : tree
1101 12859 : generic_simplify_224 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1102 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1103 : const enum tree_code ARG_UNUSED (op))
1104 : {
1105 12859 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1106 12859 : if (tree_nop_conversion_p (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
1107 12859 : && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))
1108 12859 : && (CONSTANT_CLASS_P (captures[3]) || (single_use (captures[1]) && single_use (captures[0])))
1109 : )
1110 : {
1111 12859 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail383;
1112 12859 : {
1113 12859 : tree res_op0;
1114 12859 : res_op0 = captures[3];
1115 12859 : tree res_op1;
1116 12859 : res_op1 = build_zero_cst (TREE_TYPE (captures[3]));
1117 12859 : tree _r;
1118 12859 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
1119 12859 : if (TREE_SIDE_EFFECTS (captures[2]))
1120 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1121 12859 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 295, __FILE__, __LINE__, true);
1122 12859 : return _r;
1123 : }
1124 0 : next_after_fail383:;
1125 : }
1126 : return NULL_TREE;
1127 : }
1128 :
1129 : tree
1130 21 : generic_simplify_232 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1131 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1132 : const enum tree_code ARG_UNUSED (cmp))
1133 : {
1134 21 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1135 21 : if (TREE_INT_CST_LOW (captures[1]) & 1
1136 : )
1137 : {
1138 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail391;
1139 2 : {
1140 2 : tree _r;
1141 2 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1142 2 : if (TREE_SIDE_EFFECTS (captures[0]))
1143 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1144 2 : if (TREE_SIDE_EFFECTS (captures[1]))
1145 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1146 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 302, __FILE__, __LINE__, true);
1147 2 : return _r;
1148 : }
1149 0 : next_after_fail391:;
1150 : }
1151 : return NULL_TREE;
1152 : }
1153 :
1154 : tree
1155 22 : generic_simplify_239 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1156 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1157 : const enum tree_code ARG_UNUSED (cmp),
1158 : const enum tree_code ARG_UNUSED (icmp))
1159 : {
1160 22 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1161 22 : {
1162 22 : int c1 = wi::clz (wi::to_wide (captures[0]));
1163 22 : int c2 = wi::clz (wi::to_wide (captures[2]));
1164 22 : if (c1 < c2
1165 44 : || !wi::fits_to_tree_p (wi::shwi (c1 - c2, HOST_BITS_PER_INT),
1166 22 : TREE_TYPE (captures[1]))
1167 : )
1168 : {
1169 16 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail400;
1170 16 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail400;
1171 16 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail400;
1172 16 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail400;
1173 16 : {
1174 16 : tree _r;
1175 16 : _r = constant_boolean_node (cmp != NE_EXPR, type);
1176 16 : if (TREE_SIDE_EFFECTS (captures[1]))
1177 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1178 16 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 311, __FILE__, __LINE__, true);
1179 16 : return _r;
1180 : }
1181 : next_after_fail400:;
1182 : }
1183 : else
1184 : {
1185 6 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail401;
1186 6 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail401;
1187 6 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail401;
1188 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail401;
1189 6 : {
1190 6 : tree res_op0;
1191 6 : res_op0 = captures[1];
1192 6 : tree res_op1;
1193 6 : res_op1 = build_int_cst (TREE_TYPE (captures[1]), c1 - c2);
1194 6 : tree _r;
1195 6 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
1196 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 312, __FILE__, __LINE__, true);
1197 6 : return _r;
1198 : }
1199 : next_after_fail401:;
1200 : }
1201 : }
1202 : return NULL_TREE;
1203 : }
1204 :
1205 : tree
1206 14 : generic_simplify_249 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1207 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1208 : const enum tree_code ARG_UNUSED (cmp),
1209 : const combined_fn ARG_UNUSED (bswap))
1210 : {
1211 14 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1212 14 : {
1213 14 : tree ctype = TREE_TYPE (captures[0]);
1214 14 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail420;
1215 14 : {
1216 14 : tree res_op0;
1217 14 : {
1218 14 : tree _o1[1], _r1;
1219 14 : _o1[0] = captures[1];
1220 14 : if (TREE_TYPE (_o1[0]) != ctype)
1221 : {
1222 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, ctype, _o1[0]);
1223 : }
1224 : else
1225 : _r1 = _o1[0];
1226 14 : res_op0 = _r1;
1227 : }
1228 14 : tree res_op1;
1229 14 : {
1230 14 : tree _o1[1], _r1;
1231 14 : _o1[0] = captures[2];
1232 14 : if (TREE_TYPE (_o1[0]) != ctype)
1233 : {
1234 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, ctype, _o1[0]);
1235 : }
1236 : else
1237 : _r1 = _o1[0];
1238 14 : res_op1 = _r1;
1239 : }
1240 14 : tree _r;
1241 14 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1242 14 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 331, __FILE__, __LINE__, true);
1243 : return _r;
1244 : }
1245 0 : next_after_fail420:;
1246 : }
1247 0 : return NULL_TREE;
1248 : }
1249 :
1250 : tree
1251 163852 : generic_simplify_257 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1252 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1253 : const enum tree_code ARG_UNUSED (cmp))
1254 : {
1255 163852 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1256 322700 : if (! FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1257 164577 : || ! tree_expr_maybe_nan_p (captures[0])
1258 : )
1259 : {
1260 158197 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail433;
1261 158197 : {
1262 158197 : tree _r;
1263 158197 : _r = constant_boolean_node (true, type);
1264 158197 : if (TREE_SIDE_EFFECTS (captures[0]))
1265 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1266 158197 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 343, __FILE__, __LINE__, true);
1267 158197 : return _r;
1268 : }
1269 0 : next_after_fail433:;
1270 : }
1271 : else
1272 : {
1273 5655 : if (cmp != EQ_EXPR
1274 5655 : && (! FLOAT_TYPE_P (TREE_TYPE (captures[0]))
1275 79 : || ! flag_trapping_math)
1276 : )
1277 : {
1278 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail434;
1279 0 : {
1280 0 : tree res_op0;
1281 0 : res_op0 = unshare_expr (captures[0]);
1282 0 : tree res_op1;
1283 0 : res_op1 = captures[0];
1284 0 : tree _r;
1285 0 : _r = fold_build2_loc (loc, EQ_EXPR, type, res_op0, res_op1);
1286 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 344, __FILE__, __LINE__, true);
1287 0 : return _r;
1288 : }
1289 0 : next_after_fail434:;
1290 : }
1291 : }
1292 : return NULL_TREE;
1293 : }
1294 :
1295 : tree
1296 19590 : generic_simplify_264 (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 19590 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1301 19590 : if (flag_associative_math
1302 : )
1303 : {
1304 13 : {
1305 13 : tree tem = const_binop (MINUS_EXPR, TREE_TYPE (captures[1]), captures[0], captures[2]);
1306 13 : if (tem && !TREE_OVERFLOW (tem)
1307 : )
1308 : {
1309 13 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail455;
1310 13 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail455;
1311 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail455;
1312 13 : {
1313 13 : tree res_op0;
1314 13 : res_op0 = tem;
1315 13 : tree res_op1;
1316 13 : res_op1 = captures[1];
1317 13 : tree _r;
1318 13 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1319 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 364, __FILE__, __LINE__, true);
1320 13 : return _r;
1321 : }
1322 : next_after_fail455:;
1323 : }
1324 : }
1325 : }
1326 : return NULL_TREE;
1327 : }
1328 :
1329 : tree
1330 69 : generic_simplify_269 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1331 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1332 : const enum tree_code ARG_UNUSED (cmp))
1333 : {
1334 69 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1335 69 : if (!integer_zerop (captures[1])
1336 : )
1337 : {
1338 69 : if (wi::to_wide (captures[2]) == 0
1339 : )
1340 : {
1341 22 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail485;
1342 22 : {
1343 22 : tree res_op0;
1344 22 : res_op0 = captures[0];
1345 22 : tree res_op1;
1346 22 : res_op1 = captures[2];
1347 22 : tree _r;
1348 22 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1349 22 : if (TREE_SIDE_EFFECTS (captures[1]))
1350 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1351 22 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 394, __FILE__, __LINE__, true);
1352 22 : return _r;
1353 : }
1354 0 : next_after_fail485:;
1355 : }
1356 : else
1357 : {
1358 47 : if (TREE_CODE (captures[1]) == INTEGER_CST
1359 : )
1360 : {
1361 47 : {
1362 47 : wi::overflow_type ovf;
1363 47 : wide_int prod = wi::mul (wi::to_wide (captures[2]), wi::to_wide (captures[1]),
1364 94 : TYPE_SIGN (TREE_TYPE (captures[1])), &ovf);
1365 47 : if (ovf
1366 : )
1367 : {
1368 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail486;
1369 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail486;
1370 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail486;
1371 0 : {
1372 0 : tree _r;
1373 0 : _r = constant_boolean_node (cmp == NE_EXPR, type);
1374 0 : if (TREE_SIDE_EFFECTS (captures[0]))
1375 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1376 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 395, __FILE__, __LINE__, true);
1377 0 : return _r;
1378 : }
1379 0 : next_after_fail486:;
1380 : }
1381 : else
1382 : {
1383 47 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail487;
1384 47 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail487;
1385 47 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail487;
1386 47 : {
1387 47 : tree res_op0;
1388 47 : res_op0 = captures[0];
1389 47 : tree res_op1;
1390 47 : res_op1 = wide_int_to_tree (TREE_TYPE (captures[0]), prod);
1391 47 : tree _r;
1392 47 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1393 47 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 396, __FILE__, __LINE__, true);
1394 47 : return _r;
1395 : }
1396 0 : next_after_fail487:;
1397 : }
1398 47 : }
1399 : }
1400 : }
1401 : }
1402 : return NULL_TREE;
1403 : }
1404 :
1405 : tree
1406 62 : generic_simplify_277 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1407 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1408 : const enum tree_code ARG_UNUSED (cmp))
1409 : {
1410 62 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1411 62 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail512;
1412 62 : {
1413 62 : tree res_op0;
1414 62 : res_op0 = captures[1];
1415 62 : tree res_op1;
1416 62 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
1417 62 : tree _r;
1418 62 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1419 62 : if (TREE_SIDE_EFFECTS (captures[0]))
1420 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1421 62 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 413, __FILE__, __LINE__, true);
1422 : return _r;
1423 : }
1424 0 : next_after_fail512:;
1425 0 : return NULL_TREE;
1426 : }
1427 :
1428 : tree
1429 26 : generic_simplify_281 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1430 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1431 : const enum tree_code ARG_UNUSED (cmp))
1432 : {
1433 26 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1434 26 : if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))
1435 : )
1436 : {
1437 26 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail516;
1438 26 : {
1439 26 : tree res_op0;
1440 26 : res_op0 = captures[1];
1441 26 : tree res_op1;
1442 26 : {
1443 26 : tree _o1[2], _r1;
1444 26 : _o1[0] = captures[2];
1445 26 : {
1446 26 : tree _o2[1], _r2;
1447 26 : _o2[0] = captures[3];
1448 26 : if (TREE_TYPE (_o2[0]) != TREE_TYPE (res_op0))
1449 : {
1450 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, TREE_TYPE (res_op0), _o2[0]);
1451 : }
1452 : else
1453 : _r2 = _o2[0];
1454 26 : _o1[1] = _r2;
1455 : }
1456 26 : _r1 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1457 26 : res_op1 = _r1;
1458 : }
1459 26 : tree _r;
1460 26 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1461 26 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 417, __FILE__, __LINE__, true);
1462 26 : return _r;
1463 : }
1464 0 : next_after_fail516:;
1465 : }
1466 : return NULL_TREE;
1467 : }
1468 :
1469 : tree
1470 110646 : generic_simplify_285 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1471 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1472 : const enum tree_code ARG_UNUSED (cmp),
1473 : const enum tree_code ARG_UNUSED (ncmp))
1474 : {
1475 110646 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1476 220887 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
1477 62888 : && type_has_mode_precision_p (TREE_TYPE (captures[1]))
1478 61955 : && element_precision (captures[0]) >= element_precision (captures[1])
1479 221292 : && wi::only_sign_bit_p (wi::to_wide (captures[2]), element_precision (captures[1]))
1480 : )
1481 : {
1482 6395 : {
1483 6395 : tree stype = signed_type_for (TREE_TYPE (captures[1]));
1484 6395 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail520;
1485 6395 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail520;
1486 6395 : {
1487 6395 : tree res_op0;
1488 6395 : {
1489 6395 : tree _o1[1], _r1;
1490 6395 : _o1[0] = captures[1];
1491 6395 : if (TREE_TYPE (_o1[0]) != stype)
1492 : {
1493 5743 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
1494 : }
1495 : else
1496 : _r1 = _o1[0];
1497 6395 : res_op0 = _r1;
1498 : }
1499 6395 : tree res_op1;
1500 6395 : res_op1 = build_zero_cst (stype);
1501 6395 : tree _r;
1502 6395 : _r = fold_build2_loc (loc, ncmp, type, res_op0, res_op1);
1503 6395 : if (TREE_SIDE_EFFECTS (captures[2]))
1504 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
1505 6395 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 421, __FILE__, __LINE__, true);
1506 6395 : return _r;
1507 : }
1508 : next_after_fail520:;
1509 : }
1510 : }
1511 : return NULL_TREE;
1512 : }
1513 :
1514 : tree
1515 4918627 : generic_simplify_291 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1516 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1517 : const enum tree_code ARG_UNUSED (cmp))
1518 : {
1519 4918627 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1520 4918627 : {
1521 4918627 : poly_int64 off0, off1;
1522 4918627 : tree base0, base1;
1523 4918627 : int equal = address_compare (cmp, TREE_TYPE (captures[0]), captures[1], captures[2], base0, base1,
1524 : off0, off1,
1525 : 1
1526 : );
1527 4918627 : if (equal == 1
1528 : )
1529 : {
1530 4877936 : if (cmp == EQ_EXPR && (known_eq (off0, off1) || known_ne (off0, off1))
1531 : )
1532 : {
1533 540771 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail526;
1534 540771 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail526;
1535 540771 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail526;
1536 540771 : {
1537 540771 : tree _r;
1538 540771 : _r = constant_boolean_node (known_eq (off0, off1), type);
1539 540771 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 425, __FILE__, __LINE__, true);
1540 4901760 : return _r;
1541 : }
1542 16867 : next_after_fail526:;
1543 : }
1544 : else
1545 : {
1546 4273676 : if (cmp == NE_EXPR && (known_eq (off0, off1) || known_ne (off0, off1))
1547 : )
1548 : {
1549 4273676 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail527;
1550 4273676 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail527;
1551 4273676 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail527;
1552 4273676 : {
1553 4273676 : tree _r;
1554 4273676 : _r = constant_boolean_node (known_ne (off0, off1), type);
1555 4273676 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 426, __FILE__, __LINE__, true);
1556 4273676 : return _r;
1557 : }
1558 16867 : next_after_fail527:;
1559 : }
1560 : else
1561 : {
1562 53535 : if (cmp == LT_EXPR && (known_lt (off0, off1) || known_ge (off0, off1))
1563 : )
1564 : {
1565 53535 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail528;
1566 53535 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail528;
1567 53535 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail528;
1568 53535 : {
1569 53535 : tree _r;
1570 53535 : _r = constant_boolean_node (known_lt (off0, off1), type);
1571 53535 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 427, __FILE__, __LINE__, true);
1572 53535 : return _r;
1573 : }
1574 16867 : next_after_fail528:;
1575 : }
1576 : else
1577 : {
1578 6035 : if (cmp == LE_EXPR && (known_le (off0, off1) || known_gt (off0, off1))
1579 : )
1580 : {
1581 6035 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail529;
1582 6035 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail529;
1583 6035 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail529;
1584 6035 : {
1585 6035 : tree _r;
1586 6035 : _r = constant_boolean_node (known_le (off0, off1), type);
1587 6035 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 428, __FILE__, __LINE__, true);
1588 6035 : return _r;
1589 : }
1590 16867 : next_after_fail529:;
1591 : }
1592 : else
1593 : {
1594 3419 : if (cmp == GE_EXPR && (known_ge (off0, off1) || known_lt (off0, off1))
1595 : )
1596 : {
1597 3419 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail530;
1598 3419 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail530;
1599 3419 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail530;
1600 3419 : {
1601 3419 : tree _r;
1602 3419 : _r = constant_boolean_node (known_ge (off0, off1), type);
1603 3419 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 429, __FILE__, __LINE__, true);
1604 3419 : return _r;
1605 : }
1606 16867 : next_after_fail530:;
1607 : }
1608 : else
1609 : {
1610 500 : if (cmp == GT_EXPR && (known_gt (off0, off1) || known_le (off0, off1))
1611 : )
1612 : {
1613 500 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail531;
1614 500 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail531;
1615 500 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail531;
1616 500 : {
1617 500 : tree _r;
1618 500 : _r = constant_boolean_node (known_gt (off0, off1), type);
1619 500 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 430, __FILE__, __LINE__, true);
1620 500 : return _r;
1621 : }
1622 16867 : next_after_fail531:;
1623 : }
1624 : }
1625 : }
1626 : }
1627 : }
1628 : }
1629 : }
1630 : else
1631 : {
1632 40691 : if (equal == 0
1633 : )
1634 : {
1635 23824 : if (cmp == EQ_EXPR
1636 : )
1637 : {
1638 17778 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail532;
1639 17778 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail532;
1640 17778 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail532;
1641 17778 : {
1642 17778 : tree _r;
1643 17778 : _r = constant_boolean_node (false, type);
1644 17778 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 431, __FILE__, __LINE__, true);
1645 17778 : return _r;
1646 : }
1647 16867 : next_after_fail532:;
1648 : }
1649 : else
1650 : {
1651 6046 : if (cmp == NE_EXPR
1652 : )
1653 : {
1654 6046 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail533;
1655 6046 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail533;
1656 6046 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail533;
1657 6046 : {
1658 6046 : tree _r;
1659 6046 : _r = constant_boolean_node (true, type);
1660 6046 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 432, __FILE__, __LINE__, true);
1661 6046 : return _r;
1662 : }
1663 16867 : next_after_fail533:;
1664 : }
1665 : }
1666 : }
1667 : }
1668 : }
1669 16867 : return NULL_TREE;
1670 : }
1671 :
1672 : tree
1673 294276 : generic_simplify_306 (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 (cmp),
1676 : const enum tree_code ARG_UNUSED (icmp),
1677 : const enum tree_code ARG_UNUSED (ncmp))
1678 : {
1679 294276 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1680 294276 : if (types_match (type, TREE_TYPE (captures[0]))
1681 : )
1682 : {
1683 46994 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail574;
1684 46994 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail574;
1685 46994 : {
1686 46994 : tree res_op0;
1687 46994 : res_op0 = captures[1];
1688 46994 : tree res_op1;
1689 46994 : res_op1 = captures[2];
1690 46994 : tree _r;
1691 46994 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
1692 46994 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 465, __FILE__, __LINE__, true);
1693 46994 : return _r;
1694 : }
1695 : next_after_fail574:;
1696 : }
1697 : return NULL_TREE;
1698 : }
1699 :
1700 : tree
1701 0 : generic_simplify_311 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1702 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1703 : const combined_fn ARG_UNUSED (copysigns))
1704 : {
1705 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1706 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail580;
1707 0 : {
1708 0 : tree res_op0;
1709 0 : res_op0 = captures[0];
1710 0 : tree res_op1;
1711 0 : res_op1 = captures[2];
1712 0 : tree _r;
1713 0 : _r = maybe_build_call_expr_loc (loc, copysigns, type, 2, res_op0, res_op1);
1714 0 : if (!_r)
1715 0 : goto next_after_fail580;
1716 0 : if (TREE_SIDE_EFFECTS (captures[1]))
1717 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1718 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 471, __FILE__, __LINE__, true);
1719 : return _r;
1720 : }
1721 : next_after_fail580:;
1722 : return NULL_TREE;
1723 : }
1724 :
1725 : tree
1726 2749 : generic_simplify_318 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1727 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1728 : const enum tree_code ARG_UNUSED (div))
1729 : {
1730 2749 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1731 2749 : if (!TYPE_UNSIGNED (type)
1732 : )
1733 : {
1734 1683 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail589;
1735 1683 : {
1736 1683 : tree res_op0;
1737 1683 : res_op0 = captures[0];
1738 1683 : tree _r;
1739 1683 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
1740 1683 : if (TREE_SIDE_EFFECTS (captures[1]))
1741 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1742 1683 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 478, __FILE__, __LINE__, true);
1743 1683 : return _r;
1744 : }
1745 0 : next_after_fail589:;
1746 : }
1747 : return NULL_TREE;
1748 : }
1749 :
1750 : tree
1751 46817 : generic_simplify_324 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1752 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1753 : const enum tree_code ARG_UNUSED (div))
1754 : {
1755 46817 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1756 46817 : if (integer_pow2p (captures[2])
1757 37526 : && tree_int_cst_sgn (captures[2]) > 0
1758 37526 : && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))
1759 93634 : && wi::to_wide (captures[2]) + wi::to_wide (captures[1]) == 0
1760 : )
1761 : {
1762 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail596;
1763 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail596;
1764 1 : {
1765 1 : tree res_op0;
1766 1 : {
1767 1 : tree _o1[1], _r1;
1768 1 : _o1[0] = captures[0];
1769 1 : if (TREE_TYPE (_o1[0]) != type)
1770 : {
1771 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
1772 : }
1773 : else
1774 : _r1 = _o1[0];
1775 1 : res_op0 = _r1;
1776 : }
1777 1 : tree res_op1;
1778 1 : res_op1 = build_int_cst (integer_type_node,
1779 1 : wi::exact_log2 (wi::to_wide (captures[2])));
1780 1 : tree _r;
1781 1 : _r = fold_build2_loc (loc, RSHIFT_EXPR, type, res_op0, res_op1);
1782 1 : if (TREE_SIDE_EFFECTS (captures[1]))
1783 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1784 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 485, __FILE__, __LINE__, true);
1785 1 : return _r;
1786 : }
1787 : next_after_fail596:;
1788 : }
1789 : return NULL_TREE;
1790 : }
1791 :
1792 : tree
1793 529 : generic_simplify_331 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1794 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1795 : const enum tree_code ARG_UNUSED (mod))
1796 : {
1797 529 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1798 529 : if (!TYPE_UNSIGNED (type)
1799 : )
1800 : {
1801 20 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail603;
1802 20 : {
1803 20 : tree _r;
1804 20 : _r = build_zero_cst (type);
1805 20 : if (TREE_SIDE_EFFECTS (captures[0]))
1806 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
1807 20 : if (TREE_SIDE_EFFECTS (captures[1]))
1808 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
1809 20 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 492, __FILE__, __LINE__, true);
1810 20 : return _r;
1811 : }
1812 0 : next_after_fail603:;
1813 : }
1814 : return NULL_TREE;
1815 : }
1816 :
1817 : tree
1818 3 : generic_simplify_342 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1819 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1820 : const combined_fn ARG_UNUSED (TANH),
1821 : const combined_fn ARG_UNUSED (SINH),
1822 : const combined_fn ARG_UNUSED (COSH))
1823 : {
1824 3 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1825 3 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
1826 : )
1827 : {
1828 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail616;
1829 3 : {
1830 3 : tree res_op0;
1831 3 : res_op0 = build_one_cst (type);
1832 3 : tree res_op1;
1833 3 : {
1834 3 : tree _o1[1], _r1;
1835 3 : _o1[0] = captures[1];
1836 3 : _r1 = maybe_build_call_expr_loc (loc, COSH, TREE_TYPE (_o1[0]), 1, _o1[0]);
1837 3 : if (!_r1)
1838 0 : goto next_after_fail616;
1839 3 : res_op1 = _r1;
1840 : }
1841 3 : tree _r;
1842 3 : _r = fold_build2_loc (loc, RDIV_EXPR, type, res_op0, res_op1);
1843 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 505, __FILE__, __LINE__, true);
1844 3 : return _r;
1845 : }
1846 : next_after_fail616:;
1847 : }
1848 : return NULL_TREE;
1849 : }
1850 :
1851 : tree
1852 20 : generic_simplify_350 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1853 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1854 : const enum tree_code ARG_UNUSED (cmp),
1855 : const enum tree_code ARG_UNUSED (minmax))
1856 : {
1857 20 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1858 20 : {
1859 20 : tree_code code = minmax_from_comparison (cmp, captures[0], captures[1], captures[0], captures[3]);
1860 20 : if (code == MIN_EXPR
1861 : )
1862 : {
1863 1 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail627;
1864 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail627;
1865 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail627;
1866 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail627;
1867 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail627;
1868 1 : {
1869 1 : tree res_op0;
1870 1 : {
1871 1 : tree _o1[2], _r1;
1872 1 : _o1[0] = captures[0];
1873 1 : _o1[1] = captures[3];
1874 1 : _r1 = fold_build2_loc (loc, MIN_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1875 1 : res_op0 = _r1;
1876 : }
1877 1 : tree res_op1;
1878 1 : res_op1 = captures[2];
1879 1 : tree _r;
1880 1 : _r = fold_build2_loc (loc, minmax, type, res_op0, res_op1);
1881 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 516, __FILE__, __LINE__, true);
1882 1 : return _r;
1883 : }
1884 : next_after_fail627:;
1885 : }
1886 : else
1887 : {
1888 19 : if (code == MAX_EXPR
1889 : )
1890 : {
1891 3 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail628;
1892 3 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail628;
1893 3 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail628;
1894 3 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail628;
1895 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail628;
1896 3 : {
1897 3 : tree res_op0;
1898 3 : {
1899 3 : tree _o1[2], _r1;
1900 3 : _o1[0] = captures[0];
1901 3 : _o1[1] = captures[3];
1902 3 : _r1 = fold_build2_loc (loc, MAX_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1903 3 : res_op0 = _r1;
1904 : }
1905 3 : tree res_op1;
1906 3 : res_op1 = captures[2];
1907 3 : tree _r;
1908 3 : _r = fold_build2_loc (loc, minmax, type, res_op0, res_op1);
1909 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 517, __FILE__, __LINE__, true);
1910 3 : return _r;
1911 : }
1912 : next_after_fail628:;
1913 : }
1914 : }
1915 : }
1916 : return NULL_TREE;
1917 : }
1918 :
1919 : tree
1920 36 : generic_simplify_366 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1921 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
1922 : const enum tree_code ARG_UNUSED (op))
1923 : {
1924 36 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1925 36 : {
1926 36 : auto c1 = wi::to_wide (captures[1]);
1927 36 : auto c2 = wi::to_wide (captures[2]);
1928 36 : if (wi::popcount (c1) == 1
1929 120 : && ((op == PLUS_EXPR && wi::eq_p (wi::neg (c2), c1))
1930 48 : || (op == BIT_AND_EXPR && wi::eq_p (wi::bit_not (c2), c1)))
1931 : )
1932 : {
1933 24 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail646;
1934 24 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail646;
1935 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail646;
1936 24 : {
1937 24 : tree res_op0;
1938 24 : res_op0 = captures[0];
1939 24 : tree res_op1;
1940 24 : res_op1 = captures[1];
1941 24 : tree _r;
1942 24 : _r = fold_build2_loc (loc, BIT_XOR_EXPR, type, res_op0, res_op1);
1943 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 535, __FILE__, __LINE__, true);
1944 24 : return _r;
1945 : }
1946 12 : next_after_fail646:;
1947 : }
1948 : }
1949 12 : return NULL_TREE;
1950 : }
1951 :
1952 : tree
1953 1682 : generic_simplify_376 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1954 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
1955 : {
1956 1682 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
1957 1682 : if (INTEGRAL_TYPE_P (type)
1958 : )
1959 : {
1960 1682 : {
1961 1682 : tree itype = TREE_TYPE (captures[2]);
1962 1682 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail657;
1963 1682 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail657;
1964 1682 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail657;
1965 1682 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail657;
1966 1682 : {
1967 1682 : tree res_op0;
1968 1682 : {
1969 1682 : tree _o1[2], _r1;
1970 1682 : _o1[0] = captures[2];
1971 1682 : {
1972 1682 : tree _o2[1], _r2;
1973 1682 : _o2[0] = captures[0];
1974 1682 : if (TREE_TYPE (_o2[0]) != itype)
1975 : {
1976 1681 : _r2 = fold_build1_loc (loc, NOP_EXPR, itype, _o2[0]);
1977 : }
1978 : else
1979 : _r2 = _o2[0];
1980 1682 : _o1[1] = _r2;
1981 : }
1982 1682 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
1983 1682 : res_op0 = _r1;
1984 : }
1985 1682 : tree _r;
1986 1682 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
1987 1682 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 545, __FILE__, __LINE__, true);
1988 1682 : return _r;
1989 : }
1990 : next_after_fail657:;
1991 : }
1992 : }
1993 : return NULL_TREE;
1994 : }
1995 :
1996 : tree
1997 479543 : generic_simplify_385 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
1998 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
1999 : const enum tree_code ARG_UNUSED (op))
2000 : {
2001 479543 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2002 959085 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2003 958998 : && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
2004 297923 : && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[1]))
2005 959042 : && (CONSTANT_CLASS_P (captures[1]) || single_use (captures[0]))
2006 : )
2007 : {
2008 297850 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail670;
2009 297850 : {
2010 297850 : tree res_op0;
2011 297850 : res_op0 = captures[1];
2012 297850 : tree res_op1;
2013 297850 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
2014 297850 : tree _r;
2015 297850 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2016 297850 : if (TREE_SIDE_EFFECTS (captures[2]))
2017 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2018 297850 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 557, __FILE__, __LINE__, true);
2019 297850 : return _r;
2020 : }
2021 0 : next_after_fail670:;
2022 : }
2023 : return NULL_TREE;
2024 : }
2025 :
2026 : tree
2027 64 : generic_simplify_392 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2028 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2029 : const enum tree_code ARG_UNUSED (minmax),
2030 : const enum tree_code ARG_UNUSED (cmp),
2031 : const enum tree_code ARG_UNUSED (comb))
2032 : {
2033 64 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2034 64 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail678;
2035 64 : {
2036 64 : if (! tree_invariant_p (captures[2])) goto next_after_fail678;
2037 64 : tree res_op0;
2038 64 : {
2039 64 : tree _o1[2], _r1;
2040 64 : _o1[0] = captures[0];
2041 64 : _o1[1] = unshare_expr (captures[2]);
2042 64 : _r1 = fold_build2_loc (loc, cmp, type, _o1[0], _o1[1]);
2043 64 : res_op0 = _r1;
2044 : }
2045 64 : tree res_op1;
2046 64 : {
2047 64 : tree _o1[2], _r1;
2048 64 : _o1[0] = captures[1];
2049 64 : _o1[1] = captures[2];
2050 64 : _r1 = fold_build2_loc (loc, cmp, type, _o1[0], _o1[1]);
2051 64 : res_op1 = _r1;
2052 : }
2053 64 : tree _r;
2054 64 : _r = fold_build2_loc (loc, comb, type, res_op0, res_op1);
2055 64 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 565, __FILE__, __LINE__, true);
2056 : return _r;
2057 : }
2058 : next_after_fail678:;
2059 : return NULL_TREE;
2060 : }
2061 :
2062 : tree
2063 0 : generic_simplify_404 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2064 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2065 : const enum tree_code ARG_UNUSED (cmp),
2066 : const enum tree_code ARG_UNUSED (out))
2067 : {
2068 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2069 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))
2070 0 : && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))
2071 : )
2072 : {
2073 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail722;
2074 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail722;
2075 0 : {
2076 0 : tree res_op0;
2077 0 : {
2078 0 : tree _o1[1], _r1;
2079 0 : _o1[0] = captures[0];
2080 0 : _r1 = fold_build1_loc (loc, IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (_o1[0])), _o1[0]);
2081 0 : res_op0 = _r1;
2082 : }
2083 0 : tree res_op1;
2084 0 : res_op1 = build_zero_cst (TREE_TYPE (captures[1]));
2085 0 : tree _r;
2086 0 : _r = fold_build2_loc (loc, out, type, res_op0, res_op1);
2087 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 592, __FILE__, __LINE__, true);
2088 0 : return _r;
2089 : }
2090 : next_after_fail722:;
2091 : }
2092 : return NULL_TREE;
2093 : }
2094 :
2095 : tree
2096 0 : generic_simplify_410 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2097 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2098 : const enum tree_code ARG_UNUSED (op),
2099 : const enum tree_code ARG_UNUSED (cmp))
2100 : {
2101 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2102 0 : {
2103 0 : bool ok = true;
2104 0 : HOST_WIDE_INT val = 0;
2105 0 : if (!tree_fits_shwi_p (captures[3]))
2106 : ok = false;
2107 : else
2108 : {
2109 0 : val = tree_to_shwi (captures[3]);
2110 0 : if (op == GT_EXPR || op == LE_EXPR)
2111 : {
2112 0 : if (val == HOST_WIDE_INT_MAX)
2113 : ok = false;
2114 : else
2115 0 : val++;
2116 : }
2117 : }
2118 0 : HOST_WIDE_INT zero_val = tree_to_shwi (captures[2]);
2119 0 : tree type0 = TREE_TYPE (captures[1]);
2120 0 : int prec = TYPE_PRECISION (type0);
2121 0 : if (prec > MAX_FIXED_MODE_SIZE)
2122 0 : ok = false;
2123 0 : if (val <= 0
2124 : )
2125 : {
2126 0 : if (ok && zero_val >= val
2127 : )
2128 : {
2129 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail733;
2130 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail733;
2131 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail733;
2132 0 : {
2133 0 : tree _r;
2134 0 : _r = constant_boolean_node (cmp == EQ_EXPR, type);
2135 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2136 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2137 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 603, __FILE__, __LINE__, true);
2138 0 : return _r;
2139 : }
2140 : next_after_fail733:;
2141 : }
2142 : }
2143 : else
2144 : {
2145 0 : if (val >= prec
2146 : )
2147 : {
2148 0 : if (ok && zero_val < val
2149 : )
2150 : {
2151 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail734;
2152 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail734;
2153 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail734;
2154 0 : {
2155 0 : tree _r;
2156 0 : _r = constant_boolean_node (cmp != EQ_EXPR, type);
2157 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2158 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2159 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 604, __FILE__, __LINE__, true);
2160 0 : return _r;
2161 : }
2162 : next_after_fail734:;
2163 : }
2164 : }
2165 : else
2166 : {
2167 0 : if (ok && (zero_val < 0 || zero_val >= prec)
2168 : )
2169 : {
2170 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail735;
2171 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail735;
2172 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail735;
2173 0 : {
2174 0 : tree res_op0;
2175 0 : {
2176 0 : tree _o1[2], _r1;
2177 0 : _o1[0] = captures[1];
2178 0 : _o1[1] = wide_int_to_tree (type0,
2179 0 : wi::mask (val, false, prec));
2180 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2181 0 : res_op0 = _r1;
2182 : }
2183 0 : tree res_op1;
2184 0 : res_op1 = build_zero_cst (type0);
2185 0 : tree _r;
2186 0 : _r = fold_build2_loc (loc, cmp, type, res_op0, res_op1);
2187 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 605, __FILE__, __LINE__, true);
2188 0 : return _r;
2189 : }
2190 : next_after_fail735:;
2191 : }
2192 : }
2193 : }
2194 : }
2195 : return NULL_TREE;
2196 : }
2197 :
2198 : tree
2199 1690664 : generic_simplify_424 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2200 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2201 : const enum tree_code ARG_UNUSED (shift))
2202 : {
2203 1690664 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2204 1690664 : if ((
2205 :
2206 1690664 : || !sanitize_flags_p (SANITIZE_SHIFT_EXPONENT))
2207 1688714 : && (TYPE_UNSIGNED (type)
2208 405129 : || shift == LSHIFT_EXPR
2209 207033 : || tree_expr_nonnegative_p (captures[0]))
2210 3174360 : && wi::ges_p (wi::to_wide (uniform_integer_cst_p (captures[1])),
2211 3173138 : element_precision (type))
2212 : )
2213 : {
2214 1222 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail753;
2215 1222 : {
2216 1222 : tree _r;
2217 1222 : _r = build_zero_cst (type);
2218 1222 : if (TREE_SIDE_EFFECTS (captures[0]))
2219 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2220 1222 : if (TREE_SIDE_EFFECTS (captures[1]))
2221 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2222 1222 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 619, __FILE__, __LINE__, true);
2223 1222 : return _r;
2224 : }
2225 0 : next_after_fail753:;
2226 : }
2227 : return NULL_TREE;
2228 : }
2229 :
2230 : tree
2231 90 : generic_simplify_430 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2232 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2233 : const enum tree_code ARG_UNUSED (op))
2234 : {
2235 90 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2236 90 : {
2237 90 : unsigned int prec = element_precision (type);
2238 90 : if (wi::ge_p (wi::to_wide (captures[1]), 0, TYPE_SIGN (TREE_TYPE (captures[1])))
2239 90 : && wi::lt_p (wi::to_wide (captures[1]), prec, TYPE_SIGN (TREE_TYPE (captures[1])))
2240 90 : && wi::ge_p (wi::to_wide (captures[2]), 0, TYPE_SIGN (TREE_TYPE (captures[2])))
2241 180 : && wi::lt_p (wi::to_wide (captures[2]), prec, TYPE_SIGN (TREE_TYPE (captures[2])))
2242 : )
2243 : {
2244 90 : {
2245 90 : unsigned int low = (tree_to_uhwi (captures[1])
2246 90 : + tree_to_uhwi (captures[2]));
2247 90 : if (low >= prec
2248 : )
2249 : {
2250 25 : if (op == LROTATE_EXPR || op == RROTATE_EXPR
2251 : )
2252 : {
2253 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail759;
2254 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail759;
2255 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail759;
2256 0 : {
2257 0 : tree res_op0;
2258 0 : res_op0 = captures[0];
2259 0 : tree res_op1;
2260 0 : res_op1 = build_int_cst (TREE_TYPE (captures[1]), low % prec);
2261 0 : tree _r;
2262 0 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2263 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 624, __FILE__, __LINE__, true);
2264 90 : return _r;
2265 : }
2266 : next_after_fail759:;
2267 : }
2268 : else
2269 : {
2270 25 : if (TYPE_UNSIGNED (type) || op == LSHIFT_EXPR
2271 : )
2272 : {
2273 24 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail760;
2274 24 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail760;
2275 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail760;
2276 24 : {
2277 24 : tree _r;
2278 24 : _r = build_zero_cst (type);
2279 24 : if (TREE_SIDE_EFFECTS (captures[0]))
2280 14 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
2281 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 625, __FILE__, __LINE__, true);
2282 24 : return _r;
2283 : }
2284 : next_after_fail760:;
2285 : }
2286 : else
2287 : {
2288 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail761;
2289 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail761;
2290 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail761;
2291 1 : {
2292 1 : tree res_op0;
2293 1 : res_op0 = captures[0];
2294 1 : tree res_op1;
2295 1 : res_op1 = build_int_cst (TREE_TYPE (captures[1]), prec - 1);
2296 1 : tree _r;
2297 1 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2298 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 626, __FILE__, __LINE__, true);
2299 1 : return _r;
2300 : }
2301 : next_after_fail761:;
2302 : }
2303 : }
2304 : }
2305 : else
2306 : {
2307 65 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail762;
2308 65 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail762;
2309 65 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail762;
2310 65 : {
2311 65 : tree res_op0;
2312 65 : res_op0 = captures[0];
2313 65 : tree res_op1;
2314 65 : res_op1 = build_int_cst (TREE_TYPE (captures[1]), low);
2315 65 : tree _r;
2316 65 : _r = fold_build2_loc (loc, op, type, res_op0, res_op1);
2317 65 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 627, __FILE__, __LINE__, true);
2318 65 : return _r;
2319 : }
2320 : next_after_fail762:;
2321 : }
2322 : }
2323 : }
2324 : }
2325 0 : return NULL_TREE;
2326 : }
2327 :
2328 : tree
2329 0 : generic_simplify_446 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2330 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
2331 : const combined_fn ARG_UNUSED (coss),
2332 : const combined_fn ARG_UNUSED (atans),
2333 : const combined_fn ARG_UNUSED (sqrts),
2334 : const combined_fn ARG_UNUSED (copysigns))
2335 : {
2336 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2337 0 : {
2338 0 : REAL_VALUE_TYPE r_cst;
2339 0 : build_sinatan_real (&r_cst, type);
2340 0 : tree t_cst = build_real (type, r_cst);
2341 0 : tree t_one = build_one_cst (type);
2342 0 : tree t_zero = build_zero_cst (type);
2343 0 : if (SCALAR_FLOAT_TYPE_P (type)
2344 : )
2345 : {
2346 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail796;
2347 0 : {
2348 0 : if (! tree_invariant_p (captures[1])) goto next_after_fail796;
2349 0 : tree res_op0;
2350 0 : {
2351 0 : tree _o1[2], _r1;
2352 0 : {
2353 0 : tree _o2[1], _r2;
2354 0 : _o2[0] = unshare_expr (captures[1]);
2355 0 : _r2 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
2356 0 : _o1[0] = _r2;
2357 : }
2358 0 : _o1[1] = t_cst;
2359 0 : _r1 = fold_build2_loc (loc, LT_EXPR, boolean_type_node, _o1[0], _o1[1]);
2360 0 : res_op0 = _r1;
2361 : }
2362 0 : tree res_op1;
2363 0 : {
2364 0 : tree _o1[2], _r1;
2365 0 : _o1[0] = t_one;
2366 0 : {
2367 0 : tree _o2[1], _r2;
2368 0 : {
2369 0 : tree _o3[2], _r3;
2370 0 : {
2371 0 : tree _o4[2], _r4;
2372 0 : _o4[0] = unshare_expr (captures[1]);
2373 0 : _o4[1] = unshare_expr (captures[1]);
2374 0 : _r4 = fold_build2_loc (loc, MULT_EXPR, TREE_TYPE (_o4[0]), _o4[0], _o4[1]);
2375 0 : _o3[0] = _r4;
2376 : }
2377 0 : _o3[1] = t_one;
2378 0 : _r3 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o3[0]), _o3[0], _o3[1]);
2379 0 : _o2[0] = _r3;
2380 : }
2381 0 : _r2 = maybe_build_call_expr_loc (loc, sqrts, TREE_TYPE (_o2[0]), 1, _o2[0]);
2382 0 : if (!_r2)
2383 0 : goto next_after_fail796;
2384 0 : _o1[1] = _r2;
2385 : }
2386 0 : _r1 = fold_build2_loc (loc, RDIV_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2387 0 : res_op1 = _r1;
2388 : }
2389 0 : tree res_op2;
2390 0 : {
2391 0 : tree _o1[2], _r1;
2392 0 : _o1[0] = t_zero;
2393 0 : _o1[1] = captures[1];
2394 0 : _r1 = maybe_build_call_expr_loc (loc, copysigns, TREE_TYPE (_o1[0]), 2, _o1[0], _o1[1]);
2395 0 : if (!_r1)
2396 0 : goto next_after_fail796;
2397 0 : res_op2 = _r1;
2398 : }
2399 0 : tree _r;
2400 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
2401 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 648, __FILE__, __LINE__, true);
2402 0 : return _r;
2403 : }
2404 0 : next_after_fail796:;
2405 : }
2406 : }
2407 0 : return NULL_TREE;
2408 : }
2409 :
2410 : tree
2411 0 : generic_simplify_452 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2412 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2413 : {
2414 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2415 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail802;
2416 0 : {
2417 0 : tree _r;
2418 0 : _r = captures[0];
2419 0 : if (TREE_SIDE_EFFECTS (captures[1]))
2420 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2421 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 654, __FILE__, __LINE__, true);
2422 : return _r;
2423 : }
2424 0 : next_after_fail802:;
2425 0 : return NULL_TREE;
2426 : }
2427 :
2428 : tree
2429 0 : generic_simplify_456 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2430 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2431 : const combined_fn ARG_UNUSED (HYPOT))
2432 : {
2433 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2434 0 : if (flag_unsafe_math_optimizations && canonicalize_math_p ()
2435 : )
2436 : {
2437 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail806;
2438 0 : {
2439 0 : tree res_op0;
2440 0 : {
2441 0 : tree _o1[1], _r1;
2442 0 : _o1[0] = captures[0];
2443 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
2444 0 : res_op0 = _r1;
2445 : }
2446 0 : tree res_op1;
2447 0 : res_op1 = build_real_truncate (type, dconst_sqrt2 ());
2448 0 : tree _r;
2449 0 : _r = fold_build2_loc (loc, MULT_EXPR, type, res_op0, res_op1);
2450 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 658, __FILE__, __LINE__, true);
2451 0 : return _r;
2452 : }
2453 0 : next_after_fail806:;
2454 : }
2455 : return NULL_TREE;
2456 : }
2457 :
2458 : tree
2459 126893 : generic_simplify_462 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2460 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2461 : {
2462 126893 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2463 126893 : {
2464 126893 : bool wascmp;
2465 126893 : if (bitwise_inverted_equal_p (captures[0], captures[1], wascmp)
2466 126893 : && (!wascmp || element_precision (type) == 1)
2467 : )
2468 : {
2469 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail812;
2470 1 : {
2471 1 : tree res_op0;
2472 1 : res_op0 = captures[0];
2473 1 : tree res_op1;
2474 1 : res_op1 = captures[2];
2475 1 : tree _r;
2476 1 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2477 1 : if (TREE_SIDE_EFFECTS (captures[1]))
2478 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
2479 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 664, __FILE__, __LINE__, true);
2480 1 : return _r;
2481 : }
2482 0 : next_after_fail812:;
2483 : }
2484 : }
2485 126892 : return NULL_TREE;
2486 : }
2487 :
2488 : tree
2489 15 : generic_simplify_468 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2490 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2491 : const enum tree_code ARG_UNUSED (bitop))
2492 : {
2493 15 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2494 15 : {
2495 15 : tree pmop[2];
2496 15 : tree utype = fold_bit_and_mask (TREE_TYPE (captures[1]), captures[4], NEGATE_EXPR, captures[1],
2497 : bitop, captures[2], captures[3], NULL_TREE, ERROR_MARK,
2498 : NULL_TREE, NULL_TREE, pmop);
2499 15 : if (utype
2500 : )
2501 : {
2502 7 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail818;
2503 7 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail818;
2504 7 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail818;
2505 7 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail818;
2506 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail818;
2507 7 : {
2508 7 : tree res_op0;
2509 7 : {
2510 7 : tree _o1[2], _r1;
2511 7 : {
2512 7 : tree _o2[1], _r2;
2513 7 : {
2514 7 : tree _o3[1], _r3;
2515 7 : _o3[0] = pmop[0];
2516 7 : if (TREE_TYPE (_o3[0]) != utype)
2517 : {
2518 4 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2519 : }
2520 : else
2521 : _r3 = _o3[0];
2522 7 : _o2[0] = _r3;
2523 : }
2524 7 : _r2 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
2525 7 : _o1[0] = _r2;
2526 : }
2527 7 : {
2528 7 : tree _o2[1], _r2;
2529 7 : _o2[0] = captures[4];
2530 7 : if (TREE_TYPE (_o2[0]) != utype)
2531 : {
2532 4 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2533 : }
2534 : else
2535 : _r2 = _o2[0];
2536 7 : _o1[1] = _r2;
2537 : }
2538 7 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2539 7 : res_op0 = _r1;
2540 : }
2541 7 : tree _r;
2542 7 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2543 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 669, __FILE__, __LINE__, true);
2544 7 : return _r;
2545 : }
2546 8 : next_after_fail818:;
2547 : }
2548 : }
2549 8 : return NULL_TREE;
2550 : }
2551 :
2552 : tree
2553 0 : generic_simplify_483 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2554 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2555 : const enum tree_code ARG_UNUSED (eqne))
2556 : {
2557 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2558 0 : if (eqne == EQ_EXPR
2559 : )
2560 : {
2561 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail853;
2562 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail853;
2563 0 : {
2564 0 : tree _r;
2565 0 : _r = constant_boolean_node (false, type);
2566 0 : if (TREE_SIDE_EFFECTS (captures[2]))
2567 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
2568 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 678, __FILE__, __LINE__, true);
2569 0 : return _r;
2570 : }
2571 : next_after_fail853:;
2572 : }
2573 : else
2574 : {
2575 0 : if (eqne == NE_EXPR
2576 : )
2577 : {
2578 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail854;
2579 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail854;
2580 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail854;
2581 0 : {
2582 0 : tree _r;
2583 0 : _r = captures[0];
2584 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 679, __FILE__, __LINE__, true);
2585 0 : return _r;
2586 : }
2587 : next_after_fail854:;
2588 : }
2589 : }
2590 : return NULL_TREE;
2591 : }
2592 :
2593 : tree
2594 0 : generic_simplify_492 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2595 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2596 : {
2597 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2598 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2599 0 : && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))
2600 : )
2601 : {
2602 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail876;
2603 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail876;
2604 0 : {
2605 0 : tree res_op0;
2606 0 : res_op0 = captures[3];
2607 0 : tree res_op1;
2608 0 : {
2609 0 : tree _o1[2], _r1;
2610 0 : _o1[0] = captures[1];
2611 0 : _o1[1] = build_int_cst (TREE_TYPE (captures[1]), 1);
2612 0 : _r1 = fold_build2_loc (loc, MINUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2613 0 : res_op1 = _r1;
2614 : }
2615 0 : tree _r;
2616 0 : _r = fold_build2_loc (loc, GT_EXPR, type, res_op0, res_op1);
2617 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 698, __FILE__, __LINE__, true);
2618 0 : return _r;
2619 : }
2620 : next_after_fail876:;
2621 : }
2622 : return NULL_TREE;
2623 : }
2624 :
2625 : tree
2626 234 : generic_simplify_498 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2627 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2628 : const combined_fn ARG_UNUSED (bswap))
2629 : {
2630 234 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2631 234 : if (BITS_PER_UNIT == 8
2632 234 : && tree_fits_uhwi_p (captures[3])
2633 234 : && tree_fits_uhwi_p (captures[4])
2634 : )
2635 : {
2636 234 : {
2637 234 : unsigned HOST_WIDE_INT prec = TYPE_PRECISION (TREE_TYPE (captures[1]));
2638 234 : unsigned HOST_WIDE_INT bits = tree_to_uhwi (captures[3]);
2639 234 : unsigned HOST_WIDE_INT mask = tree_to_uhwi (captures[4]);
2640 234 : unsigned HOST_WIDE_INT lo = bits & 7;
2641 234 : unsigned HOST_WIDE_INT hi = bits - lo;
2642 234 : if (bits < prec
2643 234 : && mask < (256u>>lo)
2644 468 : && bits < TYPE_PRECISION (TREE_TYPE(captures[0]))
2645 : )
2646 : {
2647 234 : {
2648 234 : unsigned HOST_WIDE_INT ns = (prec - (hi + 8)) + lo;
2649 234 : if (ns == 0
2650 : )
2651 : {
2652 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail890;
2653 1 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail890;
2654 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail890;
2655 1 : {
2656 1 : tree res_op0;
2657 1 : {
2658 1 : tree _o1[1], _r1;
2659 1 : _o1[0] = captures[2];
2660 1 : if (TREE_TYPE (_o1[0]) != type)
2661 : {
2662 1 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2663 : }
2664 : else
2665 : _r1 = _o1[0];
2666 1 : res_op0 = _r1;
2667 : }
2668 1 : tree res_op1;
2669 1 : res_op1 = captures[4];
2670 1 : tree _r;
2671 1 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2672 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 703, __FILE__, __LINE__, true);
2673 1 : return _r;
2674 : }
2675 : next_after_fail890:;
2676 : }
2677 : else
2678 : {
2679 233 : {
2680 233 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
2681 233 : tree nst = build_int_cst (integer_type_node, ns);
2682 233 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail891;
2683 233 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail891;
2684 233 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail891;
2685 233 : {
2686 233 : tree res_op0;
2687 233 : {
2688 233 : tree _o1[1], _r1;
2689 233 : {
2690 233 : tree _o2[2], _r2;
2691 233 : {
2692 233 : tree _o3[1], _r3;
2693 233 : _o3[0] = captures[2];
2694 233 : if (TREE_TYPE (_o3[0]) != utype)
2695 : {
2696 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2697 : }
2698 : else
2699 : _r3 = _o3[0];
2700 233 : _o2[0] = _r3;
2701 : }
2702 233 : _o2[1] = nst;
2703 233 : _r2 = fold_build2_loc (loc, RSHIFT_EXPR, utype, _o2[0], _o2[1]);
2704 233 : _o1[0] = _r2;
2705 : }
2706 233 : if (TREE_TYPE (_o1[0]) != type)
2707 : {
2708 101 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
2709 : }
2710 : else
2711 : _r1 = _o1[0];
2712 233 : res_op0 = _r1;
2713 : }
2714 233 : tree res_op1;
2715 233 : res_op1 = captures[4];
2716 233 : tree _r;
2717 233 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
2718 233 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 704, __FILE__, __LINE__, true);
2719 233 : return _r;
2720 : }
2721 : next_after_fail891:;
2722 : }
2723 : }
2724 : }
2725 : }
2726 : }
2727 : }
2728 : return NULL_TREE;
2729 : }
2730 :
2731 : tree
2732 0 : generic_simplify_500 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2733 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2734 : {
2735 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2736 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail893;
2737 0 : {
2738 0 : tree res_op0;
2739 0 : res_op0 = captures[0];
2740 0 : tree res_op1;
2741 0 : res_op1 = captures[1];
2742 0 : tree _r;
2743 0 : _r = fold_build2_loc (loc, LTGT_EXPR, type, res_op0, res_op1);
2744 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 706, __FILE__, __LINE__, true);
2745 : return _r;
2746 : }
2747 0 : next_after_fail893:;
2748 0 : return NULL_TREE;
2749 : }
2750 :
2751 : tree
2752 0 : generic_simplify_501 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2753 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures))
2754 : {
2755 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2756 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail894;
2757 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail894;
2758 0 : {
2759 0 : tree _r;
2760 0 : _r = captures[1];
2761 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 707, __FILE__, __LINE__, true);
2762 : return _r;
2763 : }
2764 : next_after_fail894:;
2765 : return NULL_TREE;
2766 : }
2767 :
2768 : tree
2769 424388 : generic_simplify_503 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2770 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2771 : const enum tree_code ARG_UNUSED (op))
2772 : {
2773 424388 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2774 848776 : if (INTEGRAL_TYPE_P (type)
2775 424388 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
2776 68049 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
2777 68049 : && type_has_mode_precision_p (TREE_TYPE (captures[2]))
2778 68049 : && type_has_mode_precision_p (TREE_TYPE (captures[4]))
2779 68049 : && type_has_mode_precision_p (type)
2780 68049 : && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2]))
2781 33 : && types_match (captures[2], captures[4])
2782 33 : && (tree_int_cst_min_precision (captures[5], TYPE_SIGN (TREE_TYPE (captures[2])))
2783 33 : <= TYPE_PRECISION (TREE_TYPE (captures[2])))
2784 424415 : && (wi::to_wide (captures[5])
2785 424442 : & wi::mask (TYPE_PRECISION (TREE_TYPE (captures[2])),
2786 424442 : true, TYPE_PRECISION (type))) == 0
2787 : )
2788 : {
2789 25 : if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))
2790 : )
2791 : {
2792 12 : {
2793 12 : tree ntype = TREE_TYPE (captures[2]);
2794 12 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail896;
2795 12 : {
2796 12 : tree res_op0;
2797 12 : {
2798 12 : tree _o1[2], _r1;
2799 12 : {
2800 12 : tree _o2[2], _r2;
2801 12 : _o2[0] = captures[2];
2802 12 : _o2[1] = captures[4];
2803 12 : _r2 = fold_build2_loc (loc, op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
2804 12 : _o1[0] = _r2;
2805 : }
2806 12 : {
2807 12 : tree _o2[1], _r2;
2808 12 : _o2[0] = captures[5];
2809 12 : if (TREE_TYPE (_o2[0]) != ntype)
2810 : {
2811 12 : _r2 = fold_build1_loc (loc, NOP_EXPR, ntype, _o2[0]);
2812 : }
2813 : else
2814 : _r2 = _o2[0];
2815 12 : _o1[1] = _r2;
2816 : }
2817 12 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2818 12 : res_op0 = _r1;
2819 : }
2820 12 : tree _r;
2821 12 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2822 12 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 708, __FILE__, __LINE__, true);
2823 12 : return _r;
2824 : }
2825 0 : next_after_fail896:;
2826 : }
2827 : }
2828 : else
2829 : {
2830 13 : {
2831 13 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
2832 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail897;
2833 13 : {
2834 13 : tree res_op0;
2835 13 : {
2836 13 : tree _o1[2], _r1;
2837 13 : {
2838 13 : tree _o2[2], _r2;
2839 13 : {
2840 13 : tree _o3[1], _r3;
2841 13 : _o3[0] = captures[2];
2842 13 : if (TREE_TYPE (_o3[0]) != utype)
2843 : {
2844 13 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2845 : }
2846 : else
2847 : _r3 = _o3[0];
2848 13 : _o2[0] = _r3;
2849 : }
2850 13 : {
2851 13 : tree _o3[1], _r3;
2852 13 : _o3[0] = captures[4];
2853 13 : if (TREE_TYPE (_o3[0]) != utype)
2854 : {
2855 13 : _r3 = fold_build1_loc (loc, NOP_EXPR, utype, _o3[0]);
2856 : }
2857 : else
2858 : _r3 = _o3[0];
2859 13 : _o2[1] = _r3;
2860 : }
2861 13 : _r2 = fold_build2_loc (loc, op, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
2862 13 : _o1[0] = _r2;
2863 : }
2864 13 : {
2865 13 : tree _o2[1], _r2;
2866 13 : _o2[0] = captures[5];
2867 13 : if (TREE_TYPE (_o2[0]) != utype)
2868 : {
2869 13 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
2870 : }
2871 : else
2872 : _r2 = _o2[0];
2873 13 : _o1[1] = _r2;
2874 : }
2875 13 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2876 13 : res_op0 = _r1;
2877 : }
2878 13 : tree _r;
2879 13 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
2880 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 709, __FILE__, __LINE__, true);
2881 13 : return _r;
2882 : }
2883 0 : next_after_fail897:;
2884 : }
2885 : }
2886 : }
2887 : return NULL_TREE;
2888 : }
2889 :
2890 : tree
2891 0 : generic_simplify_533 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2892 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2893 : const enum tree_code ARG_UNUSED (minmax))
2894 : {
2895 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2896 0 : if (INTEGRAL_TYPE_P (type)
2897 0 : && TYPE_OVERFLOW_UNDEFINED (type)
2898 0 : && !TYPE_OVERFLOW_SANITIZED (type)
2899 : )
2900 : {
2901 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail929;
2902 0 : {
2903 0 : tree res_op0;
2904 0 : {
2905 0 : tree _o1[2], _r1;
2906 0 : _o1[0] = captures[1];
2907 0 : _o1[1] = captures[4];
2908 0 : _r1 = fold_build2_loc (loc, minmax, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2909 0 : res_op0 = _r1;
2910 : }
2911 0 : tree res_op1;
2912 0 : res_op1 = captures[2];
2913 0 : tree _r;
2914 0 : _r = fold_build2_loc (loc, MINUS_EXPR, type, res_op0, res_op1);
2915 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 738, __FILE__, __LINE__, true);
2916 0 : return _r;
2917 : }
2918 0 : next_after_fail929:;
2919 : }
2920 : return NULL_TREE;
2921 : }
2922 :
2923 : tree
2924 2 : generic_simplify_542 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2925 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2926 : const combined_fn ARG_UNUSED (func))
2927 : {
2928 2 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2929 2 : if (types_match (captures[1], captures[3])
2930 2 : && (!sanitize_flags_p (SANITIZE_BUILTIN)
2931 0 : || (cfun && (cfun->curr_properties & PROP_ssa) != 0))
2932 : )
2933 : {
2934 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail952;
2935 2 : {
2936 2 : tree res_op0;
2937 2 : {
2938 2 : tree _o1[2], _r1;
2939 2 : _o1[0] = captures[1];
2940 2 : _o1[1] = captures[3];
2941 2 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
2942 2 : res_op0 = _r1;
2943 : }
2944 2 : tree _r;
2945 2 : _r = maybe_build_call_expr_loc (loc, func, type, 1, res_op0);
2946 2 : if (!_r)
2947 0 : goto next_after_fail952;
2948 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 749, __FILE__, __LINE__, true);
2949 2 : return _r;
2950 : }
2951 : next_after_fail952:;
2952 : }
2953 : return NULL_TREE;
2954 : }
2955 :
2956 : tree
2957 0 : generic_simplify_549 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2958 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
2959 : const combined_fn ARG_UNUSED (FMAX_ALL))
2960 : {
2961 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2962 0 : if (flag_finite_math_only
2963 : )
2964 : {
2965 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail959;
2966 0 : {
2967 0 : tree res_op0;
2968 0 : res_op0 = captures[0];
2969 0 : tree res_op1;
2970 0 : res_op1 = captures[1];
2971 0 : tree _r;
2972 0 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
2973 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 756, __FILE__, __LINE__, true);
2974 0 : return _r;
2975 : }
2976 0 : next_after_fail959:;
2977 : }
2978 : return NULL_TREE;
2979 : }
2980 :
2981 : tree
2982 0 : generic_simplify_557 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
2983 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures),
2984 : const combined_fn ARG_UNUSED (cond_op))
2985 : {
2986 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
2987 0 : {
2988 0 : tree op_type = TREE_TYPE (captures[4]);
2989 0 : if (element_precision (type) == element_precision (op_type)
2990 : )
2991 : {
2992 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail967;
2993 0 : {
2994 0 : tree res_op0;
2995 0 : {
2996 0 : tree _o1[5], _r1;
2997 0 : _o1[0] = captures[0];
2998 0 : _o1[1] = captures[1];
2999 0 : _o1[2] = captures[2];
3000 0 : _o1[3] = captures[3];
3001 0 : {
3002 0 : tree _o2[1], _r2;
3003 0 : _o2[0] = captures[5];
3004 0 : if (TREE_TYPE (_o2[0]) != op_type)
3005 : {
3006 0 : _r2 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, op_type, _o2[0]);
3007 : }
3008 : else
3009 : _r2 = _o2[0];
3010 0 : _o1[4] = _r2;
3011 : }
3012 0 : _r1 = maybe_build_call_expr_loc (loc, cond_op, TREE_TYPE (_o1[1]), 5, _o1[0], _o1[1], _o1[2], _o1[3], _o1[4]);
3013 0 : if (!_r1)
3014 0 : goto next_after_fail967;
3015 0 : res_op0 = _r1;
3016 : }
3017 0 : tree _r;
3018 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3019 0 : if (TREE_SIDE_EFFECTS (captures[4]))
3020 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
3021 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 759, __FILE__, __LINE__, true);
3022 0 : return _r;
3023 : }
3024 : next_after_fail967:;
3025 : }
3026 : }
3027 : return NULL_TREE;
3028 : }
3029 :
3030 : tree
3031 0 : generic_simplify_566 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3032 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree *ARG_UNUSED (captures),
3033 : const enum tree_code ARG_UNUSED (rotate),
3034 : const enum tree_code ARG_UNUSED (orotate))
3035 : {
3036 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3037 0 : {
3038 0 : auto prec = element_precision (TREE_TYPE (captures[0]));
3039 0 : if (prec == wi::to_wide (captures[2])
3040 : )
3041 : {
3042 0 : if (expr_not_equal_to (captures[3], wi::uhwi (prec,
3043 0 : TYPE_PRECISION (TREE_TYPE (captures[3]))),
3044 : gimple_match_ctx (captures[1]))
3045 : )
3046 : {
3047 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail976;
3048 0 : {
3049 0 : tree res_op0;
3050 0 : res_op0 = captures[0];
3051 0 : tree res_op1;
3052 0 : res_op1 = captures[3];
3053 0 : tree _r;
3054 0 : _r = fold_build2_loc (loc, orotate, type, res_op0, res_op1);
3055 0 : if (TREE_SIDE_EFFECTS (captures[2]))
3056 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
3057 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 768, __FILE__, __LINE__, true);
3058 0 : return _r;
3059 : }
3060 0 : next_after_fail976:;
3061 : }
3062 : else
3063 : {
3064 0 : if (single_use (captures[1])
3065 0 : && pow2p_hwi (prec)
3066 0 : && cfun
3067 0 : && (fold_before_rtl_expansion_p ()
3068 0 : || !flag_tree_vrp
3069 0 : || optimize_debug)
3070 : )
3071 : {
3072 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail977;
3073 0 : {
3074 0 : tree res_op0;
3075 0 : res_op0 = captures[0];
3076 0 : tree res_op1;
3077 0 : {
3078 0 : tree _o1[2], _r1;
3079 0 : _o1[0] = captures[3];
3080 0 : _o1[1] = build_int_cst (TREE_TYPE (captures[3]), prec - 1);
3081 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3082 0 : res_op1 = _r1;
3083 : }
3084 0 : tree _r;
3085 0 : _r = fold_build2_loc (loc, orotate, type, res_op0, res_op1);
3086 0 : if (TREE_SIDE_EFFECTS (captures[2]))
3087 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
3088 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 769, __FILE__, __LINE__, true);
3089 0 : return _r;
3090 : }
3091 0 : next_after_fail977:;
3092 : }
3093 : }
3094 : }
3095 : }
3096 0 : return NULL_TREE;
3097 : }
3098 :
3099 : tree
3100 0 : generic_simplify_587 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3101 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3102 : const combined_fn ARG_UNUSED (floors),
3103 : const combined_fn ARG_UNUSED (truncs))
3104 : {
3105 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3106 0 : if (canonicalize_math_p ()
3107 : )
3108 : {
3109 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1000;
3110 0 : {
3111 0 : tree res_op0;
3112 0 : res_op0 = captures[0];
3113 0 : tree _r;
3114 0 : _r = maybe_build_call_expr_loc (loc, truncs, type, 1, res_op0);
3115 0 : if (!_r)
3116 0 : goto next_after_fail1000;
3117 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 792, __FILE__, __LINE__, true);
3118 0 : return _r;
3119 : }
3120 : next_after_fail1000:;
3121 : }
3122 : return NULL_TREE;
3123 : }
3124 :
3125 : tree
3126 0 : generic_simplify_594 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3127 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3128 : const combined_fn ARG_UNUSED (ifn),
3129 : const combined_fn ARG_UNUSED (lfn),
3130 : const combined_fn ARG_UNUSED (llfn))
3131 : {
3132 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3133 0 : if (canonicalize_math_p ()
3134 : )
3135 : {
3136 0 : if (TYPE_PRECISION (integer_type_node)
3137 0 : == TYPE_PRECISION (long_integer_type_node)
3138 : )
3139 : {
3140 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1007;
3141 0 : {
3142 0 : tree res_op0;
3143 0 : res_op0 = captures[0];
3144 0 : tree _r;
3145 0 : _r = maybe_build_call_expr_loc (loc, lfn, type, 1, res_op0);
3146 0 : if (!_r)
3147 0 : goto next_after_fail1007;
3148 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 799, __FILE__, __LINE__, true);
3149 0 : return _r;
3150 : }
3151 : next_after_fail1007:;
3152 : }
3153 : }
3154 : return NULL_TREE;
3155 : }
3156 :
3157 : tree
3158 0 : generic_simplify_605 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3159 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree *ARG_UNUSED (captures))
3160 : {
3161 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3162 0 : if (canonicalize_math_after_vectorization_p ()
3163 : )
3164 : {
3165 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1018;
3166 : {
3167 : tree res_op0;
3168 : res_op0 = captures[0];
3169 : tree res_op1;
3170 : res_op1 = captures[1];
3171 : tree res_op2;
3172 : res_op2 = captures[2];
3173 : tree _r;
3174 : _r = maybe_build_call_expr_loc (loc, CFN_FMA, type, 3, res_op0, res_op1, res_op2);
3175 : if (!_r)
3176 : goto next_after_fail1018;
3177 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 810, __FILE__, __LINE__, true);
3178 : return _r;
3179 : }
3180 0 : next_after_fail1018:;
3181 : }
3182 0 : return NULL_TREE;
3183 : }
3184 :
3185 : tree
3186 0 : generic_simplify_614 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3187 : tree ARG_UNUSED (_p0), tree ARG_UNUSED (_p1), tree ARG_UNUSED (_p2), tree ARG_UNUSED (_p3), tree ARG_UNUSED (_p4), tree *ARG_UNUSED (captures))
3188 : {
3189 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3190 0 : if (canonicalize_math_after_vectorization_p ()
3191 : )
3192 : {
3193 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1027;
3194 : {
3195 : tree res_op0;
3196 : res_op0 = captures[0];
3197 : tree res_op1;
3198 : res_op1 = captures[1];
3199 : tree res_op2;
3200 : res_op2 = captures[2];
3201 : tree res_op3;
3202 : res_op3 = captures[3];
3203 : tree res_op4;
3204 : res_op4 = captures[4];
3205 : tree _r;
3206 : _r = maybe_build_call_expr_loc (loc, CFN_COND_FMS, type, 5, res_op0, res_op1, res_op2, res_op3, res_op4);
3207 : if (!_r)
3208 : goto next_after_fail1027;
3209 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 819, __FILE__, __LINE__, true);
3210 : return _r;
3211 : }
3212 0 : next_after_fail1027:;
3213 : }
3214 0 : return NULL_TREE;
3215 : }
3216 :
3217 : tree
3218 0 : generic_simplify_623 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3219 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3220 : const combined_fn ARG_UNUSED (POPCOUNT))
3221 : {
3222 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3223 0 : {
3224 0 : tree type0 = TREE_TYPE (captures[1]);
3225 0 : tree type2 = TREE_TYPE (captures[0]);
3226 0 : if (INTEGRAL_TYPE_P (type0)
3227 0 : && TYPE_PRECISION (type2) <= TYPE_PRECISION (type0)
3228 : )
3229 : {
3230 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1036;
3231 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1036;
3232 0 : {
3233 0 : tree res_op0;
3234 0 : {
3235 0 : tree _o1[2], _r1;
3236 0 : {
3237 0 : tree _o2[1], _r2;
3238 0 : _o2[0] = captures[2];
3239 0 : if (TREE_TYPE (_o2[0]) != type2)
3240 : {
3241 0 : _r2 = fold_build1_loc (loc, NOP_EXPR, type2, _o2[0]);
3242 : }
3243 : else
3244 : _r2 = _o2[0];
3245 0 : _o1[0] = _r2;
3246 : }
3247 0 : _o1[1] = build_zero_cst (type2);
3248 0 : _r1 = fold_build2_loc (loc, NE_EXPR, boolean_type_node, _o1[0], _o1[1]);
3249 0 : res_op0 = _r1;
3250 : }
3251 0 : tree _r;
3252 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3253 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 825, __FILE__, __LINE__, true);
3254 0 : return _r;
3255 : }
3256 : next_after_fail1036:;
3257 : }
3258 : }
3259 : return NULL_TREE;
3260 : }
3261 :
3262 : tree
3263 0 : generic_simplify_631 (location_t ARG_UNUSED (loc), const tree ARG_UNUSED (type),
3264 : tree ARG_UNUSED (_p0), tree *ARG_UNUSED (captures),
3265 : const enum tree_code ARG_UNUSED (rot),
3266 : const combined_fn ARG_UNUSED (parity))
3267 : {
3268 0 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3269 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3270 0 : && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
3271 0 : && (
3272 :
3273 0 : || !TREE_SIDE_EFFECTS (captures[3]))
3274 0 : && TYPE_PRECISION (TREE_TYPE (captures[0]))
3275 0 : >= TYPE_PRECISION (TREE_TYPE (captures[1]))
3276 : )
3277 : {
3278 0 : {
3279 0 : tree type0 = TREE_TYPE (captures[0]);
3280 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1046;
3281 0 : {
3282 0 : tree res_op0;
3283 0 : {
3284 0 : tree _o1[1], _r1;
3285 0 : _o1[0] = captures[2];
3286 0 : if (TREE_TYPE (_o1[0]) != type0)
3287 : {
3288 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, type0, _o1[0]);
3289 : }
3290 : else
3291 : _r1 = _o1[0];
3292 0 : res_op0 = _r1;
3293 : }
3294 0 : tree _r;
3295 0 : _r = maybe_build_call_expr_loc (loc, parity, type, 1, res_op0);
3296 0 : if (!_r)
3297 0 : goto next_after_fail1046;
3298 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3299 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3300 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 831, __FILE__, __LINE__, true);
3301 0 : return _r;
3302 : }
3303 : next_after_fail1046:;
3304 : }
3305 : }
3306 : return NULL_TREE;
3307 : }
3308 :
3309 : tree
3310 479807981 : generic_simplify_VIEW_CONVERT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0)
3311 : {
3312 479807981 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3313 479807981 : {
3314 479807981 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3315 959615962 : if ((
3316 :
3317 : && useless_type_conversion_p (type, TREE_TYPE (captures[0])))
3318 : || (
3319 : 1
3320 479807981 : && type == TREE_TYPE (captures[0]))
3321 : )
3322 : {
3323 217086727 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1122;
3324 217086727 : {
3325 217086727 : tree _r;
3326 217086727 : _r = captures[0];
3327 217086727 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 847, __FILE__, __LINE__, true);
3328 217086727 : return _r;
3329 : }
3330 0 : next_after_fail1122:;
3331 : }
3332 : }
3333 262721254 : switch (TREE_CODE (_p0))
3334 : {
3335 28931971 : case VIEW_CONVERT_EXPR:
3336 28931971 : {
3337 28931971 : tree _q20 = TREE_OPERAND (_p0, 0);
3338 28931971 : {
3339 28931971 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
3340 28931971 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1123;
3341 28931971 : {
3342 28931971 : tree res_op0;
3343 28931971 : res_op0 = captures[0];
3344 28931971 : tree _r;
3345 28931971 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3346 28931971 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 881, __FILE__, __LINE__, true);
3347 479807981 : return _r;
3348 : }
3349 0 : next_after_fail1123:;
3350 : }
3351 0 : break;
3352 : }
3353 0 : case BIT_FIELD_REF:
3354 0 : {
3355 0 : tree _q20 = TREE_OPERAND (_p0, 0);
3356 0 : tree _q21 = TREE_OPERAND (_p0, 1);
3357 0 : tree _q22 = TREE_OPERAND (_p0, 2);
3358 0 : {
3359 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3360 0 : if (is_gimple_reg_type (type)
3361 0 : && (!INTEGRAL_TYPE_P (type)
3362 0 : || type_has_mode_precision_p (type))
3363 0 : && (!INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
3364 0 : || type_has_mode_precision_p (TREE_TYPE (captures[0])))
3365 : )
3366 : {
3367 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1124;
3368 0 : {
3369 0 : tree res_op0;
3370 0 : res_op0 = captures[1];
3371 0 : tree res_op1;
3372 0 : res_op1 = captures[2];
3373 0 : tree res_op2;
3374 0 : res_op2 = captures[3];
3375 0 : tree _r;
3376 0 : _r = fold_build3_loc (loc, BIT_FIELD_REF, type, res_op0, res_op1, res_op2);
3377 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 882, __FILE__, __LINE__, true);
3378 0 : return _r;
3379 : }
3380 0 : next_after_fail1124:;
3381 : }
3382 : }
3383 0 : break;
3384 : }
3385 233789283 : default:;
3386 : }
3387 233789283 : {
3388 233789283 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3389 231983553 : if ((INTEGRAL_TYPE_P (type) || POINTER_TYPE_P (type))
3390 2810902 : && (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) || POINTER_TYPE_P (TREE_TYPE (captures[0])))
3391 236321032 : && TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (captures[0]))
3392 : )
3393 : {
3394 2151862 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1125;
3395 2151862 : {
3396 2151862 : tree res_op0;
3397 2151862 : res_op0 = captures[0];
3398 2151862 : tree _r;
3399 2151862 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3400 2151862 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 883, __FILE__, __LINE__, true);
3401 2151862 : return _r;
3402 : }
3403 0 : next_after_fail1125:;
3404 : }
3405 : }
3406 231637421 : switch (TREE_CODE (_p0))
3407 : {
3408 3498 : CASE_CONVERT:
3409 3498 : {
3410 3498 : tree _q20 = TREE_OPERAND (_p0, 0);
3411 3498 : {
3412 3498 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
3413 3498 : {
3414 3498 : bool extended_bitint = false;
3415 3498 : if (BITINT_TYPE_P (TREE_TYPE (captures[0])))
3416 : {
3417 0 : struct bitint_info info;
3418 0 : extended_bitint
3419 0 : = targetm.c.bitint_type_info (TYPE_PRECISION (TREE_TYPE (captures[0])),
3420 : &info);
3421 0 : extended_bitint = extended_bitint && info.extended;
3422 : }
3423 6996 : if ((INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) || POINTER_TYPE_P (TREE_TYPE (captures[0])))
3424 71 : && (INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) || POINTER_TYPE_P (TREE_TYPE (captures[1])))
3425 71 : && !extended_bitint
3426 71 : && TYPE_SIZE (TREE_TYPE (captures[0])) == TYPE_SIZE (TREE_TYPE (captures[1]))
3427 3498 : && (TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (TREE_TYPE (captures[1]))
3428 0 : || (TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))
3429 0 : && TYPE_UNSIGNED (TREE_TYPE (captures[1]))))
3430 : )
3431 : {
3432 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1126;
3433 0 : {
3434 0 : tree res_op0;
3435 0 : res_op0 = captures[1];
3436 0 : tree _r;
3437 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3438 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 884, __FILE__, __LINE__, true);
3439 0 : return _r;
3440 : }
3441 0 : next_after_fail1126:;
3442 : }
3443 : }
3444 : }
3445 3498 : break;
3446 : }
3447 83614 : case CONSTRUCTOR:
3448 83614 : {
3449 83614 : {
3450 83614 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3451 83614 : {
3452 83614 : tree ctor = (TREE_CODE (captures[0]) == SSA_NAME
3453 : ? gimple_assign_rhs1 (SSA_NAME_DEF_STMT (captures[0])) : captures[0]);
3454 83614 : if (CONSTRUCTOR_NELTS (ctor) == 0
3455 : )
3456 : {
3457 6 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1127;
3458 6 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1127;
3459 6 : {
3460 6 : tree _r;
3461 6 : _r = build_zero_cst (type);
3462 6 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 885, __FILE__, __LINE__, true);
3463 6 : return _r;
3464 : }
3465 : next_after_fail1127:;
3466 : }
3467 : else
3468 : {
3469 83608 : if (CONSTRUCTOR_NELTS (ctor) == 1
3470 40 : && VECTOR_TYPE_P (TREE_TYPE (ctor))
3471 83643 : && operand_equal_p (TYPE_SIZE (type),
3472 35 : TYPE_SIZE (TREE_TYPE
3473 : (CONSTRUCTOR_ELT (ctor, 0)->value)))
3474 : )
3475 : {
3476 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1128;
3477 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1128;
3478 0 : {
3479 0 : tree res_op0;
3480 0 : res_op0 = CONSTRUCTOR_ELT (ctor, 0)->value;
3481 0 : tree _r;
3482 0 : _r = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, res_op0);
3483 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 886, __FILE__, __LINE__, true);
3484 0 : return _r;
3485 : }
3486 : next_after_fail1128:;
3487 : }
3488 : }
3489 : }
3490 : }
3491 : break;
3492 : }
3493 289998 : case VEC_COND_EXPR:
3494 289998 : {
3495 289998 : tree _q20 = TREE_OPERAND (_p0, 0);
3496 289998 : tree _q21 = TREE_OPERAND (_p0, 1);
3497 289998 : tree _q22 = TREE_OPERAND (_p0, 2);
3498 289998 : {
3499 289998 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22 };
3500 289949 : if (VECTOR_TYPE_P (type) && VECTOR_TYPE_P (TREE_TYPE (captures[2]))
3501 290355 : && known_eq (TYPE_VECTOR_SUBPARTS (type),
3502 : TYPE_VECTOR_SUBPARTS (TREE_TYPE (captures[2])))
3503 42292 : && tree_nop_conversion_p (TREE_TYPE (type), TREE_TYPE (TREE_TYPE (captures[2])))
3504 331933 : && (expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
3505 371 : || !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1])))
3506 : )
3507 : {
3508 41935 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1129;
3509 41935 : {
3510 41935 : tree res_op0;
3511 41935 : res_op0 = captures[1];
3512 41935 : tree res_op1;
3513 41935 : {
3514 41935 : tree _o1[1], _r1;
3515 41935 : _o1[0] = captures[2];
3516 41935 : if (TREE_TYPE (_o1[0]) != type)
3517 : {
3518 41935 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
3519 41935 : if (EXPR_P (_r1))
3520 166 : goto next_after_fail1129;
3521 : }
3522 : else
3523 : _r1 = _o1[0];
3524 41769 : res_op1 = _r1;
3525 : }
3526 41769 : tree res_op2;
3527 41769 : {
3528 41769 : tree _o1[1], _r1;
3529 41769 : _o1[0] = captures[3];
3530 41769 : if (TREE_TYPE (_o1[0]) != type)
3531 : {
3532 41769 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, type, _o1[0]);
3533 41769 : if (EXPR_P (_r1))
3534 0 : goto next_after_fail1129;
3535 : }
3536 : else
3537 : _r1 = _o1[0];
3538 41769 : res_op2 = _r1;
3539 : }
3540 41769 : tree _r;
3541 41769 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
3542 41769 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 887, __FILE__, __LINE__, true);
3543 41769 : return _r;
3544 : }
3545 248229 : next_after_fail1129:;
3546 : }
3547 : }
3548 248229 : break;
3549 : }
3550 : default:;
3551 : }
3552 : return NULL_TREE;
3553 : }
3554 :
3555 : tree
3556 1750604405 : generic_simplify (location_t loc, enum tree_code code, const tree type ATTRIBUTE_UNUSED, tree _p0)
3557 : {
3558 1750604405 : switch (code)
3559 : {
3560 3230809 : case ABS_EXPR:
3561 3230809 : return generic_simplify_ABS_EXPR (loc, code, type, _p0);
3562 872068504 : CASE_CONVERT:
3563 872068504 : return generic_simplify_CONVERT_EXPR (loc, code, type, _p0);
3564 2788568 : case BIT_NOT_EXPR:
3565 2788568 : return generic_simplify_BIT_NOT_EXPR (loc, code, type, _p0);
3566 943 : case ABSU_EXPR:
3567 943 : return generic_simplify_ABSU_EXPR (loc, code, type, _p0);
3568 4300656 : case NEGATE_EXPR:
3569 4300656 : return generic_simplify_NEGATE_EXPR (loc, code, type, _p0);
3570 6568896 : case FLOAT_EXPR:
3571 6568896 : return generic_simplify_FLOAT_EXPR (loc, code, type, _p0);
3572 479807981 : case VIEW_CONVERT_EXPR:
3573 479807981 : return generic_simplify_VIEW_CONVERT_EXPR (loc, code, type, _p0);
3574 511332 : case FIX_TRUNC_EXPR:
3575 511332 : return generic_simplify_FIX_TRUNC_EXPR (loc, code, type, _p0);
3576 3678 : case PAREN_EXPR:
3577 3678 : return generic_simplify_PAREN_EXPR (loc, code, type, _p0);
3578 1938560 : case REALPART_EXPR:
3579 1938560 : return generic_simplify_REALPART_EXPR (loc, code, type, _p0);
3580 2207030 : case IMAGPART_EXPR:
3581 2207030 : return generic_simplify_IMAGPART_EXPR (loc, code, type, _p0);
3582 1330 : case CONJ_EXPR:
3583 1330 : return generic_simplify_CONJ_EXPR (loc, code, type, _p0);
3584 : default:;
3585 : }
3586 : return NULL_TREE;
3587 : }
3588 :
3589 : tree
3590 80385896 : generic_simplify_POINTER_PLUS_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
3591 : {
3592 80385896 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
3593 80385896 : if (integer_zerop (_p1))
3594 : {
3595 2759774 : {
3596 2759774 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
3597 2759774 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1277;
3598 2759774 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1277;
3599 2759774 : {
3600 2759774 : tree res_op0;
3601 2759774 : res_op0 = captures[0];
3602 2759774 : tree _r;
3603 2759774 : _r = non_lvalue_loc (loc, res_op0);
3604 2759774 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 899, __FILE__, __LINE__, true);
3605 2759774 : return _r;
3606 : }
3607 : next_after_fail1277:;
3608 : }
3609 : }
3610 77626122 : switch (TREE_CODE (_p0))
3611 : {
3612 5936950 : case POINTER_PLUS_EXPR:
3613 5936950 : {
3614 5936950 : tree _q20 = TREE_OPERAND (_p0, 0);
3615 5936950 : tree _q21 = TREE_OPERAND (_p0, 1);
3616 5936950 : {
3617 5936950 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
3618 5936950 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1278;
3619 5936950 : {
3620 5936950 : tree res_op0;
3621 5936950 : res_op0 = captures[1];
3622 5936950 : tree res_op1;
3623 5936950 : {
3624 5936950 : tree _o1[2], _r1;
3625 5936950 : _o1[0] = captures[2];
3626 5936950 : _o1[1] = captures[3];
3627 5936950 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3628 5936950 : res_op1 = _r1;
3629 : }
3630 5936950 : tree _r;
3631 5936950 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
3632 5936950 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 917, __FILE__, __LINE__, true);
3633 5936950 : return _r;
3634 : }
3635 0 : next_after_fail1278:;
3636 : }
3637 0 : break;
3638 : }
3639 47787310 : CASE_CONVERT:
3640 47787310 : {
3641 47787310 : tree _q20 = TREE_OPERAND (_p0, 0);
3642 47787310 : switch (TREE_CODE (_q20))
3643 : {
3644 27380 : case POINTER_PLUS_EXPR:
3645 27380 : {
3646 27380 : tree _q30 = TREE_OPERAND (_q20, 0);
3647 27380 : tree _q31 = TREE_OPERAND (_q20, 1);
3648 27380 : {
3649 27380 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _p1 };
3650 27380 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1279;
3651 27380 : {
3652 27380 : tree res_op0;
3653 27380 : {
3654 27380 : tree _o1[1], _r1;
3655 27380 : _o1[0] = captures[2];
3656 27380 : if (TREE_TYPE (_o1[0]) != type)
3657 : {
3658 27272 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3659 : }
3660 : else
3661 : _r1 = _o1[0];
3662 27380 : res_op0 = _r1;
3663 : }
3664 27380 : tree res_op1;
3665 27380 : {
3666 27380 : tree _o1[2], _r1;
3667 27380 : _o1[0] = captures[3];
3668 27380 : _o1[1] = captures[4];
3669 27380 : _r1 = fold_build2_loc (loc, PLUS_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3670 27380 : res_op1 = _r1;
3671 : }
3672 27380 : tree _r;
3673 27380 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
3674 27380 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 918, __FILE__, __LINE__, true);
3675 27380 : return _r;
3676 : }
3677 0 : next_after_fail1279:;
3678 : }
3679 0 : break;
3680 : }
3681 : default:;
3682 : }
3683 : break;
3684 : }
3685 71661792 : default:;
3686 : }
3687 71661792 : if (integer_zerop (_p0))
3688 : {
3689 649 : {
3690 649 : tree captures[1] ATTRIBUTE_UNUSED = { _p1 };
3691 649 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1280;
3692 649 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1280;
3693 649 : {
3694 649 : tree res_op0;
3695 649 : {
3696 649 : tree _o1[1], _r1;
3697 649 : _o1[0] = captures[0];
3698 649 : if (TREE_TYPE (_o1[0]) != type)
3699 : {
3700 649 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
3701 : }
3702 : else
3703 : _r1 = _o1[0];
3704 649 : res_op0 = _r1;
3705 : }
3706 649 : tree _r;
3707 649 : _r = non_lvalue_loc (loc, res_op0);
3708 649 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 919, __FILE__, __LINE__, true);
3709 649 : return _r;
3710 : }
3711 : next_after_fail1280:;
3712 : }
3713 : }
3714 71661143 : switch (TREE_CODE (_p1))
3715 : {
3716 9471505 : CASE_CONVERT:
3717 9471505 : {
3718 9471505 : tree _q30 = TREE_OPERAND (_p1, 0);
3719 9471505 : switch (TREE_CODE (_q30))
3720 : {
3721 207023 : case MINUS_EXPR:
3722 207023 : {
3723 207023 : tree _q40 = TREE_OPERAND (_q30, 0);
3724 207023 : tree _q41 = TREE_OPERAND (_q30, 1);
3725 207023 : switch (TREE_CODE (_q40))
3726 : {
3727 93590 : CASE_CONVERT:
3728 93590 : {
3729 93590 : tree _q50 = TREE_OPERAND (_q40, 0);
3730 93590 : switch (TREE_CODE (_q41))
3731 : {
3732 7368 : CASE_CONVERT:
3733 7368 : {
3734 7368 : tree _q70 = TREE_OPERAND (_q41, 0);
3735 7368 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
3736 : {
3737 4479 : {
3738 4479 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q50 };
3739 4479 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
3740 4479 : && ((
3741 :
3742 : && useless_type_conversion_p (type, TREE_TYPE (captures[3])))
3743 : || (
3744 : 1
3745 4479 : && type == TREE_TYPE (captures[3])))
3746 : )
3747 : {
3748 2903 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1281;
3749 2903 : {
3750 2903 : tree _r;
3751 2903 : _r = captures[3];
3752 2903 : if (TREE_SIDE_EFFECTS (captures[0]))
3753 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3754 2903 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 920, __FILE__, __LINE__, true);
3755 2903 : return _r;
3756 : }
3757 0 : next_after_fail1281:;
3758 : }
3759 : }
3760 : }
3761 : break;
3762 : }
3763 : default:;
3764 : }
3765 : break;
3766 : }
3767 : default:;
3768 : }
3769 : break;
3770 : }
3771 596 : case POINTER_DIFF_EXPR:
3772 596 : {
3773 596 : tree _q40 = TREE_OPERAND (_q30, 0);
3774 596 : tree _q41 = TREE_OPERAND (_q30, 1);
3775 596 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || operand_equal_p (_q41, _p0, 0))
3776 : {
3777 7 : {
3778 7 : tree captures[5] ATTRIBUTE_UNUSED = { _q41, _p1, _q30, _q40, _p0 };
3779 7 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) >= TYPE_PRECISION (TREE_TYPE (captures[2]))
3780 : )
3781 : {
3782 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1282;
3783 7 : {
3784 7 : tree res_op0;
3785 7 : res_op0 = captures[3];
3786 7 : tree _r;
3787 7 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3788 7 : if (TREE_SIDE_EFFECTS (captures[4]))
3789 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
3790 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 921, __FILE__, __LINE__, true);
3791 7 : return _r;
3792 : }
3793 0 : next_after_fail1282:;
3794 : }
3795 : }
3796 : }
3797 : break;
3798 : }
3799 : default:;
3800 : }
3801 : break;
3802 : }
3803 46032 : case MINUS_EXPR:
3804 46032 : {
3805 46032 : tree _q30 = TREE_OPERAND (_p1, 0);
3806 46032 : tree _q31 = TREE_OPERAND (_p1, 1);
3807 46032 : switch (TREE_CODE (_q30))
3808 : {
3809 42575 : CASE_CONVERT:
3810 42575 : {
3811 42575 : tree _q40 = TREE_OPERAND (_q30, 0);
3812 42575 : switch (TREE_CODE (_q31))
3813 : {
3814 25545 : CASE_CONVERT:
3815 25545 : {
3816 25545 : tree _q60 = TREE_OPERAND (_q31, 0);
3817 25545 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
3818 : {
3819 24 : {
3820 24 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _p1, _q40 };
3821 24 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[2]))
3822 24 : && ((
3823 :
3824 : && useless_type_conversion_p (type, TREE_TYPE (captures[3])))
3825 : || (
3826 : 1
3827 24 : && type == TREE_TYPE (captures[3])))
3828 : )
3829 : {
3830 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1283;
3831 0 : {
3832 0 : tree _r;
3833 0 : _r = captures[3];
3834 0 : if (TREE_SIDE_EFFECTS (captures[0]))
3835 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
3836 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 920, __FILE__, __LINE__, true);
3837 0 : return _r;
3838 : }
3839 0 : next_after_fail1283:;
3840 : }
3841 : }
3842 : }
3843 : break;
3844 : }
3845 : default:;
3846 : }
3847 : break;
3848 : }
3849 438 : case INTEGER_CST:
3850 438 : {
3851 438 : switch (TREE_CODE (_q31))
3852 : {
3853 16 : case BIT_AND_EXPR:
3854 16 : {
3855 16 : tree _q50 = TREE_OPERAND (_q31, 0);
3856 16 : tree _q51 = TREE_OPERAND (_q31, 1);
3857 16 : switch (TREE_CODE (_q50))
3858 : {
3859 16 : CASE_CONVERT:
3860 16 : {
3861 16 : tree _q60 = TREE_OPERAND (_q50, 0);
3862 16 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
3863 : {
3864 0 : switch (TREE_CODE (_q51))
3865 : {
3866 0 : case INTEGER_CST:
3867 0 : {
3868 0 : {
3869 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q51 };
3870 0 : if (tree_int_cst_min_precision (captures[3], UNSIGNED) <= tree_ctz (captures[2])
3871 : )
3872 : {
3873 0 : {
3874 0 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[3]));
3875 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1284;
3876 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1284;
3877 0 : {
3878 0 : tree res_op0;
3879 0 : {
3880 0 : tree _o1[2], _r1;
3881 0 : _o1[0] = captures[0];
3882 0 : _o1[1] = algn;
3883 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3884 0 : res_op0 = _r1;
3885 : }
3886 0 : tree res_op1;
3887 0 : res_op1 = captures[2];
3888 0 : tree _r;
3889 0 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
3890 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 922, __FILE__, __LINE__, true);
3891 0 : return _r;
3892 : }
3893 0 : next_after_fail1284:;
3894 : }
3895 : }
3896 : }
3897 0 : break;
3898 : }
3899 : default:;
3900 : }
3901 : }
3902 16 : switch (TREE_CODE (_q60))
3903 : {
3904 0 : case POINTER_PLUS_EXPR:
3905 0 : {
3906 0 : tree _q70 = TREE_OPERAND (_q60, 0);
3907 0 : tree _q71 = TREE_OPERAND (_q60, 1);
3908 0 : if ((_q70 == _p0 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p0, 0) && types_match (_q70, _p0)))
3909 : {
3910 0 : switch (TREE_CODE (_q71))
3911 : {
3912 0 : case INTEGER_CST:
3913 0 : {
3914 0 : switch (TREE_CODE (_q51))
3915 : {
3916 0 : case INTEGER_CST:
3917 0 : {
3918 0 : {
3919 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q71, _q51 };
3920 0 : {
3921 0 : auto mask_width = tree_int_cst_min_precision (captures[4], UNSIGNED);
3922 0 : if (mask_width <= tree_ctz (captures[2]) && mask_width <= tree_ctz (captures[3])
3923 : )
3924 : {
3925 0 : {
3926 0 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[4]));
3927 0 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1285;
3928 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1285;
3929 0 : {
3930 0 : tree res_op0;
3931 0 : {
3932 0 : tree _o1[2], _r1;
3933 0 : _o1[0] = captures[0];
3934 0 : _o1[1] = algn;
3935 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
3936 0 : res_op0 = _r1;
3937 : }
3938 0 : tree res_op1;
3939 0 : res_op1 = captures[2];
3940 0 : tree _r;
3941 0 : _r = fold_build2_loc (loc, POINTER_PLUS_EXPR, type, res_op0, res_op1);
3942 0 : if (TREE_SIDE_EFFECTS (captures[3]))
3943 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[3]), _r);
3944 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 923, __FILE__, __LINE__, true);
3945 0 : return _r;
3946 : }
3947 0 : next_after_fail1285:;
3948 : }
3949 : }
3950 : }
3951 : }
3952 0 : break;
3953 : }
3954 : default:;
3955 : }
3956 : break;
3957 : }
3958 : default:;
3959 : }
3960 : }
3961 : break;
3962 : }
3963 : default:;
3964 : }
3965 : break;
3966 : }
3967 : default:;
3968 : }
3969 : break;
3970 : }
3971 : default:;
3972 : }
3973 : break;
3974 : }
3975 : default:;
3976 : }
3977 : break;
3978 : }
3979 0 : case POINTER_DIFF_EXPR:
3980 0 : {
3981 0 : tree _q30 = TREE_OPERAND (_p1, 0);
3982 0 : tree _q31 = TREE_OPERAND (_p1, 1);
3983 0 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || operand_equal_p (_q31, _p0, 0))
3984 : {
3985 0 : {
3986 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q31, _p1, _p1, _q30, _p0 };
3987 0 : if (TYPE_PRECISION (TREE_TYPE (captures[1])) >= TYPE_PRECISION (TREE_TYPE (captures[2]))
3988 : )
3989 : {
3990 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1286;
3991 0 : {
3992 0 : tree res_op0;
3993 0 : res_op0 = captures[3];
3994 0 : tree _r;
3995 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
3996 0 : if (TREE_SIDE_EFFECTS (captures[4]))
3997 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[4]), _r);
3998 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 921, __FILE__, __LINE__, true);
3999 0 : return _r;
4000 : }
4001 0 : next_after_fail1286:;
4002 : }
4003 : }
4004 : }
4005 : break;
4006 : }
4007 366097 : case NEGATE_EXPR:
4008 366097 : {
4009 366097 : tree _q30 = TREE_OPERAND (_p1, 0);
4010 366097 : switch (TREE_CODE (_q30))
4011 : {
4012 22 : case BIT_AND_EXPR:
4013 22 : {
4014 22 : tree _q40 = TREE_OPERAND (_q30, 0);
4015 22 : tree _q41 = TREE_OPERAND (_q30, 1);
4016 22 : switch (TREE_CODE (_q40))
4017 : {
4018 22 : CASE_CONVERT:
4019 22 : {
4020 22 : tree _q50 = TREE_OPERAND (_q40, 0);
4021 22 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
4022 : {
4023 1 : switch (TREE_CODE (_q41))
4024 : {
4025 1 : case INTEGER_CST:
4026 1 : {
4027 1 : {
4028 1 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
4029 1 : {
4030 1 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[1]));
4031 1 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1287;
4032 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1287;
4033 1 : {
4034 1 : tree res_op0;
4035 1 : res_op0 = captures[0];
4036 1 : tree res_op1;
4037 1 : res_op1 = algn;
4038 1 : tree _r;
4039 1 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
4040 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 924, __FILE__, __LINE__, true);
4041 1 : return _r;
4042 : }
4043 0 : next_after_fail1287:;
4044 : }
4045 : }
4046 0 : break;
4047 : }
4048 : default:;
4049 : }
4050 : }
4051 21 : switch (TREE_CODE (_q50))
4052 : {
4053 0 : case POINTER_PLUS_EXPR:
4054 0 : {
4055 0 : tree _q60 = TREE_OPERAND (_q50, 0);
4056 0 : tree _q61 = TREE_OPERAND (_q50, 1);
4057 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
4058 : {
4059 0 : switch (TREE_CODE (_q61))
4060 : {
4061 0 : case INTEGER_CST:
4062 0 : {
4063 0 : switch (TREE_CODE (_q41))
4064 : {
4065 0 : case INTEGER_CST:
4066 0 : {
4067 0 : {
4068 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q61, _q41 };
4069 0 : if (tree_int_cst_min_precision (captures[2], UNSIGNED) <= tree_ctz (captures[1])
4070 : )
4071 : {
4072 0 : {
4073 0 : tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[2]));
4074 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1288;
4075 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1288;
4076 0 : {
4077 0 : tree res_op0;
4078 0 : res_op0 = captures[0];
4079 0 : tree res_op1;
4080 0 : res_op1 = algn;
4081 0 : tree _r;
4082 0 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
4083 0 : if (TREE_SIDE_EFFECTS (captures[1]))
4084 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4085 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 925, __FILE__, __LINE__, true);
4086 0 : return _r;
4087 : }
4088 0 : next_after_fail1288:;
4089 : }
4090 : }
4091 : }
4092 0 : break;
4093 : }
4094 : default:;
4095 : }
4096 : break;
4097 : }
4098 : default:;
4099 : }
4100 : }
4101 : break;
4102 : }
4103 : default:;
4104 : }
4105 : break;
4106 : }
4107 : default:;
4108 : }
4109 : break;
4110 : }
4111 : default:;
4112 : }
4113 : break;
4114 : }
4115 : default:;
4116 : }
4117 : return NULL_TREE;
4118 : }
4119 :
4120 : tree
4121 38766056 : generic_simplify_NE_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
4122 : {
4123 38766056 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
4124 38766056 : switch (TREE_CODE (_p1))
4125 : {
4126 2267 : case NEGATE_EXPR:
4127 2267 : {
4128 2267 : tree _q30 = TREE_OPERAND (_p1, 0);
4129 2267 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
4130 : {
4131 0 : {
4132 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
4133 0 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4134 0 : if (res) return res;
4135 : }
4136 : }
4137 : break;
4138 : }
4139 38766056 : default:;
4140 : }
4141 38766056 : switch (TREE_CODE (_p0))
4142 : {
4143 6192 : case NEGATE_EXPR:
4144 6192 : {
4145 6192 : tree _q20 = TREE_OPERAND (_p0, 0);
4146 6192 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
4147 : {
4148 88 : {
4149 88 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
4150 88 : tree res = generic_simplify_209 (loc, type, _p0, _p1, captures, NE_EXPR);
4151 88 : if (res) return res;
4152 : }
4153 : }
4154 : break;
4155 : }
4156 0 : case CEIL_MOD_EXPR:
4157 0 : {
4158 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4159 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4160 0 : if (integer_pow2p (_q21))
4161 : {
4162 0 : if (integer_zerop (_p1))
4163 : {
4164 0 : {
4165 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4166 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR, CEIL_MOD_EXPR);
4167 0 : if (res) return res;
4168 : }
4169 : }
4170 : }
4171 : break;
4172 : }
4173 1617 : case FLOOR_MOD_EXPR:
4174 1617 : {
4175 1617 : tree _q20 = TREE_OPERAND (_p0, 0);
4176 1617 : tree _q21 = TREE_OPERAND (_p0, 1);
4177 1617 : if (integer_pow2p (_q21))
4178 : {
4179 20 : if (integer_zerop (_p1))
4180 : {
4181 20 : {
4182 20 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4183 20 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR, FLOOR_MOD_EXPR);
4184 20 : if (res) return res;
4185 : }
4186 : }
4187 : }
4188 : break;
4189 : }
4190 0 : case ROUND_MOD_EXPR:
4191 0 : {
4192 0 : tree _q20 = TREE_OPERAND (_p0, 0);
4193 0 : tree _q21 = TREE_OPERAND (_p0, 1);
4194 0 : if (integer_pow2p (_q21))
4195 : {
4196 0 : if (integer_zerop (_p1))
4197 : {
4198 0 : {
4199 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4200 0 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR, ROUND_MOD_EXPR);
4201 0 : if (res) return res;
4202 : }
4203 : }
4204 : }
4205 : break;
4206 : }
4207 84864 : case TRUNC_MOD_EXPR:
4208 84864 : {
4209 84864 : tree _q20 = TREE_OPERAND (_p0, 0);
4210 84864 : tree _q21 = TREE_OPERAND (_p0, 1);
4211 84864 : if (integer_pow2p (_q21))
4212 : {
4213 21622 : if (integer_zerop (_p1))
4214 : {
4215 20180 : {
4216 20180 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4217 20180 : tree res = generic_simplify_210 (loc, type, _p0, _p1, captures, NE_EXPR, TRUNC_MOD_EXPR);
4218 20180 : if (res) return res;
4219 : }
4220 : }
4221 : }
4222 : break;
4223 : }
4224 8644981 : CASE_CONVERT:
4225 8644981 : {
4226 8644981 : tree _q20 = TREE_OPERAND (_p0, 0);
4227 8644981 : switch (TREE_CODE (_p1))
4228 : {
4229 69 : case LSHIFT_EXPR:
4230 69 : {
4231 69 : tree _q40 = TREE_OPERAND (_p1, 0);
4232 69 : tree _q41 = TREE_OPERAND (_p1, 1);
4233 69 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
4234 : {
4235 0 : {
4236 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
4237 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
4238 0 : if (res) return res;
4239 : }
4240 : }
4241 : break;
4242 : }
4243 8644981 : default:;
4244 : }
4245 8644981 : {
4246 8644981 : tree _p1_pops[1];
4247 8644981 : if (tree_nop_convert (_p1, _p1_pops))
4248 : {
4249 4710529 : tree _q40 = _p1_pops[0];
4250 4710529 : switch (TREE_CODE (_q40))
4251 : {
4252 0 : case LSHIFT_EXPR:
4253 0 : {
4254 0 : tree _q50 = TREE_OPERAND (_q40, 0);
4255 0 : tree _q51 = TREE_OPERAND (_q40, 1);
4256 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4257 : {
4258 0 : {
4259 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q20 };
4260 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
4261 0 : if (res) return res;
4262 : }
4263 : }
4264 : break;
4265 : }
4266 : default:;
4267 : }
4268 : }
4269 : }
4270 8644981 : switch (TREE_CODE (_q20))
4271 : {
4272 0 : case EXACT_DIV_EXPR:
4273 0 : {
4274 0 : tree _q30 = TREE_OPERAND (_q20, 0);
4275 0 : tree _q31 = TREE_OPERAND (_q20, 1);
4276 0 : switch (TREE_CODE (_q31))
4277 : {
4278 0 : case INTEGER_CST:
4279 0 : {
4280 0 : switch (TREE_CODE (_p1))
4281 : {
4282 0 : CASE_CONVERT:
4283 0 : {
4284 0 : tree _q60 = TREE_OPERAND (_p1, 0);
4285 0 : switch (TREE_CODE (_q60))
4286 : {
4287 0 : case EXACT_DIV_EXPR:
4288 0 : {
4289 0 : tree _q70 = TREE_OPERAND (_q60, 0);
4290 0 : tree _q71 = TREE_OPERAND (_q60, 1);
4291 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
4292 : {
4293 0 : {
4294 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q70 };
4295 0 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, NE_EXPR);
4296 0 : if (res) return res;
4297 : }
4298 : }
4299 : break;
4300 : }
4301 : default:;
4302 : }
4303 : break;
4304 : }
4305 : default:;
4306 : }
4307 : break;
4308 : }
4309 : default:;
4310 : }
4311 : break;
4312 : }
4313 8644981 : default:;
4314 : }
4315 8644981 : switch (TREE_CODE (_p1))
4316 : {
4317 20849 : case PLUS_EXPR:
4318 20849 : {
4319 20849 : tree _q40 = TREE_OPERAND (_p1, 0);
4320 20849 : tree _q41 = TREE_OPERAND (_p1, 1);
4321 20849 : switch (TREE_CODE (_q41))
4322 : {
4323 203 : CASE_CONVERT:
4324 203 : {
4325 203 : tree _q60 = TREE_OPERAND (_q41, 0);
4326 203 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4327 : {
4328 0 : {
4329 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
4330 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
4331 0 : if (res) return res;
4332 : }
4333 : }
4334 : break;
4335 : }
4336 20849 : default:;
4337 : }
4338 20849 : switch (TREE_CODE (_q40))
4339 : {
4340 800 : CASE_CONVERT:
4341 800 : {
4342 800 : tree _q50 = TREE_OPERAND (_q40, 0);
4343 800 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4344 : {
4345 15 : {
4346 15 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
4347 15 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
4348 15 : if (res) return res;
4349 : }
4350 : }
4351 : break;
4352 : }
4353 20842 : default:;
4354 : }
4355 20842 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
4356 : {
4357 0 : {
4358 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q40, _q20 };
4359 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
4360 0 : if (res) return res;
4361 : }
4362 : }
4363 20842 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
4364 : {
4365 0 : {
4366 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q41, _q20 };
4367 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
4368 0 : if (res) return res;
4369 : }
4370 : }
4371 : break;
4372 : }
4373 8644974 : default:;
4374 : }
4375 8644974 : {
4376 8644974 : tree _p1_pops[1];
4377 8644974 : if (tree_nop_convert (_p1, _p1_pops))
4378 : {
4379 4710529 : tree _q40 = _p1_pops[0];
4380 4710529 : switch (TREE_CODE (_q40))
4381 : {
4382 174 : case PLUS_EXPR:
4383 174 : {
4384 174 : tree _q50 = TREE_OPERAND (_q40, 0);
4385 174 : tree _q51 = TREE_OPERAND (_q40, 1);
4386 174 : switch (TREE_CODE (_q51))
4387 : {
4388 0 : CASE_CONVERT:
4389 0 : {
4390 0 : tree _q70 = TREE_OPERAND (_q51, 0);
4391 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
4392 : {
4393 0 : {
4394 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
4395 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
4396 0 : if (res) return res;
4397 : }
4398 : }
4399 : break;
4400 : }
4401 174 : default:;
4402 : }
4403 174 : switch (TREE_CODE (_q50))
4404 : {
4405 89 : CASE_CONVERT:
4406 89 : {
4407 89 : tree _q60 = TREE_OPERAND (_q50, 0);
4408 89 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
4409 : {
4410 0 : {
4411 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
4412 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
4413 0 : if (res) return res;
4414 : }
4415 : }
4416 : break;
4417 : }
4418 174 : default:;
4419 : }
4420 174 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4421 : {
4422 0 : {
4423 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q50, _q20 };
4424 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
4425 0 : if (res) return res;
4426 : }
4427 : }
4428 174 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4429 : {
4430 0 : {
4431 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q51, _q20 };
4432 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
4433 0 : if (res) return res;
4434 : }
4435 : }
4436 : break;
4437 : }
4438 : default:;
4439 : }
4440 : }
4441 : }
4442 8644974 : break;
4443 : }
4444 38745849 : default:;
4445 : }
4446 38745849 : {
4447 38745849 : tree _p0_pops[1];
4448 38745849 : if (tree_nop_convert (_p0, _p0_pops))
4449 : {
4450 6374390 : tree _q20 = _p0_pops[0];
4451 6374390 : switch (TREE_CODE (_q20))
4452 : {
4453 15 : case LSHIFT_EXPR:
4454 15 : {
4455 15 : tree _q30 = TREE_OPERAND (_q20, 0);
4456 15 : tree _q31 = TREE_OPERAND (_q20, 1);
4457 15 : switch (TREE_CODE (_p1))
4458 : {
4459 1 : CASE_CONVERT:
4460 1 : {
4461 1 : tree _q60 = TREE_OPERAND (_p1, 0);
4462 1 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
4463 : {
4464 0 : {
4465 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
4466 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
4467 0 : if (res) return res;
4468 : }
4469 : }
4470 : break;
4471 : }
4472 15 : default:;
4473 : }
4474 15 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
4475 : {
4476 1 : {
4477 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
4478 1 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
4479 1 : if (res) return res;
4480 : }
4481 : }
4482 : break;
4483 : }
4484 33043 : case PLUS_EXPR:
4485 33043 : {
4486 33043 : tree _q30 = TREE_OPERAND (_q20, 0);
4487 33043 : tree _q31 = TREE_OPERAND (_q20, 1);
4488 33043 : switch (TREE_CODE (_q31))
4489 : {
4490 37 : CASE_CONVERT:
4491 37 : {
4492 37 : tree _q50 = TREE_OPERAND (_q31, 0);
4493 37 : switch (TREE_CODE (_p1))
4494 : {
4495 0 : CASE_CONVERT:
4496 0 : {
4497 0 : tree _q70 = TREE_OPERAND (_p1, 0);
4498 0 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
4499 : {
4500 0 : {
4501 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
4502 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
4503 0 : if (res) return res;
4504 : }
4505 : }
4506 : break;
4507 : }
4508 : default:;
4509 : }
4510 : break;
4511 : }
4512 33043 : default:;
4513 : }
4514 33043 : switch (TREE_CODE (_q30))
4515 : {
4516 26191 : CASE_CONVERT:
4517 26191 : {
4518 26191 : tree _q40 = TREE_OPERAND (_q30, 0);
4519 26191 : switch (TREE_CODE (_p1))
4520 : {
4521 354 : CASE_CONVERT:
4522 354 : {
4523 354 : tree _q70 = TREE_OPERAND (_p1, 0);
4524 354 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
4525 : {
4526 100 : {
4527 100 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
4528 100 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
4529 100 : if (res) return res;
4530 : }
4531 : }
4532 : break;
4533 : }
4534 26091 : default:;
4535 : }
4536 26091 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
4537 : {
4538 20 : {
4539 20 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q40 };
4540 20 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
4541 20 : if (res) return res;
4542 : }
4543 : }
4544 : break;
4545 : }
4546 32923 : default:;
4547 : }
4548 32923 : switch (TREE_CODE (_q31))
4549 : {
4550 37 : CASE_CONVERT:
4551 37 : {
4552 37 : tree _q50 = TREE_OPERAND (_q31, 0);
4553 37 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
4554 : {
4555 0 : {
4556 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50 };
4557 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
4558 0 : if (res) return res;
4559 : }
4560 : }
4561 : break;
4562 : }
4563 32923 : default:;
4564 : }
4565 32923 : switch (TREE_CODE (_p1))
4566 : {
4567 326 : CASE_CONVERT:
4568 326 : {
4569 326 : tree _q60 = TREE_OPERAND (_p1, 0);
4570 326 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
4571 : {
4572 0 : {
4573 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
4574 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
4575 0 : if (res) return res;
4576 : }
4577 : }
4578 326 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
4579 : {
4580 62 : {
4581 62 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
4582 62 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
4583 62 : if (res) return res;
4584 : }
4585 : }
4586 : break;
4587 : }
4588 32861 : default:;
4589 : }
4590 32861 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
4591 : {
4592 0 : {
4593 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
4594 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
4595 0 : if (res) return res;
4596 : }
4597 : }
4598 32861 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
4599 : {
4600 0 : {
4601 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q31, _q30 };
4602 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
4603 0 : if (res) return res;
4604 : }
4605 : }
4606 : break;
4607 : }
4608 : default:;
4609 : }
4610 : }
4611 : }
4612 38745666 : {
4613 38745666 : tree _p1_pops[1];
4614 38745666 : if (tree_nop_convert (_p1, _p1_pops))
4615 : {
4616 5079038 : tree _q30 = _p1_pops[0];
4617 5079038 : switch (TREE_CODE (_q30))
4618 : {
4619 0 : case LSHIFT_EXPR:
4620 0 : {
4621 0 : tree _q40 = TREE_OPERAND (_q30, 0);
4622 0 : tree _q41 = TREE_OPERAND (_q30, 1);
4623 0 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
4624 : {
4625 0 : {
4626 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _p0 };
4627 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
4628 0 : if (res) return res;
4629 : }
4630 : }
4631 : break;
4632 : }
4633 : default:;
4634 : }
4635 : }
4636 : }
4637 38745666 : switch (TREE_CODE (_p0))
4638 : {
4639 5108 : case LSHIFT_EXPR:
4640 5108 : {
4641 5108 : tree _q20 = TREE_OPERAND (_p0, 0);
4642 5108 : tree _q21 = TREE_OPERAND (_p0, 1);
4643 5108 : switch (TREE_CODE (_p1))
4644 : {
4645 35 : CASE_CONVERT:
4646 35 : {
4647 35 : tree _q50 = TREE_OPERAND (_p1, 0);
4648 35 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4649 : {
4650 4 : {
4651 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4652 4 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
4653 4 : if (res) return res;
4654 : }
4655 : }
4656 : break;
4657 : }
4658 5107 : default:;
4659 : }
4660 5107 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
4661 : {
4662 27 : {
4663 27 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
4664 27 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
4665 27 : if (res) return res;
4666 : }
4667 : }
4668 5103 : if (tree_zero_one_valued_p (_q20))
4669 : {
4670 479 : switch (TREE_CODE (_q21))
4671 : {
4672 117 : case INTEGER_CST:
4673 117 : {
4674 117 : if (integer_zerop (_p1))
4675 : {
4676 5 : {
4677 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
4678 5 : tree res = generic_simplify_215 (loc, type, _p0, _p1, captures, NE_EXPR);
4679 5 : if (res) return res;
4680 : }
4681 : }
4682 : break;
4683 : }
4684 : default:;
4685 : }
4686 : }
4687 : break;
4688 : }
4689 38745656 : default:;
4690 : }
4691 38745656 : switch (TREE_CODE (_p1))
4692 : {
4693 264 : case LSHIFT_EXPR:
4694 264 : {
4695 264 : tree _q30 = TREE_OPERAND (_p1, 0);
4696 264 : tree _q31 = TREE_OPERAND (_p1, 1);
4697 264 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
4698 : {
4699 0 : {
4700 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
4701 0 : tree res = generic_simplify_211 (loc, type, _p0, _p1, captures, NE_EXPR);
4702 0 : if (res) return res;
4703 : }
4704 : }
4705 : break;
4706 : }
4707 38745656 : default:;
4708 : }
4709 38745656 : switch (TREE_CODE (_p0))
4710 : {
4711 255 : case VIEW_CONVERT_EXPR:
4712 255 : {
4713 255 : tree _q20 = TREE_OPERAND (_p0, 0);
4714 255 : if (tree_zero_one_valued_p (_q20))
4715 : {
4716 0 : if (integer_zerop (_p1))
4717 : {
4718 0 : {
4719 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q20 };
4720 0 : tree res = generic_simplify_217 (loc, type, _p0, _p1, captures, NE_EXPR);
4721 0 : if (res) return res;
4722 : }
4723 : }
4724 : }
4725 : break;
4726 : }
4727 21088 : case RSHIFT_EXPR:
4728 21088 : {
4729 21088 : tree _q20 = TREE_OPERAND (_p0, 0);
4730 21088 : tree _q21 = TREE_OPERAND (_p0, 1);
4731 21088 : switch (TREE_CODE (_q21))
4732 : {
4733 18738 : case INTEGER_CST:
4734 18738 : {
4735 18738 : switch (TREE_CODE (_p1))
4736 : {
4737 210 : case RSHIFT_EXPR:
4738 210 : {
4739 210 : tree _q50 = TREE_OPERAND (_p1, 0);
4740 210 : tree _q51 = TREE_OPERAND (_p1, 1);
4741 210 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4742 : {
4743 15 : switch (TREE_CODE (_q51))
4744 : {
4745 15 : case INTEGER_CST:
4746 15 : {
4747 15 : {
4748 15 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4749 15 : tree res = generic_simplify_218 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
4750 15 : if (res) return res;
4751 : }
4752 3 : break;
4753 : }
4754 : default:;
4755 : }
4756 : }
4757 : break;
4758 : }
4759 18726 : default:;
4760 : }
4761 18726 : if (integer_zerop (_p1))
4762 : {
4763 8044 : {
4764 8044 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
4765 8044 : tree res = generic_simplify_219 (loc, type, _p0, _p1, captures, NE_EXPR, LT_EXPR);
4766 8044 : if (res) return res;
4767 : }
4768 : }
4769 : break;
4770 : }
4771 : default:;
4772 : }
4773 : break;
4774 : }
4775 98212 : case MULT_EXPR:
4776 98212 : {
4777 98212 : tree _q20 = TREE_OPERAND (_p0, 0);
4778 98212 : tree _q21 = TREE_OPERAND (_p0, 1);
4779 98212 : switch (TREE_CODE (_p1))
4780 : {
4781 3344 : case MULT_EXPR:
4782 3344 : {
4783 3344 : tree _q50 = TREE_OPERAND (_p1, 0);
4784 3344 : tree _q51 = TREE_OPERAND (_p1, 1);
4785 3344 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4786 : {
4787 1659 : {
4788 1659 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4789 1659 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, NE_EXPR);
4790 1659 : if (res) return res;
4791 : }
4792 : }
4793 3340 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4794 : {
4795 53 : {
4796 53 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
4797 53 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, NE_EXPR);
4798 53 : if (res) return res;
4799 : }
4800 : }
4801 3340 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4802 : {
4803 22 : {
4804 22 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
4805 22 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, NE_EXPR);
4806 22 : if (res) return res;
4807 : }
4808 : }
4809 3340 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4810 : {
4811 260 : {
4812 260 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
4813 260 : tree res = generic_simplify_220 (loc, type, _p0, _p1, captures, NE_EXPR);
4814 260 : if (res) return res;
4815 : }
4816 : }
4817 : break;
4818 : }
4819 98208 : default:;
4820 : }
4821 98208 : switch (TREE_CODE (_q21))
4822 : {
4823 79394 : case INTEGER_CST:
4824 79394 : {
4825 79394 : switch (TREE_CODE (_p1))
4826 : {
4827 2482 : case MULT_EXPR:
4828 2482 : {
4829 2482 : tree _q50 = TREE_OPERAND (_p1, 0);
4830 2482 : tree _q51 = TREE_OPERAND (_p1, 1);
4831 2482 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4832 : {
4833 1127 : {
4834 1127 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4835 1127 : tree res = generic_simplify_221 (loc, type, _p0, _p1, captures, NE_EXPR);
4836 1127 : if (res) return res;
4837 : }
4838 : }
4839 : break;
4840 : }
4841 : default:;
4842 : }
4843 : break;
4844 : }
4845 : default:;
4846 : }
4847 : break;
4848 : }
4849 2043 : case EXACT_DIV_EXPR:
4850 2043 : {
4851 2043 : tree _q20 = TREE_OPERAND (_p0, 0);
4852 2043 : tree _q21 = TREE_OPERAND (_p0, 1);
4853 2043 : switch (TREE_CODE (_q21))
4854 : {
4855 2043 : case INTEGER_CST:
4856 2043 : {
4857 2043 : switch (TREE_CODE (_p1))
4858 : {
4859 22 : case EXACT_DIV_EXPR:
4860 22 : {
4861 22 : tree _q50 = TREE_OPERAND (_p1, 0);
4862 22 : tree _q51 = TREE_OPERAND (_p1, 1);
4863 22 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4864 : {
4865 12 : {
4866 12 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
4867 12 : tree res = generic_simplify_213 (loc, type, _p0, _p1, captures, NE_EXPR);
4868 12 : if (res) return res;
4869 : }
4870 : }
4871 : break;
4872 : }
4873 : default:;
4874 : }
4875 : break;
4876 : }
4877 : default:;
4878 : }
4879 : break;
4880 : }
4881 11205 : case TRUNC_DIV_EXPR:
4882 11205 : {
4883 11205 : tree _q20 = TREE_OPERAND (_p0, 0);
4884 11205 : tree _q21 = TREE_OPERAND (_p0, 1);
4885 11205 : switch (TREE_CODE (_q21))
4886 : {
4887 8405 : case INTEGER_CST:
4888 8405 : {
4889 8405 : switch (TREE_CODE (_p1))
4890 : {
4891 2241 : case INTEGER_CST:
4892 2241 : {
4893 2241 : {
4894 2241 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
4895 2241 : tree res = generic_simplify_222 (loc, type, _p0, _p1, captures, NE_EXPR);
4896 2241 : if (res) return res;
4897 : }
4898 126 : break;
4899 : }
4900 : default:;
4901 : }
4902 : break;
4903 : }
4904 : default:;
4905 : }
4906 : break;
4907 : }
4908 1548367 : case PLUS_EXPR:
4909 1548367 : {
4910 1548367 : tree _q20 = TREE_OPERAND (_p0, 0);
4911 1548367 : tree _q21 = TREE_OPERAND (_p0, 1);
4912 1548367 : switch (TREE_CODE (_p1))
4913 : {
4914 194927 : case PLUS_EXPR:
4915 194927 : {
4916 194927 : tree _q50 = TREE_OPERAND (_p1, 0);
4917 194927 : tree _q51 = TREE_OPERAND (_p1, 1);
4918 194927 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
4919 : {
4920 723 : {
4921 723 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
4922 1446 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4923 1415 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
4924 609 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
4925 : )
4926 : {
4927 692 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1549;
4928 692 : {
4929 692 : tree res_op0;
4930 692 : res_op0 = captures[0];
4931 692 : tree res_op1;
4932 692 : res_op1 = captures[2];
4933 692 : tree _r;
4934 692 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
4935 692 : if (TREE_SIDE_EFFECTS (captures[1]))
4936 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4937 692 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
4938 692 : return _r;
4939 : }
4940 0 : next_after_fail1549:;
4941 : }
4942 : }
4943 : }
4944 194235 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
4945 : {
4946 0 : {
4947 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
4948 0 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4949 0 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
4950 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
4951 : )
4952 : {
4953 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1550;
4954 0 : {
4955 0 : tree res_op0;
4956 0 : res_op0 = captures[0];
4957 0 : tree res_op1;
4958 0 : res_op1 = captures[2];
4959 0 : tree _r;
4960 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
4961 0 : if (TREE_SIDE_EFFECTS (captures[1]))
4962 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4963 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
4964 0 : return _r;
4965 : }
4966 0 : next_after_fail1550:;
4967 : }
4968 : }
4969 : }
4970 194235 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
4971 : {
4972 102 : {
4973 102 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q50 };
4974 204 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
4975 204 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
4976 102 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
4977 : )
4978 : {
4979 102 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1551;
4980 102 : {
4981 102 : tree res_op0;
4982 102 : res_op0 = captures[0];
4983 102 : tree res_op1;
4984 102 : res_op1 = captures[2];
4985 102 : tree _r;
4986 102 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
4987 102 : if (TREE_SIDE_EFFECTS (captures[1]))
4988 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
4989 102 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
4990 102 : return _r;
4991 : }
4992 0 : next_after_fail1551:;
4993 : }
4994 : }
4995 : }
4996 194133 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
4997 : {
4998 110759 : {
4999 110759 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _q51 };
5000 221518 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5001 221495 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5002 110736 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5003 : )
5004 : {
5005 110736 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1552;
5006 110736 : {
5007 110736 : tree res_op0;
5008 110736 : res_op0 = captures[0];
5009 110736 : tree res_op1;
5010 110736 : res_op1 = captures[2];
5011 110736 : tree _r;
5012 110736 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5013 110736 : if (TREE_SIDE_EFFECTS (captures[1]))
5014 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5015 110736 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 936, __FILE__, __LINE__, true);
5016 110736 : return _r;
5017 : }
5018 0 : next_after_fail1552:;
5019 : }
5020 : }
5021 : }
5022 : break;
5023 : }
5024 1436837 : default:;
5025 : }
5026 1436837 : switch (TREE_CODE (_q21))
5027 : {
5028 813 : CASE_CONVERT:
5029 813 : {
5030 813 : tree _q40 = TREE_OPERAND (_q21, 0);
5031 813 : switch (TREE_CODE (_p1))
5032 : {
5033 88 : CASE_CONVERT:
5034 88 : {
5035 88 : tree _q60 = TREE_OPERAND (_p1, 0);
5036 88 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
5037 : {
5038 0 : {
5039 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
5040 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
5041 0 : if (res) return res;
5042 : }
5043 : }
5044 : break;
5045 : }
5046 : default:;
5047 : }
5048 : break;
5049 : }
5050 1436837 : default:;
5051 : }
5052 1436837 : switch (TREE_CODE (_q20))
5053 : {
5054 142080 : CASE_CONVERT:
5055 142080 : {
5056 142080 : tree _q30 = TREE_OPERAND (_q20, 0);
5057 142080 : switch (TREE_CODE (_p1))
5058 : {
5059 3994 : CASE_CONVERT:
5060 3994 : {
5061 3994 : tree _q60 = TREE_OPERAND (_p1, 0);
5062 3994 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5063 : {
5064 405 : {
5065 405 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
5066 405 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
5067 405 : if (res) return res;
5068 : }
5069 : }
5070 : break;
5071 : }
5072 141675 : default:;
5073 : }
5074 141675 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5075 : {
5076 0 : {
5077 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q30 };
5078 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
5079 0 : if (res) return res;
5080 : }
5081 : }
5082 : break;
5083 : }
5084 1436432 : default:;
5085 : }
5086 1436432 : switch (TREE_CODE (_q21))
5087 : {
5088 813 : CASE_CONVERT:
5089 813 : {
5090 813 : tree _q40 = TREE_OPERAND (_q21, 0);
5091 813 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5092 : {
5093 0 : {
5094 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40 };
5095 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
5096 0 : if (res) return res;
5097 : }
5098 : }
5099 : break;
5100 : }
5101 1436432 : default:;
5102 : }
5103 1436432 : switch (TREE_CODE (_p1))
5104 : {
5105 43678 : CASE_CONVERT:
5106 43678 : {
5107 43678 : tree _q50 = TREE_OPERAND (_p1, 0);
5108 43678 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
5109 : {
5110 0 : {
5111 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5112 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
5113 0 : if (res) return res;
5114 : }
5115 : }
5116 43678 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5117 : {
5118 0 : {
5119 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
5120 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
5121 0 : if (res) return res;
5122 : }
5123 : }
5124 : break;
5125 : }
5126 1436432 : default:;
5127 : }
5128 1436432 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
5129 : {
5130 77166 : {
5131 77166 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5132 77166 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
5133 77166 : if (res) return res;
5134 : }
5135 : }
5136 1359974 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5137 : {
5138 19404 : {
5139 19404 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q21, _q20 };
5140 19404 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
5141 19404 : if (res) return res;
5142 : }
5143 : }
5144 : break;
5145 : }
5146 540698 : case POINTER_PLUS_EXPR:
5147 540698 : {
5148 540698 : tree _q20 = TREE_OPERAND (_p0, 0);
5149 540698 : tree _q21 = TREE_OPERAND (_p0, 1);
5150 540698 : switch (TREE_CODE (_p1))
5151 : {
5152 37122 : case POINTER_PLUS_EXPR:
5153 37122 : {
5154 37122 : tree _q50 = TREE_OPERAND (_p1, 0);
5155 37122 : tree _q51 = TREE_OPERAND (_p1, 1);
5156 37122 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5157 : {
5158 9871 : {
5159 9871 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5160 9871 : tree res = generic_simplify_223 (loc, type, _p0, _p1, captures, NE_EXPR);
5161 9871 : if (res) return res;
5162 : }
5163 : }
5164 : break;
5165 : }
5166 530827 : default:;
5167 : }
5168 530827 : switch (TREE_CODE (_q20))
5169 : {
5170 76857 : CASE_CONVERT:
5171 76857 : {
5172 76857 : tree _q30 = TREE_OPERAND (_q20, 0);
5173 76857 : switch (TREE_CODE (_p1))
5174 : {
5175 194 : CASE_CONVERT:
5176 194 : {
5177 194 : tree _q60 = TREE_OPERAND (_p1, 0);
5178 194 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5179 : {
5180 0 : {
5181 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
5182 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, NE_EXPR);
5183 0 : if (res) return res;
5184 : }
5185 : }
5186 : break;
5187 : }
5188 76857 : default:;
5189 : }
5190 76857 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5191 : {
5192 63 : {
5193 63 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q30, _q21 };
5194 63 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, NE_EXPR);
5195 63 : if (res) return res;
5196 : }
5197 : }
5198 : break;
5199 : }
5200 530764 : default:;
5201 : }
5202 530764 : switch (TREE_CODE (_p1))
5203 : {
5204 3261 : CASE_CONVERT:
5205 3261 : {
5206 3261 : tree _q50 = TREE_OPERAND (_p1, 0);
5207 3261 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5208 : {
5209 0 : {
5210 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5211 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, NE_EXPR);
5212 0 : if (res) return res;
5213 : }
5214 : }
5215 : break;
5216 : }
5217 530764 : default:;
5218 : }
5219 530764 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5220 : {
5221 11256 : {
5222 11256 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q21 };
5223 11256 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, NE_EXPR);
5224 11256 : if (res) return res;
5225 : }
5226 : }
5227 : break;
5228 : }
5229 106350 : case MINUS_EXPR:
5230 106350 : {
5231 106350 : tree _q20 = TREE_OPERAND (_p0, 0);
5232 106350 : tree _q21 = TREE_OPERAND (_p0, 1);
5233 106350 : switch (TREE_CODE (_p1))
5234 : {
5235 5736 : case MINUS_EXPR:
5236 5736 : {
5237 5736 : tree _q50 = TREE_OPERAND (_p1, 0);
5238 5736 : tree _q51 = TREE_OPERAND (_p1, 1);
5239 5736 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5240 : {
5241 170 : {
5242 170 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
5243 340 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
5244 173 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))
5245 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))
5246 : )
5247 : {
5248 3 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1553;
5249 3 : {
5250 3 : tree res_op0;
5251 3 : res_op0 = captures[0];
5252 3 : tree res_op1;
5253 3 : res_op1 = captures[2];
5254 3 : tree _r;
5255 3 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5256 3 : if (TREE_SIDE_EFFECTS (captures[1]))
5257 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
5258 3 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 937, __FILE__, __LINE__, true);
5259 3 : return _r;
5260 : }
5261 0 : next_after_fail1553:;
5262 : }
5263 : }
5264 : }
5265 5733 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5266 : {
5267 166 : {
5268 166 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q51 };
5269 332 : if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))
5270 166 : && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))
5271 0 : || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))
5272 : )
5273 : {
5274 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1554;
5275 0 : {
5276 0 : tree res_op0;
5277 0 : res_op0 = captures[2];
5278 0 : tree res_op1;
5279 0 : res_op1 = captures[1];
5280 0 : tree _r;
5281 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
5282 0 : if (TREE_SIDE_EFFECTS (captures[0]))
5283 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
5284 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 938, __FILE__, __LINE__, true);
5285 0 : return _r;
5286 : }
5287 0 : next_after_fail1554:;
5288 : }
5289 : }
5290 : }
5291 : break;
5292 : }
5293 106347 : default:;
5294 : }
5295 106347 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5296 : {
5297 1754 : {
5298 1754 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p0, _q21 };
5299 1754 : tree res = generic_simplify_225 (loc, type, _p0, _p1, captures, NE_EXPR);
5300 1754 : if (res) return res;
5301 : }
5302 : }
5303 : break;
5304 : }
5305 26857 : case POINTER_DIFF_EXPR:
5306 26857 : {
5307 26857 : tree _q20 = TREE_OPERAND (_p0, 0);
5308 26857 : tree _q21 = TREE_OPERAND (_p0, 1);
5309 26857 : switch (TREE_CODE (_p1))
5310 : {
5311 2314 : case POINTER_DIFF_EXPR:
5312 2314 : {
5313 2314 : tree _q50 = TREE_OPERAND (_p1, 0);
5314 2314 : tree _q51 = TREE_OPERAND (_p1, 1);
5315 2314 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
5316 : {
5317 0 : {
5318 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q50 };
5319 0 : tree res = generic_simplify_226 (loc, type, _p0, _p1, captures, NE_EXPR);
5320 0 : if (res) return res;
5321 : }
5322 : }
5323 2314 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5324 : {
5325 0 : {
5326 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q51 };
5327 0 : tree res = generic_simplify_227 (loc, type, _p0, _p1, captures, NE_EXPR);
5328 0 : if (res) return res;
5329 : }
5330 : }
5331 : break;
5332 : }
5333 : default:;
5334 : }
5335 : break;
5336 : }
5337 38512656 : default:;
5338 : }
5339 38512656 : {
5340 38512656 : tree _p0_pops[1];
5341 38512656 : if (tree_logical_inverted_value (_p0, _p0_pops))
5342 : {
5343 648473 : tree _q20 = _p0_pops[0];
5344 648473 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
5345 : {
5346 24 : if (tree_truth_valued_p (_p1))
5347 : {
5348 0 : {
5349 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
5350 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1555;
5351 0 : {
5352 0 : tree _r;
5353 0 : _r = constant_boolean_node (NE_EXPR != EQ_EXPR, type);
5354 0 : if (TREE_SIDE_EFFECTS (captures[0]))
5355 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
5356 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 905, __FILE__, __LINE__, true);
5357 0 : return _r;
5358 : }
5359 0 : next_after_fail1555:;
5360 : }
5361 : }
5362 : }
5363 : }
5364 : }
5365 38512656 : if (tree_truth_valued_p (_p0))
5366 : {
5367 5635645 : {
5368 5635645 : tree _p1_pops[1];
5369 5635645 : if (tree_logical_inverted_value (_p1, _p1_pops))
5370 : {
5371 1159 : tree _q30 = _p1_pops[0];
5372 1159 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5373 : {
5374 0 : {
5375 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
5376 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1556;
5377 0 : {
5378 0 : tree _r;
5379 0 : _r = constant_boolean_node (NE_EXPR != EQ_EXPR, type);
5380 0 : if (TREE_SIDE_EFFECTS (captures[0]))
5381 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
5382 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 905, __FILE__, __LINE__, true);
5383 0 : return _r;
5384 : }
5385 0 : next_after_fail1556:;
5386 : }
5387 : }
5388 : }
5389 : }
5390 : }
5391 38512656 : switch (TREE_CODE (_p1))
5392 : {
5393 125364 : case PLUS_EXPR:
5394 125364 : {
5395 125364 : tree _q30 = TREE_OPERAND (_p1, 0);
5396 125364 : tree _q31 = TREE_OPERAND (_p1, 1);
5397 125364 : switch (TREE_CODE (_q31))
5398 : {
5399 368 : CASE_CONVERT:
5400 368 : {
5401 368 : tree _q50 = TREE_OPERAND (_q31, 0);
5402 368 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5403 : {
5404 0 : {
5405 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
5406 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
5407 0 : if (res) return res;
5408 : }
5409 : }
5410 : break;
5411 : }
5412 125364 : default:;
5413 : }
5414 125364 : switch (TREE_CODE (_q30))
5415 : {
5416 6248 : CASE_CONVERT:
5417 6248 : {
5418 6248 : tree _q40 = TREE_OPERAND (_q30, 0);
5419 6248 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5420 : {
5421 0 : {
5422 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
5423 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
5424 0 : if (res) return res;
5425 : }
5426 : }
5427 : break;
5428 : }
5429 125364 : default:;
5430 : }
5431 125364 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
5432 : {
5433 0 : {
5434 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q30, _p0 };
5435 0 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
5436 0 : if (res) return res;
5437 : }
5438 : }
5439 125364 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5440 : {
5441 8 : {
5442 8 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q31, _p0 };
5443 8 : tree res = generic_simplify_214 (loc, type, _p0, _p1, captures, NE_EXPR);
5444 8 : if (res) return res;
5445 : }
5446 : }
5447 : break;
5448 : }
5449 38512648 : default:;
5450 : }
5451 38512648 : {
5452 38512648 : tree _p1_pops[1];
5453 38512648 : if (tree_nop_convert (_p1, _p1_pops))
5454 : {
5455 5078631 : tree _q30 = _p1_pops[0];
5456 5078631 : switch (TREE_CODE (_q30))
5457 : {
5458 1980 : case PLUS_EXPR:
5459 1980 : {
5460 1980 : tree _q40 = TREE_OPERAND (_q30, 0);
5461 1980 : tree _q41 = TREE_OPERAND (_q30, 1);
5462 1980 : switch (TREE_CODE (_q41))
5463 : {
5464 3 : CASE_CONVERT:
5465 3 : {
5466 3 : tree _q60 = TREE_OPERAND (_q41, 0);
5467 3 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
5468 : {
5469 0 : {
5470 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
5471 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
5472 0 : if (res) return res;
5473 : }
5474 : }
5475 : break;
5476 : }
5477 1980 : default:;
5478 : }
5479 1980 : switch (TREE_CODE (_q40))
5480 : {
5481 1169 : CASE_CONVERT:
5482 1169 : {
5483 1169 : tree _q50 = TREE_OPERAND (_q40, 0);
5484 1169 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5485 : {
5486 0 : {
5487 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
5488 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
5489 0 : if (res) return res;
5490 : }
5491 : }
5492 : break;
5493 : }
5494 1980 : default:;
5495 : }
5496 1980 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
5497 : {
5498 0 : {
5499 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q40, _p0 };
5500 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
5501 0 : if (res) return res;
5502 : }
5503 : }
5504 1980 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5505 : {
5506 0 : {
5507 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _q41, _p0 };
5508 0 : tree res = generic_simplify_212 (loc, type, _p0, _p1, captures, NE_EXPR);
5509 0 : if (res) return res;
5510 : }
5511 : }
5512 : break;
5513 : }
5514 : default:;
5515 : }
5516 : }
5517 : }
5518 38512648 : switch (TREE_CODE (_p0))
5519 : {
5520 8644783 : CASE_CONVERT:
5521 8644783 : {
5522 8644783 : tree _q20 = TREE_OPERAND (_p0, 0);
5523 8644783 : switch (TREE_CODE (_p1))
5524 : {
5525 164 : case POINTER_PLUS_EXPR:
5526 164 : {
5527 164 : tree _q40 = TREE_OPERAND (_p1, 0);
5528 164 : tree _q41 = TREE_OPERAND (_p1, 1);
5529 164 : switch (TREE_CODE (_q40))
5530 : {
5531 48 : CASE_CONVERT:
5532 48 : {
5533 48 : tree _q50 = TREE_OPERAND (_q40, 0);
5534 48 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5535 : {
5536 0 : {
5537 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
5538 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, NE_EXPR);
5539 0 : if (res) return res;
5540 : }
5541 : }
5542 : break;
5543 : }
5544 164 : default:;
5545 : }
5546 164 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
5547 : {
5548 0 : {
5549 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _q20, _q41 };
5550 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, NE_EXPR);
5551 0 : if (res) return res;
5552 : }
5553 : }
5554 : break;
5555 : }
5556 8644783 : default:;
5557 : }
5558 8644783 : {
5559 8644783 : tree _p1_pops[1];
5560 8644783 : if (tree_nop_convert (_p1, _p1_pops))
5561 : {
5562 4710367 : tree _q40 = _p1_pops[0];
5563 4710367 : switch (TREE_CODE (_q40))
5564 : {
5565 48 : case POINTER_PLUS_EXPR:
5566 48 : {
5567 48 : tree _q50 = TREE_OPERAND (_q40, 0);
5568 48 : tree _q51 = TREE_OPERAND (_q40, 1);
5569 48 : switch (TREE_CODE (_q50))
5570 : {
5571 8 : CASE_CONVERT:
5572 8 : {
5573 8 : tree _q60 = TREE_OPERAND (_q50, 0);
5574 8 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
5575 : {
5576 0 : {
5577 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
5578 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, NE_EXPR);
5579 0 : if (res) return res;
5580 : }
5581 : }
5582 : break;
5583 : }
5584 48 : default:;
5585 : }
5586 48 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
5587 : {
5588 0 : {
5589 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q40, _q20, _q51 };
5590 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, NE_EXPR);
5591 0 : if (res) return res;
5592 : }
5593 : }
5594 : break;
5595 : }
5596 : default:;
5597 : }
5598 : }
5599 : }
5600 8644783 : break;
5601 : }
5602 38512648 : default:;
5603 : }
5604 38512648 : {
5605 38512648 : tree _p0_pops[1];
5606 38512648 : if (tree_nop_convert (_p0, _p0_pops))
5607 : {
5608 6374207 : tree _q20 = _p0_pops[0];
5609 6374207 : switch (TREE_CODE (_q20))
5610 : {
5611 185 : case POINTER_PLUS_EXPR:
5612 185 : {
5613 185 : tree _q30 = TREE_OPERAND (_q20, 0);
5614 185 : tree _q31 = TREE_OPERAND (_q20, 1);
5615 185 : switch (TREE_CODE (_q30))
5616 : {
5617 24 : CASE_CONVERT:
5618 24 : {
5619 24 : tree _q40 = TREE_OPERAND (_q30, 0);
5620 24 : switch (TREE_CODE (_p1))
5621 : {
5622 8 : CASE_CONVERT:
5623 8 : {
5624 8 : tree _q70 = TREE_OPERAND (_p1, 0);
5625 8 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
5626 : {
5627 0 : {
5628 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
5629 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, NE_EXPR);
5630 0 : if (res) return res;
5631 : }
5632 : }
5633 : break;
5634 : }
5635 24 : default:;
5636 : }
5637 24 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
5638 : {
5639 0 : {
5640 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q40, _q31 };
5641 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, NE_EXPR);
5642 0 : if (res) return res;
5643 : }
5644 : }
5645 : break;
5646 : }
5647 185 : default:;
5648 : }
5649 185 : switch (TREE_CODE (_p1))
5650 : {
5651 50 : CASE_CONVERT:
5652 50 : {
5653 50 : tree _q60 = TREE_OPERAND (_p1, 0);
5654 50 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
5655 : {
5656 0 : {
5657 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
5658 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, NE_EXPR);
5659 0 : if (res) return res;
5660 : }
5661 : }
5662 : break;
5663 : }
5664 185 : default:;
5665 : }
5666 185 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
5667 : {
5668 0 : {
5669 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31 };
5670 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, NE_EXPR);
5671 0 : if (res) return res;
5672 : }
5673 : }
5674 : break;
5675 : }
5676 : default:;
5677 : }
5678 : }
5679 : }
5680 38512648 : switch (TREE_CODE (_p1))
5681 : {
5682 32022 : case POINTER_PLUS_EXPR:
5683 32022 : {
5684 32022 : tree _q30 = TREE_OPERAND (_p1, 0);
5685 32022 : tree _q31 = TREE_OPERAND (_p1, 1);
5686 32022 : switch (TREE_CODE (_q30))
5687 : {
5688 3536 : CASE_CONVERT:
5689 3536 : {
5690 3536 : tree _q40 = TREE_OPERAND (_q30, 0);
5691 3536 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5692 : {
5693 0 : {
5694 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
5695 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, NE_EXPR);
5696 0 : if (res) return res;
5697 : }
5698 : }
5699 : break;
5700 : }
5701 32022 : default:;
5702 : }
5703 32022 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5704 : {
5705 0 : {
5706 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _p1, _p0, _q31 };
5707 0 : tree res = generic_simplify_224 (loc, type, _p0, _p1, captures, NE_EXPR);
5708 0 : if (res) return res;
5709 : }
5710 : }
5711 : break;
5712 : }
5713 38512648 : default:;
5714 : }
5715 38512648 : {
5716 38512648 : tree _p1_pops[1];
5717 38512648 : if (tree_nop_convert (_p1, _p1_pops))
5718 : {
5719 5078631 : tree _q30 = _p1_pops[0];
5720 5078631 : switch (TREE_CODE (_q30))
5721 : {
5722 387 : case POINTER_PLUS_EXPR:
5723 387 : {
5724 387 : tree _q40 = TREE_OPERAND (_q30, 0);
5725 387 : tree _q41 = TREE_OPERAND (_q30, 1);
5726 387 : switch (TREE_CODE (_q40))
5727 : {
5728 8 : CASE_CONVERT:
5729 8 : {
5730 8 : tree _q50 = TREE_OPERAND (_q40, 0);
5731 8 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
5732 : {
5733 0 : {
5734 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
5735 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, NE_EXPR);
5736 0 : if (res) return res;
5737 : }
5738 : }
5739 : break;
5740 : }
5741 387 : default:;
5742 : }
5743 387 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
5744 : {
5745 0 : {
5746 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q30, _p0, _q41 };
5747 0 : tree res = generic_simplify_228 (loc, type, _p0, _p1, captures, NE_EXPR);
5748 0 : if (res) return res;
5749 : }
5750 : }
5751 : break;
5752 : }
5753 : default:;
5754 : }
5755 : }
5756 : }
5757 38512648 : switch (TREE_CODE (_p0))
5758 : {
5759 519508 : case POINTER_PLUS_EXPR:
5760 519508 : {
5761 519508 : tree _q20 = TREE_OPERAND (_p0, 0);
5762 519508 : tree _q21 = TREE_OPERAND (_p0, 1);
5763 519508 : switch (TREE_CODE (_p1))
5764 : {
5765 52423 : case ADDR_EXPR:
5766 52423 : {
5767 52423 : {
5768 52423 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
5769 52423 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
5770 52423 : if (res) return res;
5771 : }
5772 36165 : break;
5773 : }
5774 503250 : default:;
5775 : }
5776 503250 : switch (TREE_CODE (_q20))
5777 : {
5778 5316 : case ADDR_EXPR:
5779 5316 : {
5780 5316 : switch (TREE_CODE (_p1))
5781 : {
5782 413 : case POINTER_PLUS_EXPR:
5783 413 : {
5784 413 : tree _q50 = TREE_OPERAND (_p1, 0);
5785 413 : tree _q51 = TREE_OPERAND (_p1, 1);
5786 413 : switch (TREE_CODE (_q50))
5787 : {
5788 0 : case ADDR_EXPR:
5789 0 : {
5790 0 : {
5791 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q51 };
5792 0 : tree res = generic_simplify_230 (loc, type, _p0, _p1, captures, NE_EXPR);
5793 0 : if (res) return res;
5794 : }
5795 0 : break;
5796 : }
5797 : default:;
5798 : }
5799 : break;
5800 : }
5801 : default:;
5802 : }
5803 : break;
5804 : }
5805 : default:;
5806 : }
5807 : break;
5808 : }
5809 206557 : case ADDR_EXPR:
5810 206557 : {
5811 206557 : switch (TREE_CODE (_p1))
5812 : {
5813 0 : case POINTER_PLUS_EXPR:
5814 0 : {
5815 0 : tree _q30 = TREE_OPERAND (_p1, 0);
5816 0 : tree _q31 = TREE_OPERAND (_p1, 1);
5817 0 : {
5818 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p0 };
5819 0 : tree res = generic_simplify_229 (loc, type, _p0, _p1, captures, NE_EXPR);
5820 0 : if (res) return res;
5821 : }
5822 0 : break;
5823 : }
5824 : default:;
5825 : }
5826 : break;
5827 : }
5828 38496390 : default:;
5829 : }
5830 38496390 : switch (TREE_CODE (_p1))
5831 : {
5832 30237 : case MINUS_EXPR:
5833 30237 : {
5834 30237 : tree _q30 = TREE_OPERAND (_p1, 0);
5835 30237 : tree _q31 = TREE_OPERAND (_p1, 1);
5836 30237 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
5837 : {
5838 0 : {
5839 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _q31 };
5840 0 : tree res = generic_simplify_225 (loc, type, _p0, _p1, captures, NE_EXPR);
5841 0 : if (res) return res;
5842 : }
5843 : }
5844 : break;
5845 : }
5846 38496390 : default:;
5847 : }
5848 38496390 : switch (TREE_CODE (_p0))
5849 : {
5850 9090 : case TRUNC_DIV_EXPR:
5851 9090 : {
5852 9090 : tree _q20 = TREE_OPERAND (_p0, 0);
5853 9090 : tree _q21 = TREE_OPERAND (_p0, 1);
5854 9090 : if (tree_expr_nonnegative_p (_q20))
5855 : {
5856 3429 : if (tree_expr_nonnegative_p (_q21))
5857 : {
5858 3205 : if (integer_zerop (_p1))
5859 : {
5860 182 : {
5861 182 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
5862 182 : tree res = generic_simplify_231 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
5863 182 : if (res) return res;
5864 : }
5865 : }
5866 : }
5867 : }
5868 : break;
5869 : }
5870 8644783 : CASE_CONVERT:
5871 8644783 : {
5872 8644783 : tree _q20 = TREE_OPERAND (_p0, 0);
5873 8644783 : switch (TREE_CODE (_p1))
5874 : {
5875 4850706 : CASE_CONVERT:
5876 4850706 : {
5877 4850706 : tree _q40 = TREE_OPERAND (_p1, 0);
5878 4850706 : switch (TREE_CODE (_q40))
5879 : {
5880 0 : case MINUS_EXPR:
5881 0 : {
5882 0 : tree _q50 = TREE_OPERAND (_q40, 0);
5883 0 : tree _q51 = TREE_OPERAND (_q40, 1);
5884 0 : switch (TREE_CODE (_q50))
5885 : {
5886 0 : case INTEGER_CST:
5887 0 : {
5888 0 : switch (TREE_CODE (_q51))
5889 : {
5890 0 : CASE_CONVERT:
5891 0 : {
5892 0 : tree _q70 = TREE_OPERAND (_q51, 0);
5893 0 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
5894 : {
5895 0 : {
5896 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
5897 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, NE_EXPR);
5898 0 : if (res) return res;
5899 : }
5900 : }
5901 : break;
5902 : }
5903 : default:;
5904 : }
5905 : break;
5906 : }
5907 : default:;
5908 : }
5909 : break;
5910 : }
5911 : default:;
5912 : }
5913 : break;
5914 : }
5915 8644783 : default:;
5916 : }
5917 8644783 : switch (TREE_CODE (_q20))
5918 : {
5919 99 : case MINUS_EXPR:
5920 99 : {
5921 99 : tree _q30 = TREE_OPERAND (_q20, 0);
5922 99 : tree _q31 = TREE_OPERAND (_q20, 1);
5923 99 : switch (TREE_CODE (_q30))
5924 : {
5925 49 : case INTEGER_CST:
5926 49 : {
5927 49 : switch (TREE_CODE (_q31))
5928 : {
5929 0 : CASE_CONVERT:
5930 0 : {
5931 0 : tree _q50 = TREE_OPERAND (_q31, 0);
5932 0 : switch (TREE_CODE (_p1))
5933 : {
5934 0 : CASE_CONVERT:
5935 0 : {
5936 0 : tree _q70 = TREE_OPERAND (_p1, 0);
5937 0 : if ((_q70 == _q50 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q50, 0) && types_match (_q70, _q50)))
5938 : {
5939 0 : {
5940 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
5941 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, NE_EXPR);
5942 0 : if (res) return res;
5943 : }
5944 : }
5945 : break;
5946 : }
5947 0 : default:;
5948 : }
5949 0 : if ((_p1 == _q50 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q50, 0) && types_match (_p1, _q50)))
5950 : {
5951 0 : {
5952 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
5953 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, NE_EXPR);
5954 0 : if (res) return res;
5955 : }
5956 : }
5957 : break;
5958 : }
5959 49 : default:;
5960 : }
5961 49 : switch (TREE_CODE (_p1))
5962 : {
5963 0 : CASE_CONVERT:
5964 0 : {
5965 0 : tree _q60 = TREE_OPERAND (_p1, 0);
5966 0 : if ((_q60 == _q31 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q31, 0) && types_match (_q60, _q31)))
5967 : {
5968 0 : {
5969 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
5970 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, NE_EXPR);
5971 0 : if (res) return res;
5972 : }
5973 : }
5974 : break;
5975 : }
5976 49 : default:;
5977 : }
5978 49 : if ((_p1 == _q31 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q31, 0) && types_match (_p1, _q31)))
5979 : {
5980 0 : {
5981 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q30 };
5982 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, NE_EXPR);
5983 0 : if (res) return res;
5984 : }
5985 : }
5986 : break;
5987 : }
5988 : default:;
5989 : }
5990 : break;
5991 : }
5992 8644783 : default:;
5993 : }
5994 8644783 : switch (TREE_CODE (_p1))
5995 : {
5996 4850706 : CASE_CONVERT:
5997 4850706 : {
5998 4850706 : tree _q40 = TREE_OPERAND (_p1, 0);
5999 4850706 : switch (TREE_CODE (_q40))
6000 : {
6001 0 : case MINUS_EXPR:
6002 0 : {
6003 0 : tree _q50 = TREE_OPERAND (_q40, 0);
6004 0 : tree _q51 = TREE_OPERAND (_q40, 1);
6005 0 : switch (TREE_CODE (_q50))
6006 : {
6007 0 : case INTEGER_CST:
6008 0 : {
6009 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6010 : {
6011 0 : {
6012 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
6013 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, NE_EXPR);
6014 0 : if (res) return res;
6015 : }
6016 : }
6017 : break;
6018 : }
6019 : default:;
6020 : }
6021 : break;
6022 : }
6023 : default:;
6024 : }
6025 : break;
6026 : }
6027 21620 : case MINUS_EXPR:
6028 21620 : {
6029 21620 : tree _q40 = TREE_OPERAND (_p1, 0);
6030 21620 : tree _q41 = TREE_OPERAND (_p1, 1);
6031 21620 : switch (TREE_CODE (_q40))
6032 : {
6033 401 : case INTEGER_CST:
6034 401 : {
6035 401 : switch (TREE_CODE (_q41))
6036 : {
6037 20 : CASE_CONVERT:
6038 20 : {
6039 20 : tree _q60 = TREE_OPERAND (_q41, 0);
6040 20 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
6041 : {
6042 0 : {
6043 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6044 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, NE_EXPR);
6045 0 : if (res) return res;
6046 : }
6047 : }
6048 : break;
6049 : }
6050 401 : default:;
6051 : }
6052 401 : if ((_q41 == _q20 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _q20, 0) && types_match (_q41, _q20)))
6053 : {
6054 0 : {
6055 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
6056 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, NE_EXPR);
6057 0 : if (res) return res;
6058 : }
6059 : }
6060 : break;
6061 : }
6062 : default:;
6063 : }
6064 : break;
6065 : }
6066 : default:;
6067 : }
6068 : break;
6069 : }
6070 104635 : case MINUS_EXPR:
6071 104635 : {
6072 104635 : tree _q20 = TREE_OPERAND (_p0, 0);
6073 104635 : tree _q21 = TREE_OPERAND (_p0, 1);
6074 104635 : switch (TREE_CODE (_q20))
6075 : {
6076 2256 : case INTEGER_CST:
6077 2256 : {
6078 2256 : switch (TREE_CODE (_q21))
6079 : {
6080 190 : CASE_CONVERT:
6081 190 : {
6082 190 : tree _q40 = TREE_OPERAND (_q21, 0);
6083 190 : switch (TREE_CODE (_p1))
6084 : {
6085 0 : CASE_CONVERT:
6086 0 : {
6087 0 : tree _q60 = TREE_OPERAND (_p1, 0);
6088 0 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
6089 : {
6090 0 : {
6091 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6092 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, NE_EXPR);
6093 0 : if (res) return res;
6094 : }
6095 : }
6096 : break;
6097 : }
6098 190 : default:;
6099 : }
6100 190 : if ((_p1 == _q40 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q40, 0) && types_match (_p1, _q40)))
6101 : {
6102 0 : {
6103 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q40, _q20 };
6104 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, NE_EXPR);
6105 0 : if (res) return res;
6106 : }
6107 : }
6108 : break;
6109 : }
6110 2256 : default:;
6111 : }
6112 2256 : switch (TREE_CODE (_p1))
6113 : {
6114 306 : CASE_CONVERT:
6115 306 : {
6116 306 : tree _q50 = TREE_OPERAND (_p1, 0);
6117 306 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6118 : {
6119 0 : {
6120 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6121 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, NE_EXPR);
6122 0 : if (res) return res;
6123 : }
6124 : }
6125 : break;
6126 : }
6127 2256 : default:;
6128 : }
6129 2256 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
6130 : {
6131 19 : {
6132 19 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6133 19 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, NE_EXPR);
6134 19 : if (res) return res;
6135 : }
6136 : }
6137 : break;
6138 : }
6139 : default:;
6140 : }
6141 : break;
6142 : }
6143 38496218 : default:;
6144 : }
6145 38496218 : switch (TREE_CODE (_p1))
6146 : {
6147 5246794 : CASE_CONVERT:
6148 5246794 : {
6149 5246794 : tree _q30 = TREE_OPERAND (_p1, 0);
6150 5246794 : switch (TREE_CODE (_q30))
6151 : {
6152 556 : case MINUS_EXPR:
6153 556 : {
6154 556 : tree _q40 = TREE_OPERAND (_q30, 0);
6155 556 : tree _q41 = TREE_OPERAND (_q30, 1);
6156 556 : switch (TREE_CODE (_q40))
6157 : {
6158 17 : case INTEGER_CST:
6159 17 : {
6160 17 : switch (TREE_CODE (_q41))
6161 : {
6162 0 : CASE_CONVERT:
6163 0 : {
6164 0 : tree _q60 = TREE_OPERAND (_q41, 0);
6165 0 : if ((_q60 == _p0 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p0, 0) && types_match (_q60, _p0)))
6166 : {
6167 0 : {
6168 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
6169 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, NE_EXPR);
6170 0 : if (res) return res;
6171 : }
6172 : }
6173 : break;
6174 : }
6175 17 : default:;
6176 : }
6177 17 : if ((_q41 == _p0 && ! TREE_SIDE_EFFECTS (_q41)) || (operand_equal_p (_q41, _p0, 0) && types_match (_q41, _p0)))
6178 : {
6179 0 : {
6180 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q40 };
6181 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, NE_EXPR);
6182 0 : if (res) return res;
6183 : }
6184 : }
6185 : break;
6186 : }
6187 : default:;
6188 : }
6189 : break;
6190 : }
6191 : default:;
6192 : }
6193 : break;
6194 : }
6195 30237 : case MINUS_EXPR:
6196 30237 : {
6197 30237 : tree _q30 = TREE_OPERAND (_p1, 0);
6198 30237 : tree _q31 = TREE_OPERAND (_p1, 1);
6199 30237 : switch (TREE_CODE (_q30))
6200 : {
6201 659 : case INTEGER_CST:
6202 659 : {
6203 659 : switch (TREE_CODE (_q31))
6204 : {
6205 28 : CASE_CONVERT:
6206 28 : {
6207 28 : tree _q50 = TREE_OPERAND (_q31, 0);
6208 28 : if ((_q50 == _p0 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _p0, 0) && types_match (_q50, _p0)))
6209 : {
6210 0 : {
6211 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6212 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, NE_EXPR);
6213 0 : if (res) return res;
6214 : }
6215 : }
6216 : break;
6217 : }
6218 659 : default:;
6219 : }
6220 659 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
6221 : {
6222 0 : {
6223 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
6224 0 : tree res = generic_simplify_232 (loc, type, _p0, _p1, captures, NE_EXPR);
6225 0 : if (res) return res;
6226 : }
6227 : }
6228 : break;
6229 : }
6230 : default:;
6231 : }
6232 : break;
6233 : }
6234 38496218 : default:;
6235 : }
6236 38496218 : switch (TREE_CODE (_p0))
6237 : {
6238 18294 : case LT_EXPR:
6239 18294 : {
6240 18294 : tree _q20 = TREE_OPERAND (_p0, 0);
6241 18294 : tree _q21 = TREE_OPERAND (_p0, 1);
6242 18294 : switch (TREE_CODE (_p1))
6243 : {
6244 18 : case GT_EXPR:
6245 18 : {
6246 18 : tree _q50 = TREE_OPERAND (_p1, 0);
6247 18 : tree _q51 = TREE_OPERAND (_p1, 1);
6248 18 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6249 : {
6250 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6251 : {
6252 0 : {
6253 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6254 0 : const enum tree_code cmp1 = LT_EXPR;
6255 0 : const enum tree_code cmp2 = GT_EXPR;
6256 0 : const enum tree_code rcmp = NE_EXPR;
6257 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6258 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6259 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6260 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6261 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6262 : )
6263 : {
6264 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1557;
6265 0 : {
6266 0 : tree res_op0;
6267 0 : res_op0 = captures[0];
6268 0 : tree res_op1;
6269 0 : res_op1 = captures[1];
6270 0 : tree _r;
6271 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6272 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
6273 0 : return _r;
6274 : }
6275 0 : next_after_fail1557:;
6276 : }
6277 : }
6278 : }
6279 : }
6280 : break;
6281 : }
6282 23 : case EQ_EXPR:
6283 23 : {
6284 23 : tree _q50 = TREE_OPERAND (_p1, 0);
6285 23 : tree _q51 = TREE_OPERAND (_p1, 1);
6286 23 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6287 : {
6288 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6289 : {
6290 0 : {
6291 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6292 0 : const enum tree_code cmp1 = LT_EXPR;
6293 0 : const enum tree_code cmp2 = EQ_EXPR;
6294 0 : const enum tree_code rcmp = LE_EXPR;
6295 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6296 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6297 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6298 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6299 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6300 : )
6301 : {
6302 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1558;
6303 0 : {
6304 0 : tree res_op0;
6305 0 : res_op0 = captures[0];
6306 0 : tree res_op1;
6307 0 : res_op1 = captures[1];
6308 0 : tree _r;
6309 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6310 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
6311 0 : return _r;
6312 : }
6313 0 : next_after_fail1558:;
6314 : }
6315 : }
6316 : }
6317 : }
6318 : break;
6319 : }
6320 23 : case NE_EXPR:
6321 23 : {
6322 23 : tree _q50 = TREE_OPERAND (_p1, 0);
6323 23 : tree _q51 = TREE_OPERAND (_p1, 1);
6324 23 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6325 : {
6326 9 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6327 : {
6328 0 : {
6329 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6330 0 : const enum tree_code cmp1 = LT_EXPR;
6331 0 : const enum tree_code cmp2 = NE_EXPR;
6332 0 : const enum tree_code rcmp = GT_EXPR;
6333 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6334 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6335 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6336 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6337 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6338 : )
6339 : {
6340 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1559;
6341 0 : {
6342 0 : tree res_op0;
6343 0 : res_op0 = captures[0];
6344 0 : tree res_op1;
6345 0 : res_op1 = captures[1];
6346 0 : tree _r;
6347 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6348 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
6349 0 : return _r;
6350 : }
6351 0 : next_after_fail1559:;
6352 : }
6353 : }
6354 : }
6355 : }
6356 : break;
6357 : }
6358 : default:;
6359 : }
6360 : break;
6361 : }
6362 12028 : case LE_EXPR:
6363 12028 : {
6364 12028 : tree _q20 = TREE_OPERAND (_p0, 0);
6365 12028 : tree _q21 = TREE_OPERAND (_p0, 1);
6366 12028 : switch (TREE_CODE (_p1))
6367 : {
6368 25 : case GE_EXPR:
6369 25 : {
6370 25 : tree _q50 = TREE_OPERAND (_p1, 0);
6371 25 : tree _q51 = TREE_OPERAND (_p1, 1);
6372 25 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6373 : {
6374 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6375 : {
6376 0 : {
6377 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6378 0 : const enum tree_code cmp1 = LE_EXPR;
6379 0 : const enum tree_code cmp2 = GE_EXPR;
6380 0 : const enum tree_code rcmp = NE_EXPR;
6381 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6382 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6383 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6384 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6385 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6386 : )
6387 : {
6388 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1560;
6389 0 : {
6390 0 : tree res_op0;
6391 0 : res_op0 = captures[0];
6392 0 : tree res_op1;
6393 0 : res_op1 = captures[1];
6394 0 : tree _r;
6395 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6396 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
6397 0 : return _r;
6398 : }
6399 0 : next_after_fail1560:;
6400 : }
6401 : }
6402 : }
6403 : }
6404 : break;
6405 : }
6406 41 : case EQ_EXPR:
6407 41 : {
6408 41 : tree _q50 = TREE_OPERAND (_p1, 0);
6409 41 : tree _q51 = TREE_OPERAND (_p1, 1);
6410 41 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6411 : {
6412 9 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6413 : {
6414 0 : {
6415 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6416 0 : const enum tree_code cmp1 = LE_EXPR;
6417 0 : const enum tree_code cmp2 = EQ_EXPR;
6418 0 : const enum tree_code rcmp = LT_EXPR;
6419 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6420 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6421 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6422 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6423 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6424 : )
6425 : {
6426 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1561;
6427 0 : {
6428 0 : tree res_op0;
6429 0 : res_op0 = captures[0];
6430 0 : tree res_op1;
6431 0 : res_op1 = captures[1];
6432 0 : tree _r;
6433 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6434 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
6435 0 : return _r;
6436 : }
6437 0 : next_after_fail1561:;
6438 : }
6439 : }
6440 : }
6441 : }
6442 : break;
6443 : }
6444 13 : case NE_EXPR:
6445 13 : {
6446 13 : tree _q50 = TREE_OPERAND (_p1, 0);
6447 13 : tree _q51 = TREE_OPERAND (_p1, 1);
6448 13 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6449 : {
6450 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6451 : {
6452 0 : {
6453 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6454 0 : const enum tree_code cmp1 = LE_EXPR;
6455 0 : const enum tree_code cmp2 = NE_EXPR;
6456 0 : const enum tree_code rcmp = GE_EXPR;
6457 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6458 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6459 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6460 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6461 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6462 : )
6463 : {
6464 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1562;
6465 0 : {
6466 0 : tree res_op0;
6467 0 : res_op0 = captures[0];
6468 0 : tree res_op1;
6469 0 : res_op1 = captures[1];
6470 0 : tree _r;
6471 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6472 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
6473 0 : return _r;
6474 : }
6475 0 : next_after_fail1562:;
6476 : }
6477 : }
6478 : }
6479 : }
6480 : break;
6481 : }
6482 : default:;
6483 : }
6484 : break;
6485 : }
6486 36023 : case GT_EXPR:
6487 36023 : {
6488 36023 : tree _q20 = TREE_OPERAND (_p0, 0);
6489 36023 : tree _q21 = TREE_OPERAND (_p0, 1);
6490 36023 : switch (TREE_CODE (_p1))
6491 : {
6492 77 : case GT_EXPR:
6493 77 : {
6494 77 : tree _q50 = TREE_OPERAND (_p1, 0);
6495 77 : tree _q51 = TREE_OPERAND (_p1, 1);
6496 77 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6497 : {
6498 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6499 : {
6500 0 : {
6501 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6502 0 : const enum tree_code cmp1 = LT_EXPR;
6503 0 : const enum tree_code cmp2 = GT_EXPR;
6504 0 : const enum tree_code rcmp = NE_EXPR;
6505 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6506 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6507 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6508 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6509 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6510 : )
6511 : {
6512 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1563;
6513 0 : {
6514 0 : tree res_op0;
6515 0 : res_op0 = captures[0];
6516 0 : tree res_op1;
6517 0 : res_op1 = captures[1];
6518 0 : tree _r;
6519 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6520 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
6521 0 : return _r;
6522 : }
6523 0 : next_after_fail1563:;
6524 : }
6525 : }
6526 0 : {
6527 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6528 0 : const enum tree_code cmp1 = LT_EXPR;
6529 0 : const enum tree_code cmp2 = GT_EXPR;
6530 0 : const enum tree_code rcmp = NE_EXPR;
6531 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6532 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6533 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6534 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6535 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6536 : )
6537 : {
6538 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1564;
6539 0 : {
6540 0 : tree res_op0;
6541 0 : res_op0 = captures[0];
6542 0 : tree res_op1;
6543 0 : res_op1 = captures[1];
6544 0 : tree _r;
6545 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6546 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
6547 0 : return _r;
6548 : }
6549 0 : next_after_fail1564:;
6550 : }
6551 : }
6552 : }
6553 : }
6554 : break;
6555 : }
6556 29 : case EQ_EXPR:
6557 29 : {
6558 29 : tree _q50 = TREE_OPERAND (_p1, 0);
6559 29 : tree _q51 = TREE_OPERAND (_p1, 1);
6560 29 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6561 : {
6562 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6563 : {
6564 0 : {
6565 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6566 0 : const enum tree_code cmp1 = LT_EXPR;
6567 0 : const enum tree_code cmp2 = EQ_EXPR;
6568 0 : const enum tree_code rcmp = LE_EXPR;
6569 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6570 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6571 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6572 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6573 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6574 : )
6575 : {
6576 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1565;
6577 0 : {
6578 0 : tree res_op0;
6579 0 : res_op0 = captures[0];
6580 0 : tree res_op1;
6581 0 : res_op1 = captures[1];
6582 0 : tree _r;
6583 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6584 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
6585 0 : return _r;
6586 : }
6587 0 : next_after_fail1565:;
6588 : }
6589 : }
6590 : }
6591 : }
6592 : break;
6593 : }
6594 53 : case NE_EXPR:
6595 53 : {
6596 53 : tree _q50 = TREE_OPERAND (_p1, 0);
6597 53 : tree _q51 = TREE_OPERAND (_p1, 1);
6598 53 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6599 : {
6600 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6601 : {
6602 0 : {
6603 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6604 0 : const enum tree_code cmp1 = LT_EXPR;
6605 0 : const enum tree_code cmp2 = NE_EXPR;
6606 0 : const enum tree_code rcmp = GT_EXPR;
6607 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6608 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6609 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6610 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6611 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6612 : )
6613 : {
6614 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1566;
6615 0 : {
6616 0 : tree res_op0;
6617 0 : res_op0 = captures[0];
6618 0 : tree res_op1;
6619 0 : res_op1 = captures[1];
6620 0 : tree _r;
6621 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6622 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
6623 0 : return _r;
6624 : }
6625 0 : next_after_fail1566:;
6626 : }
6627 : }
6628 : }
6629 : }
6630 : break;
6631 : }
6632 32 : case LT_EXPR:
6633 32 : {
6634 32 : tree _q50 = TREE_OPERAND (_p1, 0);
6635 32 : tree _q51 = TREE_OPERAND (_p1, 1);
6636 32 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6637 : {
6638 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6639 : {
6640 0 : {
6641 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6642 0 : const enum tree_code cmp1 = LT_EXPR;
6643 0 : const enum tree_code cmp2 = GT_EXPR;
6644 0 : const enum tree_code rcmp = NE_EXPR;
6645 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6646 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6647 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6648 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6649 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6650 : )
6651 : {
6652 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1567;
6653 0 : {
6654 0 : tree res_op0;
6655 0 : res_op0 = captures[0];
6656 0 : tree res_op1;
6657 0 : res_op1 = captures[1];
6658 0 : tree _r;
6659 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6660 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
6661 0 : return _r;
6662 : }
6663 0 : next_after_fail1567:;
6664 : }
6665 : }
6666 : }
6667 : }
6668 : break;
6669 : }
6670 : default:;
6671 : }
6672 : break;
6673 : }
6674 6161 : case GE_EXPR:
6675 6161 : {
6676 6161 : tree _q20 = TREE_OPERAND (_p0, 0);
6677 6161 : tree _q21 = TREE_OPERAND (_p0, 1);
6678 6161 : switch (TREE_CODE (_p1))
6679 : {
6680 76 : case GE_EXPR:
6681 76 : {
6682 76 : tree _q50 = TREE_OPERAND (_p1, 0);
6683 76 : tree _q51 = TREE_OPERAND (_p1, 1);
6684 76 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6685 : {
6686 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6687 : {
6688 0 : {
6689 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6690 0 : const enum tree_code cmp1 = LE_EXPR;
6691 0 : const enum tree_code cmp2 = GE_EXPR;
6692 0 : const enum tree_code rcmp = NE_EXPR;
6693 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6694 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6695 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6696 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6697 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6698 : )
6699 : {
6700 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1568;
6701 0 : {
6702 0 : tree res_op0;
6703 0 : res_op0 = captures[0];
6704 0 : tree res_op1;
6705 0 : res_op1 = captures[1];
6706 0 : tree _r;
6707 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6708 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
6709 0 : return _r;
6710 : }
6711 0 : next_after_fail1568:;
6712 : }
6713 : }
6714 0 : {
6715 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6716 0 : const enum tree_code cmp1 = LE_EXPR;
6717 0 : const enum tree_code cmp2 = GE_EXPR;
6718 0 : const enum tree_code rcmp = NE_EXPR;
6719 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6720 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6721 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6722 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6723 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6724 : )
6725 : {
6726 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1569;
6727 0 : {
6728 0 : tree res_op0;
6729 0 : res_op0 = captures[0];
6730 0 : tree res_op1;
6731 0 : res_op1 = captures[1];
6732 0 : tree _r;
6733 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6734 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
6735 0 : return _r;
6736 : }
6737 0 : next_after_fail1569:;
6738 : }
6739 : }
6740 : }
6741 : }
6742 : break;
6743 : }
6744 52 : case EQ_EXPR:
6745 52 : {
6746 52 : tree _q50 = TREE_OPERAND (_p1, 0);
6747 52 : tree _q51 = TREE_OPERAND (_p1, 1);
6748 52 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6749 : {
6750 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6751 : {
6752 0 : {
6753 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6754 0 : const enum tree_code cmp1 = LE_EXPR;
6755 0 : const enum tree_code cmp2 = EQ_EXPR;
6756 0 : const enum tree_code rcmp = LT_EXPR;
6757 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6758 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6759 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6760 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6761 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6762 : )
6763 : {
6764 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1570;
6765 0 : {
6766 0 : tree res_op0;
6767 0 : res_op0 = captures[0];
6768 0 : tree res_op1;
6769 0 : res_op1 = captures[1];
6770 0 : tree _r;
6771 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6772 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
6773 0 : return _r;
6774 : }
6775 0 : next_after_fail1570:;
6776 : }
6777 : }
6778 : }
6779 : }
6780 : break;
6781 : }
6782 11 : case NE_EXPR:
6783 11 : {
6784 11 : tree _q50 = TREE_OPERAND (_p1, 0);
6785 11 : tree _q51 = TREE_OPERAND (_p1, 1);
6786 11 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6787 : {
6788 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6789 : {
6790 0 : {
6791 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
6792 0 : const enum tree_code cmp1 = LE_EXPR;
6793 0 : const enum tree_code cmp2 = NE_EXPR;
6794 0 : const enum tree_code rcmp = GE_EXPR;
6795 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6796 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6797 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6798 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6799 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6800 : )
6801 : {
6802 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1571;
6803 0 : {
6804 0 : tree res_op0;
6805 0 : res_op0 = captures[0];
6806 0 : tree res_op1;
6807 0 : res_op1 = captures[1];
6808 0 : tree _r;
6809 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6810 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
6811 0 : return _r;
6812 : }
6813 0 : next_after_fail1571:;
6814 : }
6815 : }
6816 : }
6817 : }
6818 : break;
6819 : }
6820 16 : case LE_EXPR:
6821 16 : {
6822 16 : tree _q50 = TREE_OPERAND (_p1, 0);
6823 16 : tree _q51 = TREE_OPERAND (_p1, 1);
6824 16 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6825 : {
6826 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6827 : {
6828 0 : {
6829 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6830 0 : const enum tree_code cmp1 = LE_EXPR;
6831 0 : const enum tree_code cmp2 = GE_EXPR;
6832 0 : const enum tree_code rcmp = NE_EXPR;
6833 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6834 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6835 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6836 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6837 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6838 : )
6839 : {
6840 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1572;
6841 0 : {
6842 0 : tree res_op0;
6843 0 : res_op0 = captures[0];
6844 0 : tree res_op1;
6845 0 : res_op1 = captures[1];
6846 0 : tree _r;
6847 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6848 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
6849 0 : return _r;
6850 : }
6851 0 : next_after_fail1572:;
6852 : }
6853 : }
6854 : }
6855 : }
6856 : break;
6857 : }
6858 : default:;
6859 : }
6860 : break;
6861 : }
6862 64154 : case EQ_EXPR:
6863 64154 : {
6864 64154 : tree _q20 = TREE_OPERAND (_p0, 0);
6865 64154 : tree _q21 = TREE_OPERAND (_p0, 1);
6866 64154 : switch (TREE_CODE (_p1))
6867 : {
6868 5 : case LT_EXPR:
6869 5 : {
6870 5 : tree _q50 = TREE_OPERAND (_p1, 0);
6871 5 : tree _q51 = TREE_OPERAND (_p1, 1);
6872 5 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6873 : {
6874 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6875 : {
6876 0 : {
6877 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6878 0 : const enum tree_code cmp1 = LT_EXPR;
6879 0 : const enum tree_code cmp2 = EQ_EXPR;
6880 0 : const enum tree_code rcmp = LE_EXPR;
6881 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6882 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6883 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6884 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6885 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6886 : )
6887 : {
6888 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1573;
6889 0 : {
6890 0 : tree res_op0;
6891 0 : res_op0 = captures[0];
6892 0 : tree res_op1;
6893 0 : res_op1 = captures[1];
6894 0 : tree _r;
6895 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6896 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
6897 0 : return _r;
6898 : }
6899 0 : next_after_fail1573:;
6900 : }
6901 : }
6902 : }
6903 : }
6904 : break;
6905 : }
6906 42 : case LE_EXPR:
6907 42 : {
6908 42 : tree _q50 = TREE_OPERAND (_p1, 0);
6909 42 : tree _q51 = TREE_OPERAND (_p1, 1);
6910 42 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
6911 : {
6912 7 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
6913 : {
6914 0 : {
6915 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6916 0 : const enum tree_code cmp1 = LE_EXPR;
6917 0 : const enum tree_code cmp2 = EQ_EXPR;
6918 0 : const enum tree_code rcmp = LT_EXPR;
6919 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6920 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6921 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6922 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6923 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6924 : )
6925 : {
6926 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1574;
6927 0 : {
6928 0 : tree res_op0;
6929 0 : res_op0 = captures[0];
6930 0 : tree res_op1;
6931 0 : res_op1 = captures[1];
6932 0 : tree _r;
6933 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6934 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
6935 0 : return _r;
6936 : }
6937 0 : next_after_fail1574:;
6938 : }
6939 : }
6940 : }
6941 : }
6942 : break;
6943 : }
6944 7 : case GT_EXPR:
6945 7 : {
6946 7 : tree _q50 = TREE_OPERAND (_p1, 0);
6947 7 : tree _q51 = TREE_OPERAND (_p1, 1);
6948 7 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6949 : {
6950 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6951 : {
6952 0 : {
6953 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6954 0 : const enum tree_code cmp1 = LT_EXPR;
6955 0 : const enum tree_code cmp2 = EQ_EXPR;
6956 0 : const enum tree_code rcmp = LE_EXPR;
6957 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6958 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6959 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6960 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6961 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
6962 : )
6963 : {
6964 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1575;
6965 0 : {
6966 0 : tree res_op0;
6967 0 : res_op0 = captures[0];
6968 0 : tree res_op1;
6969 0 : res_op1 = captures[1];
6970 0 : tree _r;
6971 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
6972 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
6973 0 : return _r;
6974 : }
6975 0 : next_after_fail1575:;
6976 : }
6977 : }
6978 : }
6979 : }
6980 : break;
6981 : }
6982 14 : case GE_EXPR:
6983 14 : {
6984 14 : tree _q50 = TREE_OPERAND (_p1, 0);
6985 14 : tree _q51 = TREE_OPERAND (_p1, 1);
6986 14 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
6987 : {
6988 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
6989 : {
6990 0 : {
6991 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
6992 0 : const enum tree_code cmp1 = LE_EXPR;
6993 0 : const enum tree_code cmp2 = EQ_EXPR;
6994 0 : const enum tree_code rcmp = LT_EXPR;
6995 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
6996 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
6997 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
6998 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
6999 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7000 : )
7001 : {
7002 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1576;
7003 0 : {
7004 0 : tree res_op0;
7005 0 : res_op0 = captures[0];
7006 0 : tree res_op1;
7007 0 : res_op1 = captures[1];
7008 0 : tree _r;
7009 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7010 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
7011 0 : return _r;
7012 : }
7013 0 : next_after_fail1576:;
7014 : }
7015 : }
7016 : }
7017 : }
7018 : break;
7019 : }
7020 : default:;
7021 : }
7022 : break;
7023 : }
7024 69558 : case NE_EXPR:
7025 69558 : {
7026 69558 : tree _q20 = TREE_OPERAND (_p0, 0);
7027 69558 : tree _q21 = TREE_OPERAND (_p0, 1);
7028 69558 : switch (TREE_CODE (_p1))
7029 : {
7030 7 : case LT_EXPR:
7031 7 : {
7032 7 : tree _q50 = TREE_OPERAND (_p1, 0);
7033 7 : tree _q51 = TREE_OPERAND (_p1, 1);
7034 7 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7035 : {
7036 7 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7037 : {
7038 0 : {
7039 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7040 0 : const enum tree_code cmp1 = LT_EXPR;
7041 0 : const enum tree_code cmp2 = NE_EXPR;
7042 0 : const enum tree_code rcmp = GT_EXPR;
7043 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7044 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7045 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7046 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7047 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7048 : )
7049 : {
7050 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1577;
7051 0 : {
7052 0 : tree res_op0;
7053 0 : res_op0 = captures[0];
7054 0 : tree res_op1;
7055 0 : res_op1 = captures[1];
7056 0 : tree _r;
7057 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7058 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
7059 0 : return _r;
7060 : }
7061 0 : next_after_fail1577:;
7062 : }
7063 : }
7064 : }
7065 : }
7066 : break;
7067 : }
7068 302 : case LE_EXPR:
7069 302 : {
7070 302 : tree _q50 = TREE_OPERAND (_p1, 0);
7071 302 : tree _q51 = TREE_OPERAND (_p1, 1);
7072 302 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7073 : {
7074 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7075 : {
7076 0 : {
7077 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7078 0 : const enum tree_code cmp1 = LE_EXPR;
7079 0 : const enum tree_code cmp2 = NE_EXPR;
7080 0 : const enum tree_code rcmp = GE_EXPR;
7081 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7082 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7083 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7084 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7085 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7086 : )
7087 : {
7088 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1578;
7089 0 : {
7090 0 : tree res_op0;
7091 0 : res_op0 = captures[0];
7092 0 : tree res_op1;
7093 0 : res_op1 = captures[1];
7094 0 : tree _r;
7095 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7096 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
7097 0 : return _r;
7098 : }
7099 0 : next_after_fail1578:;
7100 : }
7101 : }
7102 : }
7103 : }
7104 : break;
7105 : }
7106 323 : case GT_EXPR:
7107 323 : {
7108 323 : tree _q50 = TREE_OPERAND (_p1, 0);
7109 323 : tree _q51 = TREE_OPERAND (_p1, 1);
7110 323 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7111 : {
7112 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7113 : {
7114 0 : {
7115 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7116 0 : const enum tree_code cmp1 = LT_EXPR;
7117 0 : const enum tree_code cmp2 = NE_EXPR;
7118 0 : const enum tree_code rcmp = GT_EXPR;
7119 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7120 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7121 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7122 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7123 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7124 : )
7125 : {
7126 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1579;
7127 0 : {
7128 0 : tree res_op0;
7129 0 : res_op0 = captures[0];
7130 0 : tree res_op1;
7131 0 : res_op1 = captures[1];
7132 0 : tree _r;
7133 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7134 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
7135 0 : return _r;
7136 : }
7137 0 : next_after_fail1579:;
7138 : }
7139 : }
7140 : }
7141 : }
7142 : break;
7143 : }
7144 2 : case GE_EXPR:
7145 2 : {
7146 2 : tree _q50 = TREE_OPERAND (_p1, 0);
7147 2 : tree _q51 = TREE_OPERAND (_p1, 1);
7148 2 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7149 : {
7150 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7151 : {
7152 0 : {
7153 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7154 0 : const enum tree_code cmp1 = LE_EXPR;
7155 0 : const enum tree_code cmp2 = NE_EXPR;
7156 0 : const enum tree_code rcmp = GE_EXPR;
7157 0 : if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))
7158 0 : || POINTER_TYPE_P (TREE_TYPE (captures[0]))
7159 0 : || ((VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[1]))
7160 0 : || VECTOR_BOOLEAN_TYPE_P (TREE_TYPE (captures[1])))
7161 0 : && expand_vec_cmp_expr_p (TREE_TYPE (captures[0]), type, rcmp))
7162 : )
7163 : {
7164 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1580;
7165 0 : {
7166 0 : tree res_op0;
7167 0 : res_op0 = captures[0];
7168 0 : tree res_op1;
7169 0 : res_op1 = captures[1];
7170 0 : tree _r;
7171 0 : _r = fold_build2_loc (loc, rcmp, type, res_op0, res_op1);
7172 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 906, __FILE__, __LINE__, true);
7173 0 : return _r;
7174 : }
7175 0 : next_after_fail1580:;
7176 : }
7177 : }
7178 : }
7179 : }
7180 : break;
7181 : }
7182 : default:;
7183 : }
7184 : break;
7185 : }
7186 8528 : case MIN_EXPR:
7187 8528 : {
7188 8528 : tree _q20 = TREE_OPERAND (_p0, 0);
7189 8528 : tree _q21 = TREE_OPERAND (_p0, 1);
7190 8528 : switch (TREE_CODE (_p1))
7191 : {
7192 0 : case MAX_EXPR:
7193 0 : {
7194 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7195 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7196 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7197 : {
7198 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7199 : {
7200 0 : {
7201 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7202 0 : if (!HONOR_NANS (captures[0])
7203 : )
7204 : {
7205 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1581;
7206 0 : {
7207 0 : tree res_op0;
7208 0 : res_op0 = captures[0];
7209 0 : tree res_op1;
7210 0 : res_op1 = captures[1];
7211 0 : tree _r;
7212 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
7213 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
7214 0 : return _r;
7215 : }
7216 0 : next_after_fail1581:;
7217 : }
7218 : }
7219 : }
7220 : }
7221 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7222 : {
7223 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7224 : {
7225 0 : {
7226 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7227 0 : if (!HONOR_NANS (captures[0])
7228 : )
7229 : {
7230 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1582;
7231 0 : {
7232 0 : tree res_op0;
7233 0 : res_op0 = captures[0];
7234 0 : tree res_op1;
7235 0 : res_op1 = captures[1];
7236 0 : tree _r;
7237 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
7238 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
7239 0 : return _r;
7240 : }
7241 0 : next_after_fail1582:;
7242 : }
7243 : }
7244 : }
7245 : }
7246 : break;
7247 : }
7248 8528 : default:;
7249 : }
7250 8528 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7251 : {
7252 0 : {
7253 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7254 0 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
7255 0 : if (res) return res;
7256 : }
7257 : }
7258 8528 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
7259 : {
7260 616 : {
7261 616 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7262 616 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
7263 616 : if (res) return res;
7264 : }
7265 : }
7266 : break;
7267 : }
7268 7840 : case MAX_EXPR:
7269 7840 : {
7270 7840 : tree _q20 = TREE_OPERAND (_p0, 0);
7271 7840 : tree _q21 = TREE_OPERAND (_p0, 1);
7272 7840 : switch (TREE_CODE (_p1))
7273 : {
7274 0 : case MIN_EXPR:
7275 0 : {
7276 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7277 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7278 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
7279 : {
7280 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7281 : {
7282 0 : {
7283 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7284 0 : if (!HONOR_NANS (captures[0])
7285 : )
7286 : {
7287 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1583;
7288 0 : {
7289 0 : tree res_op0;
7290 0 : res_op0 = captures[0];
7291 0 : tree res_op1;
7292 0 : res_op1 = captures[1];
7293 0 : tree _r;
7294 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
7295 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
7296 0 : return _r;
7297 : }
7298 0 : next_after_fail1583:;
7299 : }
7300 : }
7301 : }
7302 : }
7303 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
7304 : {
7305 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
7306 : {
7307 0 : {
7308 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7309 0 : if (!HONOR_NANS (captures[0])
7310 : )
7311 : {
7312 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1584;
7313 0 : {
7314 0 : tree res_op0;
7315 0 : res_op0 = captures[0];
7316 0 : tree res_op1;
7317 0 : res_op1 = captures[1];
7318 0 : tree _r;
7319 0 : _r = fold_build2_loc (loc, NE_EXPR, type, res_op0, res_op1);
7320 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 907, __FILE__, __LINE__, true);
7321 0 : return _r;
7322 : }
7323 0 : next_after_fail1584:;
7324 : }
7325 : }
7326 : }
7327 : }
7328 : break;
7329 : }
7330 7840 : default:;
7331 : }
7332 7840 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
7333 : {
7334 0 : {
7335 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7336 0 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
7337 0 : if (res) return res;
7338 : }
7339 : }
7340 7840 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
7341 : {
7342 425 : {
7343 425 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
7344 425 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
7345 425 : if (res) return res;
7346 : }
7347 : }
7348 : break;
7349 : }
7350 38496089 : default:;
7351 : }
7352 38496089 : if (tree_with_possible_nonzero_bits (_p0))
7353 : {
7354 15742312 : if (tree_with_known_nonzero_bits (_p1))
7355 : {
7356 14255602 : {
7357 14255602 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
7358 14255602 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, NE_EXPR);
7359 14255602 : if (res) return res;
7360 : }
7361 : }
7362 : }
7363 38438549 : if (tree_with_known_nonzero_bits (_p0))
7364 : {
7365 11562834 : if (tree_with_possible_nonzero_bits (_p1))
7366 : {
7367 11514144 : {
7368 11514144 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _p0 };
7369 11514144 : tree res = generic_simplify_233 (loc, type, _p0, _p1, captures, NE_EXPR);
7370 11514144 : if (res) return res;
7371 : }
7372 : }
7373 : }
7374 38437178 : switch (TREE_CODE (_p1))
7375 : {
7376 144 : case MIN_EXPR:
7377 144 : {
7378 144 : tree _q30 = TREE_OPERAND (_p1, 0);
7379 144 : tree _q31 = TREE_OPERAND (_p1, 1);
7380 144 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
7381 : {
7382 0 : {
7383 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
7384 0 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
7385 0 : if (res) return res;
7386 : }
7387 : }
7388 144 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
7389 : {
7390 0 : {
7391 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
7392 0 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, MIN_EXPR, NE_EXPR, GT_EXPR);
7393 0 : if (res) return res;
7394 : }
7395 : }
7396 : break;
7397 : }
7398 1631 : case MAX_EXPR:
7399 1631 : {
7400 1631 : tree _q30 = TREE_OPERAND (_p1, 0);
7401 1631 : tree _q31 = TREE_OPERAND (_p1, 1);
7402 1631 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
7403 : {
7404 0 : {
7405 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
7406 0 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
7407 0 : if (res) return res;
7408 : }
7409 : }
7410 1631 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
7411 : {
7412 0 : {
7413 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
7414 0 : tree res = generic_simplify_235 (loc, type, _p0, _p1, captures, MAX_EXPR, NE_EXPR, LT_EXPR);
7415 0 : if (res) return res;
7416 : }
7417 : }
7418 : break;
7419 : }
7420 38437178 : default:;
7421 : }
7422 38437178 : switch (TREE_CODE (_p0))
7423 : {
7424 8528 : case MIN_EXPR:
7425 8528 : {
7426 8528 : tree _q20 = TREE_OPERAND (_p0, 0);
7427 8528 : tree _q21 = TREE_OPERAND (_p0, 1);
7428 8528 : switch (TREE_CODE (_q21))
7429 : {
7430 674 : case INTEGER_CST:
7431 674 : {
7432 674 : switch (TREE_CODE (_p1))
7433 : {
7434 0 : case INTEGER_CST:
7435 0 : {
7436 0 : {
7437 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7438 0 : tree res = generic_simplify_236 (loc, type, _p0, _p1, captures, NE_EXPR);
7439 0 : if (res) return res;
7440 : }
7441 0 : break;
7442 : }
7443 : default:;
7444 : }
7445 : break;
7446 : }
7447 : default:;
7448 : }
7449 : break;
7450 : }
7451 7711 : case MAX_EXPR:
7452 7711 : {
7453 7711 : tree _q20 = TREE_OPERAND (_p0, 0);
7454 7711 : tree _q21 = TREE_OPERAND (_p0, 1);
7455 7711 : switch (TREE_CODE (_q21))
7456 : {
7457 6671 : case INTEGER_CST:
7458 6671 : {
7459 6671 : switch (TREE_CODE (_p1))
7460 : {
7461 690 : case INTEGER_CST:
7462 690 : {
7463 690 : {
7464 690 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7465 690 : tree res = generic_simplify_237 (loc, type, _p0, _p1, captures, NE_EXPR);
7466 690 : if (res) return res;
7467 : }
7468 0 : break;
7469 : }
7470 : default:;
7471 : }
7472 : break;
7473 : }
7474 7021 : default:;
7475 : }
7476 7021 : if (tree_expr_nonnegative_p (_q20))
7477 : {
7478 272 : if (tree_expr_nonnegative_p (_q21))
7479 : {
7480 260 : if (integer_zerop (_p1))
7481 : {
7482 0 : {
7483 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
7484 0 : tree res = generic_simplify_238 (loc, type, _p0, _p1, captures, NE_EXPR);
7485 0 : if (res) return res;
7486 : }
7487 : }
7488 : }
7489 : }
7490 : break;
7491 : }
7492 1299923 : case BIT_AND_EXPR:
7493 1299923 : {
7494 1299923 : tree _q20 = TREE_OPERAND (_p0, 0);
7495 1299923 : tree _q21 = TREE_OPERAND (_p0, 1);
7496 1299923 : switch (TREE_CODE (_q20))
7497 : {
7498 3559 : case LSHIFT_EXPR:
7499 3559 : {
7500 3559 : tree _q30 = TREE_OPERAND (_q20, 0);
7501 3559 : tree _q31 = TREE_OPERAND (_q20, 1);
7502 3559 : if (integer_pow2p (_q30))
7503 : {
7504 3538 : if (integer_pow2p (_q21))
7505 : {
7506 21 : if (integer_zerop (_p1))
7507 : {
7508 21 : {
7509 21 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
7510 21 : tree res = generic_simplify_239 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
7511 21 : if (res) return res;
7512 : }
7513 : }
7514 : }
7515 : }
7516 3538 : switch (TREE_CODE (_q31))
7517 : {
7518 13 : case INTEGER_CST:
7519 13 : {
7520 13 : switch (TREE_CODE (_q21))
7521 : {
7522 13 : case INTEGER_CST:
7523 13 : {
7524 13 : switch (TREE_CODE (_p1))
7525 : {
7526 13 : case INTEGER_CST:
7527 13 : {
7528 13 : {
7529 13 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
7530 13 : tree res = generic_simplify_240 (loc, type, _p0, _p1, captures, NE_EXPR);
7531 13 : if (res) return res;
7532 : }
7533 0 : break;
7534 : }
7535 : default:;
7536 : }
7537 : break;
7538 : }
7539 : default:;
7540 : }
7541 : break;
7542 : }
7543 3525 : default:;
7544 : }
7545 3525 : if (integer_onep (_q30))
7546 : {
7547 3516 : if (integer_pow2p (_q21))
7548 : {
7549 0 : if (integer_zerop (_p1))
7550 : {
7551 0 : {
7552 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _q21 };
7553 0 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
7554 0 : if (res) return res;
7555 : }
7556 : }
7557 : }
7558 : }
7559 : break;
7560 : }
7561 4765 : case RSHIFT_EXPR:
7562 4765 : {
7563 4765 : tree _q30 = TREE_OPERAND (_q20, 0);
7564 4765 : tree _q31 = TREE_OPERAND (_q20, 1);
7565 4765 : if (integer_pow2p (_q30))
7566 : {
7567 41 : if (integer_pow2p (_q21))
7568 : {
7569 9 : if (integer_zerop (_p1))
7570 : {
7571 9 : {
7572 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q21 };
7573 9 : tree res = generic_simplify_242 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
7574 9 : if (res) return res;
7575 : }
7576 : }
7577 : }
7578 : }
7579 4756 : switch (TREE_CODE (_q31))
7580 : {
7581 329 : case INTEGER_CST:
7582 329 : {
7583 329 : switch (TREE_CODE (_q21))
7584 : {
7585 305 : case INTEGER_CST:
7586 305 : {
7587 305 : switch (TREE_CODE (_p1))
7588 : {
7589 280 : case INTEGER_CST:
7590 280 : {
7591 280 : {
7592 280 : tree captures[6] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q31, _q21, _p1 };
7593 280 : tree res = generic_simplify_243 (loc, type, _p0, _p1, captures, NE_EXPR);
7594 280 : if (res) return res;
7595 : }
7596 14 : break;
7597 : }
7598 : default:;
7599 : }
7600 : break;
7601 : }
7602 : default:;
7603 : }
7604 : break;
7605 : }
7606 : default:;
7607 : }
7608 : break;
7609 : }
7610 1299614 : default:;
7611 : }
7612 1299614 : {
7613 1299614 : tree _q20_pops[1];
7614 1299614 : if (tree_nop_convert (_q20, _q20_pops))
7615 : {
7616 140764 : tree _q30 = _q20_pops[0];
7617 140764 : switch (TREE_CODE (_q30))
7618 : {
7619 37198 : case LSHIFT_EXPR:
7620 37198 : {
7621 37198 : tree _q40 = TREE_OPERAND (_q30, 0);
7622 37198 : tree _q41 = TREE_OPERAND (_q30, 1);
7623 37198 : if (integer_onep (_q40))
7624 : {
7625 37198 : if (integer_pow2p (_q21))
7626 : {
7627 8 : if (integer_zerop (_p1))
7628 : {
7629 8 : {
7630 8 : tree captures[2] ATTRIBUTE_UNUSED = { _q41, _q21 };
7631 8 : tree res = generic_simplify_241 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
7632 8 : if (res) return res;
7633 : }
7634 : }
7635 : }
7636 : }
7637 : break;
7638 : }
7639 : default:;
7640 : }
7641 : }
7642 : }
7643 1299614 : break;
7644 : }
7645 5098 : case LSHIFT_EXPR:
7646 5098 : {
7647 5098 : tree _q20 = TREE_OPERAND (_p0, 0);
7648 5098 : tree _q21 = TREE_OPERAND (_p0, 1);
7649 5098 : switch (TREE_CODE (_q20))
7650 : {
7651 536 : case INTEGER_CST:
7652 536 : {
7653 536 : switch (TREE_CODE (_p1))
7654 : {
7655 159 : case INTEGER_CST:
7656 159 : {
7657 159 : {
7658 159 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7659 159 : tree res = generic_simplify_244 (loc, type, _p0, _p1, captures, NE_EXPR);
7660 159 : if (res) return res;
7661 : }
7662 88 : break;
7663 : }
7664 : default:;
7665 : }
7666 : break;
7667 : }
7668 : default:;
7669 : }
7670 : break;
7671 : }
7672 393 : case LROTATE_EXPR:
7673 393 : {
7674 393 : tree _q20 = TREE_OPERAND (_p0, 0);
7675 393 : tree _q21 = TREE_OPERAND (_p0, 1);
7676 393 : switch (TREE_CODE (_p1))
7677 : {
7678 0 : case LROTATE_EXPR:
7679 0 : {
7680 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7681 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7682 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7683 : {
7684 0 : {
7685 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7686 0 : tree res = generic_simplify_245 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, NE_EXPR);
7687 0 : if (res) return res;
7688 : }
7689 : }
7690 : break;
7691 : }
7692 393 : default:;
7693 : }
7694 393 : switch (TREE_CODE (_q21))
7695 : {
7696 112 : case INTEGER_CST:
7697 112 : {
7698 112 : switch (TREE_CODE (_p1))
7699 : {
7700 112 : case INTEGER_CST:
7701 112 : {
7702 112 : {
7703 112 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7704 112 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, NE_EXPR);
7705 112 : if (res) return res;
7706 : }
7707 0 : break;
7708 : }
7709 : default:;
7710 : }
7711 : break;
7712 : }
7713 281 : default:;
7714 : }
7715 281 : switch (TREE_CODE (_p1))
7716 : {
7717 193 : case INTEGER_CST:
7718 193 : {
7719 193 : {
7720 193 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7721 193 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, LROTATE_EXPR, RROTATE_EXPR, NE_EXPR);
7722 193 : if (res) return res;
7723 : }
7724 193 : break;
7725 : }
7726 : default:;
7727 : }
7728 : break;
7729 : }
7730 439 : case RROTATE_EXPR:
7731 439 : {
7732 439 : tree _q20 = TREE_OPERAND (_p0, 0);
7733 439 : tree _q21 = TREE_OPERAND (_p0, 1);
7734 439 : switch (TREE_CODE (_p1))
7735 : {
7736 0 : case RROTATE_EXPR:
7737 0 : {
7738 0 : tree _q50 = TREE_OPERAND (_p1, 0);
7739 0 : tree _q51 = TREE_OPERAND (_p1, 1);
7740 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
7741 : {
7742 0 : {
7743 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
7744 0 : tree res = generic_simplify_245 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, NE_EXPR);
7745 0 : if (res) return res;
7746 : }
7747 : }
7748 : break;
7749 : }
7750 439 : default:;
7751 : }
7752 439 : switch (TREE_CODE (_q21))
7753 : {
7754 233 : case INTEGER_CST:
7755 233 : {
7756 233 : switch (TREE_CODE (_p1))
7757 : {
7758 12 : case INTEGER_CST:
7759 12 : {
7760 12 : {
7761 12 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7762 12 : tree res = generic_simplify_246 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, NE_EXPR);
7763 12 : if (res) return res;
7764 : }
7765 0 : break;
7766 : }
7767 : default:;
7768 : }
7769 : break;
7770 : }
7771 427 : default:;
7772 : }
7773 427 : switch (TREE_CODE (_p1))
7774 : {
7775 190 : case INTEGER_CST:
7776 190 : {
7777 190 : {
7778 190 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
7779 190 : tree res = generic_simplify_247 (loc, type, _p0, _p1, captures, RROTATE_EXPR, LROTATE_EXPR, NE_EXPR);
7780 190 : if (res) return res;
7781 : }
7782 190 : break;
7783 : }
7784 : default:;
7785 : }
7786 : break;
7787 : }
7788 352 : case VEC_COND_EXPR:
7789 352 : {
7790 352 : tree _q20 = TREE_OPERAND (_p0, 0);
7791 352 : tree _q21 = TREE_OPERAND (_p0, 1);
7792 352 : tree _q22 = TREE_OPERAND (_p0, 2);
7793 352 : switch (TREE_CODE (_p1))
7794 : {
7795 16 : case VEC_COND_EXPR:
7796 16 : {
7797 16 : tree _q60 = TREE_OPERAND (_p1, 0);
7798 16 : tree _q61 = TREE_OPERAND (_p1, 1);
7799 16 : tree _q62 = TREE_OPERAND (_p1, 2);
7800 16 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
7801 : {
7802 0 : {
7803 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
7804 0 : if (VECTOR_TYPE_P (type)
7805 0 : && (TREE_CODE_CLASS (NE_EXPR) != tcc_comparison
7806 0 : || types_match (type, TREE_TYPE (captures[2]))
7807 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
7808 : || (optimize_vectors_before_lowering_p ()
7809 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
7810 : )
7811 : {
7812 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1585;
7813 0 : {
7814 0 : tree res_op0;
7815 0 : res_op0 = captures[1];
7816 0 : tree res_op1;
7817 0 : {
7818 0 : tree _o1[2], _r1;
7819 0 : _o1[0] = captures[2];
7820 0 : _o1[1] = captures[5];
7821 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
7822 0 : if (EXPR_P (_r1))
7823 0 : goto next_after_fail1585;
7824 0 : res_op1 = _r1;
7825 : }
7826 0 : tree res_op2;
7827 0 : {
7828 0 : tree _o1[2], _r1;
7829 0 : _o1[0] = captures[3];
7830 0 : _o1[1] = captures[6];
7831 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
7832 0 : if (EXPR_P (_r1))
7833 0 : goto next_after_fail1585;
7834 0 : res_op2 = _r1;
7835 : }
7836 0 : tree _r;
7837 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7838 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
7839 0 : return _r;
7840 : }
7841 0 : next_after_fail1585:;
7842 : }
7843 : }
7844 : }
7845 : break;
7846 : }
7847 352 : default:;
7848 : }
7849 352 : {
7850 352 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
7851 352 : if (VECTOR_TYPE_P (type)
7852 352 : && (TREE_CODE_CLASS (NE_EXPR) != tcc_comparison
7853 350 : || types_match (type, TREE_TYPE (captures[2]))
7854 350 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
7855 : || (optimize_vectors_before_lowering_p ()
7856 27 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
7857 : )
7858 : {
7859 350 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1586;
7860 350 : {
7861 350 : if (! tree_invariant_p (captures[4])) goto next_after_fail1586;
7862 88 : tree res_op0;
7863 88 : res_op0 = captures[1];
7864 88 : tree res_op1;
7865 88 : {
7866 88 : tree _o1[2], _r1;
7867 88 : _o1[0] = captures[2];
7868 88 : _o1[1] = unshare_expr (captures[4]);
7869 88 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
7870 88 : if (EXPR_P (_r1))
7871 16 : goto next_after_fail1586;
7872 72 : res_op1 = _r1;
7873 : }
7874 72 : tree res_op2;
7875 72 : {
7876 72 : tree _o1[2], _r1;
7877 72 : _o1[0] = captures[3];
7878 72 : _o1[1] = captures[4];
7879 72 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
7880 72 : if (EXPR_P (_r1))
7881 0 : goto next_after_fail1586;
7882 72 : res_op2 = _r1;
7883 : }
7884 72 : tree _r;
7885 72 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
7886 72 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
7887 72 : return _r;
7888 : }
7889 280 : next_after_fail1586:;
7890 : }
7891 : }
7892 280 : break;
7893 : }
7894 2461323 : case CALL_EXPR:
7895 2461323 : switch (get_call_combined_fn (_p0))
7896 : {
7897 0 : case CFN_BUILT_IN_BITREVERSE128:
7898 0 : if (call_expr_nargs (_p0) == 1)
7899 : {
7900 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7901 0 : switch (TREE_CODE (_p1))
7902 : {
7903 0 : case INTEGER_CST:
7904 0 : {
7905 0 : {
7906 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7907 0 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE128);
7908 0 : if (res) return res;
7909 : }
7910 0 : break;
7911 : }
7912 0 : case CALL_EXPR:
7913 0 : switch (get_call_combined_fn (_p1))
7914 : {
7915 0 : case CFN_BUILT_IN_BITREVERSE128:
7916 0 : if (call_expr_nargs (_p1) == 1)
7917 : {
7918 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7919 0 : {
7920 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7921 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE128);
7922 0 : if (res) return res;
7923 : }
7924 : }
7925 : break;
7926 : default:;
7927 : }
7928 : break;
7929 : default:;
7930 : }
7931 : }
7932 : break;
7933 0 : case CFN_BUILT_IN_BITREVERSE16:
7934 0 : if (call_expr_nargs (_p0) == 1)
7935 : {
7936 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7937 0 : switch (TREE_CODE (_p1))
7938 : {
7939 0 : case INTEGER_CST:
7940 0 : {
7941 0 : {
7942 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7943 0 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE16);
7944 0 : if (res) return res;
7945 : }
7946 0 : break;
7947 : }
7948 0 : case CALL_EXPR:
7949 0 : switch (get_call_combined_fn (_p1))
7950 : {
7951 0 : case CFN_BUILT_IN_BITREVERSE16:
7952 0 : if (call_expr_nargs (_p1) == 1)
7953 : {
7954 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7955 0 : {
7956 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7957 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE16);
7958 0 : if (res) return res;
7959 : }
7960 : }
7961 : break;
7962 : default:;
7963 : }
7964 : break;
7965 : default:;
7966 : }
7967 : }
7968 : break;
7969 0 : case CFN_BUILT_IN_BITREVERSE32:
7970 0 : if (call_expr_nargs (_p0) == 1)
7971 : {
7972 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
7973 0 : switch (TREE_CODE (_p1))
7974 : {
7975 0 : case INTEGER_CST:
7976 0 : {
7977 0 : {
7978 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
7979 0 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE32);
7980 0 : if (res) return res;
7981 : }
7982 0 : break;
7983 : }
7984 0 : case CALL_EXPR:
7985 0 : switch (get_call_combined_fn (_p1))
7986 : {
7987 0 : case CFN_BUILT_IN_BITREVERSE32:
7988 0 : if (call_expr_nargs (_p1) == 1)
7989 : {
7990 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
7991 0 : {
7992 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
7993 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE32);
7994 0 : if (res) return res;
7995 : }
7996 : }
7997 : break;
7998 : default:;
7999 : }
8000 : break;
8001 : default:;
8002 : }
8003 : }
8004 : break;
8005 0 : case CFN_BUILT_IN_BITREVERSE64:
8006 0 : if (call_expr_nargs (_p0) == 1)
8007 : {
8008 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8009 0 : switch (TREE_CODE (_p1))
8010 : {
8011 0 : case INTEGER_CST:
8012 0 : {
8013 0 : {
8014 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8015 0 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE64);
8016 0 : if (res) return res;
8017 : }
8018 0 : break;
8019 : }
8020 0 : case CALL_EXPR:
8021 0 : switch (get_call_combined_fn (_p1))
8022 : {
8023 0 : case CFN_BUILT_IN_BITREVERSE64:
8024 0 : if (call_expr_nargs (_p1) == 1)
8025 : {
8026 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8027 0 : {
8028 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8029 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE64);
8030 0 : if (res) return res;
8031 : }
8032 : }
8033 : break;
8034 : default:;
8035 : }
8036 : break;
8037 : default:;
8038 : }
8039 : }
8040 : break;
8041 0 : case CFN_BITREVERSE:
8042 0 : if (call_expr_nargs (_p0) == 1)
8043 : {
8044 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8045 0 : switch (TREE_CODE (_p1))
8046 : {
8047 0 : case INTEGER_CST:
8048 0 : {
8049 0 : {
8050 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8051 0 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BITREVERSE);
8052 0 : if (res) return res;
8053 : }
8054 0 : break;
8055 : }
8056 0 : case CALL_EXPR:
8057 0 : switch (get_call_combined_fn (_p1))
8058 : {
8059 0 : case CFN_BITREVERSE:
8060 0 : if (call_expr_nargs (_p1) == 1)
8061 : {
8062 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8063 0 : {
8064 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8065 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BITREVERSE);
8066 0 : if (res) return res;
8067 : }
8068 : }
8069 : break;
8070 : default:;
8071 : }
8072 : break;
8073 : default:;
8074 : }
8075 : }
8076 : break;
8077 0 : case CFN_BSWAP:
8078 0 : if (call_expr_nargs (_p0) == 1)
8079 : {
8080 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8081 0 : switch (TREE_CODE (_p1))
8082 : {
8083 0 : case INTEGER_CST:
8084 0 : {
8085 0 : {
8086 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8087 0 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BSWAP);
8088 0 : if (res) return res;
8089 : }
8090 0 : break;
8091 : }
8092 0 : case CALL_EXPR:
8093 0 : switch (get_call_combined_fn (_p1))
8094 : {
8095 0 : case CFN_BSWAP:
8096 0 : if (call_expr_nargs (_p1) == 1)
8097 : {
8098 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8099 0 : {
8100 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8101 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BSWAP);
8102 0 : if (res) return res;
8103 : }
8104 : }
8105 : break;
8106 : default:;
8107 : }
8108 : break;
8109 : default:;
8110 : }
8111 : }
8112 : break;
8113 2 : case CFN_BUILT_IN_BSWAP128:
8114 2 : if (call_expr_nargs (_p0) == 1)
8115 : {
8116 2 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8117 2 : switch (TREE_CODE (_p1))
8118 : {
8119 0 : case INTEGER_CST:
8120 0 : {
8121 0 : {
8122 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8123 0 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP128);
8124 0 : if (res) return res;
8125 : }
8126 0 : break;
8127 : }
8128 1 : case CALL_EXPR:
8129 1 : switch (get_call_combined_fn (_p1))
8130 : {
8131 0 : case CFN_BUILT_IN_BSWAP128:
8132 0 : if (call_expr_nargs (_p1) == 1)
8133 : {
8134 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8135 0 : {
8136 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8137 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP128);
8138 0 : if (res) return res;
8139 : }
8140 : }
8141 : break;
8142 : default:;
8143 : }
8144 : break;
8145 : default:;
8146 : }
8147 : }
8148 : break;
8149 0 : case CFN_BUILT_IN_BITREVERSE8:
8150 0 : if (call_expr_nargs (_p0) == 1)
8151 : {
8152 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8153 0 : switch (TREE_CODE (_p1))
8154 : {
8155 0 : case INTEGER_CST:
8156 0 : {
8157 0 : {
8158 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8159 0 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE8);
8160 0 : if (res) return res;
8161 : }
8162 0 : break;
8163 : }
8164 0 : case CALL_EXPR:
8165 0 : switch (get_call_combined_fn (_p1))
8166 : {
8167 0 : case CFN_BUILT_IN_BITREVERSE8:
8168 0 : if (call_expr_nargs (_p1) == 1)
8169 : {
8170 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8171 0 : {
8172 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8173 0 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BITREVERSE8);
8174 0 : if (res) return res;
8175 : }
8176 : }
8177 : break;
8178 : default:;
8179 : }
8180 : break;
8181 : default:;
8182 : }
8183 : }
8184 : break;
8185 11 : case CFN_BUILT_IN_BSWAP16:
8186 11 : if (call_expr_nargs (_p0) == 1)
8187 : {
8188 11 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8189 11 : switch (TREE_CODE (_p1))
8190 : {
8191 9 : case INTEGER_CST:
8192 9 : {
8193 9 : {
8194 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8195 9 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP16);
8196 9 : if (res) return res;
8197 : }
8198 9 : break;
8199 : }
8200 1 : case CALL_EXPR:
8201 1 : switch (get_call_combined_fn (_p1))
8202 : {
8203 1 : case CFN_BUILT_IN_BSWAP16:
8204 1 : if (call_expr_nargs (_p1) == 1)
8205 : {
8206 1 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8207 1 : {
8208 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8209 1 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP16);
8210 1 : if (res) return res;
8211 : }
8212 : }
8213 : break;
8214 : default:;
8215 : }
8216 : break;
8217 : default:;
8218 : }
8219 : }
8220 : break;
8221 7 : case CFN_BUILT_IN_BSWAP32:
8222 7 : if (call_expr_nargs (_p0) == 1)
8223 : {
8224 7 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8225 7 : switch (TREE_CODE (_p1))
8226 : {
8227 3 : case INTEGER_CST:
8228 3 : {
8229 3 : {
8230 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8231 3 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP32);
8232 3 : if (res) return res;
8233 : }
8234 3 : break;
8235 : }
8236 3 : case CALL_EXPR:
8237 3 : switch (get_call_combined_fn (_p1))
8238 : {
8239 3 : case CFN_BUILT_IN_BSWAP32:
8240 3 : if (call_expr_nargs (_p1) == 1)
8241 : {
8242 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8243 3 : {
8244 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8245 3 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP32);
8246 3 : if (res) return res;
8247 : }
8248 : }
8249 : break;
8250 : default:;
8251 : }
8252 : break;
8253 : default:;
8254 : }
8255 : }
8256 : break;
8257 7 : case CFN_BUILT_IN_BSWAP64:
8258 7 : if (call_expr_nargs (_p0) == 1)
8259 : {
8260 7 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
8261 7 : switch (TREE_CODE (_p1))
8262 : {
8263 3 : case INTEGER_CST:
8264 3 : {
8265 3 : {
8266 3 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
8267 3 : tree res = generic_simplify_250 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP64);
8268 3 : if (res) return res;
8269 : }
8270 3 : break;
8271 : }
8272 3 : case CALL_EXPR:
8273 3 : switch (get_call_combined_fn (_p1))
8274 : {
8275 3 : case CFN_BUILT_IN_BSWAP64:
8276 3 : if (call_expr_nargs (_p1) == 1)
8277 : {
8278 3 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
8279 3 : {
8280 3 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
8281 3 : tree res = generic_simplify_249 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_BSWAP64);
8282 3 : if (res) return res;
8283 : }
8284 : }
8285 : break;
8286 : default:;
8287 : }
8288 : break;
8289 : default:;
8290 : }
8291 : }
8292 : break;
8293 : default:;
8294 : }
8295 : break;
8296 38435905 : default:;
8297 : }
8298 38435905 : switch (TREE_CODE (_p1))
8299 : {
8300 40 : case VEC_COND_EXPR:
8301 40 : {
8302 40 : tree _q30 = TREE_OPERAND (_p1, 0);
8303 40 : tree _q31 = TREE_OPERAND (_p1, 1);
8304 40 : tree _q32 = TREE_OPERAND (_p1, 2);
8305 40 : {
8306 40 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
8307 40 : if (VECTOR_TYPE_P (type)
8308 40 : && (TREE_CODE_CLASS (NE_EXPR) != tcc_comparison
8309 40 : || types_match (type, TREE_TYPE (captures[3]))
8310 40 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
8311 : || (optimize_vectors_before_lowering_p ()
8312 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
8313 : )
8314 : {
8315 40 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1587;
8316 40 : {
8317 40 : if (! tree_invariant_p (captures[0])) goto next_after_fail1587;
8318 0 : tree res_op0;
8319 0 : res_op0 = captures[2];
8320 0 : tree res_op1;
8321 0 : {
8322 0 : tree _o1[2], _r1;
8323 0 : _o1[0] = unshare_expr (captures[0]);
8324 0 : _o1[1] = captures[3];
8325 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
8326 0 : if (EXPR_P (_r1))
8327 0 : goto next_after_fail1587;
8328 0 : res_op1 = _r1;
8329 : }
8330 0 : tree res_op2;
8331 0 : {
8332 0 : tree _o1[2], _r1;
8333 0 : _o1[0] = captures[0];
8334 0 : _o1[1] = captures[4];
8335 0 : _r1 = fold_build2_loc (loc, NE_EXPR, type, _o1[0], _o1[1]);
8336 0 : if (EXPR_P (_r1))
8337 0 : goto next_after_fail1587;
8338 0 : res_op2 = _r1;
8339 : }
8340 0 : tree _r;
8341 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8342 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
8343 0 : return _r;
8344 : }
8345 40 : next_after_fail1587:;
8346 : }
8347 : }
8348 40 : break;
8349 : }
8350 38435905 : default:;
8351 : }
8352 38435905 : switch (TREE_CODE (_p0))
8353 : {
8354 97805 : case COND_EXPR:
8355 97805 : {
8356 97805 : tree _q20 = TREE_OPERAND (_p0, 0);
8357 97805 : tree _q21 = TREE_OPERAND (_p0, 1);
8358 97805 : tree _q22 = TREE_OPERAND (_p0, 2);
8359 97805 : switch (TREE_CODE (_p1))
8360 : {
8361 276 : case COND_EXPR:
8362 276 : {
8363 276 : tree _q60 = TREE_OPERAND (_p1, 0);
8364 276 : tree _q61 = TREE_OPERAND (_p1, 1);
8365 276 : tree _q62 = TREE_OPERAND (_p1, 2);
8366 276 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
8367 : {
8368 72 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
8369 : {
8370 72 : {
8371 72 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8372 72 : const enum tree_code eqne = NE_EXPR;
8373 72 : if (!HONOR_NANS (captures[1])
8374 56 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8375 49 : && types_match (type, TREE_TYPE (captures[0]))
8376 49 : && expr_no_side_effects_p (captures[1])
8377 114 : && expr_no_side_effects_p (captures[2])
8378 : )
8379 : {
8380 42 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1588;
8381 42 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1588;
8382 42 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1588;
8383 42 : {
8384 42 : tree res_op0;
8385 42 : {
8386 42 : tree _o1[2], _r1;
8387 42 : {
8388 42 : tree _o2[2], _r2;
8389 42 : _o2[0] = captures[0];
8390 42 : _o2[1] = captures[3];
8391 42 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8392 42 : _o1[0] = _r2;
8393 : }
8394 42 : {
8395 42 : tree _o2[2], _r2;
8396 42 : _o2[0] = captures[1];
8397 42 : _o2[1] = captures[2];
8398 42 : _r2 = fold_build2_loc (loc, NE_EXPR, type, _o2[0], _o2[1]);
8399 42 : _o1[1] = _r2;
8400 : }
8401 42 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8402 42 : res_op0 = _r1;
8403 : }
8404 42 : tree res_op1;
8405 42 : res_op1 = constant_boolean_node (eqne == NE_EXPR, type);
8406 42 : tree res_op2;
8407 42 : res_op2 = constant_boolean_node (eqne != NE_EXPR, type);
8408 42 : tree _r;
8409 42 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
8410 42 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 993, __FILE__, __LINE__, true);
8411 42 : return _r;
8412 : }
8413 30 : next_after_fail1588:;
8414 : }
8415 : }
8416 : }
8417 : }
8418 234 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
8419 : {
8420 0 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
8421 : {
8422 0 : {
8423 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8424 0 : const enum tree_code eqne = NE_EXPR;
8425 0 : if (!HONOR_NANS (captures[1])
8426 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8427 0 : && types_match (type, TREE_TYPE (captures[0]))
8428 0 : && expr_no_side_effects_p (captures[1])
8429 0 : && expr_no_side_effects_p (captures[2])
8430 : )
8431 : {
8432 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1589;
8433 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1589;
8434 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1589;
8435 0 : {
8436 0 : tree res_op0;
8437 0 : {
8438 0 : tree _o1[2], _r1;
8439 0 : {
8440 0 : tree _o2[2], _r2;
8441 0 : _o2[0] = captures[0];
8442 0 : _o2[1] = captures[3];
8443 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8444 0 : _o1[0] = _r2;
8445 : }
8446 0 : {
8447 0 : tree _o2[2], _r2;
8448 0 : _o2[0] = captures[1];
8449 0 : _o2[1] = captures[2];
8450 0 : _r2 = fold_build2_loc (loc, EQ_EXPR, type, _o2[0], _o2[1]);
8451 0 : _o1[1] = _r2;
8452 : }
8453 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8454 0 : res_op0 = _r1;
8455 : }
8456 0 : tree res_op1;
8457 0 : res_op1 = constant_boolean_node (eqne != NE_EXPR, type);
8458 0 : tree res_op2;
8459 0 : res_op2 = constant_boolean_node (eqne == NE_EXPR, type);
8460 0 : tree _r;
8461 0 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
8462 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 994, __FILE__, __LINE__, true);
8463 0 : return _r;
8464 : }
8465 0 : next_after_fail1589:;
8466 : }
8467 : }
8468 : }
8469 : }
8470 : break;
8471 : }
8472 : default:;
8473 : }
8474 : break;
8475 : }
8476 280 : case VEC_COND_EXPR:
8477 280 : {
8478 280 : tree _q20 = TREE_OPERAND (_p0, 0);
8479 280 : tree _q21 = TREE_OPERAND (_p0, 1);
8480 280 : tree _q22 = TREE_OPERAND (_p0, 2);
8481 280 : switch (TREE_CODE (_p1))
8482 : {
8483 16 : case VEC_COND_EXPR:
8484 16 : {
8485 16 : tree _q60 = TREE_OPERAND (_p1, 0);
8486 16 : tree _q61 = TREE_OPERAND (_p1, 1);
8487 16 : tree _q62 = TREE_OPERAND (_p1, 2);
8488 16 : if ((_q61 == _q21 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q21, 0) && types_match (_q61, _q21)))
8489 : {
8490 0 : if ((_q62 == _q22 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q22, 0) && types_match (_q62, _q22)))
8491 : {
8492 0 : {
8493 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8494 0 : const enum tree_code eqne = NE_EXPR;
8495 0 : if (!HONOR_NANS (captures[1])
8496 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8497 0 : && types_match (type, TREE_TYPE (captures[0]))
8498 0 : && expr_no_side_effects_p (captures[1])
8499 0 : && expr_no_side_effects_p (captures[2])
8500 : )
8501 : {
8502 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1590;
8503 0 : {
8504 0 : tree res_op0;
8505 0 : {
8506 0 : tree _o1[2], _r1;
8507 0 : {
8508 0 : tree _o2[2], _r2;
8509 0 : _o2[0] = captures[0];
8510 0 : _o2[1] = captures[3];
8511 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8512 0 : _o1[0] = _r2;
8513 : }
8514 0 : {
8515 0 : tree _o2[2], _r2;
8516 0 : _o2[0] = captures[1];
8517 0 : _o2[1] = captures[2];
8518 0 : _r2 = fold_build2_loc (loc, NE_EXPR, type, _o2[0], _o2[1]);
8519 0 : _o1[1] = _r2;
8520 : }
8521 0 : _r1 = fold_build2_loc (loc, BIT_AND_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8522 0 : res_op0 = _r1;
8523 : }
8524 0 : tree res_op1;
8525 0 : res_op1 = constant_boolean_node (eqne == NE_EXPR, type);
8526 0 : tree res_op2;
8527 0 : res_op2 = constant_boolean_node (eqne != NE_EXPR, type);
8528 0 : tree _r;
8529 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8530 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 993, __FILE__, __LINE__, true);
8531 0 : return _r;
8532 : }
8533 0 : next_after_fail1590:;
8534 : }
8535 : }
8536 : }
8537 : }
8538 16 : if ((_q61 == _q22 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q22, 0) && types_match (_q61, _q22)))
8539 : {
8540 16 : if ((_q62 == _q21 && ! TREE_SIDE_EFFECTS (_q62)) || (operand_equal_p (_q62, _q21, 0) && types_match (_q62, _q21)))
8541 : {
8542 16 : {
8543 16 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q22, _q60 };
8544 16 : const enum tree_code eqne = NE_EXPR;
8545 16 : if (!HONOR_NANS (captures[1])
8546 0 : && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))
8547 0 : && types_match (type, TREE_TYPE (captures[0]))
8548 0 : && expr_no_side_effects_p (captures[1])
8549 16 : && expr_no_side_effects_p (captures[2])
8550 : )
8551 : {
8552 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1591;
8553 0 : {
8554 0 : tree res_op0;
8555 0 : {
8556 0 : tree _o1[2], _r1;
8557 0 : {
8558 0 : tree _o2[2], _r2;
8559 0 : _o2[0] = captures[0];
8560 0 : _o2[1] = captures[3];
8561 0 : _r2 = fold_build2_loc (loc, BIT_XOR_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
8562 0 : _o1[0] = _r2;
8563 : }
8564 0 : {
8565 0 : tree _o2[2], _r2;
8566 0 : _o2[0] = captures[1];
8567 0 : _o2[1] = captures[2];
8568 0 : _r2 = fold_build2_loc (loc, EQ_EXPR, type, _o2[0], _o2[1]);
8569 0 : _o1[1] = _r2;
8570 : }
8571 0 : _r1 = fold_build2_loc (loc, BIT_IOR_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
8572 0 : res_op0 = _r1;
8573 : }
8574 0 : tree res_op1;
8575 0 : res_op1 = constant_boolean_node (eqne != NE_EXPR, type);
8576 0 : tree res_op2;
8577 0 : res_op2 = constant_boolean_node (eqne == NE_EXPR, type);
8578 0 : tree _r;
8579 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
8580 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 994, __FILE__, __LINE__, true);
8581 0 : return _r;
8582 : }
8583 0 : next_after_fail1591:;
8584 : }
8585 : }
8586 : }
8587 : }
8588 : break;
8589 : }
8590 : default:;
8591 : }
8592 : break;
8593 : }
8594 18294 : case LT_EXPR:
8595 18294 : {
8596 18294 : tree _q20 = TREE_OPERAND (_p0, 0);
8597 18294 : tree _q21 = TREE_OPERAND (_p0, 1);
8598 18294 : if (integer_zerop (_p1))
8599 : {
8600 16758 : {
8601 16758 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8602 16758 : tree res = generic_simplify_306 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
8603 16758 : if (res) return res;
8604 : }
8605 : }
8606 15340 : if (integer_truep (_p1))
8607 : {
8608 563 : {
8609 563 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8610 563 : tree res = generic_simplify_307 (loc, type, _p0, _p1, captures, LT_EXPR, GE_EXPR, UNGE_EXPR);
8611 563 : if (res) return res;
8612 : }
8613 : }
8614 : break;
8615 : }
8616 12028 : case LE_EXPR:
8617 12028 : {
8618 12028 : tree _q20 = TREE_OPERAND (_p0, 0);
8619 12028 : tree _q21 = TREE_OPERAND (_p0, 1);
8620 12028 : if (integer_zerop (_p1))
8621 : {
8622 9450 : {
8623 9450 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8624 9450 : tree res = generic_simplify_306 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
8625 9450 : if (res) return res;
8626 : }
8627 : }
8628 11238 : if (integer_truep (_p1))
8629 : {
8630 473 : {
8631 473 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8632 473 : tree res = generic_simplify_307 (loc, type, _p0, _p1, captures, LE_EXPR, GT_EXPR, UNGT_EXPR);
8633 473 : if (res) return res;
8634 : }
8635 : }
8636 : break;
8637 : }
8638 64154 : case EQ_EXPR:
8639 64154 : {
8640 64154 : tree _q20 = TREE_OPERAND (_p0, 0);
8641 64154 : tree _q21 = TREE_OPERAND (_p0, 1);
8642 64154 : if (integer_zerop (_p1))
8643 : {
8644 36433 : {
8645 36433 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8646 36433 : tree res = generic_simplify_306 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
8647 36433 : if (res) return res;
8648 : }
8649 : }
8650 63033 : if (integer_truep (_p1))
8651 : {
8652 21941 : {
8653 21941 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8654 21941 : tree res = generic_simplify_307 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR, NE_EXPR);
8655 21941 : if (res) return res;
8656 : }
8657 : }
8658 : break;
8659 : }
8660 69558 : case NE_EXPR:
8661 69558 : {
8662 69558 : tree _q20 = TREE_OPERAND (_p0, 0);
8663 69558 : tree _q21 = TREE_OPERAND (_p0, 1);
8664 69558 : if (integer_zerop (_p1))
8665 : {
8666 57542 : {
8667 57542 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8668 57542 : tree res = generic_simplify_306 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
8669 57542 : if (res) return res;
8670 : }
8671 : }
8672 34807 : if (integer_truep (_p1))
8673 : {
8674 141 : {
8675 141 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8676 141 : tree res = generic_simplify_307 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR, EQ_EXPR);
8677 141 : if (res) return res;
8678 : }
8679 : }
8680 : break;
8681 : }
8682 6161 : case GE_EXPR:
8683 6161 : {
8684 6161 : tree _q20 = TREE_OPERAND (_p0, 0);
8685 6161 : tree _q21 = TREE_OPERAND (_p0, 1);
8686 6161 : if (integer_zerop (_p1))
8687 : {
8688 4196 : {
8689 4196 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8690 4196 : tree res = generic_simplify_306 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
8691 4196 : if (res) return res;
8692 : }
8693 : }
8694 5503 : if (integer_truep (_p1))
8695 : {
8696 489 : {
8697 489 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8698 489 : tree res = generic_simplify_307 (loc, type, _p0, _p1, captures, GE_EXPR, LT_EXPR, UNLT_EXPR);
8699 489 : if (res) return res;
8700 : }
8701 : }
8702 : break;
8703 : }
8704 36023 : case GT_EXPR:
8705 36023 : {
8706 36023 : tree _q20 = TREE_OPERAND (_p0, 0);
8707 36023 : tree _q21 = TREE_OPERAND (_p0, 1);
8708 36023 : if (integer_zerop (_p1))
8709 : {
8710 33948 : {
8711 33948 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8712 33948 : tree res = generic_simplify_306 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
8713 33948 : if (res) return res;
8714 : }
8715 : }
8716 29979 : if (integer_truep (_p1))
8717 : {
8718 324 : {
8719 324 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8720 324 : tree res = generic_simplify_307 (loc, type, _p0, _p1, captures, GT_EXPR, LE_EXPR, UNLE_EXPR);
8721 324 : if (res) return res;
8722 : }
8723 : }
8724 : break;
8725 : }
8726 137805 : case UNORDERED_EXPR:
8727 137805 : {
8728 137805 : tree _q20 = TREE_OPERAND (_p0, 0);
8729 137805 : tree _q21 = TREE_OPERAND (_p0, 1);
8730 137805 : if (integer_zerop (_p1))
8731 : {
8732 135657 : {
8733 135657 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8734 135657 : tree res = generic_simplify_306 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
8735 135657 : if (res) return res;
8736 : }
8737 : }
8738 137415 : if (integer_truep (_p1))
8739 : {
8740 42 : {
8741 42 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8742 42 : tree res = generic_simplify_307 (loc, type, _p0, _p1, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR);
8743 42 : if (res) return res;
8744 : }
8745 : }
8746 : break;
8747 : }
8748 113 : case ORDERED_EXPR:
8749 113 : {
8750 113 : tree _q20 = TREE_OPERAND (_p0, 0);
8751 113 : tree _q21 = TREE_OPERAND (_p0, 1);
8752 113 : if (integer_zerop (_p1))
8753 : {
8754 42 : {
8755 42 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8756 42 : tree res = generic_simplify_306 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
8757 42 : if (res) return res;
8758 : }
8759 : }
8760 71 : if (integer_truep (_p1))
8761 : {
8762 0 : {
8763 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8764 0 : tree res = generic_simplify_307 (loc, type, _p0, _p1, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR);
8765 0 : if (res) return res;
8766 : }
8767 : }
8768 : break;
8769 : }
8770 213 : case UNLT_EXPR:
8771 213 : {
8772 213 : tree _q20 = TREE_OPERAND (_p0, 0);
8773 213 : tree _q21 = TREE_OPERAND (_p0, 1);
8774 213 : if (integer_zerop (_p1))
8775 : {
8776 28 : {
8777 28 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8778 28 : tree res = generic_simplify_306 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
8779 28 : if (res) return res;
8780 : }
8781 : }
8782 185 : if (integer_truep (_p1))
8783 : {
8784 161 : {
8785 161 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8786 161 : tree res = generic_simplify_307 (loc, type, _p0, _p1, captures, UNLT_EXPR, GE_EXPR, GE_EXPR);
8787 161 : if (res) return res;
8788 : }
8789 : }
8790 : break;
8791 : }
8792 1575 : case UNLE_EXPR:
8793 1575 : {
8794 1575 : tree _q20 = TREE_OPERAND (_p0, 0);
8795 1575 : tree _q21 = TREE_OPERAND (_p0, 1);
8796 1575 : if (integer_zerop (_p1))
8797 : {
8798 104 : {
8799 104 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8800 104 : tree res = generic_simplify_306 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
8801 104 : if (res) return res;
8802 : }
8803 : }
8804 1471 : if (integer_truep (_p1))
8805 : {
8806 1447 : {
8807 1447 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8808 1447 : tree res = generic_simplify_307 (loc, type, _p0, _p1, captures, UNLE_EXPR, GT_EXPR, GT_EXPR);
8809 1447 : if (res) return res;
8810 : }
8811 : }
8812 : break;
8813 : }
8814 2652 : case UNGT_EXPR:
8815 2652 : {
8816 2652 : tree _q20 = TREE_OPERAND (_p0, 0);
8817 2652 : tree _q21 = TREE_OPERAND (_p0, 1);
8818 2652 : if (integer_zerop (_p1))
8819 : {
8820 96 : {
8821 96 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8822 96 : tree res = generic_simplify_306 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
8823 96 : if (res) return res;
8824 : }
8825 : }
8826 2556 : if (integer_truep (_p1))
8827 : {
8828 2421 : {
8829 2421 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8830 2421 : tree res = generic_simplify_307 (loc, type, _p0, _p1, captures, UNGT_EXPR, LE_EXPR, LE_EXPR);
8831 2421 : if (res) return res;
8832 : }
8833 : }
8834 : break;
8835 : }
8836 391 : case UNGE_EXPR:
8837 391 : {
8838 391 : tree _q20 = TREE_OPERAND (_p0, 0);
8839 391 : tree _q21 = TREE_OPERAND (_p0, 1);
8840 391 : if (integer_zerop (_p1))
8841 : {
8842 16 : {
8843 16 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8844 16 : tree res = generic_simplify_306 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
8845 16 : if (res) return res;
8846 : }
8847 : }
8848 375 : if (integer_truep (_p1))
8849 : {
8850 211 : {
8851 211 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8852 211 : tree res = generic_simplify_307 (loc, type, _p0, _p1, captures, UNGE_EXPR, LT_EXPR, LT_EXPR);
8853 211 : if (res) return res;
8854 : }
8855 : }
8856 : break;
8857 : }
8858 161 : case UNEQ_EXPR:
8859 161 : {
8860 161 : tree _q20 = TREE_OPERAND (_p0, 0);
8861 161 : tree _q21 = TREE_OPERAND (_p0, 1);
8862 161 : if (integer_zerop (_p1))
8863 : {
8864 0 : {
8865 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8866 0 : tree res = generic_simplify_306 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
8867 0 : if (res) return res;
8868 : }
8869 : }
8870 161 : if (integer_truep (_p1))
8871 : {
8872 124 : {
8873 124 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8874 124 : tree res = generic_simplify_307 (loc, type, _p0, _p1, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR);
8875 124 : if (res) return res;
8876 : }
8877 : }
8878 : break;
8879 : }
8880 24 : case LTGT_EXPR:
8881 24 : {
8882 24 : tree _q20 = TREE_OPERAND (_p0, 0);
8883 24 : tree _q21 = TREE_OPERAND (_p0, 1);
8884 24 : if (integer_zerop (_p1))
8885 : {
8886 6 : {
8887 6 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8888 6 : tree res = generic_simplify_306 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
8889 6 : if (res) return res;
8890 : }
8891 : }
8892 24 : if (integer_truep (_p1))
8893 : {
8894 0 : {
8895 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8896 0 : tree res = generic_simplify_307 (loc, type, _p0, _p1, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR);
8897 0 : if (res) return res;
8898 : }
8899 : }
8900 : break;
8901 : }
8902 104634 : case MINUS_EXPR:
8903 104634 : {
8904 104634 : tree _q20 = TREE_OPERAND (_p0, 0);
8905 104634 : tree _q21 = TREE_OPERAND (_p0, 1);
8906 104634 : if (integer_zerop (_p1))
8907 : {
8908 36238 : {
8909 36238 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8910 36238 : tree res = generic_simplify_253 (loc, type, _p0, _p1, captures, NE_EXPR);
8911 36238 : if (res) return res;
8912 : }
8913 : }
8914 : break;
8915 : }
8916 26857 : case POINTER_DIFF_EXPR:
8917 26857 : {
8918 26857 : tree _q20 = TREE_OPERAND (_p0, 0);
8919 26857 : tree _q21 = TREE_OPERAND (_p0, 1);
8920 26857 : if (integer_zerop (_p1))
8921 : {
8922 14266 : {
8923 14266 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
8924 14266 : tree res = generic_simplify_254 (loc, type, _p0, _p1, captures, NE_EXPR);
8925 14266 : if (res) return res;
8926 : }
8927 : }
8928 : break;
8929 : }
8930 98198 : case MULT_EXPR:
8931 98198 : {
8932 98198 : tree _q20 = TREE_OPERAND (_p0, 0);
8933 98198 : tree _q21 = TREE_OPERAND (_p0, 1);
8934 98198 : switch (TREE_CODE (_q21))
8935 : {
8936 79384 : case INTEGER_CST:
8937 79384 : {
8938 79384 : switch (TREE_CODE (_p1))
8939 : {
8940 51574 : case INTEGER_CST:
8941 51574 : {
8942 51574 : {
8943 51574 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
8944 51574 : tree res = generic_simplify_256 (loc, type, _p0, _p1, captures, NE_EXPR);
8945 51574 : if (res) return res;
8946 : }
8947 34586 : break;
8948 : }
8949 62396 : default:;
8950 : }
8951 62396 : if (integer_zerop (_p1))
8952 : {
8953 10912 : {
8954 10912 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
8955 10912 : tree res = generic_simplify_255 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
8956 10912 : if (res) return res;
8957 : }
8958 : }
8959 : break;
8960 : }
8961 : default:;
8962 : }
8963 : break;
8964 : }
8965 38299341 : default:;
8966 : }
8967 38299341 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
8968 : {
8969 277371 : {
8970 277371 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
8971 277371 : tree res = generic_simplify_308 (loc, type, _p0, _p1, captures, NE_EXPR);
8972 277371 : if (res) return res;
8973 : }
8974 : }
8975 38028533 : switch (TREE_CODE (_p0))
8976 : {
8977 8393254 : CASE_CONVERT:
8978 8393254 : {
8979 8393254 : tree _q20 = TREE_OPERAND (_p0, 0);
8980 8393254 : switch (TREE_CODE (_p1))
8981 : {
8982 4599235 : CASE_CONVERT:
8983 4599235 : {
8984 4599235 : tree _q40 = TREE_OPERAND (_p1, 0);
8985 4599235 : {
8986 4599235 : tree _q40_pops[1];
8987 4599235 : if (tree_maybe_bit_not (_q40, _q40_pops))
8988 : {
8989 0 : tree _q50 = _q40_pops[0];
8990 0 : {
8991 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
8992 0 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, NE_EXPR);
8993 0 : if (res) return res;
8994 : }
8995 : }
8996 : }
8997 4599235 : break;
8998 : }
8999 8393254 : default:;
9000 : }
9001 8393254 : {
9002 8393254 : tree _q20_pops[1];
9003 8393254 : if (tree_maybe_bit_not (_q20, _q20_pops))
9004 : {
9005 13527 : tree _q30 = _q20_pops[0];
9006 13527 : switch (TREE_CODE (_p1))
9007 : {
9008 0 : CASE_CONVERT:
9009 0 : {
9010 0 : tree _q50 = TREE_OPERAND (_p1, 0);
9011 0 : {
9012 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q50, _q30 };
9013 0 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, NE_EXPR);
9014 0 : if (res) return res;
9015 : }
9016 0 : break;
9017 : }
9018 : default:;
9019 : }
9020 : }
9021 : }
9022 8393254 : break;
9023 : }
9024 38028533 : default:;
9025 : }
9026 38028533 : {
9027 38028533 : tree _p1_pops[1];
9028 38028533 : if (tree_maybe_bit_not (_p1, _p1_pops))
9029 : {
9030 26611091 : tree _q30 = _p1_pops[0];
9031 26611091 : {
9032 26611091 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
9033 26611091 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, NE_EXPR);
9034 26611091 : if (res) return res;
9035 : }
9036 : }
9037 : }
9038 38028533 : switch (TREE_CODE (_p0))
9039 : {
9040 14096 : case BIT_NOT_EXPR:
9041 14096 : {
9042 14096 : tree _q20 = TREE_OPERAND (_p0, 0);
9043 14096 : switch (TREE_CODE (_p1))
9044 : {
9045 1 : case BIT_NOT_EXPR:
9046 1 : {
9047 1 : tree _q40 = TREE_OPERAND (_p1, 0);
9048 1 : {
9049 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _p1, _q40 };
9050 1 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, NE_EXPR);
9051 1 : if (res) return res;
9052 : }
9053 0 : break;
9054 : }
9055 14095 : default:;
9056 : }
9057 14095 : {
9058 14095 : tree _p1_pops[1];
9059 14095 : if (tree_nop_convert (_p1, _p1_pops))
9060 : {
9061 80 : tree _q40 = _p1_pops[0];
9062 80 : switch (TREE_CODE (_q40))
9063 : {
9064 0 : case BIT_NOT_EXPR:
9065 0 : {
9066 0 : tree _q50 = TREE_OPERAND (_q40, 0);
9067 0 : {
9068 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p0, _q20, _q40, _q50 };
9069 0 : tree res = generic_simplify_261 (loc, type, _p0, _p1, captures, NE_EXPR);
9070 0 : if (res) return res;
9071 : }
9072 0 : break;
9073 : }
9074 : default:;
9075 : }
9076 : }
9077 : }
9078 14095 : if (CONSTANT_CLASS_P (_p1))
9079 : {
9080 12951 : {
9081 12951 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9082 12951 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9083 12951 : if (res) return res;
9084 : }
9085 : }
9086 : break;
9087 : }
9088 38015581 : default:;
9089 : }
9090 38015581 : {
9091 38015581 : tree _p0_pops[1];
9092 38015581 : if (tree_maybe_bit_not (_p0, _p0_pops))
9093 : {
9094 296018 : tree _q20 = _p0_pops[0];
9095 296018 : {
9096 296018 : tree captures[2] ATTRIBUTE_UNUSED = { _p1, _q20 };
9097 296018 : tree res = generic_simplify_258 (loc, type, _p0, _p1, captures, NE_EXPR);
9098 296018 : if (res) return res;
9099 : }
9100 : }
9101 : }
9102 38015579 : {
9103 38015579 : tree _p0_pops[1];
9104 38015579 : if (tree_nop_convert (_p0, _p0_pops))
9105 : {
9106 6122736 : tree _q20 = _p0_pops[0];
9107 6122736 : switch (TREE_CODE (_q20))
9108 : {
9109 1 : case BIT_NOT_EXPR:
9110 1 : {
9111 1 : tree _q30 = TREE_OPERAND (_q20, 0);
9112 1 : switch (TREE_CODE (_p1))
9113 : {
9114 0 : case BIT_NOT_EXPR:
9115 0 : {
9116 0 : tree _q50 = TREE_OPERAND (_p1, 0);
9117 0 : {
9118 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _p1, _q50 };
9119 0 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, NE_EXPR);
9120 0 : if (res) return res;
9121 : }
9122 0 : break;
9123 : }
9124 1 : default:;
9125 : }
9126 1 : {
9127 1 : tree _p1_pops[1];
9128 1 : if (tree_nop_convert (_p1, _p1_pops))
9129 : {
9130 0 : tree _q50 = _p1_pops[0];
9131 0 : switch (TREE_CODE (_q50))
9132 : {
9133 0 : case BIT_NOT_EXPR:
9134 0 : {
9135 0 : tree _q60 = TREE_OPERAND (_q50, 0);
9136 0 : {
9137 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q30, _q50, _q60 };
9138 0 : tree res = generic_simplify_259 (loc, type, _p0, _p1, captures, NE_EXPR);
9139 0 : if (res) return res;
9140 : }
9141 0 : break;
9142 : }
9143 : default:;
9144 : }
9145 : }
9146 : }
9147 1 : if (CONSTANT_CLASS_P (_p1))
9148 : {
9149 1 : {
9150 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
9151 1 : tree res = generic_simplify_260 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9152 1 : if (res) return res;
9153 : }
9154 : }
9155 : break;
9156 : }
9157 : default:;
9158 : }
9159 : }
9160 : }
9161 38015578 : switch (TREE_CODE (_p1))
9162 : {
9163 711407 : case REAL_CST:
9164 711407 : {
9165 711407 : {
9166 711407 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9167 711407 : tree res = generic_simplify_262 (loc, type, _p0, _p1, captures, NE_EXPR);
9168 711407 : if (res) return res;
9169 : }
9170 639188 : break;
9171 : }
9172 37943359 : default:;
9173 : }
9174 37943359 : switch (TREE_CODE (_p0))
9175 : {
9176 1340586 : case PLUS_EXPR:
9177 1340586 : {
9178 1340586 : tree _q20 = TREE_OPERAND (_p0, 0);
9179 1340586 : tree _q21 = TREE_OPERAND (_p0, 1);
9180 1340586 : switch (TREE_CODE (_q21))
9181 : {
9182 3831 : case REAL_CST:
9183 3831 : {
9184 3831 : switch (TREE_CODE (_p1))
9185 : {
9186 3057 : case REAL_CST:
9187 3057 : {
9188 3057 : {
9189 3057 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9190 3057 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, PLUS_EXPR, NE_EXPR);
9191 3057 : if (res) return res;
9192 : }
9193 3057 : break;
9194 : }
9195 : default:;
9196 : }
9197 : break;
9198 : }
9199 : default:;
9200 : }
9201 : break;
9202 : }
9203 68392 : case MINUS_EXPR:
9204 68392 : {
9205 68392 : tree _q20 = TREE_OPERAND (_p0, 0);
9206 68392 : tree _q21 = TREE_OPERAND (_p0, 1);
9207 68392 : switch (TREE_CODE (_q21))
9208 : {
9209 3215 : case REAL_CST:
9210 3215 : {
9211 3215 : switch (TREE_CODE (_p1))
9212 : {
9213 2849 : case REAL_CST:
9214 2849 : {
9215 2849 : {
9216 2849 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9217 2849 : tree res = generic_simplify_263 (loc, type, _p0, _p1, captures, MINUS_EXPR, NE_EXPR);
9218 2849 : if (res) return res;
9219 : }
9220 2849 : break;
9221 : }
9222 : default:;
9223 : }
9224 : break;
9225 : }
9226 68392 : default:;
9227 : }
9228 68392 : switch (TREE_CODE (_q20))
9229 : {
9230 87 : case REAL_CST:
9231 87 : {
9232 87 : switch (TREE_CODE (_p1))
9233 : {
9234 44 : case REAL_CST:
9235 44 : {
9236 44 : {
9237 44 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9238 44 : tree res = generic_simplify_264 (loc, type, _p0, _p1, captures, NE_EXPR);
9239 44 : if (res) return res;
9240 : }
9241 44 : break;
9242 : }
9243 : default:;
9244 : }
9245 : break;
9246 : }
9247 : default:;
9248 : }
9249 : break;
9250 : }
9251 10540 : case FLOAT_EXPR:
9252 10540 : {
9253 10540 : tree _q20 = TREE_OPERAND (_p0, 0);
9254 10540 : switch (TREE_CODE (_p1))
9255 : {
9256 1116 : case FLOAT_EXPR:
9257 1116 : {
9258 1116 : tree _q40 = TREE_OPERAND (_p1, 0);
9259 1116 : {
9260 1116 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9261 1116 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9262 1116 : if (res) return res;
9263 : }
9264 972 : break;
9265 : }
9266 2159 : case REAL_CST:
9267 2159 : {
9268 2159 : {
9269 2159 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
9270 2159 : tree res = generic_simplify_268 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9271 2159 : if (res) return res;
9272 : }
9273 1909 : break;
9274 : }
9275 : default:;
9276 : }
9277 : break;
9278 : }
9279 2031 : case EXACT_DIV_EXPR:
9280 2031 : {
9281 2031 : tree _q20 = TREE_OPERAND (_p0, 0);
9282 2031 : tree _q21 = TREE_OPERAND (_p0, 1);
9283 2031 : switch (TREE_CODE (_p1))
9284 : {
9285 36 : case INTEGER_CST:
9286 36 : {
9287 36 : {
9288 36 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
9289 36 : tree res = generic_simplify_269 (loc, type, _p0, _p1, captures, NE_EXPR);
9290 36 : if (res) return res;
9291 : }
9292 0 : break;
9293 : }
9294 : default:;
9295 : }
9296 : break;
9297 : }
9298 6192 : case NEGATE_EXPR:
9299 6192 : {
9300 6192 : tree _q20 = TREE_OPERAND (_p0, 0);
9301 6192 : switch (TREE_CODE (_p1))
9302 : {
9303 4 : case NEGATE_EXPR:
9304 4 : {
9305 4 : tree _q40 = TREE_OPERAND (_p1, 0);
9306 4 : {
9307 4 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9308 4 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9309 4 : if (res) return res;
9310 : }
9311 0 : break;
9312 : }
9313 6188 : default:;
9314 : }
9315 6188 : if (CONSTANT_CLASS_P (_p1))
9316 : {
9317 577 : {
9318 577 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9319 577 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
9320 577 : if (res) return res;
9321 : }
9322 : }
9323 : break;
9324 : }
9325 1940 : case ABS_EXPR:
9326 1940 : {
9327 1940 : tree _q20 = TREE_OPERAND (_p0, 0);
9328 1940 : if (zerop (_p1))
9329 : {
9330 72 : {
9331 72 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9332 72 : const enum tree_code eqne = NE_EXPR;
9333 72 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1592;
9334 72 : {
9335 72 : tree res_op0;
9336 72 : res_op0 = captures[0];
9337 72 : tree res_op1;
9338 72 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
9339 72 : tree _r;
9340 72 : _r = fold_build2_loc (loc, eqne, type, res_op0, res_op1);
9341 72 : if (TREE_SIDE_EFFECTS (captures[1]))
9342 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
9343 72 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 995, __FILE__, __LINE__, true);
9344 72 : return _r;
9345 : }
9346 0 : next_after_fail1592:;
9347 : }
9348 : }
9349 : break;
9350 : }
9351 1698 : case ABSU_EXPR:
9352 1698 : {
9353 1698 : tree _q20 = TREE_OPERAND (_p0, 0);
9354 1698 : if (zerop (_p1))
9355 : {
9356 65 : {
9357 65 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9358 65 : const enum tree_code eqne = NE_EXPR;
9359 65 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1593;
9360 65 : {
9361 65 : tree res_op0;
9362 65 : res_op0 = captures[0];
9363 65 : tree res_op1;
9364 65 : res_op1 = build_zero_cst (TREE_TYPE (captures[0]));
9365 65 : tree _r;
9366 65 : _r = fold_build2_loc (loc, eqne, type, res_op0, res_op1);
9367 65 : if (TREE_SIDE_EFFECTS (captures[1]))
9368 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
9369 65 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 995, __FILE__, __LINE__, true);
9370 65 : return _r;
9371 : }
9372 0 : next_after_fail1593:;
9373 : }
9374 : }
9375 : break;
9376 : }
9377 8393174 : CASE_CONVERT:
9378 8393174 : {
9379 8393174 : tree _q20 = TREE_OPERAND (_p0, 0);
9380 8393174 : switch (TREE_CODE (_p1))
9381 : {
9382 4599235 : CASE_CONVERT:
9383 4599235 : {
9384 4599235 : tree _q40 = TREE_OPERAND (_p1, 0);
9385 4599235 : {
9386 4599235 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
9387 4599235 : tree res = generic_simplify_272 (loc, type, _p0, _p1, captures, NE_EXPR);
9388 4599235 : if (res) return res;
9389 : }
9390 4393658 : break;
9391 : }
9392 8187597 : default:;
9393 : }
9394 8187597 : {
9395 8187597 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _p1 };
9396 8187597 : tree res = generic_simplify_273 (loc, type, _p0, _p1, captures, NE_EXPR);
9397 8187597 : if (res) return res;
9398 : }
9399 6009849 : switch (TREE_CODE (_q20))
9400 : {
9401 12 : case BIT_IOR_EXPR:
9402 12 : {
9403 12 : tree _q30 = TREE_OPERAND (_q20, 0);
9404 12 : tree _q31 = TREE_OPERAND (_q20, 1);
9405 12 : switch (TREE_CODE (_q31))
9406 : {
9407 0 : case INTEGER_CST:
9408 0 : {
9409 0 : switch (TREE_CODE (_p1))
9410 : {
9411 0 : case INTEGER_CST:
9412 0 : {
9413 0 : {
9414 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
9415 0 : tree res = generic_simplify_274 (loc, type, _p0, _p1, captures, NE_EXPR);
9416 0 : if (res) return res;
9417 : }
9418 0 : break;
9419 : }
9420 : default:;
9421 : }
9422 : break;
9423 : }
9424 : default:;
9425 : }
9426 : break;
9427 : }
9428 : default:;
9429 : }
9430 : break;
9431 : }
9432 15040225 : case SSA_NAME:
9433 15040225 : {
9434 15040225 : switch (TREE_CODE (_p1))
9435 : {
9436 303798 : case ADDR_EXPR:
9437 303798 : {
9438 303798 : {
9439 303798 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
9440 303798 : tree res = generic_simplify_275 (loc, type, _p0, _p1, captures, NE_EXPR);
9441 303798 : if (res) return res;
9442 : }
9443 303796 : break;
9444 : }
9445 : default:;
9446 : }
9447 : break;
9448 : }
9449 243327 : case BIT_IOR_EXPR:
9450 243327 : {
9451 243327 : tree _q20 = TREE_OPERAND (_p0, 0);
9452 243327 : tree _q21 = TREE_OPERAND (_p0, 1);
9453 243327 : switch (TREE_CODE (_q21))
9454 : {
9455 960 : case INTEGER_CST:
9456 960 : {
9457 960 : switch (TREE_CODE (_p1))
9458 : {
9459 223 : case INTEGER_CST:
9460 223 : {
9461 223 : {
9462 223 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
9463 223 : tree res = generic_simplify_274 (loc, type, _p0, _p1, captures, NE_EXPR);
9464 223 : if (res) return res;
9465 : }
9466 223 : break;
9467 : }
9468 : default:;
9469 : }
9470 : break;
9471 : }
9472 : default:;
9473 : }
9474 : break;
9475 : }
9476 30964 : case BIT_XOR_EXPR:
9477 30964 : {
9478 30964 : tree _q20 = TREE_OPERAND (_p0, 0);
9479 30964 : tree _q21 = TREE_OPERAND (_p0, 1);
9480 30964 : if (integer_zerop (_p1))
9481 : {
9482 26630 : {
9483 26630 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9484 26630 : tree res = generic_simplify_276 (loc, type, _p0, _p1, captures, NE_EXPR);
9485 26630 : if (res) return res;
9486 : }
9487 : }
9488 4334 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9489 : {
9490 1 : {
9491 1 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9492 1 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, NE_EXPR);
9493 1 : if (res) return res;
9494 : }
9495 : }
9496 4333 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9497 : {
9498 2 : {
9499 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9500 2 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, NE_EXPR);
9501 2 : if (res) return res;
9502 : }
9503 : }
9504 : break;
9505 : }
9506 2455222 : case CALL_EXPR:
9507 2455222 : switch (get_call_combined_fn (_p0))
9508 : {
9509 42 : case CFN_BUILT_IN_SQRTF:
9510 42 : if (call_expr_nargs (_p0) == 1)
9511 : {
9512 42 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9513 42 : switch (TREE_CODE (_p1))
9514 : {
9515 0 : case REAL_CST:
9516 0 : {
9517 0 : {
9518 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9519 0 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, NE_EXPR);
9520 0 : if (res) return res;
9521 : }
9522 0 : break;
9523 : }
9524 42 : case CALL_EXPR:
9525 42 : switch (get_call_combined_fn (_p1))
9526 : {
9527 0 : case CFN_BUILT_IN_SQRTF:
9528 0 : if (call_expr_nargs (_p1) == 1)
9529 : {
9530 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9531 0 : {
9532 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9533 0 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTF, NE_EXPR);
9534 0 : if (res) return res;
9535 : }
9536 : }
9537 : break;
9538 : default:;
9539 : }
9540 : break;
9541 : default:;
9542 : }
9543 : }
9544 : break;
9545 42 : case CFN_BUILT_IN_SQRTL:
9546 42 : if (call_expr_nargs (_p0) == 1)
9547 : {
9548 42 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9549 42 : switch (TREE_CODE (_p1))
9550 : {
9551 0 : case REAL_CST:
9552 0 : {
9553 0 : {
9554 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9555 0 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, NE_EXPR);
9556 0 : if (res) return res;
9557 : }
9558 0 : break;
9559 : }
9560 42 : case CALL_EXPR:
9561 42 : switch (get_call_combined_fn (_p1))
9562 : {
9563 0 : case CFN_BUILT_IN_SQRTL:
9564 0 : if (call_expr_nargs (_p1) == 1)
9565 : {
9566 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9567 0 : {
9568 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9569 0 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRTL, NE_EXPR);
9570 0 : if (res) return res;
9571 : }
9572 : }
9573 : break;
9574 : default:;
9575 : }
9576 : break;
9577 : default:;
9578 : }
9579 : }
9580 : break;
9581 46 : case CFN_BUILT_IN_SQRT:
9582 46 : if (call_expr_nargs (_p0) == 1)
9583 : {
9584 46 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9585 46 : switch (TREE_CODE (_p1))
9586 : {
9587 2 : case REAL_CST:
9588 2 : {
9589 2 : {
9590 2 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9591 2 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, NE_EXPR);
9592 2 : if (res) return res;
9593 : }
9594 2 : break;
9595 : }
9596 43 : case CALL_EXPR:
9597 43 : switch (get_call_combined_fn (_p1))
9598 : {
9599 0 : case CFN_BUILT_IN_SQRT:
9600 0 : if (call_expr_nargs (_p1) == 1)
9601 : {
9602 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9603 0 : {
9604 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9605 0 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, CFN_BUILT_IN_SQRT, NE_EXPR);
9606 0 : if (res) return res;
9607 : }
9608 : }
9609 : break;
9610 : default:;
9611 : }
9612 : break;
9613 : default:;
9614 : }
9615 : }
9616 : break;
9617 0 : case CFN_SQRT:
9618 0 : if (call_expr_nargs (_p0) == 1)
9619 : {
9620 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
9621 0 : switch (TREE_CODE (_p1))
9622 : {
9623 0 : case REAL_CST:
9624 0 : {
9625 0 : {
9626 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
9627 0 : tree res = generic_simplify_265 (loc, type, _p0, _p1, captures, CFN_SQRT, NE_EXPR);
9628 0 : if (res) return res;
9629 : }
9630 0 : break;
9631 : }
9632 0 : case CALL_EXPR:
9633 0 : switch (get_call_combined_fn (_p1))
9634 : {
9635 0 : case CFN_SQRT:
9636 0 : if (call_expr_nargs (_p1) == 1)
9637 : {
9638 0 : tree _q40 = CALL_EXPR_ARG (_p1, 0);
9639 0 : {
9640 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
9641 0 : tree res = generic_simplify_266 (loc, type, _p0, _p1, captures, CFN_SQRT, NE_EXPR);
9642 0 : if (res) return res;
9643 : }
9644 : }
9645 : break;
9646 : default:;
9647 : }
9648 : break;
9649 : default:;
9650 : }
9651 : }
9652 : break;
9653 : default:;
9654 : }
9655 : break;
9656 35532269 : default:;
9657 : }
9658 35532269 : switch (TREE_CODE (_p1))
9659 : {
9660 840 : case BIT_XOR_EXPR:
9661 840 : {
9662 840 : tree _q30 = TREE_OPERAND (_p1, 0);
9663 840 : tree _q31 = TREE_OPERAND (_p1, 1);
9664 840 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9665 : {
9666 0 : {
9667 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
9668 0 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, NE_EXPR);
9669 0 : if (res) return res;
9670 : }
9671 : }
9672 840 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
9673 : {
9674 0 : {
9675 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
9676 0 : tree res = generic_simplify_277 (loc, type, _p0, _p1, captures, NE_EXPR);
9677 0 : if (res) return res;
9678 : }
9679 : }
9680 : break;
9681 : }
9682 35532269 : default:;
9683 : }
9684 35532269 : switch (TREE_CODE (_p0))
9685 : {
9686 1299602 : case BIT_AND_EXPR:
9687 1299602 : {
9688 1299602 : tree _q20 = TREE_OPERAND (_p0, 0);
9689 1299602 : tree _q21 = TREE_OPERAND (_p0, 1);
9690 1299602 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9691 : {
9692 179 : {
9693 179 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9694 179 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, NE_EXPR);
9695 179 : if (res) return res;
9696 : }
9697 : }
9698 1299574 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9699 : {
9700 4928 : {
9701 4928 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9702 4928 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, NE_EXPR);
9703 4928 : if (res) return res;
9704 : }
9705 : }
9706 : break;
9707 : }
9708 35532241 : default:;
9709 : }
9710 35532241 : switch (TREE_CODE (_p1))
9711 : {
9712 16039 : case BIT_AND_EXPR:
9713 16039 : {
9714 16039 : tree _q30 = TREE_OPERAND (_p1, 0);
9715 16039 : tree _q31 = TREE_OPERAND (_p1, 1);
9716 16039 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9717 : {
9718 0 : {
9719 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q31 };
9720 0 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, NE_EXPR);
9721 0 : if (res) return res;
9722 : }
9723 : }
9724 16039 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
9725 : {
9726 0 : {
9727 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q30 };
9728 0 : tree res = generic_simplify_278 (loc, type, _p0, _p1, captures, NE_EXPR);
9729 0 : if (res) return res;
9730 : }
9731 : }
9732 : break;
9733 : }
9734 35532241 : default:;
9735 : }
9736 35532241 : switch (TREE_CODE (_p0))
9737 : {
9738 6009849 : CASE_CONVERT:
9739 6009849 : {
9740 6009849 : tree _q20 = TREE_OPERAND (_p0, 0);
9741 6009849 : switch (TREE_CODE (_q20))
9742 : {
9743 8 : case BIT_AND_EXPR:
9744 8 : {
9745 8 : tree _q30 = TREE_OPERAND (_q20, 0);
9746 8 : tree _q31 = TREE_OPERAND (_q20, 1);
9747 8 : switch (TREE_CODE (_q30))
9748 : {
9749 0 : CASE_CONVERT:
9750 0 : {
9751 0 : tree _q40 = TREE_OPERAND (_q30, 0);
9752 0 : switch (TREE_CODE (_q31))
9753 : {
9754 0 : case INTEGER_CST:
9755 0 : {
9756 0 : switch (TREE_CODE (_p1))
9757 : {
9758 0 : CASE_CONVERT:
9759 0 : {
9760 0 : tree _q70 = TREE_OPERAND (_p1, 0);
9761 0 : if ((_q70 == _q40 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q40, 0) && types_match (_q70, _q40)))
9762 : {
9763 0 : {
9764 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q40, _q31 };
9765 0 : tree res = generic_simplify_279 (loc, type, _p0, _p1, captures, NE_EXPR);
9766 0 : if (res) return res;
9767 : }
9768 : }
9769 : break;
9770 : }
9771 : default:;
9772 : }
9773 : break;
9774 : }
9775 : default:;
9776 : }
9777 : break;
9778 : }
9779 : default:;
9780 : }
9781 : break;
9782 : }
9783 6009849 : default:;
9784 : }
9785 6009849 : switch (TREE_CODE (_p1))
9786 : {
9787 4393658 : CASE_CONVERT:
9788 4393658 : {
9789 4393658 : tree _q40 = TREE_OPERAND (_p1, 0);
9790 4393658 : switch (TREE_CODE (_q40))
9791 : {
9792 0 : case BIT_AND_EXPR:
9793 0 : {
9794 0 : tree _q50 = TREE_OPERAND (_q40, 0);
9795 0 : tree _q51 = TREE_OPERAND (_q40, 1);
9796 0 : switch (TREE_CODE (_q50))
9797 : {
9798 0 : CASE_CONVERT:
9799 0 : {
9800 0 : tree _q60 = TREE_OPERAND (_q50, 0);
9801 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
9802 : {
9803 0 : switch (TREE_CODE (_q51))
9804 : {
9805 0 : case INTEGER_CST:
9806 0 : {
9807 0 : {
9808 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p1, _q50, _q20, _q51 };
9809 0 : tree res = generic_simplify_279 (loc, type, _p0, _p1, captures, NE_EXPR);
9810 0 : if (res) return res;
9811 : }
9812 0 : break;
9813 : }
9814 : default:;
9815 : }
9816 : }
9817 : break;
9818 : }
9819 : default:;
9820 : }
9821 : break;
9822 : }
9823 : default:;
9824 : }
9825 : break;
9826 : }
9827 : default:;
9828 : }
9829 : break;
9830 : }
9831 243327 : case BIT_IOR_EXPR:
9832 243327 : {
9833 243327 : tree _q20 = TREE_OPERAND (_p0, 0);
9834 243327 : tree _q21 = TREE_OPERAND (_p0, 1);
9835 243327 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
9836 : {
9837 126 : {
9838 126 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
9839 126 : tree res = generic_simplify_280 (loc, type, _p0, _p1, captures, NE_EXPR);
9840 126 : if (res) return res;
9841 : }
9842 : }
9843 243319 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
9844 : {
9845 255 : {
9846 255 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
9847 255 : tree res = generic_simplify_280 (loc, type, _p0, _p1, captures, NE_EXPR);
9848 255 : if (res) return res;
9849 : }
9850 : }
9851 : break;
9852 : }
9853 35532233 : default:;
9854 : }
9855 35532233 : switch (TREE_CODE (_p1))
9856 : {
9857 566 : case BIT_IOR_EXPR:
9858 566 : {
9859 566 : tree _q30 = TREE_OPERAND (_p1, 0);
9860 566 : tree _q31 = TREE_OPERAND (_p1, 1);
9861 566 : if ((_q31 == _p0 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _p0, 0) && types_match (_q31, _p0)))
9862 : {
9863 0 : {
9864 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _p0 };
9865 0 : tree res = generic_simplify_280 (loc, type, _p0, _p1, captures, NE_EXPR);
9866 0 : if (res) return res;
9867 : }
9868 : }
9869 566 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
9870 : {
9871 0 : {
9872 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q31, _p0 };
9873 0 : tree res = generic_simplify_280 (loc, type, _p0, _p1, captures, NE_EXPR);
9874 0 : if (res) return res;
9875 : }
9876 : }
9877 : break;
9878 : }
9879 35532233 : default:;
9880 : }
9881 35532233 : switch (TREE_CODE (_p0))
9882 : {
9883 6009849 : CASE_CONVERT:
9884 6009849 : {
9885 6009849 : tree _q20 = TREE_OPERAND (_p0, 0);
9886 6009849 : switch (TREE_CODE (_q20))
9887 : {
9888 698 : case BIT_XOR_EXPR:
9889 698 : {
9890 698 : tree _q30 = TREE_OPERAND (_q20, 0);
9891 698 : tree _q31 = TREE_OPERAND (_q20, 1);
9892 698 : switch (TREE_CODE (_q31))
9893 : {
9894 0 : case INTEGER_CST:
9895 0 : {
9896 0 : switch (TREE_CODE (_p1))
9897 : {
9898 0 : case INTEGER_CST:
9899 0 : {
9900 0 : {
9901 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _p1 };
9902 0 : tree res = generic_simplify_281 (loc, type, _p0, _p1, captures, NE_EXPR);
9903 0 : if (res) return res;
9904 : }
9905 0 : break;
9906 : }
9907 : default:;
9908 : }
9909 : break;
9910 : }
9911 : default:;
9912 : }
9913 : break;
9914 : }
9915 : default:;
9916 : }
9917 : break;
9918 : }
9919 4331 : case BIT_XOR_EXPR:
9920 4331 : {
9921 4331 : tree _q20 = TREE_OPERAND (_p0, 0);
9922 4331 : tree _q21 = TREE_OPERAND (_p0, 1);
9923 4331 : switch (TREE_CODE (_q21))
9924 : {
9925 881 : case INTEGER_CST:
9926 881 : {
9927 881 : switch (TREE_CODE (_p1))
9928 : {
9929 10 : case INTEGER_CST:
9930 10 : {
9931 10 : {
9932 10 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
9933 10 : tree res = generic_simplify_281 (loc, type, _p0, _p1, captures, NE_EXPR);
9934 10 : if (res) return res;
9935 : }
9936 0 : break;
9937 : }
9938 : default:;
9939 : }
9940 : break;
9941 : }
9942 : default:;
9943 : }
9944 : break;
9945 : }
9946 35532223 : default:;
9947 : }
9948 35532223 : {
9949 35532223 : tree _p0_pops[1];
9950 35532223 : if (tree_nop_convert (_p0, _p0_pops))
9951 : {
9952 5287651 : tree _q20 = _p0_pops[0];
9953 5287651 : if (integer_zerop (_p1))
9954 : {
9955 797461 : {
9956 797461 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
9957 797461 : tree res = generic_simplify_282 (loc, type, _p0, _p1, captures, NE_EXPR);
9958 797461 : if (res) return res;
9959 : }
9960 : }
9961 : }
9962 : }
9963 35103967 : if (integer_zerop (_p1))
9964 : {
9965 18877044 : {
9966 18877044 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
9967 18877044 : tree res = generic_simplify_282 (loc, type, _p0, _p1, captures, NE_EXPR);
9968 18877044 : if (res) return res;
9969 : }
9970 : }
9971 34922565 : switch (TREE_CODE (_p0))
9972 : {
9973 1299574 : case BIT_AND_EXPR:
9974 1299574 : {
9975 1299574 : tree _q20 = TREE_OPERAND (_p0, 0);
9976 1299574 : tree _q21 = TREE_OPERAND (_p0, 1);
9977 1299574 : switch (TREE_CODE (_p1))
9978 : {
9979 14628 : case BIT_AND_EXPR:
9980 14628 : {
9981 14628 : tree _q50 = TREE_OPERAND (_p1, 0);
9982 14628 : tree _q51 = TREE_OPERAND (_p1, 1);
9983 14628 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
9984 : {
9985 14383 : {
9986 14383 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q50 };
9987 14383 : tree res = generic_simplify_283 (loc, type, _p0, _p1, captures, NE_EXPR);
9988 14383 : if (res) return res;
9989 : }
9990 : }
9991 245 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
9992 : {
9993 2 : {
9994 2 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1, _q51 };
9995 2 : tree res = generic_simplify_283 (loc, type, _p0, _p1, captures, NE_EXPR);
9996 2 : if (res) return res;
9997 : }
9998 : }
9999 243 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
10000 : {
10001 1 : {
10002 1 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q50 };
10003 1 : tree res = generic_simplify_283 (loc, type, _p0, _p1, captures, NE_EXPR);
10004 1 : if (res) return res;
10005 : }
10006 : }
10007 242 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10008 : {
10009 7 : {
10010 7 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q21, _q20, _p1, _q51 };
10011 7 : tree res = generic_simplify_283 (loc, type, _p0, _p1, captures, NE_EXPR);
10012 7 : if (res) return res;
10013 : }
10014 : }
10015 : break;
10016 : }
10017 1285181 : default:;
10018 : }
10019 1285181 : if (integer_pow2p (_q21))
10020 : {
10021 662418 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
10022 : {
10023 579 : {
10024 579 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10025 579 : tree res = generic_simplify_284 (loc, type, _p0, _p1, captures, NE_EXPR, EQ_EXPR);
10026 579 : if (res) return res;
10027 : }
10028 : }
10029 : }
10030 1284606 : switch (TREE_CODE (_q20))
10031 : {
10032 198775 : CASE_CONVERT:
10033 198775 : {
10034 198775 : tree _q30 = TREE_OPERAND (_q20, 0);
10035 198775 : if (integer_pow2p (_q21))
10036 : {
10037 99968 : if (integer_zerop (_p1))
10038 : {
10039 99873 : {
10040 99873 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
10041 99873 : tree res = generic_simplify_285 (loc, type, _p0, _p1, captures, NE_EXPR, LT_EXPR);
10042 99873 : if (res) return res;
10043 : }
10044 : }
10045 : }
10046 : break;
10047 : }
10048 1279168 : default:;
10049 : }
10050 1279168 : if (integer_pow2p (_q21))
10051 : {
10052 656405 : if (integer_zerop (_p1))
10053 : {
10054 653015 : {
10055 653015 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _q21 };
10056 653015 : tree res = generic_simplify_286 (loc, type, _p0, _p1, captures, NE_EXPR, LT_EXPR);
10057 653015 : if (res) return res;
10058 : }
10059 : }
10060 : }
10061 : break;
10062 : }
10063 5450 : case GE_EXPR:
10064 5450 : {
10065 5450 : tree _q20 = TREE_OPERAND (_p0, 0);
10066 5450 : tree _q21 = TREE_OPERAND (_p0, 1);
10067 5450 : if (integer_zerop (_q21))
10068 : {
10069 973 : switch (TREE_CODE (_p1))
10070 : {
10071 1 : case GE_EXPR:
10072 1 : {
10073 1 : tree _q50 = TREE_OPERAND (_p1, 0);
10074 1 : tree _q51 = TREE_OPERAND (_p1, 1);
10075 1 : if (integer_zerop (_q51))
10076 : {
10077 1 : {
10078 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
10079 1 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, GE_EXPR, NE_EXPR, LT_EXPR);
10080 1 : if (res) return res;
10081 : }
10082 : }
10083 : break;
10084 : }
10085 3 : case LT_EXPR:
10086 3 : {
10087 3 : tree _q50 = TREE_OPERAND (_p1, 0);
10088 3 : tree _q51 = TREE_OPERAND (_p1, 1);
10089 3 : if (integer_zerop (_q51))
10090 : {
10091 3 : {
10092 3 : tree captures[3] ATTRIBUTE_UNUSED = { _q50, _q51, _q20 };
10093 3 : tree res = generic_simplify_288 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
10094 3 : if (res) return res;
10095 : }
10096 : }
10097 : break;
10098 : }
10099 : default:;
10100 : }
10101 : }
10102 : break;
10103 : }
10104 15284 : case LT_EXPR:
10105 15284 : {
10106 15284 : tree _q20 = TREE_OPERAND (_p0, 0);
10107 15284 : tree _q21 = TREE_OPERAND (_p0, 1);
10108 15284 : if (integer_zerop (_q21))
10109 : {
10110 8614 : switch (TREE_CODE (_p1))
10111 : {
10112 79 : case LT_EXPR:
10113 79 : {
10114 79 : tree _q50 = TREE_OPERAND (_p1, 0);
10115 79 : tree _q51 = TREE_OPERAND (_p1, 1);
10116 79 : if (integer_zerop (_q51))
10117 : {
10118 79 : {
10119 79 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
10120 79 : tree res = generic_simplify_287 (loc, type, _p0, _p1, captures, LT_EXPR, NE_EXPR, LT_EXPR);
10121 79 : if (res) return res;
10122 : }
10123 : }
10124 : break;
10125 : }
10126 17 : case GE_EXPR:
10127 17 : {
10128 17 : tree _q50 = TREE_OPERAND (_p1, 0);
10129 17 : tree _q51 = TREE_OPERAND (_p1, 1);
10130 17 : if (integer_zerop (_q51))
10131 : {
10132 17 : {
10133 17 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _q50 };
10134 17 : tree res = generic_simplify_289 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
10135 17 : if (res) return res;
10136 : }
10137 : }
10138 : break;
10139 : }
10140 : default:;
10141 : }
10142 : }
10143 : break;
10144 : }
10145 243319 : case BIT_IOR_EXPR:
10146 243319 : {
10147 243319 : tree _q20 = TREE_OPERAND (_p0, 0);
10148 243319 : tree _q21 = TREE_OPERAND (_p0, 1);
10149 243319 : switch (TREE_CODE (_q21))
10150 : {
10151 284 : CASE_CONVERT:
10152 284 : {
10153 284 : tree _q40 = TREE_OPERAND (_q21, 0);
10154 284 : switch (TREE_CODE (_q40))
10155 : {
10156 0 : case NE_EXPR:
10157 0 : {
10158 0 : tree _q50 = TREE_OPERAND (_q40, 0);
10159 0 : tree _q51 = TREE_OPERAND (_q40, 1);
10160 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
10161 : {
10162 0 : if (integer_zerop (_q51))
10163 : {
10164 0 : if (integer_zerop (_p1))
10165 : {
10166 0 : {
10167 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10168 0 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, NE_EXPR);
10169 0 : if (res) return res;
10170 : }
10171 : }
10172 : }
10173 : }
10174 : break;
10175 : }
10176 : default:;
10177 : }
10178 : break;
10179 : }
10180 243319 : default:;
10181 : }
10182 243319 : switch (TREE_CODE (_q20))
10183 : {
10184 793 : CASE_CONVERT:
10185 793 : {
10186 793 : tree _q30 = TREE_OPERAND (_q20, 0);
10187 793 : switch (TREE_CODE (_q30))
10188 : {
10189 0 : case NE_EXPR:
10190 0 : {
10191 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10192 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10193 0 : if (integer_zerop (_q41))
10194 : {
10195 0 : if ((_q21 == _q40 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q40, 0) && types_match (_q21, _q40)))
10196 : {
10197 0 : if (integer_zerop (_p1))
10198 : {
10199 0 : {
10200 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q40 };
10201 0 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, NE_EXPR);
10202 0 : if (res) return res;
10203 : }
10204 : }
10205 : }
10206 : }
10207 : break;
10208 : }
10209 : default:;
10210 : }
10211 : break;
10212 : }
10213 243319 : default:;
10214 : }
10215 243319 : switch (TREE_CODE (_q21))
10216 : {
10217 24 : case NE_EXPR:
10218 24 : {
10219 24 : tree _q40 = TREE_OPERAND (_q21, 0);
10220 24 : tree _q41 = TREE_OPERAND (_q21, 1);
10221 24 : if ((_q40 == _q20 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _q20, 0) && types_match (_q40, _q20)))
10222 : {
10223 0 : if (integer_zerop (_q41))
10224 : {
10225 0 : if (integer_zerop (_p1))
10226 : {
10227 0 : {
10228 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
10229 0 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, NE_EXPR);
10230 0 : if (res) return res;
10231 : }
10232 : }
10233 : }
10234 : }
10235 : break;
10236 : }
10237 243319 : default:;
10238 : }
10239 243319 : switch (TREE_CODE (_q20))
10240 : {
10241 2 : case NE_EXPR:
10242 2 : {
10243 2 : tree _q30 = TREE_OPERAND (_q20, 0);
10244 2 : tree _q31 = TREE_OPERAND (_q20, 1);
10245 2 : if (integer_zerop (_q31))
10246 : {
10247 1 : if ((_q21 == _q30 && ! TREE_SIDE_EFFECTS (_q21)) || (operand_equal_p (_q21, _q30, 0) && types_match (_q21, _q30)))
10248 : {
10249 0 : if (integer_zerop (_p1))
10250 : {
10251 0 : {
10252 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
10253 0 : tree res = generic_simplify_290 (loc, type, _p0, _p1, captures, NE_EXPR);
10254 0 : if (res) return res;
10255 : }
10256 : }
10257 : }
10258 : }
10259 : break;
10260 : }
10261 : default:;
10262 : }
10263 : break;
10264 : }
10265 5581593 : CASE_CONVERT:
10266 5581593 : {
10267 5581593 : tree _q20 = TREE_OPERAND (_p0, 0);
10268 5581593 : switch (TREE_CODE (_q20))
10269 : {
10270 4296198 : case ADDR_EXPR:
10271 4296198 : {
10272 4296198 : switch (TREE_CODE (_p1))
10273 : {
10274 4266458 : CASE_CONVERT:
10275 4266458 : {
10276 4266458 : tree _q40 = TREE_OPERAND (_p1, 0);
10277 4266458 : switch (TREE_CODE (_q40))
10278 : {
10279 4266458 : case ADDR_EXPR:
10280 4266458 : {
10281 4266458 : {
10282 4266458 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q40 };
10283 4266458 : tree res = generic_simplify_291 (loc, type, _p0, _p1, captures, NE_EXPR);
10284 4266458 : if (res) return res;
10285 : }
10286 33 : break;
10287 : }
10288 : default:;
10289 : }
10290 : break;
10291 : }
10292 21232 : case ADDR_EXPR:
10293 21232 : {
10294 21232 : {
10295 21232 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10296 21232 : tree res = generic_simplify_291 (loc, type, _p0, _p1, captures, NE_EXPR);
10297 21232 : if (res) return res;
10298 : }
10299 7935 : break;
10300 : }
10301 : default:;
10302 : }
10303 : break;
10304 : }
10305 : default:;
10306 : }
10307 : break;
10308 : }
10309 65492 : case ADDR_EXPR:
10310 65492 : {
10311 65492 : switch (TREE_CODE (_p1))
10312 : {
10313 383 : CASE_CONVERT:
10314 383 : {
10315 383 : tree _q30 = TREE_OPERAND (_p1, 0);
10316 383 : switch (TREE_CODE (_q30))
10317 : {
10318 383 : case ADDR_EXPR:
10319 383 : {
10320 383 : {
10321 383 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _q30 };
10322 383 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, NE_EXPR);
10323 383 : if (res) return res;
10324 : }
10325 143 : break;
10326 : }
10327 : default:;
10328 : }
10329 : break;
10330 : }
10331 56486 : case ADDR_EXPR:
10332 56486 : {
10333 56486 : {
10334 56486 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p0, _p1 };
10335 56486 : tree res = generic_simplify_292 (loc, type, _p0, _p1, captures, NE_EXPR);
10336 56486 : if (res) return res;
10337 : }
10338 3798 : break;
10339 : }
10340 : default:;
10341 : }
10342 : break;
10343 : }
10344 30555024 : default:;
10345 : }
10346 30555024 : {
10347 30555024 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
10348 30555024 : tree res = generic_simplify_293 (loc, type, _p0, _p1, captures, NE_EXPR);
10349 30555024 : if (res) return res;
10350 : }
10351 30545919 : switch (TREE_CODE (_p0))
10352 : {
10353 1301871 : CASE_CONVERT:
10354 1301871 : {
10355 1301871 : tree _q20 = TREE_OPERAND (_p0, 0);
10356 1301871 : switch (TREE_CODE (_p1))
10357 : {
10358 840753 : case INTEGER_CST:
10359 840753 : {
10360 840753 : {
10361 840753 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
10362 840753 : tree res = generic_simplify_294 (loc, type, _p0, _p1, captures, NE_EXPR);
10363 840753 : if (res) return res;
10364 : }
10365 831723 : break;
10366 : }
10367 1292841 : default:;
10368 : }
10369 1292841 : switch (TREE_CODE (_q20))
10370 : {
10371 8 : case NE_EXPR:
10372 8 : {
10373 8 : tree _q30 = TREE_OPERAND (_q20, 0);
10374 8 : tree _q31 = TREE_OPERAND (_q20, 1);
10375 8 : switch (TREE_CODE (_q31))
10376 : {
10377 8 : case INTEGER_CST:
10378 8 : {
10379 8 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
10380 : {
10381 0 : {
10382 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
10383 0 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
10384 0 : if (res) return res;
10385 : }
10386 : }
10387 : break;
10388 : }
10389 : default:;
10390 : }
10391 : break;
10392 : }
10393 0 : case EQ_EXPR:
10394 0 : {
10395 0 : tree _q30 = TREE_OPERAND (_q20, 0);
10396 0 : tree _q31 = TREE_OPERAND (_q20, 1);
10397 0 : switch (TREE_CODE (_q31))
10398 : {
10399 0 : case INTEGER_CST:
10400 0 : {
10401 0 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
10402 : {
10403 0 : {
10404 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q30, _q31 };
10405 0 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
10406 0 : if (res) return res;
10407 : }
10408 : }
10409 : break;
10410 : }
10411 : default:;
10412 : }
10413 : break;
10414 : }
10415 : default:;
10416 : }
10417 : break;
10418 : }
10419 30536889 : default:;
10420 : }
10421 30536889 : switch (TREE_CODE (_p1))
10422 : {
10423 523081 : CASE_CONVERT:
10424 523081 : {
10425 523081 : tree _q30 = TREE_OPERAND (_p1, 0);
10426 523081 : switch (TREE_CODE (_q30))
10427 : {
10428 0 : case NE_EXPR:
10429 0 : {
10430 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10431 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10432 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
10433 : {
10434 0 : switch (TREE_CODE (_q41))
10435 : {
10436 0 : case INTEGER_CST:
10437 0 : {
10438 0 : {
10439 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
10440 0 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
10441 0 : if (res) return res;
10442 : }
10443 0 : break;
10444 : }
10445 : default:;
10446 : }
10447 : }
10448 : break;
10449 : }
10450 0 : case EQ_EXPR:
10451 0 : {
10452 0 : tree _q40 = TREE_OPERAND (_q30, 0);
10453 0 : tree _q41 = TREE_OPERAND (_q30, 1);
10454 0 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
10455 : {
10456 0 : switch (TREE_CODE (_q41))
10457 : {
10458 0 : case INTEGER_CST:
10459 0 : {
10460 0 : {
10461 0 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _q41 };
10462 0 : tree res = generic_simplify_295 (loc, type, _p0, _p1, captures, EQ_EXPR, NE_EXPR);
10463 0 : if (res) return res;
10464 : }
10465 0 : break;
10466 : }
10467 : default:;
10468 : }
10469 : }
10470 : break;
10471 : }
10472 : default:;
10473 : }
10474 : break;
10475 : }
10476 30536889 : default:;
10477 : }
10478 30536889 : if (integer_zerop (_p1))
10479 : {
10480 18666631 : {
10481 18666631 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
10482 18666631 : if (TREE_CODE (TREE_TYPE (captures[0])) == BOOLEAN_TYPE
10483 18666631 : && types_match (type, TREE_TYPE (captures[0]))
10484 : )
10485 : {
10486 3432148 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1594;
10487 3432148 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1594;
10488 3432148 : {
10489 3432148 : tree res_op0;
10490 3432148 : res_op0 = captures[0];
10491 3432148 : tree _r;
10492 3432148 : _r = non_lvalue_loc (loc, res_op0);
10493 3432148 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 999, __FILE__, __LINE__, true);
10494 3432148 : return _r;
10495 : }
10496 : next_after_fail1594:;
10497 : }
10498 : }
10499 : }
10500 27104741 : switch (TREE_CODE (_p0))
10501 : {
10502 982504 : case BIT_AND_EXPR:
10503 982504 : {
10504 982504 : tree _q20 = TREE_OPERAND (_p0, 0);
10505 982504 : tree _q21 = TREE_OPERAND (_p0, 1);
10506 982504 : switch (TREE_CODE (_q21))
10507 : {
10508 2058 : case VECTOR_CST:
10509 2058 : {
10510 2058 : if (integer_zerop (_p1))
10511 : {
10512 2058 : {
10513 2058 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10514 2058 : const enum tree_code cmp = NE_EXPR;
10515 2058 : const enum tree_code icmp = GT_EXPR;
10516 2058 : {
10517 2058 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10518 2058 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10519 : )
10520 : {
10521 13 : {
10522 13 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10523 13 : ? optab_vector : optab_default;
10524 13 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10525 13 : if (target_supports_op_p (utype, icmp, optab)
10526 13 : || (optimize_vectors_before_lowering_p ()
10527 7 : && (!target_supports_op_p (type, cmp, optab)
10528 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10529 : )
10530 : {
10531 7 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10532 : )
10533 : {
10534 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1595;
10535 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1595;
10536 0 : {
10537 0 : tree res_op0;
10538 0 : res_op0 = captures[1];
10539 0 : tree res_op1;
10540 0 : res_op1 = csts;
10541 0 : tree _r;
10542 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10543 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10544 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10545 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 997, __FILE__, __LINE__, true);
10546 0 : return _r;
10547 : }
10548 2051 : next_after_fail1595:;
10549 : }
10550 : else
10551 : {
10552 7 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1596;
10553 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1596;
10554 7 : {
10555 7 : tree res_op0;
10556 7 : {
10557 7 : tree _o1[1], _r1;
10558 7 : _o1[0] = captures[1];
10559 7 : if (TREE_TYPE (_o1[0]) != utype)
10560 : {
10561 7 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10562 : }
10563 : else
10564 : _r1 = _o1[0];
10565 7 : res_op0 = _r1;
10566 : }
10567 7 : tree res_op1;
10568 7 : res_op1 = csts;
10569 7 : tree _r;
10570 7 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10571 7 : if (TREE_SIDE_EFFECTS (captures[2]))
10572 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10573 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
10574 7 : return _r;
10575 : }
10576 2051 : next_after_fail1596:;
10577 : }
10578 : }
10579 : }
10580 : }
10581 : }
10582 : }
10583 : }
10584 : break;
10585 : }
10586 783923 : case INTEGER_CST:
10587 783923 : {
10588 783923 : if (integer_zerop (_p1))
10589 : {
10590 750059 : {
10591 750059 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q21 };
10592 750059 : const enum tree_code cmp = NE_EXPR;
10593 750059 : const enum tree_code icmp = GT_EXPR;
10594 750059 : {
10595 750059 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10596 750059 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10597 : )
10598 : {
10599 1272 : {
10600 1272 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10601 1272 : ? optab_vector : optab_default;
10602 1272 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10603 1272 : if (target_supports_op_p (utype, icmp, optab)
10604 1272 : || (optimize_vectors_before_lowering_p ()
10605 1103 : && (!target_supports_op_p (type, cmp, optab)
10606 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10607 : )
10608 : {
10609 1103 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10610 : )
10611 : {
10612 989 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1597;
10613 989 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1597;
10614 989 : {
10615 989 : tree res_op0;
10616 989 : res_op0 = captures[1];
10617 989 : tree res_op1;
10618 989 : res_op1 = csts;
10619 989 : tree _r;
10620 989 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10621 989 : if (TREE_SIDE_EFFECTS (captures[2]))
10622 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10623 989 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 997, __FILE__, __LINE__, true);
10624 989 : return _r;
10625 : }
10626 748956 : next_after_fail1597:;
10627 : }
10628 : else
10629 : {
10630 114 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1598;
10631 114 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1598;
10632 114 : {
10633 114 : tree res_op0;
10634 114 : {
10635 114 : tree _o1[1], _r1;
10636 114 : _o1[0] = captures[1];
10637 114 : if (TREE_TYPE (_o1[0]) != utype)
10638 : {
10639 114 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10640 : }
10641 : else
10642 : _r1 = _o1[0];
10643 114 : res_op0 = _r1;
10644 : }
10645 114 : tree res_op1;
10646 114 : res_op1 = csts;
10647 114 : tree _r;
10648 114 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10649 114 : if (TREE_SIDE_EFFECTS (captures[2]))
10650 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10651 114 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
10652 114 : return _r;
10653 : }
10654 748956 : next_after_fail1598:;
10655 : }
10656 : }
10657 : }
10658 : }
10659 : }
10660 : }
10661 : }
10662 : break;
10663 : }
10664 981394 : default:;
10665 : }
10666 981394 : switch (TREE_CODE (_q20))
10667 : {
10668 0 : case VECTOR_CST:
10669 0 : {
10670 0 : if (integer_zerop (_p1))
10671 : {
10672 0 : {
10673 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
10674 0 : const enum tree_code cmp = NE_EXPR;
10675 0 : const enum tree_code icmp = GT_EXPR;
10676 0 : {
10677 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10678 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10679 : )
10680 : {
10681 0 : {
10682 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10683 0 : ? optab_vector : optab_default;
10684 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10685 0 : if (target_supports_op_p (utype, icmp, optab)
10686 0 : || (optimize_vectors_before_lowering_p ()
10687 0 : && (!target_supports_op_p (type, cmp, optab)
10688 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10689 : )
10690 : {
10691 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10692 : )
10693 : {
10694 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1599;
10695 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1599;
10696 0 : {
10697 0 : tree res_op0;
10698 0 : res_op0 = captures[1];
10699 0 : tree res_op1;
10700 0 : res_op1 = csts;
10701 0 : tree _r;
10702 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10703 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10704 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10705 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 997, __FILE__, __LINE__, true);
10706 0 : return _r;
10707 : }
10708 0 : next_after_fail1599:;
10709 : }
10710 : else
10711 : {
10712 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1600;
10713 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1600;
10714 0 : {
10715 0 : tree res_op0;
10716 0 : {
10717 0 : tree _o1[1], _r1;
10718 0 : _o1[0] = captures[1];
10719 0 : if (TREE_TYPE (_o1[0]) != utype)
10720 : {
10721 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10722 : }
10723 : else
10724 : _r1 = _o1[0];
10725 0 : res_op0 = _r1;
10726 : }
10727 0 : tree res_op1;
10728 0 : res_op1 = csts;
10729 0 : tree _r;
10730 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10731 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10732 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10733 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
10734 0 : return _r;
10735 : }
10736 0 : next_after_fail1600:;
10737 : }
10738 : }
10739 : }
10740 : }
10741 : }
10742 : }
10743 : }
10744 : break;
10745 : }
10746 0 : case INTEGER_CST:
10747 0 : {
10748 0 : if (integer_zerop (_p1))
10749 : {
10750 0 : {
10751 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q21, _q20 };
10752 0 : const enum tree_code cmp = NE_EXPR;
10753 0 : const enum tree_code icmp = GT_EXPR;
10754 0 : {
10755 0 : tree csts = bitmask_inv_cst_vector_p (captures[2]);
10756 0 : if (csts && (VECTOR_TYPE_P (TREE_TYPE (captures[2])) || single_use (captures[0]))
10757 : )
10758 : {
10759 0 : {
10760 0 : auto optab = VECTOR_TYPE_P (TREE_TYPE (captures[2]))
10761 0 : ? optab_vector : optab_default;
10762 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
10763 0 : if (target_supports_op_p (utype, icmp, optab)
10764 0 : || (optimize_vectors_before_lowering_p ()
10765 0 : && (!target_supports_op_p (type, cmp, optab)
10766 0 : || !target_supports_op_p (type, BIT_AND_EXPR, optab)))
10767 : )
10768 : {
10769 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
10770 : )
10771 : {
10772 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1601;
10773 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1601;
10774 0 : {
10775 0 : tree res_op0;
10776 0 : res_op0 = captures[1];
10777 0 : tree res_op1;
10778 0 : res_op1 = csts;
10779 0 : tree _r;
10780 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10781 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10782 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10783 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 997, __FILE__, __LINE__, true);
10784 0 : return _r;
10785 : }
10786 0 : next_after_fail1601:;
10787 : }
10788 : else
10789 : {
10790 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1602;
10791 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1602;
10792 0 : {
10793 0 : tree res_op0;
10794 0 : {
10795 0 : tree _o1[1], _r1;
10796 0 : _o1[0] = captures[1];
10797 0 : if (TREE_TYPE (_o1[0]) != utype)
10798 : {
10799 0 : _r1 = fold_build1_loc (loc, VIEW_CONVERT_EXPR, utype, _o1[0]);
10800 : }
10801 : else
10802 : _r1 = _o1[0];
10803 0 : res_op0 = _r1;
10804 : }
10805 0 : tree res_op1;
10806 0 : res_op1 = csts;
10807 0 : tree _r;
10808 0 : _r = fold_build2_loc (loc, icmp, type, res_op0, res_op1);
10809 0 : if (TREE_SIDE_EFFECTS (captures[2]))
10810 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[2]), _r);
10811 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 998, __FILE__, __LINE__, true);
10812 0 : return _r;
10813 : }
10814 0 : next_after_fail1602:;
10815 : }
10816 : }
10817 : }
10818 : }
10819 : }
10820 : }
10821 : }
10822 : break;
10823 : }
10824 : default:;
10825 : }
10826 : break;
10827 : }
10828 20897 : case RSHIFT_EXPR:
10829 20897 : {
10830 20897 : tree _q20 = TREE_OPERAND (_p0, 0);
10831 20897 : tree _q21 = TREE_OPERAND (_p0, 1);
10832 20897 : switch (TREE_CODE (_q20))
10833 : {
10834 7 : case MULT_EXPR:
10835 7 : {
10836 7 : tree _q30 = TREE_OPERAND (_q20, 0);
10837 7 : tree _q31 = TREE_OPERAND (_q20, 1);
10838 7 : switch (TREE_CODE (_q30))
10839 : {
10840 7 : CASE_CONVERT:
10841 7 : {
10842 7 : tree _q40 = TREE_OPERAND (_q30, 0);
10843 7 : switch (TREE_CODE (_q31))
10844 : {
10845 7 : CASE_CONVERT:
10846 7 : {
10847 7 : tree _q60 = TREE_OPERAND (_q31, 0);
10848 7 : switch (TREE_CODE (_q21))
10849 : {
10850 7 : case INTEGER_CST:
10851 7 : {
10852 7 : if (integer_zerop (_p1))
10853 : {
10854 7 : {
10855 7 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q30, _q40, _q60, _q21 };
10856 7 : tree res = generic_simplify_296 (loc, type, _p0, _p1, captures, NE_EXPR, GT_EXPR);
10857 7 : if (res) return res;
10858 : }
10859 : }
10860 : break;
10861 : }
10862 : default:;
10863 : }
10864 : break;
10865 : }
10866 : default:;
10867 : }
10868 : break;
10869 : }
10870 : default:;
10871 : }
10872 : break;
10873 : }
10874 : default:;
10875 : }
10876 : break;
10877 : }
10878 1340533 : case PLUS_EXPR:
10879 1340533 : {
10880 1340533 : tree _q20 = TREE_OPERAND (_p0, 0);
10881 1340533 : tree _q21 = TREE_OPERAND (_p0, 1);
10882 1340533 : switch (TREE_CODE (_q21))
10883 : {
10884 1214918 : case INTEGER_CST:
10885 1214918 : {
10886 1214918 : switch (TREE_CODE (_p1))
10887 : {
10888 719817 : case INTEGER_CST:
10889 719817 : {
10890 719817 : {
10891 719817 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10892 719817 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, PLUS_EXPR, MINUS_EXPR, NE_EXPR);
10893 719817 : if (res) return res;
10894 : }
10895 361 : break;
10896 : }
10897 : default:;
10898 : }
10899 : break;
10900 : }
10901 : default:;
10902 : }
10903 : break;
10904 : }
10905 68392 : case MINUS_EXPR:
10906 68392 : {
10907 68392 : tree _q20 = TREE_OPERAND (_p0, 0);
10908 68392 : tree _q21 = TREE_OPERAND (_p0, 1);
10909 68392 : switch (TREE_CODE (_q21))
10910 : {
10911 193 : case INTEGER_CST:
10912 193 : {
10913 193 : switch (TREE_CODE (_p1))
10914 : {
10915 72 : case INTEGER_CST:
10916 72 : {
10917 72 : {
10918 72 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
10919 72 : tree res = generic_simplify_297 (loc, type, _p0, _p1, captures, MINUS_EXPR, PLUS_EXPR, NE_EXPR);
10920 72 : if (res) return res;
10921 : }
10922 72 : break;
10923 : }
10924 : default:;
10925 : }
10926 : break;
10927 : }
10928 68392 : default:;
10929 : }
10930 68392 : switch (TREE_CODE (_q20))
10931 : {
10932 1867 : case INTEGER_CST:
10933 1867 : {
10934 1867 : switch (TREE_CODE (_p1))
10935 : {
10936 61 : case INTEGER_CST:
10937 61 : {
10938 61 : {
10939 61 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
10940 61 : tree res = generic_simplify_298 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR);
10941 61 : if (res) return res;
10942 : }
10943 0 : break;
10944 : }
10945 : default:;
10946 : }
10947 : break;
10948 : }
10949 : default:;
10950 : }
10951 : break;
10952 : }
10953 2452469 : case CALL_EXPR:
10954 2452469 : switch (get_call_combined_fn (_p0))
10955 : {
10956 224 : case CFN_BUILT_IN_CLZ:
10957 224 : if (call_expr_nargs (_p0) == 1)
10958 : {
10959 224 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10960 224 : switch (TREE_CODE (_p1))
10961 : {
10962 210 : case INTEGER_CST:
10963 210 : {
10964 210 : {
10965 210 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10966 210 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZ);
10967 210 : if (res) return res;
10968 : }
10969 135 : break;
10970 : }
10971 : default:;
10972 : }
10973 : }
10974 : break;
10975 246 : case CFN_BUILT_IN_CTZ:
10976 246 : if (call_expr_nargs (_p0) == 1)
10977 : {
10978 246 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10979 246 : switch (TREE_CODE (_p1))
10980 : {
10981 200 : case INTEGER_CST:
10982 200 : {
10983 200 : {
10984 200 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
10985 200 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZ);
10986 200 : if (res) return res;
10987 : }
10988 0 : break;
10989 : }
10990 : default:;
10991 : }
10992 : }
10993 : break;
10994 31 : case CFN_BUILT_IN_FFS:
10995 31 : if (call_expr_nargs (_p0) == 1)
10996 : {
10997 31 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
10998 31 : switch (TREE_CODE (_p1))
10999 : {
11000 11 : case INTEGER_CST:
11001 11 : {
11002 11 : {
11003 11 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11004 11 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFS);
11005 11 : if (res) return res;
11006 : }
11007 0 : break;
11008 : }
11009 : default:;
11010 : }
11011 : }
11012 : break;
11013 0 : case CFN_REDUC_IOR:
11014 0 : if (call_expr_nargs (_p0) == 1)
11015 : {
11016 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11017 0 : if (integer_zerop (_p1))
11018 : {
11019 0 : {
11020 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11021 0 : tree res = generic_simplify_305 (loc, type, _p0, _p1, captures, NE_EXPR);
11022 0 : if (res) return res;
11023 : }
11024 : }
11025 : }
11026 : break;
11027 0 : case CFN_BUILT_IN_FFSIMAX:
11028 0 : if (call_expr_nargs (_p0) == 1)
11029 : {
11030 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11031 0 : switch (TREE_CODE (_p1))
11032 : {
11033 0 : case INTEGER_CST:
11034 0 : {
11035 0 : {
11036 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11037 0 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFSIMAX);
11038 0 : if (res) return res;
11039 : }
11040 0 : break;
11041 : }
11042 : default:;
11043 : }
11044 : }
11045 : break;
11046 13 : case CFN_BUILT_IN_POPCOUNT:
11047 13 : if (call_expr_nargs (_p0) == 1)
11048 : {
11049 13 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11050 13 : if (integer_zerop (_p1))
11051 : {
11052 1 : {
11053 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11054 1 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNT);
11055 1 : if (res) return res;
11056 : }
11057 : }
11058 : }
11059 : break;
11060 87 : case CFN_BUILT_IN_CLZL:
11061 87 : if (call_expr_nargs (_p0) == 1)
11062 : {
11063 87 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11064 87 : switch (TREE_CODE (_p1))
11065 : {
11066 79 : case INTEGER_CST:
11067 79 : {
11068 79 : {
11069 79 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11070 79 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZL);
11071 79 : if (res) return res;
11072 : }
11073 43 : break;
11074 : }
11075 : default:;
11076 : }
11077 : }
11078 : break;
11079 85 : case CFN_BUILT_IN_CTZL:
11080 85 : if (call_expr_nargs (_p0) == 1)
11081 : {
11082 85 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11083 85 : switch (TREE_CODE (_p1))
11084 : {
11085 77 : case INTEGER_CST:
11086 77 : {
11087 77 : {
11088 77 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11089 77 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZL);
11090 77 : if (res) return res;
11091 : }
11092 16 : break;
11093 : }
11094 : default:;
11095 : }
11096 : }
11097 : break;
11098 8 : case CFN_BUILT_IN_FFSL:
11099 8 : if (call_expr_nargs (_p0) == 1)
11100 : {
11101 8 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11102 8 : switch (TREE_CODE (_p1))
11103 : {
11104 0 : case INTEGER_CST:
11105 0 : {
11106 0 : {
11107 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11108 0 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFSL);
11109 0 : if (res) return res;
11110 : }
11111 0 : break;
11112 : }
11113 : default:;
11114 : }
11115 : }
11116 : break;
11117 11 : case CFN_BUILT_IN_POPCOUNTLL:
11118 11 : if (call_expr_nargs (_p0) == 1)
11119 : {
11120 11 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11121 11 : if (integer_zerop (_p1))
11122 : {
11123 1 : {
11124 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11125 1 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTLL);
11126 1 : if (res) return res;
11127 : }
11128 : }
11129 : }
11130 : break;
11131 0 : case CFN_BUILT_IN_CTZIMAX:
11132 0 : if (call_expr_nargs (_p0) == 1)
11133 : {
11134 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11135 0 : switch (TREE_CODE (_p1))
11136 : {
11137 0 : case INTEGER_CST:
11138 0 : {
11139 0 : {
11140 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11141 0 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZIMAX);
11142 0 : if (res) return res;
11143 : }
11144 0 : break;
11145 : }
11146 : default:;
11147 : }
11148 : }
11149 : break;
11150 0 : case CFN_POPCOUNT:
11151 0 : if (call_expr_nargs (_p0) == 1)
11152 : {
11153 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11154 0 : if (integer_zerop (_p1))
11155 : {
11156 0 : {
11157 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11158 0 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_POPCOUNT);
11159 0 : if (res) return res;
11160 : }
11161 : }
11162 : }
11163 : break;
11164 0 : case CFN_CLZ:
11165 0 : if (call_expr_nargs (_p0) == 1)
11166 : {
11167 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11168 0 : switch (TREE_CODE (_p1))
11169 : {
11170 0 : case INTEGER_CST:
11171 0 : {
11172 0 : {
11173 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11174 0 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_CLZ);
11175 0 : if (res) return res;
11176 : }
11177 0 : break;
11178 : }
11179 : default:;
11180 : }
11181 : }
11182 0 : if (call_expr_nargs (_p0) == 2)
11183 : {
11184 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11185 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11186 0 : switch (TREE_CODE (_p1))
11187 : {
11188 0 : case INTEGER_CST:
11189 0 : {
11190 0 : {
11191 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11192 0 : tree res = generic_simplify_300 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR);
11193 0 : if (res) return res;
11194 : }
11195 0 : break;
11196 : }
11197 : default:;
11198 : }
11199 : }
11200 : break;
11201 0 : case CFN_CTZ:
11202 0 : if (call_expr_nargs (_p0) == 1)
11203 : {
11204 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11205 0 : switch (TREE_CODE (_p1))
11206 : {
11207 0 : case INTEGER_CST:
11208 0 : {
11209 0 : {
11210 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11211 0 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_CTZ);
11212 0 : if (res) return res;
11213 : }
11214 0 : break;
11215 : }
11216 : default:;
11217 : }
11218 : }
11219 0 : if (call_expr_nargs (_p0) == 2)
11220 : {
11221 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11222 0 : tree _q21 = CALL_EXPR_ARG (_p0, 1);
11223 0 : switch (TREE_CODE (_p1))
11224 : {
11225 0 : case INTEGER_CST:
11226 0 : {
11227 0 : {
11228 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _p1 };
11229 0 : tree res = generic_simplify_302 (loc, type, _p0, _p1, captures, NE_EXPR);
11230 0 : if (res) return res;
11231 : }
11232 0 : break;
11233 : }
11234 : default:;
11235 : }
11236 : }
11237 : break;
11238 0 : case CFN_FFS:
11239 0 : if (call_expr_nargs (_p0) == 1)
11240 : {
11241 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11242 0 : switch (TREE_CODE (_p1))
11243 : {
11244 0 : case INTEGER_CST:
11245 0 : {
11246 0 : {
11247 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11248 0 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_FFS);
11249 0 : if (res) return res;
11250 : }
11251 0 : break;
11252 : }
11253 : default:;
11254 : }
11255 : }
11256 : break;
11257 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
11258 0 : if (call_expr_nargs (_p0) == 1)
11259 : {
11260 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11261 0 : if (integer_zerop (_p1))
11262 : {
11263 0 : {
11264 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11265 0 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTIMAX);
11266 0 : if (res) return res;
11267 : }
11268 : }
11269 : }
11270 : break;
11271 0 : case CFN_BUILT_IN_CLZIMAX:
11272 0 : if (call_expr_nargs (_p0) == 1)
11273 : {
11274 0 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11275 0 : switch (TREE_CODE (_p1))
11276 : {
11277 0 : case INTEGER_CST:
11278 0 : {
11279 0 : {
11280 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11281 0 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZIMAX);
11282 0 : if (res) return res;
11283 : }
11284 0 : break;
11285 : }
11286 : default:;
11287 : }
11288 : }
11289 : break;
11290 12 : case CFN_BUILT_IN_POPCOUNTL:
11291 12 : if (call_expr_nargs (_p0) == 1)
11292 : {
11293 12 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11294 12 : if (integer_zerop (_p1))
11295 : {
11296 1 : {
11297 1 : tree captures[1] ATTRIBUTE_UNUSED = { _q20 };
11298 1 : tree res = generic_simplify_303 (loc, type, _p0, _p1, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTL);
11299 1 : if (res) return res;
11300 : }
11301 : }
11302 : }
11303 : break;
11304 52 : case CFN_BUILT_IN_CLZLL:
11305 52 : if (call_expr_nargs (_p0) == 1)
11306 : {
11307 52 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11308 52 : switch (TREE_CODE (_p1))
11309 : {
11310 42 : case INTEGER_CST:
11311 42 : {
11312 42 : {
11313 42 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11314 42 : tree res = generic_simplify_299 (loc, type, _p0, _p1, captures, NE_EXPR, GE_EXPR, CFN_BUILT_IN_CLZLL);
11315 42 : if (res) return res;
11316 : }
11317 18 : break;
11318 : }
11319 : default:;
11320 : }
11321 : }
11322 : break;
11323 74 : case CFN_BUILT_IN_CTZLL:
11324 74 : if (call_expr_nargs (_p0) == 1)
11325 : {
11326 74 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11327 74 : switch (TREE_CODE (_p1))
11328 : {
11329 64 : case INTEGER_CST:
11330 64 : {
11331 64 : {
11332 64 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11333 64 : tree res = generic_simplify_301 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_CTZLL);
11334 64 : if (res) return res;
11335 : }
11336 16 : break;
11337 : }
11338 : default:;
11339 : }
11340 : }
11341 : break;
11342 11 : case CFN_BUILT_IN_FFSLL:
11343 11 : if (call_expr_nargs (_p0) == 1)
11344 : {
11345 11 : tree _q20 = CALL_EXPR_ARG (_p0, 0);
11346 11 : switch (TREE_CODE (_p1))
11347 : {
11348 1 : case INTEGER_CST:
11349 1 : {
11350 1 : {
11351 1 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _p1 };
11352 1 : tree res = generic_simplify_304 (loc, type, _p0, _p1, captures, NE_EXPR, CFN_BUILT_IN_FFSLL);
11353 1 : if (res) return res;
11354 : }
11355 0 : break;
11356 : }
11357 : default:;
11358 : }
11359 : }
11360 : break;
11361 : default:;
11362 : }
11363 : break;
11364 : default:;
11365 : }
11366 : return NULL_TREE;
11367 : }
11368 :
11369 : tree
11370 1554077 : generic_simplify_UNGT_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1)
11371 : {
11372 1554077 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11373 1554077 : switch (TREE_CODE (_p0))
11374 : {
11375 0 : case VEC_COND_EXPR:
11376 0 : {
11377 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11378 0 : tree _q21 = TREE_OPERAND (_p0, 1);
11379 0 : tree _q22 = TREE_OPERAND (_p0, 2);
11380 0 : switch (TREE_CODE (_p1))
11381 : {
11382 0 : case VEC_COND_EXPR:
11383 0 : {
11384 0 : tree _q60 = TREE_OPERAND (_p1, 0);
11385 0 : tree _q61 = TREE_OPERAND (_p1, 1);
11386 0 : tree _q62 = TREE_OPERAND (_p1, 2);
11387 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
11388 : {
11389 0 : {
11390 0 : tree captures[7] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1, _q61, _q62 };
11391 0 : if (VECTOR_TYPE_P (type)
11392 0 : && (TREE_CODE_CLASS (UNGT_EXPR) != tcc_comparison
11393 0 : || types_match (type, TREE_TYPE (captures[2]))
11394 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11395 : || (optimize_vectors_before_lowering_p ()
11396 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11397 : )
11398 : {
11399 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1830;
11400 0 : {
11401 0 : tree res_op0;
11402 0 : res_op0 = captures[1];
11403 0 : tree res_op1;
11404 0 : {
11405 0 : tree _o1[2], _r1;
11406 0 : _o1[0] = captures[2];
11407 0 : _o1[1] = captures[5];
11408 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11409 0 : if (EXPR_P (_r1))
11410 0 : goto next_after_fail1830;
11411 0 : res_op1 = _r1;
11412 : }
11413 0 : tree res_op2;
11414 0 : {
11415 0 : tree _o1[2], _r1;
11416 0 : _o1[0] = captures[3];
11417 0 : _o1[1] = captures[6];
11418 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11419 0 : if (EXPR_P (_r1))
11420 0 : goto next_after_fail1830;
11421 0 : res_op2 = _r1;
11422 : }
11423 0 : tree _r;
11424 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11425 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 908, __FILE__, __LINE__, true);
11426 0 : return _r;
11427 : }
11428 0 : next_after_fail1830:;
11429 : }
11430 : }
11431 : }
11432 : break;
11433 : }
11434 0 : default:;
11435 : }
11436 0 : {
11437 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q20, _q21, _q22, _p1 };
11438 0 : if (VECTOR_TYPE_P (type)
11439 0 : && (TREE_CODE_CLASS (UNGT_EXPR) != tcc_comparison
11440 0 : || types_match (type, TREE_TYPE (captures[2]))
11441 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[1]))
11442 : || (optimize_vectors_before_lowering_p ()
11443 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[2]), TREE_TYPE (captures[1]))))
11444 : )
11445 : {
11446 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1831;
11447 0 : {
11448 0 : if (! tree_invariant_p (captures[4])) goto next_after_fail1831;
11449 0 : tree res_op0;
11450 0 : res_op0 = captures[1];
11451 0 : tree res_op1;
11452 0 : {
11453 0 : tree _o1[2], _r1;
11454 0 : _o1[0] = captures[2];
11455 0 : _o1[1] = unshare_expr (captures[4]);
11456 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11457 0 : if (EXPR_P (_r1))
11458 0 : goto next_after_fail1831;
11459 0 : res_op1 = _r1;
11460 : }
11461 0 : tree res_op2;
11462 0 : {
11463 0 : tree _o1[2], _r1;
11464 0 : _o1[0] = captures[3];
11465 0 : _o1[1] = captures[4];
11466 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11467 0 : if (EXPR_P (_r1))
11468 0 : goto next_after_fail1831;
11469 0 : res_op2 = _r1;
11470 : }
11471 0 : tree _r;
11472 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11473 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 910, __FILE__, __LINE__, true);
11474 0 : return _r;
11475 : }
11476 0 : next_after_fail1831:;
11477 : }
11478 : }
11479 0 : break;
11480 : }
11481 1554077 : default:;
11482 : }
11483 1554077 : switch (TREE_CODE (_p1))
11484 : {
11485 0 : case VEC_COND_EXPR:
11486 0 : {
11487 0 : tree _q30 = TREE_OPERAND (_p1, 0);
11488 0 : tree _q31 = TREE_OPERAND (_p1, 1);
11489 0 : tree _q32 = TREE_OPERAND (_p1, 2);
11490 0 : {
11491 0 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q30, _q31, _q32 };
11492 0 : if (VECTOR_TYPE_P (type)
11493 0 : && (TREE_CODE_CLASS (UNGT_EXPR) != tcc_comparison
11494 0 : || types_match (type, TREE_TYPE (captures[3]))
11495 0 : || expand_vec_cond_expr_p (type, TREE_TYPE (captures[2]))
11496 : || (optimize_vectors_before_lowering_p ()
11497 0 : && !expand_vec_cond_expr_p (TREE_TYPE (captures[3]), TREE_TYPE (captures[2]))))
11498 : )
11499 : {
11500 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1832;
11501 0 : {
11502 0 : if (! tree_invariant_p (captures[0])) goto next_after_fail1832;
11503 0 : tree res_op0;
11504 0 : res_op0 = captures[2];
11505 0 : tree res_op1;
11506 0 : {
11507 0 : tree _o1[2], _r1;
11508 0 : _o1[0] = unshare_expr (captures[0]);
11509 0 : _o1[1] = captures[3];
11510 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11511 0 : if (EXPR_P (_r1))
11512 0 : goto next_after_fail1832;
11513 0 : res_op1 = _r1;
11514 : }
11515 0 : tree res_op2;
11516 0 : {
11517 0 : tree _o1[2], _r1;
11518 0 : _o1[0] = captures[0];
11519 0 : _o1[1] = captures[4];
11520 0 : _r1 = fold_build2_loc (loc, UNGT_EXPR, type, _o1[0], _o1[1]);
11521 0 : if (EXPR_P (_r1))
11522 0 : goto next_after_fail1832;
11523 0 : res_op2 = _r1;
11524 : }
11525 0 : tree _r;
11526 0 : _r = fold_build3_loc (loc, VEC_COND_EXPR, type, res_op0, res_op1, res_op2);
11527 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 911, __FILE__, __LINE__, true);
11528 0 : return _r;
11529 : }
11530 0 : next_after_fail1832:;
11531 : }
11532 : }
11533 0 : break;
11534 : }
11535 1554077 : default:;
11536 : }
11537 1554077 : if ((_p1 == _p0 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _p0, 0) && types_match (_p1, _p0)))
11538 : {
11539 0 : {
11540 0 : tree captures[1] ATTRIBUTE_UNUSED = { _p0 };
11541 0 : tree res = generic_simplify_573 (loc, type, _p0, _p1, captures, UNGT_EXPR);
11542 0 : if (res) return res;
11543 : }
11544 : }
11545 1554077 : switch (TREE_CODE (_p0))
11546 : {
11547 339 : case FLOAT_EXPR:
11548 339 : {
11549 339 : tree _q20 = TREE_OPERAND (_p0, 0);
11550 339 : switch (TREE_CODE (_p1))
11551 : {
11552 0 : case FLOAT_EXPR:
11553 0 : {
11554 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11555 0 : {
11556 0 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q20, _p1, _q40 };
11557 0 : tree res = generic_simplify_267 (loc, type, _p0, _p1, captures, UNGT_EXPR, GT_EXPR);
11558 0 : if (res) return res;
11559 : }
11560 0 : break;
11561 : }
11562 : default:;
11563 : }
11564 : break;
11565 : }
11566 0 : case NEGATE_EXPR:
11567 0 : {
11568 0 : tree _q20 = TREE_OPERAND (_p0, 0);
11569 0 : switch (TREE_CODE (_p1))
11570 : {
11571 0 : case NEGATE_EXPR:
11572 0 : {
11573 0 : tree _q40 = TREE_OPERAND (_p1, 0);
11574 0 : {
11575 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q40 };
11576 0 : tree res = generic_simplify_270 (loc, type, _p0, _p1, captures, UNGT_EXPR, UNLT_EXPR);
11577 0 : if (res) return res;
11578 : }
11579 0 : break;
11580 : }
11581 0 : default:;
11582 : }
11583 0 : if (CONSTANT_CLASS_P (_p1))
11584 : {
11585 0 : {
11586 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
11587 0 : tree res = generic_simplify_271 (loc, type, _p0, _p1, captures, UNGT_EXPR, UNLT_EXPR);
11588 0 : if (res) return res;
11589 : }
11590 : }
11591 : break;
11592 : }
11593 1554077 : default:;
11594 : }
11595 1554077 : switch (TREE_CODE (_p1))
11596 : {
11597 1179853 : case REAL_CST:
11598 1179853 : {
11599 1179853 : {
11600 1179853 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
11601 1179853 : tree res = generic_simplify_572 (loc, type, _p0, _p1, captures, UNGT_EXPR);
11602 1179853 : if (res) return res;
11603 : }
11604 1179851 : break;
11605 : }
11606 : default:;
11607 : }
11608 : return NULL_TREE;
11609 : }
11610 :
11611 : tree
11612 12982605 : generic_simplify_COND_EXPR (location_t ARG_UNUSED (loc), enum tree_code ARG_UNUSED (code), const tree ARG_UNUSED (type), tree _p0, tree _p1, tree _p2)
11613 : {
11614 12982605 : const bool debug_dump = dump_file && (dump_flags & TDF_FOLDING);
11615 12982605 : switch (TREE_CODE (_p0))
11616 : {
11617 1810192 : case LT_EXPR:
11618 1810192 : {
11619 1810192 : tree _q20 = TREE_OPERAND (_p0, 0);
11620 1810192 : tree _q21 = TREE_OPERAND (_p0, 1);
11621 1810192 : switch (TREE_CODE (_q20))
11622 : {
11623 11327 : case MINUS_EXPR:
11624 11327 : {
11625 11327 : tree _q30 = TREE_OPERAND (_q20, 0);
11626 11327 : tree _q31 = TREE_OPERAND (_q20, 1);
11627 11327 : switch (TREE_CODE (_q30))
11628 : {
11629 594 : case SSA_NAME:
11630 594 : {
11631 594 : switch (TREE_CODE (_q31))
11632 : {
11633 0 : case CALL_EXPR:
11634 0 : switch (get_call_combined_fn (_q31))
11635 : {
11636 0 : case CFN_BUILT_IN_FLOORF:
11637 0 : if (call_expr_nargs (_q31) == 1)
11638 : {
11639 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
11640 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
11641 : {
11642 0 : switch (TREE_CODE (_q50))
11643 : {
11644 0 : case SSA_NAME:
11645 0 : {
11646 0 : switch (TREE_CODE (_q21))
11647 : {
11648 0 : case MINUS_EXPR:
11649 0 : {
11650 0 : tree _q80 = TREE_OPERAND (_q21, 0);
11651 0 : tree _q81 = TREE_OPERAND (_q21, 1);
11652 0 : switch (TREE_CODE (_q80))
11653 : {
11654 0 : case CALL_EXPR:
11655 0 : switch (get_call_combined_fn (_q80))
11656 : {
11657 0 : case CFN_BUILT_IN_CEILF:
11658 0 : if (call_expr_nargs (_q80) == 1)
11659 : {
11660 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
11661 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
11662 : {
11663 0 : switch (TREE_CODE (_q90))
11664 : {
11665 0 : case SSA_NAME:
11666 0 : {
11667 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
11668 : {
11669 0 : switch (TREE_CODE (_q81))
11670 : {
11671 0 : case SSA_NAME:
11672 0 : {
11673 0 : switch (TREE_CODE (_p1))
11674 : {
11675 0 : case CALL_EXPR:
11676 0 : switch (get_call_combined_fn (_p1))
11677 : {
11678 0 : case CFN_BUILT_IN_FLOORF:
11679 0 : if (call_expr_nargs (_p1) == 1)
11680 : {
11681 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
11682 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
11683 : {
11684 0 : switch (TREE_CODE (_q140))
11685 : {
11686 0 : case SSA_NAME:
11687 0 : {
11688 0 : switch (TREE_CODE (_p2))
11689 : {
11690 0 : case CALL_EXPR:
11691 0 : switch (get_call_combined_fn (_p2))
11692 : {
11693 0 : case CFN_BUILT_IN_CEILF:
11694 0 : if (call_expr_nargs (_p2) == 1)
11695 : {
11696 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
11697 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
11698 : {
11699 0 : switch (TREE_CODE (_q170))
11700 : {
11701 0 : case SSA_NAME:
11702 0 : {
11703 0 : {
11704 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
11705 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF);
11706 0 : if (res) return res;
11707 : }
11708 0 : break;
11709 : }
11710 : default:;
11711 : }
11712 : }
11713 : }
11714 : break;
11715 : default:;
11716 : }
11717 : break;
11718 : default:;
11719 : }
11720 : break;
11721 : }
11722 : default:;
11723 : }
11724 : }
11725 : }
11726 : break;
11727 : default:;
11728 : }
11729 : break;
11730 : default:;
11731 : }
11732 : break;
11733 : }
11734 : default:;
11735 : }
11736 : }
11737 : break;
11738 : }
11739 : default:;
11740 : }
11741 : }
11742 : }
11743 : break;
11744 : default:;
11745 : }
11746 : break;
11747 : default:;
11748 : }
11749 : break;
11750 : }
11751 : default:;
11752 : }
11753 : break;
11754 : }
11755 : default:;
11756 : }
11757 : }
11758 : }
11759 : break;
11760 0 : case CFN_BUILT_IN_FLOORL:
11761 0 : if (call_expr_nargs (_q31) == 1)
11762 : {
11763 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
11764 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
11765 : {
11766 0 : switch (TREE_CODE (_q50))
11767 : {
11768 0 : case SSA_NAME:
11769 0 : {
11770 0 : switch (TREE_CODE (_q21))
11771 : {
11772 0 : case MINUS_EXPR:
11773 0 : {
11774 0 : tree _q80 = TREE_OPERAND (_q21, 0);
11775 0 : tree _q81 = TREE_OPERAND (_q21, 1);
11776 0 : switch (TREE_CODE (_q80))
11777 : {
11778 0 : case CALL_EXPR:
11779 0 : switch (get_call_combined_fn (_q80))
11780 : {
11781 0 : case CFN_BUILT_IN_CEILL:
11782 0 : if (call_expr_nargs (_q80) == 1)
11783 : {
11784 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
11785 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
11786 : {
11787 0 : switch (TREE_CODE (_q90))
11788 : {
11789 0 : case SSA_NAME:
11790 0 : {
11791 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
11792 : {
11793 0 : switch (TREE_CODE (_q81))
11794 : {
11795 0 : case SSA_NAME:
11796 0 : {
11797 0 : switch (TREE_CODE (_p1))
11798 : {
11799 0 : case CALL_EXPR:
11800 0 : switch (get_call_combined_fn (_p1))
11801 : {
11802 0 : case CFN_BUILT_IN_FLOORL:
11803 0 : if (call_expr_nargs (_p1) == 1)
11804 : {
11805 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
11806 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
11807 : {
11808 0 : switch (TREE_CODE (_q140))
11809 : {
11810 0 : case SSA_NAME:
11811 0 : {
11812 0 : switch (TREE_CODE (_p2))
11813 : {
11814 0 : case CALL_EXPR:
11815 0 : switch (get_call_combined_fn (_p2))
11816 : {
11817 0 : case CFN_BUILT_IN_CEILL:
11818 0 : if (call_expr_nargs (_p2) == 1)
11819 : {
11820 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
11821 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
11822 : {
11823 0 : switch (TREE_CODE (_q170))
11824 : {
11825 0 : case SSA_NAME:
11826 0 : {
11827 0 : {
11828 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
11829 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL);
11830 0 : if (res) return res;
11831 : }
11832 0 : break;
11833 : }
11834 : default:;
11835 : }
11836 : }
11837 : }
11838 : break;
11839 : default:;
11840 : }
11841 : break;
11842 : default:;
11843 : }
11844 : break;
11845 : }
11846 : default:;
11847 : }
11848 : }
11849 : }
11850 : break;
11851 : default:;
11852 : }
11853 : break;
11854 : default:;
11855 : }
11856 : break;
11857 : }
11858 : default:;
11859 : }
11860 : }
11861 : break;
11862 : }
11863 : default:;
11864 : }
11865 : }
11866 : }
11867 : break;
11868 : default:;
11869 : }
11870 : break;
11871 : default:;
11872 : }
11873 : break;
11874 : }
11875 : default:;
11876 : }
11877 : break;
11878 : }
11879 : default:;
11880 : }
11881 : }
11882 : }
11883 : break;
11884 0 : case CFN_FLOOR:
11885 0 : if (call_expr_nargs (_q31) == 1)
11886 : {
11887 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
11888 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
11889 : {
11890 0 : switch (TREE_CODE (_q50))
11891 : {
11892 0 : case SSA_NAME:
11893 0 : {
11894 0 : switch (TREE_CODE (_q21))
11895 : {
11896 0 : case MINUS_EXPR:
11897 0 : {
11898 0 : tree _q80 = TREE_OPERAND (_q21, 0);
11899 0 : tree _q81 = TREE_OPERAND (_q21, 1);
11900 0 : switch (TREE_CODE (_q80))
11901 : {
11902 0 : case CALL_EXPR:
11903 0 : switch (get_call_combined_fn (_q80))
11904 : {
11905 0 : case CFN_CEIL:
11906 0 : if (call_expr_nargs (_q80) == 1)
11907 : {
11908 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
11909 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
11910 : {
11911 0 : switch (TREE_CODE (_q90))
11912 : {
11913 0 : case SSA_NAME:
11914 0 : {
11915 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
11916 : {
11917 0 : switch (TREE_CODE (_q81))
11918 : {
11919 0 : case SSA_NAME:
11920 0 : {
11921 0 : switch (TREE_CODE (_p1))
11922 : {
11923 0 : case CALL_EXPR:
11924 0 : switch (get_call_combined_fn (_p1))
11925 : {
11926 0 : case CFN_FLOOR:
11927 0 : if (call_expr_nargs (_p1) == 1)
11928 : {
11929 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
11930 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
11931 : {
11932 0 : switch (TREE_CODE (_q140))
11933 : {
11934 0 : case SSA_NAME:
11935 0 : {
11936 0 : switch (TREE_CODE (_p2))
11937 : {
11938 0 : case CALL_EXPR:
11939 0 : switch (get_call_combined_fn (_p2))
11940 : {
11941 0 : case CFN_CEIL:
11942 0 : if (call_expr_nargs (_p2) == 1)
11943 : {
11944 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
11945 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
11946 : {
11947 0 : switch (TREE_CODE (_q170))
11948 : {
11949 0 : case SSA_NAME:
11950 0 : {
11951 0 : {
11952 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
11953 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_FLOOR, CFN_CEIL, CFN_FLOOR, CFN_CEIL);
11954 0 : if (res) return res;
11955 : }
11956 0 : break;
11957 : }
11958 : default:;
11959 : }
11960 : }
11961 : }
11962 : break;
11963 : default:;
11964 : }
11965 : break;
11966 : default:;
11967 : }
11968 : break;
11969 : }
11970 : default:;
11971 : }
11972 : }
11973 : }
11974 : break;
11975 : default:;
11976 : }
11977 : break;
11978 : default:;
11979 : }
11980 : break;
11981 : }
11982 : default:;
11983 : }
11984 : }
11985 : break;
11986 : }
11987 : default:;
11988 : }
11989 : }
11990 : }
11991 : break;
11992 : default:;
11993 : }
11994 : break;
11995 : default:;
11996 : }
11997 : break;
11998 : }
11999 : default:;
12000 : }
12001 : break;
12002 : }
12003 : default:;
12004 : }
12005 : }
12006 : }
12007 : break;
12008 0 : case CFN_BUILT_IN_FLOOR:
12009 0 : if (call_expr_nargs (_q31) == 1)
12010 : {
12011 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
12012 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
12013 : {
12014 0 : switch (TREE_CODE (_q50))
12015 : {
12016 0 : case SSA_NAME:
12017 0 : {
12018 0 : switch (TREE_CODE (_q21))
12019 : {
12020 0 : case MINUS_EXPR:
12021 0 : {
12022 0 : tree _q80 = TREE_OPERAND (_q21, 0);
12023 0 : tree _q81 = TREE_OPERAND (_q21, 1);
12024 0 : switch (TREE_CODE (_q80))
12025 : {
12026 0 : case CALL_EXPR:
12027 0 : switch (get_call_combined_fn (_q80))
12028 : {
12029 0 : case CFN_BUILT_IN_CEIL:
12030 0 : if (call_expr_nargs (_q80) == 1)
12031 : {
12032 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
12033 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
12034 : {
12035 0 : switch (TREE_CODE (_q90))
12036 : {
12037 0 : case SSA_NAME:
12038 0 : {
12039 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
12040 : {
12041 0 : switch (TREE_CODE (_q81))
12042 : {
12043 0 : case SSA_NAME:
12044 0 : {
12045 0 : switch (TREE_CODE (_p1))
12046 : {
12047 0 : case CALL_EXPR:
12048 0 : switch (get_call_combined_fn (_p1))
12049 : {
12050 0 : case CFN_BUILT_IN_FLOOR:
12051 0 : if (call_expr_nargs (_p1) == 1)
12052 : {
12053 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
12054 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
12055 : {
12056 0 : switch (TREE_CODE (_q140))
12057 : {
12058 0 : case SSA_NAME:
12059 0 : {
12060 0 : switch (TREE_CODE (_p2))
12061 : {
12062 0 : case CALL_EXPR:
12063 0 : switch (get_call_combined_fn (_p2))
12064 : {
12065 0 : case CFN_BUILT_IN_CEIL:
12066 0 : if (call_expr_nargs (_p2) == 1)
12067 : {
12068 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
12069 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
12070 : {
12071 0 : switch (TREE_CODE (_q170))
12072 : {
12073 0 : case SSA_NAME:
12074 0 : {
12075 0 : {
12076 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
12077 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL);
12078 0 : if (res) return res;
12079 : }
12080 0 : break;
12081 : }
12082 : default:;
12083 : }
12084 : }
12085 : }
12086 : break;
12087 : default:;
12088 : }
12089 : break;
12090 : default:;
12091 : }
12092 : break;
12093 : }
12094 : default:;
12095 : }
12096 : }
12097 : }
12098 : break;
12099 : default:;
12100 : }
12101 : break;
12102 : default:;
12103 : }
12104 : break;
12105 : }
12106 : default:;
12107 : }
12108 : }
12109 : break;
12110 : }
12111 : default:;
12112 : }
12113 : }
12114 : }
12115 : break;
12116 : default:;
12117 : }
12118 : break;
12119 : default:;
12120 : }
12121 : break;
12122 : }
12123 : default:;
12124 : }
12125 : break;
12126 : }
12127 : default:;
12128 : }
12129 : }
12130 : }
12131 : break;
12132 : default:;
12133 : }
12134 : break;
12135 : default:;
12136 : }
12137 : break;
12138 : }
12139 : default:;
12140 : }
12141 : break;
12142 : }
12143 101251 : CASE_CONVERT:
12144 101251 : {
12145 101251 : tree _q30 = TREE_OPERAND (_q20, 0);
12146 101251 : switch (TREE_CODE (_q21))
12147 : {
12148 20631 : case INTEGER_CST:
12149 20631 : {
12150 20631 : switch (TREE_CODE (_p1))
12151 : {
12152 31 : CASE_CONVERT:
12153 31 : {
12154 31 : tree _q60 = TREE_OPERAND (_p1, 0);
12155 31 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
12156 : {
12157 16 : switch (TREE_CODE (_p2))
12158 : {
12159 16 : case INTEGER_CST:
12160 16 : {
12161 16 : {
12162 16 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
12163 16 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
12164 16 : if (res) return res;
12165 : }
12166 16 : break;
12167 : }
12168 : default:;
12169 : }
12170 : }
12171 : break;
12172 : }
12173 20631 : default:;
12174 : }
12175 20631 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
12176 : {
12177 6 : switch (TREE_CODE (_p2))
12178 : {
12179 6 : case INTEGER_CST:
12180 6 : {
12181 6 : {
12182 6 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
12183 6 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
12184 6 : if (res) return res;
12185 : }
12186 6 : break;
12187 : }
12188 : default:;
12189 : }
12190 : }
12191 20631 : switch (TREE_CODE (_p1))
12192 : {
12193 25 : case PLUS_EXPR:
12194 25 : {
12195 25 : tree _q60 = TREE_OPERAND (_p1, 0);
12196 25 : tree _q61 = TREE_OPERAND (_p1, 1);
12197 25 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
12198 : {
12199 7 : switch (TREE_CODE (_q61))
12200 : {
12201 7 : case INTEGER_CST:
12202 7 : {
12203 7 : switch (TREE_CODE (_p2))
12204 : {
12205 7 : case INTEGER_CST:
12206 7 : {
12207 7 : {
12208 7 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
12209 7 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, PLUS_EXPR);
12210 7 : if (res) return res;
12211 : }
12212 0 : break;
12213 : }
12214 : default:;
12215 : }
12216 : break;
12217 : }
12218 : default:;
12219 : }
12220 : }
12221 : break;
12222 : }
12223 0 : case MINUS_EXPR:
12224 0 : {
12225 0 : tree _q60 = TREE_OPERAND (_p1, 0);
12226 0 : tree _q61 = TREE_OPERAND (_p1, 1);
12227 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
12228 : {
12229 0 : switch (TREE_CODE (_q61))
12230 : {
12231 0 : case INTEGER_CST:
12232 0 : {
12233 0 : switch (TREE_CODE (_p2))
12234 : {
12235 0 : case INTEGER_CST:
12236 0 : {
12237 0 : {
12238 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
12239 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MINUS_EXPR);
12240 0 : if (res) return res;
12241 : }
12242 0 : break;
12243 : }
12244 : default:;
12245 : }
12246 : break;
12247 : }
12248 : default:;
12249 : }
12250 : }
12251 : break;
12252 : }
12253 : default:;
12254 : }
12255 : break;
12256 : }
12257 : default:;
12258 : }
12259 : break;
12260 : }
12261 1810185 : default:;
12262 : }
12263 1810185 : switch (TREE_CODE (_q21))
12264 : {
12265 373960 : case INTEGER_CST:
12266 373960 : {
12267 373960 : switch (TREE_CODE (_p1))
12268 : {
12269 1176 : CASE_CONVERT:
12270 1176 : {
12271 1176 : tree _q50 = TREE_OPERAND (_p1, 0);
12272 1176 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12273 : {
12274 36 : switch (TREE_CODE (_p2))
12275 : {
12276 5 : case INTEGER_CST:
12277 5 : {
12278 5 : {
12279 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
12280 5 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
12281 5 : if (res) return res;
12282 : }
12283 5 : break;
12284 : }
12285 : default:;
12286 : }
12287 : }
12288 : break;
12289 : }
12290 373960 : default:;
12291 : }
12292 373960 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
12293 : {
12294 81 : switch (TREE_CODE (_p2))
12295 : {
12296 8 : case INTEGER_CST:
12297 8 : {
12298 8 : {
12299 8 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
12300 8 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
12301 8 : if (res) return res;
12302 : }
12303 0 : break;
12304 : }
12305 : default:;
12306 : }
12307 : }
12308 373952 : switch (TREE_CODE (_p1))
12309 : {
12310 9359 : case PLUS_EXPR:
12311 9359 : {
12312 9359 : tree _q50 = TREE_OPERAND (_p1, 0);
12313 9359 : tree _q51 = TREE_OPERAND (_p1, 1);
12314 9359 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12315 : {
12316 9324 : switch (TREE_CODE (_q51))
12317 : {
12318 9324 : case INTEGER_CST:
12319 9324 : {
12320 9324 : switch (TREE_CODE (_p2))
12321 : {
12322 24 : case INTEGER_CST:
12323 24 : {
12324 24 : {
12325 24 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
12326 24 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, PLUS_EXPR);
12327 24 : if (res) return res;
12328 : }
12329 24 : break;
12330 : }
12331 : default:;
12332 : }
12333 : break;
12334 : }
12335 : default:;
12336 : }
12337 : }
12338 : break;
12339 : }
12340 62 : case MINUS_EXPR:
12341 62 : {
12342 62 : tree _q50 = TREE_OPERAND (_p1, 0);
12343 62 : tree _q51 = TREE_OPERAND (_p1, 1);
12344 62 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12345 : {
12346 0 : switch (TREE_CODE (_q51))
12347 : {
12348 0 : case INTEGER_CST:
12349 0 : {
12350 0 : switch (TREE_CODE (_p2))
12351 : {
12352 0 : case INTEGER_CST:
12353 0 : {
12354 0 : {
12355 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
12356 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MINUS_EXPR);
12357 0 : if (res) return res;
12358 : }
12359 0 : break;
12360 : }
12361 : default:;
12362 : }
12363 : break;
12364 : }
12365 : default:;
12366 : }
12367 : }
12368 : break;
12369 : }
12370 : default:;
12371 : }
12372 : break;
12373 : }
12374 1810177 : default:;
12375 : }
12376 1810177 : switch (TREE_CODE (_p1))
12377 : {
12378 0 : case MIN_EXPR:
12379 0 : {
12380 0 : tree _q50 = TREE_OPERAND (_p1, 0);
12381 0 : tree _q51 = TREE_OPERAND (_p1, 1);
12382 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12383 : {
12384 0 : switch (TREE_CODE (_p2))
12385 : {
12386 0 : case MIN_EXPR:
12387 0 : {
12388 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12389 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12390 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
12391 : {
12392 0 : {
12393 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
12394 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
12395 0 : if (res) return res;
12396 : }
12397 : }
12398 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
12399 : {
12400 0 : {
12401 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
12402 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
12403 0 : if (res) return res;
12404 : }
12405 : }
12406 : break;
12407 : }
12408 : default:;
12409 : }
12410 : }
12411 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
12412 : {
12413 0 : switch (TREE_CODE (_p2))
12414 : {
12415 0 : case MIN_EXPR:
12416 0 : {
12417 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12418 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12419 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
12420 : {
12421 0 : {
12422 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
12423 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
12424 0 : if (res) return res;
12425 : }
12426 : }
12427 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
12428 : {
12429 0 : {
12430 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
12431 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
12432 0 : if (res) return res;
12433 : }
12434 : }
12435 : break;
12436 : }
12437 : default:;
12438 : }
12439 : }
12440 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
12441 : {
12442 0 : switch (TREE_CODE (_p2))
12443 : {
12444 0 : case MIN_EXPR:
12445 0 : {
12446 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12447 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12448 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
12449 : {
12450 0 : {
12451 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
12452 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
12453 0 : if (res) return res;
12454 : }
12455 : }
12456 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
12457 : {
12458 0 : {
12459 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
12460 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
12461 0 : if (res) return res;
12462 : }
12463 : }
12464 : break;
12465 : }
12466 0 : default:;
12467 : }
12468 0 : {
12469 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q51, _p2 };
12470 0 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
12471 0 : if (res) return res;
12472 : }
12473 : }
12474 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12475 : {
12476 0 : switch (TREE_CODE (_p2))
12477 : {
12478 0 : case MIN_EXPR:
12479 0 : {
12480 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12481 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12482 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
12483 : {
12484 0 : {
12485 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
12486 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
12487 0 : if (res) return res;
12488 : }
12489 : }
12490 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
12491 : {
12492 0 : {
12493 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
12494 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
12495 0 : if (res) return res;
12496 : }
12497 : }
12498 : break;
12499 : }
12500 0 : default:;
12501 : }
12502 0 : {
12503 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q50, _p2 };
12504 0 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
12505 0 : if (res) return res;
12506 : }
12507 : }
12508 : break;
12509 : }
12510 21 : case MAX_EXPR:
12511 21 : {
12512 21 : tree _q50 = TREE_OPERAND (_p1, 0);
12513 21 : tree _q51 = TREE_OPERAND (_p1, 1);
12514 21 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
12515 : {
12516 1 : switch (TREE_CODE (_p2))
12517 : {
12518 0 : case MAX_EXPR:
12519 0 : {
12520 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12521 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12522 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
12523 : {
12524 0 : {
12525 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
12526 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
12527 0 : if (res) return res;
12528 : }
12529 : }
12530 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
12531 : {
12532 0 : {
12533 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
12534 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
12535 0 : if (res) return res;
12536 : }
12537 : }
12538 : break;
12539 : }
12540 1 : default:;
12541 : }
12542 1 : {
12543 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q51, _p2 };
12544 1 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
12545 1 : if (res) return res;
12546 : }
12547 : }
12548 20 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
12549 : {
12550 4 : switch (TREE_CODE (_p2))
12551 : {
12552 0 : case MAX_EXPR:
12553 0 : {
12554 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12555 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12556 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
12557 : {
12558 0 : {
12559 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
12560 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
12561 0 : if (res) return res;
12562 : }
12563 : }
12564 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
12565 : {
12566 0 : {
12567 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
12568 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
12569 0 : if (res) return res;
12570 : }
12571 : }
12572 : break;
12573 : }
12574 : default:;
12575 : }
12576 : }
12577 20 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
12578 : {
12579 8 : switch (TREE_CODE (_p2))
12580 : {
12581 0 : case MAX_EXPR:
12582 0 : {
12583 0 : tree _q80 = TREE_OPERAND (_p2, 0);
12584 0 : tree _q81 = TREE_OPERAND (_p2, 1);
12585 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
12586 : {
12587 0 : {
12588 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
12589 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
12590 0 : if (res) return res;
12591 : }
12592 : }
12593 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
12594 : {
12595 0 : {
12596 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
12597 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
12598 0 : if (res) return res;
12599 : }
12600 : }
12601 : break;
12602 : }
12603 : default:;
12604 : }
12605 : }
12606 20 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
12607 : {
12608 1 : switch (TREE_CODE (_p2))
12609 : {
12610 1 : case MAX_EXPR:
12611 1 : {
12612 1 : tree _q80 = TREE_OPERAND (_p2, 0);
12613 1 : tree _q81 = TREE_OPERAND (_p2, 1);
12614 1 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
12615 : {
12616 0 : {
12617 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
12618 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
12619 0 : if (res) return res;
12620 : }
12621 : }
12622 1 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
12623 : {
12624 1 : {
12625 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
12626 1 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
12627 1 : if (res) return res;
12628 : }
12629 : }
12630 : break;
12631 : }
12632 : default:;
12633 : }
12634 : }
12635 19 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
12636 : {
12637 4 : {
12638 4 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
12639 4 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
12640 4 : if (res) return res;
12641 : }
12642 : }
12643 : break;
12644 : }
12645 1810175 : default:;
12646 : }
12647 1810175 : {
12648 1810175 : tree _q20_pops[1];
12649 1810175 : if (tree_nop_convert (_q20, _q20_pops))
12650 : {
12651 53952 : tree _q30 = _q20_pops[0];
12652 53952 : if (integer_zerop (_q21))
12653 : {
12654 10991 : switch (TREE_CODE (_p1))
12655 : {
12656 0 : case MIN_EXPR:
12657 0 : {
12658 0 : tree _q60 = TREE_OPERAND (_p1, 0);
12659 0 : tree _q61 = TREE_OPERAND (_p1, 1);
12660 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
12661 : {
12662 0 : switch (TREE_CODE (_q61))
12663 : {
12664 0 : case INTEGER_CST:
12665 0 : {
12666 0 : switch (TREE_CODE (_p2))
12667 : {
12668 0 : case INTEGER_CST:
12669 0 : {
12670 0 : {
12671 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q30, _q21, _p1, _q61, _p2 };
12672 0 : tree res = generic_simplify_352 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
12673 0 : if (res) return res;
12674 : }
12675 0 : break;
12676 : }
12677 : default:;
12678 : }
12679 : break;
12680 : }
12681 : default:;
12682 : }
12683 : }
12684 : break;
12685 : }
12686 : default:;
12687 : }
12688 : }
12689 : }
12690 : }
12691 1810175 : if (integer_zerop (_q21))
12692 : {
12693 327787 : if (tree_expr_nonnegative_p (_p1))
12694 : {
12695 294908 : switch (TREE_CODE (_p2))
12696 : {
12697 17 : case MIN_EXPR:
12698 17 : {
12699 17 : tree _q60 = TREE_OPERAND (_p2, 0);
12700 17 : tree _q61 = TREE_OPERAND (_p2, 1);
12701 17 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
12702 : {
12703 16 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
12704 : {
12705 9 : {
12706 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
12707 9 : tree res = generic_simplify_353 (loc, type, _p0, _p1, _p2, captures);
12708 9 : if (res) return res;
12709 : }
12710 : }
12711 : }
12712 8 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
12713 : {
12714 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
12715 : {
12716 0 : {
12717 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
12718 0 : tree res = generic_simplify_353 (loc, type, _p0, _p1, _p2, captures);
12719 0 : if (res) return res;
12720 : }
12721 : }
12722 : }
12723 : break;
12724 : }
12725 : default:;
12726 : }
12727 : }
12728 : }
12729 1810166 : if (tree_expr_nonnegative_p (_q20))
12730 : {
12731 508058 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
12732 : {
12733 166 : switch (TREE_CODE (_p2))
12734 : {
12735 5 : case ABS_EXPR:
12736 5 : {
12737 5 : tree _q60 = TREE_OPERAND (_p2, 0);
12738 5 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
12739 : {
12740 0 : {
12741 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p2 };
12742 0 : tree res = generic_simplify_354 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
12743 0 : if (res) return res;
12744 : }
12745 : }
12746 : break;
12747 : }
12748 : default:;
12749 : }
12750 : }
12751 508058 : switch (TREE_CODE (_p1))
12752 : {
12753 0 : case ABS_EXPR:
12754 0 : {
12755 0 : tree _q50 = TREE_OPERAND (_p1, 0);
12756 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
12757 : {
12758 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
12759 : {
12760 0 : {
12761 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
12762 0 : tree res = generic_simplify_355 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
12763 0 : if (res) return res;
12764 : }
12765 : }
12766 : }
12767 : break;
12768 : }
12769 : default:;
12770 : }
12771 : }
12772 : break;
12773 : }
12774 569764 : case GE_EXPR:
12775 569764 : {
12776 569764 : tree _q20 = TREE_OPERAND (_p0, 0);
12777 569764 : tree _q21 = TREE_OPERAND (_p0, 1);
12778 569764 : switch (TREE_CODE (_q20))
12779 : {
12780 38243 : case MINUS_EXPR:
12781 38243 : {
12782 38243 : tree _q30 = TREE_OPERAND (_q20, 0);
12783 38243 : tree _q31 = TREE_OPERAND (_q20, 1);
12784 38243 : switch (TREE_CODE (_q30))
12785 : {
12786 526 : case SSA_NAME:
12787 526 : {
12788 526 : switch (TREE_CODE (_q31))
12789 : {
12790 0 : case CALL_EXPR:
12791 0 : switch (get_call_combined_fn (_q31))
12792 : {
12793 0 : case CFN_BUILT_IN_FLOORF:
12794 0 : if (call_expr_nargs (_q31) == 1)
12795 : {
12796 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
12797 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
12798 : {
12799 0 : switch (TREE_CODE (_q50))
12800 : {
12801 0 : case SSA_NAME:
12802 0 : {
12803 0 : switch (TREE_CODE (_q21))
12804 : {
12805 0 : case MINUS_EXPR:
12806 0 : {
12807 0 : tree _q80 = TREE_OPERAND (_q21, 0);
12808 0 : tree _q81 = TREE_OPERAND (_q21, 1);
12809 0 : switch (TREE_CODE (_q80))
12810 : {
12811 0 : case CALL_EXPR:
12812 0 : switch (get_call_combined_fn (_q80))
12813 : {
12814 0 : case CFN_BUILT_IN_CEILF:
12815 0 : if (call_expr_nargs (_q80) == 1)
12816 : {
12817 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
12818 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
12819 : {
12820 0 : switch (TREE_CODE (_q90))
12821 : {
12822 0 : case SSA_NAME:
12823 0 : {
12824 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
12825 : {
12826 0 : switch (TREE_CODE (_q81))
12827 : {
12828 0 : case SSA_NAME:
12829 0 : {
12830 0 : switch (TREE_CODE (_p1))
12831 : {
12832 0 : case CALL_EXPR:
12833 0 : switch (get_call_combined_fn (_p1))
12834 : {
12835 0 : case CFN_BUILT_IN_CEILF:
12836 0 : if (call_expr_nargs (_p1) == 1)
12837 : {
12838 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
12839 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
12840 : {
12841 0 : switch (TREE_CODE (_q140))
12842 : {
12843 0 : case SSA_NAME:
12844 0 : {
12845 0 : switch (TREE_CODE (_p2))
12846 : {
12847 0 : case CALL_EXPR:
12848 0 : switch (get_call_combined_fn (_p2))
12849 : {
12850 0 : case CFN_BUILT_IN_FLOORF:
12851 0 : if (call_expr_nargs (_p2) == 1)
12852 : {
12853 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
12854 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
12855 : {
12856 0 : switch (TREE_CODE (_q170))
12857 : {
12858 0 : case SSA_NAME:
12859 0 : {
12860 0 : {
12861 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
12862 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEILF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF);
12863 0 : if (res) return res;
12864 : }
12865 0 : break;
12866 : }
12867 : default:;
12868 : }
12869 : }
12870 : }
12871 : break;
12872 : default:;
12873 : }
12874 : break;
12875 : default:;
12876 : }
12877 : break;
12878 : }
12879 : default:;
12880 : }
12881 : }
12882 : }
12883 : break;
12884 : default:;
12885 : }
12886 : break;
12887 : default:;
12888 : }
12889 : break;
12890 : }
12891 : default:;
12892 : }
12893 : }
12894 : break;
12895 : }
12896 : default:;
12897 : }
12898 : }
12899 : }
12900 : break;
12901 : default:;
12902 : }
12903 : break;
12904 : default:;
12905 : }
12906 : break;
12907 : }
12908 : default:;
12909 : }
12910 : break;
12911 : }
12912 : default:;
12913 : }
12914 : }
12915 : }
12916 : break;
12917 0 : case CFN_BUILT_IN_FLOORL:
12918 0 : if (call_expr_nargs (_q31) == 1)
12919 : {
12920 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
12921 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
12922 : {
12923 0 : switch (TREE_CODE (_q50))
12924 : {
12925 0 : case SSA_NAME:
12926 0 : {
12927 0 : switch (TREE_CODE (_q21))
12928 : {
12929 0 : case MINUS_EXPR:
12930 0 : {
12931 0 : tree _q80 = TREE_OPERAND (_q21, 0);
12932 0 : tree _q81 = TREE_OPERAND (_q21, 1);
12933 0 : switch (TREE_CODE (_q80))
12934 : {
12935 0 : case CALL_EXPR:
12936 0 : switch (get_call_combined_fn (_q80))
12937 : {
12938 0 : case CFN_BUILT_IN_CEILL:
12939 0 : if (call_expr_nargs (_q80) == 1)
12940 : {
12941 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
12942 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
12943 : {
12944 0 : switch (TREE_CODE (_q90))
12945 : {
12946 0 : case SSA_NAME:
12947 0 : {
12948 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
12949 : {
12950 0 : switch (TREE_CODE (_q81))
12951 : {
12952 0 : case SSA_NAME:
12953 0 : {
12954 0 : switch (TREE_CODE (_p1))
12955 : {
12956 0 : case CALL_EXPR:
12957 0 : switch (get_call_combined_fn (_p1))
12958 : {
12959 0 : case CFN_BUILT_IN_CEILL:
12960 0 : if (call_expr_nargs (_p1) == 1)
12961 : {
12962 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
12963 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
12964 : {
12965 0 : switch (TREE_CODE (_q140))
12966 : {
12967 0 : case SSA_NAME:
12968 0 : {
12969 0 : switch (TREE_CODE (_p2))
12970 : {
12971 0 : case CALL_EXPR:
12972 0 : switch (get_call_combined_fn (_p2))
12973 : {
12974 0 : case CFN_BUILT_IN_FLOORL:
12975 0 : if (call_expr_nargs (_p2) == 1)
12976 : {
12977 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
12978 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
12979 : {
12980 0 : switch (TREE_CODE (_q170))
12981 : {
12982 0 : case SSA_NAME:
12983 0 : {
12984 0 : {
12985 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
12986 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEILL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL);
12987 0 : if (res) return res;
12988 : }
12989 0 : break;
12990 : }
12991 : default:;
12992 : }
12993 : }
12994 : }
12995 : break;
12996 : default:;
12997 : }
12998 : break;
12999 : default:;
13000 : }
13001 : break;
13002 : }
13003 : default:;
13004 : }
13005 : }
13006 : }
13007 : break;
13008 : default:;
13009 : }
13010 : break;
13011 : default:;
13012 : }
13013 : break;
13014 : }
13015 : default:;
13016 : }
13017 : }
13018 : break;
13019 : }
13020 : default:;
13021 : }
13022 : }
13023 : }
13024 : break;
13025 : default:;
13026 : }
13027 : break;
13028 : default:;
13029 : }
13030 : break;
13031 : }
13032 : default:;
13033 : }
13034 : break;
13035 : }
13036 : default:;
13037 : }
13038 : }
13039 : }
13040 : break;
13041 0 : case CFN_FLOOR:
13042 0 : if (call_expr_nargs (_q31) == 1)
13043 : {
13044 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
13045 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
13046 : {
13047 0 : switch (TREE_CODE (_q50))
13048 : {
13049 0 : case SSA_NAME:
13050 0 : {
13051 0 : switch (TREE_CODE (_q21))
13052 : {
13053 0 : case MINUS_EXPR:
13054 0 : {
13055 0 : tree _q80 = TREE_OPERAND (_q21, 0);
13056 0 : tree _q81 = TREE_OPERAND (_q21, 1);
13057 0 : switch (TREE_CODE (_q80))
13058 : {
13059 0 : case CALL_EXPR:
13060 0 : switch (get_call_combined_fn (_q80))
13061 : {
13062 0 : case CFN_CEIL:
13063 0 : if (call_expr_nargs (_q80) == 1)
13064 : {
13065 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
13066 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
13067 : {
13068 0 : switch (TREE_CODE (_q90))
13069 : {
13070 0 : case SSA_NAME:
13071 0 : {
13072 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
13073 : {
13074 0 : switch (TREE_CODE (_q81))
13075 : {
13076 0 : case SSA_NAME:
13077 0 : {
13078 0 : switch (TREE_CODE (_p1))
13079 : {
13080 0 : case CALL_EXPR:
13081 0 : switch (get_call_combined_fn (_p1))
13082 : {
13083 0 : case CFN_CEIL:
13084 0 : if (call_expr_nargs (_p1) == 1)
13085 : {
13086 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
13087 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
13088 : {
13089 0 : switch (TREE_CODE (_q140))
13090 : {
13091 0 : case SSA_NAME:
13092 0 : {
13093 0 : switch (TREE_CODE (_p2))
13094 : {
13095 0 : case CALL_EXPR:
13096 0 : switch (get_call_combined_fn (_p2))
13097 : {
13098 0 : case CFN_FLOOR:
13099 0 : if (call_expr_nargs (_p2) == 1)
13100 : {
13101 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
13102 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
13103 : {
13104 0 : switch (TREE_CODE (_q170))
13105 : {
13106 0 : case SSA_NAME:
13107 0 : {
13108 0 : {
13109 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
13110 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_CEIL, CFN_FLOOR, CFN_FLOOR, CFN_CEIL);
13111 0 : if (res) return res;
13112 : }
13113 0 : break;
13114 : }
13115 : default:;
13116 : }
13117 : }
13118 : }
13119 : break;
13120 : default:;
13121 : }
13122 : break;
13123 : default:;
13124 : }
13125 : break;
13126 : }
13127 : default:;
13128 : }
13129 : }
13130 : }
13131 : break;
13132 : default:;
13133 : }
13134 : break;
13135 : default:;
13136 : }
13137 : break;
13138 : }
13139 : default:;
13140 : }
13141 : }
13142 : break;
13143 : }
13144 : default:;
13145 : }
13146 : }
13147 : }
13148 : break;
13149 : default:;
13150 : }
13151 : break;
13152 : default:;
13153 : }
13154 : break;
13155 : }
13156 : default:;
13157 : }
13158 : break;
13159 : }
13160 : default:;
13161 : }
13162 : }
13163 : }
13164 : break;
13165 0 : case CFN_BUILT_IN_FLOOR:
13166 0 : if (call_expr_nargs (_q31) == 1)
13167 : {
13168 0 : tree _q50 = CALL_EXPR_ARG (_q31, 0);
13169 0 : if ((_q50 == _q30 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q30, 0) && types_match (_q50, _q30)))
13170 : {
13171 0 : switch (TREE_CODE (_q50))
13172 : {
13173 0 : case SSA_NAME:
13174 0 : {
13175 0 : switch (TREE_CODE (_q21))
13176 : {
13177 0 : case MINUS_EXPR:
13178 0 : {
13179 0 : tree _q80 = TREE_OPERAND (_q21, 0);
13180 0 : tree _q81 = TREE_OPERAND (_q21, 1);
13181 0 : switch (TREE_CODE (_q80))
13182 : {
13183 0 : case CALL_EXPR:
13184 0 : switch (get_call_combined_fn (_q80))
13185 : {
13186 0 : case CFN_BUILT_IN_CEIL:
13187 0 : if (call_expr_nargs (_q80) == 1)
13188 : {
13189 0 : tree _q90 = CALL_EXPR_ARG (_q80, 0);
13190 0 : if ((_q90 == _q30 && ! TREE_SIDE_EFFECTS (_q90)) || (operand_equal_p (_q90, _q30, 0) && types_match (_q90, _q30)))
13191 : {
13192 0 : switch (TREE_CODE (_q90))
13193 : {
13194 0 : case SSA_NAME:
13195 0 : {
13196 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
13197 : {
13198 0 : switch (TREE_CODE (_q81))
13199 : {
13200 0 : case SSA_NAME:
13201 0 : {
13202 0 : switch (TREE_CODE (_p1))
13203 : {
13204 0 : case CALL_EXPR:
13205 0 : switch (get_call_combined_fn (_p1))
13206 : {
13207 0 : case CFN_BUILT_IN_CEIL:
13208 0 : if (call_expr_nargs (_p1) == 1)
13209 : {
13210 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
13211 0 : if ((_q140 == _q30 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q30, 0) && types_match (_q140, _q30)))
13212 : {
13213 0 : switch (TREE_CODE (_q140))
13214 : {
13215 0 : case SSA_NAME:
13216 0 : {
13217 0 : switch (TREE_CODE (_p2))
13218 : {
13219 0 : case CALL_EXPR:
13220 0 : switch (get_call_combined_fn (_p2))
13221 : {
13222 0 : case CFN_BUILT_IN_FLOOR:
13223 0 : if (call_expr_nargs (_p2) == 1)
13224 : {
13225 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
13226 0 : if ((_q170 == _q30 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q30, 0) && types_match (_q170, _q30)))
13227 : {
13228 0 : switch (TREE_CODE (_q170))
13229 : {
13230 0 : case SSA_NAME:
13231 0 : {
13232 0 : {
13233 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q21 };
13234 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEIL, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL);
13235 0 : if (res) return res;
13236 : }
13237 0 : break;
13238 : }
13239 : default:;
13240 : }
13241 : }
13242 : }
13243 : break;
13244 : default:;
13245 : }
13246 : break;
13247 : default:;
13248 : }
13249 : break;
13250 : }
13251 : default:;
13252 : }
13253 : }
13254 : }
13255 : break;
13256 : default:;
13257 : }
13258 : break;
13259 : default:;
13260 : }
13261 : break;
13262 : }
13263 : default:;
13264 : }
13265 : }
13266 : break;
13267 : }
13268 : default:;
13269 : }
13270 : }
13271 : }
13272 : break;
13273 : default:;
13274 : }
13275 : break;
13276 : default:;
13277 : }
13278 : break;
13279 : }
13280 : default:;
13281 : }
13282 : break;
13283 : }
13284 : default:;
13285 : }
13286 : }
13287 : }
13288 : break;
13289 : default:;
13290 : }
13291 : break;
13292 : default:;
13293 : }
13294 : break;
13295 : }
13296 : default:;
13297 : }
13298 : break;
13299 : }
13300 61880 : CASE_CONVERT:
13301 61880 : {
13302 61880 : tree _q30 = TREE_OPERAND (_q20, 0);
13303 61880 : switch (TREE_CODE (_q21))
13304 : {
13305 32498 : case INTEGER_CST:
13306 32498 : {
13307 32498 : switch (TREE_CODE (_p1))
13308 : {
13309 12165 : CASE_CONVERT:
13310 12165 : {
13311 12165 : tree _q60 = TREE_OPERAND (_p1, 0);
13312 12165 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
13313 : {
13314 6630 : switch (TREE_CODE (_p2))
13315 : {
13316 6622 : case INTEGER_CST:
13317 6622 : {
13318 6622 : {
13319 6622 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
13320 6622 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
13321 6622 : if (res) return res;
13322 : }
13323 6622 : break;
13324 : }
13325 : default:;
13326 : }
13327 : }
13328 : break;
13329 : }
13330 32498 : default:;
13331 : }
13332 32498 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
13333 : {
13334 312 : switch (TREE_CODE (_p2))
13335 : {
13336 299 : case INTEGER_CST:
13337 299 : {
13338 299 : {
13339 299 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
13340 299 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
13341 299 : if (res) return res;
13342 : }
13343 294 : break;
13344 : }
13345 : default:;
13346 : }
13347 : }
13348 32493 : switch (TREE_CODE (_p1))
13349 : {
13350 398 : case PLUS_EXPR:
13351 398 : {
13352 398 : tree _q60 = TREE_OPERAND (_p1, 0);
13353 398 : tree _q61 = TREE_OPERAND (_p1, 1);
13354 398 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
13355 : {
13356 0 : switch (TREE_CODE (_q61))
13357 : {
13358 0 : case INTEGER_CST:
13359 0 : {
13360 0 : switch (TREE_CODE (_p2))
13361 : {
13362 0 : case INTEGER_CST:
13363 0 : {
13364 0 : {
13365 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
13366 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, PLUS_EXPR);
13367 0 : if (res) return res;
13368 : }
13369 0 : break;
13370 : }
13371 : default:;
13372 : }
13373 : break;
13374 : }
13375 : default:;
13376 : }
13377 : }
13378 : break;
13379 : }
13380 73 : case MINUS_EXPR:
13381 73 : {
13382 73 : tree _q60 = TREE_OPERAND (_p1, 0);
13383 73 : tree _q61 = TREE_OPERAND (_p1, 1);
13384 73 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
13385 : {
13386 0 : switch (TREE_CODE (_q61))
13387 : {
13388 0 : case INTEGER_CST:
13389 0 : {
13390 0 : switch (TREE_CODE (_p2))
13391 : {
13392 0 : case INTEGER_CST:
13393 0 : {
13394 0 : {
13395 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
13396 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MINUS_EXPR);
13397 0 : if (res) return res;
13398 : }
13399 0 : break;
13400 : }
13401 : default:;
13402 : }
13403 : break;
13404 : }
13405 : default:;
13406 : }
13407 : }
13408 : break;
13409 : }
13410 : default:;
13411 : }
13412 : break;
13413 : }
13414 : default:;
13415 : }
13416 : break;
13417 : }
13418 569759 : default:;
13419 : }
13420 569759 : switch (TREE_CODE (_q21))
13421 : {
13422 214278 : case INTEGER_CST:
13423 214278 : {
13424 214278 : switch (TREE_CODE (_p1))
13425 : {
13426 56897 : CASE_CONVERT:
13427 56897 : {
13428 56897 : tree _q50 = TREE_OPERAND (_p1, 0);
13429 56897 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13430 : {
13431 150 : switch (TREE_CODE (_p2))
13432 : {
13433 45 : case INTEGER_CST:
13434 45 : {
13435 45 : {
13436 45 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
13437 45 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
13438 45 : if (res) return res;
13439 : }
13440 45 : break;
13441 : }
13442 : default:;
13443 : }
13444 : }
13445 : break;
13446 : }
13447 214278 : default:;
13448 : }
13449 214278 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
13450 : {
13451 42492 : switch (TREE_CODE (_p2))
13452 : {
13453 10818 : case INTEGER_CST:
13454 10818 : {
13455 10818 : {
13456 10818 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
13457 10818 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
13458 10818 : if (res) return res;
13459 : }
13460 19 : break;
13461 : }
13462 : default:;
13463 : }
13464 : }
13465 203479 : switch (TREE_CODE (_p1))
13466 : {
13467 17071 : case PLUS_EXPR:
13468 17071 : {
13469 17071 : tree _q50 = TREE_OPERAND (_p1, 0);
13470 17071 : tree _q51 = TREE_OPERAND (_p1, 1);
13471 17071 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13472 : {
13473 6539 : switch (TREE_CODE (_q51))
13474 : {
13475 6539 : case INTEGER_CST:
13476 6539 : {
13477 6539 : switch (TREE_CODE (_p2))
13478 : {
13479 6539 : case INTEGER_CST:
13480 6539 : {
13481 6539 : {
13482 6539 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
13483 6539 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, PLUS_EXPR);
13484 6539 : if (res) return res;
13485 : }
13486 0 : break;
13487 : }
13488 : default:;
13489 : }
13490 : break;
13491 : }
13492 : default:;
13493 : }
13494 : }
13495 : break;
13496 : }
13497 223 : case MINUS_EXPR:
13498 223 : {
13499 223 : tree _q50 = TREE_OPERAND (_p1, 0);
13500 223 : tree _q51 = TREE_OPERAND (_p1, 1);
13501 223 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13502 : {
13503 0 : switch (TREE_CODE (_q51))
13504 : {
13505 0 : case INTEGER_CST:
13506 0 : {
13507 0 : switch (TREE_CODE (_p2))
13508 : {
13509 0 : case INTEGER_CST:
13510 0 : {
13511 0 : {
13512 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
13513 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MINUS_EXPR);
13514 0 : if (res) return res;
13515 : }
13516 0 : break;
13517 : }
13518 : default:;
13519 : }
13520 : break;
13521 : }
13522 : default:;
13523 : }
13524 : }
13525 : break;
13526 : }
13527 : default:;
13528 : }
13529 : break;
13530 : }
13531 552421 : default:;
13532 : }
13533 552421 : switch (TREE_CODE (_p1))
13534 : {
13535 16 : case MIN_EXPR:
13536 16 : {
13537 16 : tree _q50 = TREE_OPERAND (_p1, 0);
13538 16 : tree _q51 = TREE_OPERAND (_p1, 1);
13539 16 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13540 : {
13541 15 : switch (TREE_CODE (_p2))
13542 : {
13543 0 : case MIN_EXPR:
13544 0 : {
13545 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13546 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13547 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
13548 : {
13549 0 : {
13550 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
13551 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
13552 0 : if (res) return res;
13553 : }
13554 : }
13555 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
13556 : {
13557 0 : {
13558 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
13559 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
13560 0 : if (res) return res;
13561 : }
13562 : }
13563 : break;
13564 : }
13565 15 : default:;
13566 : }
13567 15 : {
13568 15 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q51, _p2 };
13569 15 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
13570 15 : if (res) return res;
13571 : }
13572 : }
13573 8 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
13574 : {
13575 0 : switch (TREE_CODE (_p2))
13576 : {
13577 0 : case MIN_EXPR:
13578 0 : {
13579 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13580 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13581 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
13582 : {
13583 0 : {
13584 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
13585 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
13586 0 : if (res) return res;
13587 : }
13588 : }
13589 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
13590 : {
13591 0 : {
13592 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
13593 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
13594 0 : if (res) return res;
13595 : }
13596 : }
13597 : break;
13598 : }
13599 : default:;
13600 : }
13601 : }
13602 8 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
13603 : {
13604 0 : switch (TREE_CODE (_p2))
13605 : {
13606 0 : case MIN_EXPR:
13607 0 : {
13608 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13609 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13610 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
13611 : {
13612 0 : {
13613 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
13614 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
13615 0 : if (res) return res;
13616 : }
13617 : }
13618 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
13619 : {
13620 0 : {
13621 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
13622 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
13623 0 : if (res) return res;
13624 : }
13625 : }
13626 : break;
13627 : }
13628 : default:;
13629 : }
13630 : }
13631 8 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
13632 : {
13633 0 : switch (TREE_CODE (_p2))
13634 : {
13635 0 : case MIN_EXPR:
13636 0 : {
13637 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13638 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13639 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
13640 : {
13641 0 : {
13642 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
13643 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
13644 0 : if (res) return res;
13645 : }
13646 : }
13647 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
13648 : {
13649 0 : {
13650 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
13651 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
13652 0 : if (res) return res;
13653 : }
13654 : }
13655 : break;
13656 : }
13657 : default:;
13658 : }
13659 : }
13660 8 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
13661 : {
13662 0 : {
13663 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
13664 0 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
13665 0 : if (res) return res;
13666 : }
13667 : }
13668 : break;
13669 : }
13670 9 : case MAX_EXPR:
13671 9 : {
13672 9 : tree _q50 = TREE_OPERAND (_p1, 0);
13673 9 : tree _q51 = TREE_OPERAND (_p1, 1);
13674 9 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13675 : {
13676 1 : switch (TREE_CODE (_p2))
13677 : {
13678 0 : case MAX_EXPR:
13679 0 : {
13680 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13681 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13682 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
13683 : {
13684 0 : {
13685 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
13686 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
13687 0 : if (res) return res;
13688 : }
13689 : }
13690 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
13691 : {
13692 0 : {
13693 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
13694 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
13695 0 : if (res) return res;
13696 : }
13697 : }
13698 : break;
13699 : }
13700 : default:;
13701 : }
13702 : }
13703 9 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
13704 : {
13705 1 : switch (TREE_CODE (_p2))
13706 : {
13707 0 : case MAX_EXPR:
13708 0 : {
13709 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13710 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13711 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
13712 : {
13713 0 : {
13714 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
13715 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
13716 0 : if (res) return res;
13717 : }
13718 : }
13719 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
13720 : {
13721 0 : {
13722 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
13723 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
13724 0 : if (res) return res;
13725 : }
13726 : }
13727 : break;
13728 : }
13729 : default:;
13730 : }
13731 : }
13732 9 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
13733 : {
13734 1 : switch (TREE_CODE (_p2))
13735 : {
13736 0 : case MAX_EXPR:
13737 0 : {
13738 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13739 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13740 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
13741 : {
13742 0 : {
13743 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
13744 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
13745 0 : if (res) return res;
13746 : }
13747 : }
13748 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
13749 : {
13750 0 : {
13751 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
13752 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
13753 0 : if (res) return res;
13754 : }
13755 : }
13756 : break;
13757 : }
13758 1 : default:;
13759 : }
13760 1 : {
13761 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q51, _p2 };
13762 1 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
13763 1 : if (res) return res;
13764 : }
13765 : }
13766 8 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
13767 : {
13768 8 : switch (TREE_CODE (_p2))
13769 : {
13770 0 : case MAX_EXPR:
13771 0 : {
13772 0 : tree _q80 = TREE_OPERAND (_p2, 0);
13773 0 : tree _q81 = TREE_OPERAND (_p2, 1);
13774 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
13775 : {
13776 0 : {
13777 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
13778 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
13779 0 : if (res) return res;
13780 : }
13781 : }
13782 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
13783 : {
13784 0 : {
13785 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
13786 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
13787 0 : if (res) return res;
13788 : }
13789 : }
13790 : break;
13791 : }
13792 8 : default:;
13793 : }
13794 8 : {
13795 8 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q50, _p2 };
13796 8 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
13797 8 : if (res) return res;
13798 : }
13799 : }
13800 : break;
13801 : }
13802 552411 : default:;
13803 : }
13804 552411 : {
13805 552411 : tree _q20_pops[1];
13806 552411 : if (tree_nop_convert (_q20, _q20_pops))
13807 : {
13808 27216 : tree _q30 = _q20_pops[0];
13809 27216 : if (integer_zerop (_q21))
13810 : {
13811 24021 : switch (TREE_CODE (_p1))
13812 : {
13813 0 : case MAX_EXPR:
13814 0 : {
13815 0 : tree _q60 = TREE_OPERAND (_p1, 0);
13816 0 : tree _q61 = TREE_OPERAND (_p1, 1);
13817 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
13818 : {
13819 0 : switch (TREE_CODE (_q61))
13820 : {
13821 0 : case INTEGER_CST:
13822 0 : {
13823 0 : switch (TREE_CODE (_p2))
13824 : {
13825 0 : case INTEGER_CST:
13826 0 : {
13827 0 : {
13828 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q30, _q21, _p1, _q61, _p2 };
13829 0 : tree res = generic_simplify_352 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
13830 0 : if (res) return res;
13831 : }
13832 0 : break;
13833 : }
13834 : default:;
13835 : }
13836 : break;
13837 : }
13838 : default:;
13839 : }
13840 : }
13841 : break;
13842 : }
13843 : default:;
13844 : }
13845 : }
13846 : }
13847 : }
13848 552411 : if (tree_expr_nonnegative_p (_q21))
13849 : {
13850 401035 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
13851 : {
13852 31751 : switch (TREE_CODE (_p2))
13853 : {
13854 0 : case ABS_EXPR:
13855 0 : {
13856 0 : tree _q60 = TREE_OPERAND (_p2, 0);
13857 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
13858 : {
13859 0 : {
13860 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
13861 0 : tree res = generic_simplify_354 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
13862 0 : if (res) return res;
13863 : }
13864 : }
13865 : break;
13866 : }
13867 : default:;
13868 : }
13869 : }
13870 401035 : switch (TREE_CODE (_p1))
13871 : {
13872 12 : case ABS_EXPR:
13873 12 : {
13874 12 : tree _q50 = TREE_OPERAND (_p1, 0);
13875 12 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
13876 : {
13877 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
13878 : {
13879 0 : {
13880 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
13881 0 : tree res = generic_simplify_355 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
13882 0 : if (res) return res;
13883 : }
13884 : }
13885 : }
13886 : break;
13887 : }
13888 : default:;
13889 : }
13890 : }
13891 : break;
13892 : }
13893 927421 : case GT_EXPR:
13894 927421 : {
13895 927421 : tree _q20 = TREE_OPERAND (_p0, 0);
13896 927421 : tree _q21 = TREE_OPERAND (_p0, 1);
13897 927421 : switch (TREE_CODE (_q20))
13898 : {
13899 1090 : case MINUS_EXPR:
13900 1090 : {
13901 1090 : tree _q30 = TREE_OPERAND (_q20, 0);
13902 1090 : tree _q31 = TREE_OPERAND (_q20, 1);
13903 1090 : switch (TREE_CODE (_q30))
13904 : {
13905 0 : case CALL_EXPR:
13906 0 : switch (get_call_combined_fn (_q30))
13907 : {
13908 0 : case CFN_BUILT_IN_CEIL:
13909 0 : if (call_expr_nargs (_q30) == 1)
13910 : {
13911 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
13912 0 : switch (TREE_CODE (_q40))
13913 : {
13914 0 : case SSA_NAME:
13915 0 : {
13916 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
13917 : {
13918 0 : switch (TREE_CODE (_q31))
13919 : {
13920 0 : case SSA_NAME:
13921 0 : {
13922 0 : switch (TREE_CODE (_q21))
13923 : {
13924 0 : case MINUS_EXPR:
13925 0 : {
13926 0 : tree _q80 = TREE_OPERAND (_q21, 0);
13927 0 : tree _q81 = TREE_OPERAND (_q21, 1);
13928 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
13929 : {
13930 0 : switch (TREE_CODE (_q80))
13931 : {
13932 0 : case SSA_NAME:
13933 0 : {
13934 0 : switch (TREE_CODE (_q81))
13935 : {
13936 0 : case CALL_EXPR:
13937 0 : switch (get_call_combined_fn (_q81))
13938 : {
13939 0 : case CFN_BUILT_IN_FLOOR:
13940 0 : if (call_expr_nargs (_q81) == 1)
13941 : {
13942 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
13943 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
13944 : {
13945 0 : switch (TREE_CODE (_q110))
13946 : {
13947 0 : case SSA_NAME:
13948 0 : {
13949 0 : switch (TREE_CODE (_p1))
13950 : {
13951 0 : case CALL_EXPR:
13952 0 : switch (get_call_combined_fn (_p1))
13953 : {
13954 0 : case CFN_BUILT_IN_FLOOR:
13955 0 : if (call_expr_nargs (_p1) == 1)
13956 : {
13957 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
13958 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
13959 : {
13960 0 : switch (TREE_CODE (_q140))
13961 : {
13962 0 : case SSA_NAME:
13963 0 : {
13964 0 : switch (TREE_CODE (_p2))
13965 : {
13966 0 : case CALL_EXPR:
13967 0 : switch (get_call_combined_fn (_p2))
13968 : {
13969 0 : case CFN_BUILT_IN_CEIL:
13970 0 : if (call_expr_nargs (_p2) == 1)
13971 : {
13972 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
13973 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
13974 : {
13975 0 : switch (TREE_CODE (_q170))
13976 : {
13977 0 : case SSA_NAME:
13978 0 : {
13979 0 : {
13980 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
13981 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL);
13982 0 : if (res) return res;
13983 : }
13984 0 : break;
13985 : }
13986 : default:;
13987 : }
13988 : }
13989 : }
13990 : break;
13991 : default:;
13992 : }
13993 : break;
13994 : default:;
13995 : }
13996 : break;
13997 : }
13998 : default:;
13999 : }
14000 : }
14001 : }
14002 : break;
14003 : default:;
14004 : }
14005 : break;
14006 : default:;
14007 : }
14008 : break;
14009 : }
14010 : default:;
14011 : }
14012 : }
14013 : }
14014 : break;
14015 : default:;
14016 : }
14017 : break;
14018 : default:;
14019 : }
14020 : break;
14021 : }
14022 : default:;
14023 : }
14024 : }
14025 : break;
14026 : }
14027 : default:;
14028 : }
14029 : break;
14030 : }
14031 : default:;
14032 : }
14033 : }
14034 : break;
14035 : }
14036 : default:;
14037 : }
14038 : }
14039 : break;
14040 0 : case CFN_CEIL:
14041 0 : if (call_expr_nargs (_q30) == 1)
14042 : {
14043 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
14044 0 : switch (TREE_CODE (_q40))
14045 : {
14046 0 : case SSA_NAME:
14047 0 : {
14048 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
14049 : {
14050 0 : switch (TREE_CODE (_q31))
14051 : {
14052 0 : case SSA_NAME:
14053 0 : {
14054 0 : switch (TREE_CODE (_q21))
14055 : {
14056 0 : case MINUS_EXPR:
14057 0 : {
14058 0 : tree _q80 = TREE_OPERAND (_q21, 0);
14059 0 : tree _q81 = TREE_OPERAND (_q21, 1);
14060 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
14061 : {
14062 0 : switch (TREE_CODE (_q80))
14063 : {
14064 0 : case SSA_NAME:
14065 0 : {
14066 0 : switch (TREE_CODE (_q81))
14067 : {
14068 0 : case CALL_EXPR:
14069 0 : switch (get_call_combined_fn (_q81))
14070 : {
14071 0 : case CFN_FLOOR:
14072 0 : if (call_expr_nargs (_q81) == 1)
14073 : {
14074 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
14075 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
14076 : {
14077 0 : switch (TREE_CODE (_q110))
14078 : {
14079 0 : case SSA_NAME:
14080 0 : {
14081 0 : switch (TREE_CODE (_p1))
14082 : {
14083 0 : case CALL_EXPR:
14084 0 : switch (get_call_combined_fn (_p1))
14085 : {
14086 0 : case CFN_FLOOR:
14087 0 : if (call_expr_nargs (_p1) == 1)
14088 : {
14089 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
14090 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
14091 : {
14092 0 : switch (TREE_CODE (_q140))
14093 : {
14094 0 : case SSA_NAME:
14095 0 : {
14096 0 : switch (TREE_CODE (_p2))
14097 : {
14098 0 : case CALL_EXPR:
14099 0 : switch (get_call_combined_fn (_p2))
14100 : {
14101 0 : case CFN_CEIL:
14102 0 : if (call_expr_nargs (_p2) == 1)
14103 : {
14104 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
14105 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
14106 : {
14107 0 : switch (TREE_CODE (_q170))
14108 : {
14109 0 : case SSA_NAME:
14110 0 : {
14111 0 : {
14112 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
14113 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_FLOOR, CFN_CEIL, CFN_FLOOR, CFN_CEIL);
14114 0 : if (res) return res;
14115 : }
14116 0 : break;
14117 : }
14118 : default:;
14119 : }
14120 : }
14121 : }
14122 : break;
14123 : default:;
14124 : }
14125 : break;
14126 : default:;
14127 : }
14128 : break;
14129 : }
14130 : default:;
14131 : }
14132 : }
14133 : }
14134 : break;
14135 : default:;
14136 : }
14137 : break;
14138 : default:;
14139 : }
14140 : break;
14141 : }
14142 : default:;
14143 : }
14144 : }
14145 : }
14146 : break;
14147 : default:;
14148 : }
14149 : break;
14150 : default:;
14151 : }
14152 : break;
14153 : }
14154 : default:;
14155 : }
14156 : }
14157 : break;
14158 : }
14159 : default:;
14160 : }
14161 : break;
14162 : }
14163 : default:;
14164 : }
14165 : }
14166 : break;
14167 : }
14168 : default:;
14169 : }
14170 : }
14171 : break;
14172 0 : case CFN_BUILT_IN_CEILF:
14173 0 : if (call_expr_nargs (_q30) == 1)
14174 : {
14175 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
14176 0 : switch (TREE_CODE (_q40))
14177 : {
14178 0 : case SSA_NAME:
14179 0 : {
14180 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
14181 : {
14182 0 : switch (TREE_CODE (_q31))
14183 : {
14184 0 : case SSA_NAME:
14185 0 : {
14186 0 : switch (TREE_CODE (_q21))
14187 : {
14188 0 : case MINUS_EXPR:
14189 0 : {
14190 0 : tree _q80 = TREE_OPERAND (_q21, 0);
14191 0 : tree _q81 = TREE_OPERAND (_q21, 1);
14192 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
14193 : {
14194 0 : switch (TREE_CODE (_q80))
14195 : {
14196 0 : case SSA_NAME:
14197 0 : {
14198 0 : switch (TREE_CODE (_q81))
14199 : {
14200 0 : case CALL_EXPR:
14201 0 : switch (get_call_combined_fn (_q81))
14202 : {
14203 0 : case CFN_BUILT_IN_FLOORF:
14204 0 : if (call_expr_nargs (_q81) == 1)
14205 : {
14206 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
14207 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
14208 : {
14209 0 : switch (TREE_CODE (_q110))
14210 : {
14211 0 : case SSA_NAME:
14212 0 : {
14213 0 : switch (TREE_CODE (_p1))
14214 : {
14215 0 : case CALL_EXPR:
14216 0 : switch (get_call_combined_fn (_p1))
14217 : {
14218 0 : case CFN_BUILT_IN_FLOORF:
14219 0 : if (call_expr_nargs (_p1) == 1)
14220 : {
14221 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
14222 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
14223 : {
14224 0 : switch (TREE_CODE (_q140))
14225 : {
14226 0 : case SSA_NAME:
14227 0 : {
14228 0 : switch (TREE_CODE (_p2))
14229 : {
14230 0 : case CALL_EXPR:
14231 0 : switch (get_call_combined_fn (_p2))
14232 : {
14233 0 : case CFN_BUILT_IN_CEILF:
14234 0 : if (call_expr_nargs (_p2) == 1)
14235 : {
14236 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
14237 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
14238 : {
14239 0 : switch (TREE_CODE (_q170))
14240 : {
14241 0 : case SSA_NAME:
14242 0 : {
14243 0 : {
14244 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
14245 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF);
14246 0 : if (res) return res;
14247 : }
14248 0 : break;
14249 : }
14250 : default:;
14251 : }
14252 : }
14253 : }
14254 : break;
14255 : default:;
14256 : }
14257 : break;
14258 : default:;
14259 : }
14260 : break;
14261 : }
14262 : default:;
14263 : }
14264 : }
14265 : }
14266 : break;
14267 : default:;
14268 : }
14269 : break;
14270 : default:;
14271 : }
14272 : break;
14273 : }
14274 : default:;
14275 : }
14276 : }
14277 : }
14278 : break;
14279 : default:;
14280 : }
14281 : break;
14282 : default:;
14283 : }
14284 : break;
14285 : }
14286 : default:;
14287 : }
14288 : }
14289 : break;
14290 : }
14291 : default:;
14292 : }
14293 : break;
14294 : }
14295 : default:;
14296 : }
14297 : }
14298 : break;
14299 : }
14300 : default:;
14301 : }
14302 : }
14303 : break;
14304 0 : case CFN_BUILT_IN_CEILL:
14305 0 : if (call_expr_nargs (_q30) == 1)
14306 : {
14307 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
14308 0 : switch (TREE_CODE (_q40))
14309 : {
14310 0 : case SSA_NAME:
14311 0 : {
14312 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
14313 : {
14314 0 : switch (TREE_CODE (_q31))
14315 : {
14316 0 : case SSA_NAME:
14317 0 : {
14318 0 : switch (TREE_CODE (_q21))
14319 : {
14320 0 : case MINUS_EXPR:
14321 0 : {
14322 0 : tree _q80 = TREE_OPERAND (_q21, 0);
14323 0 : tree _q81 = TREE_OPERAND (_q21, 1);
14324 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
14325 : {
14326 0 : switch (TREE_CODE (_q80))
14327 : {
14328 0 : case SSA_NAME:
14329 0 : {
14330 0 : switch (TREE_CODE (_q81))
14331 : {
14332 0 : case CALL_EXPR:
14333 0 : switch (get_call_combined_fn (_q81))
14334 : {
14335 0 : case CFN_BUILT_IN_FLOORL:
14336 0 : if (call_expr_nargs (_q81) == 1)
14337 : {
14338 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
14339 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
14340 : {
14341 0 : switch (TREE_CODE (_q110))
14342 : {
14343 0 : case SSA_NAME:
14344 0 : {
14345 0 : switch (TREE_CODE (_p1))
14346 : {
14347 0 : case CALL_EXPR:
14348 0 : switch (get_call_combined_fn (_p1))
14349 : {
14350 0 : case CFN_BUILT_IN_FLOORL:
14351 0 : if (call_expr_nargs (_p1) == 1)
14352 : {
14353 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
14354 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
14355 : {
14356 0 : switch (TREE_CODE (_q140))
14357 : {
14358 0 : case SSA_NAME:
14359 0 : {
14360 0 : switch (TREE_CODE (_p2))
14361 : {
14362 0 : case CALL_EXPR:
14363 0 : switch (get_call_combined_fn (_p2))
14364 : {
14365 0 : case CFN_BUILT_IN_CEILL:
14366 0 : if (call_expr_nargs (_p2) == 1)
14367 : {
14368 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
14369 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
14370 : {
14371 0 : switch (TREE_CODE (_q170))
14372 : {
14373 0 : case SSA_NAME:
14374 0 : {
14375 0 : {
14376 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
14377 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL);
14378 0 : if (res) return res;
14379 : }
14380 0 : break;
14381 : }
14382 : default:;
14383 : }
14384 : }
14385 : }
14386 : break;
14387 : default:;
14388 : }
14389 : break;
14390 : default:;
14391 : }
14392 : break;
14393 : }
14394 : default:;
14395 : }
14396 : }
14397 : }
14398 : break;
14399 : default:;
14400 : }
14401 : break;
14402 : default:;
14403 : }
14404 : break;
14405 : }
14406 : default:;
14407 : }
14408 : }
14409 : }
14410 : break;
14411 : default:;
14412 : }
14413 : break;
14414 : default:;
14415 : }
14416 : break;
14417 : }
14418 : default:;
14419 : }
14420 : }
14421 : break;
14422 : }
14423 : default:;
14424 : }
14425 : break;
14426 : }
14427 : default:;
14428 : }
14429 : }
14430 : break;
14431 : }
14432 : default:;
14433 : }
14434 : }
14435 : break;
14436 : default:;
14437 : }
14438 : break;
14439 : default:;
14440 : }
14441 : break;
14442 : }
14443 88544 : CASE_CONVERT:
14444 88544 : {
14445 88544 : tree _q30 = TREE_OPERAND (_q20, 0);
14446 88544 : switch (TREE_CODE (_q21))
14447 : {
14448 4084 : case INTEGER_CST:
14449 4084 : {
14450 4084 : switch (TREE_CODE (_p1))
14451 : {
14452 203 : CASE_CONVERT:
14453 203 : {
14454 203 : tree _q60 = TREE_OPERAND (_p1, 0);
14455 203 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
14456 : {
14457 63 : switch (TREE_CODE (_p2))
14458 : {
14459 62 : case INTEGER_CST:
14460 62 : {
14461 62 : {
14462 62 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
14463 62 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
14464 62 : if (res) return res;
14465 : }
14466 62 : break;
14467 : }
14468 : default:;
14469 : }
14470 : }
14471 : break;
14472 : }
14473 4084 : default:;
14474 : }
14475 4084 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
14476 : {
14477 5 : switch (TREE_CODE (_p2))
14478 : {
14479 3 : case INTEGER_CST:
14480 3 : {
14481 3 : {
14482 3 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
14483 3 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
14484 3 : if (res) return res;
14485 : }
14486 3 : break;
14487 : }
14488 : default:;
14489 : }
14490 : }
14491 4084 : switch (TREE_CODE (_p1))
14492 : {
14493 1170 : case PLUS_EXPR:
14494 1170 : {
14495 1170 : tree _q60 = TREE_OPERAND (_p1, 0);
14496 1170 : tree _q61 = TREE_OPERAND (_p1, 1);
14497 1170 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
14498 : {
14499 24 : switch (TREE_CODE (_q61))
14500 : {
14501 24 : case INTEGER_CST:
14502 24 : {
14503 24 : switch (TREE_CODE (_p2))
14504 : {
14505 24 : case INTEGER_CST:
14506 24 : {
14507 24 : {
14508 24 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
14509 24 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, PLUS_EXPR);
14510 24 : if (res) return res;
14511 : }
14512 24 : break;
14513 : }
14514 : default:;
14515 : }
14516 : break;
14517 : }
14518 : default:;
14519 : }
14520 : }
14521 : break;
14522 : }
14523 3 : case MINUS_EXPR:
14524 3 : {
14525 3 : tree _q60 = TREE_OPERAND (_p1, 0);
14526 3 : tree _q61 = TREE_OPERAND (_p1, 1);
14527 3 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
14528 : {
14529 0 : switch (TREE_CODE (_q61))
14530 : {
14531 0 : case INTEGER_CST:
14532 0 : {
14533 0 : switch (TREE_CODE (_p2))
14534 : {
14535 0 : case INTEGER_CST:
14536 0 : {
14537 0 : {
14538 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
14539 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MINUS_EXPR);
14540 0 : if (res) return res;
14541 : }
14542 0 : break;
14543 : }
14544 : default:;
14545 : }
14546 : break;
14547 : }
14548 : default:;
14549 : }
14550 : }
14551 : break;
14552 : }
14553 : default:;
14554 : }
14555 : break;
14556 : }
14557 : default:;
14558 : }
14559 : break;
14560 : }
14561 927421 : default:;
14562 : }
14563 927421 : switch (TREE_CODE (_q21))
14564 : {
14565 481777 : case INTEGER_CST:
14566 481777 : {
14567 481777 : switch (TREE_CODE (_p1))
14568 : {
14569 54339 : CASE_CONVERT:
14570 54339 : {
14571 54339 : tree _q50 = TREE_OPERAND (_p1, 0);
14572 54339 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14573 : {
14574 12756 : switch (TREE_CODE (_p2))
14575 : {
14576 12720 : case INTEGER_CST:
14577 12720 : {
14578 12720 : {
14579 12720 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
14580 12720 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
14581 12720 : if (res) return res;
14582 : }
14583 12411 : break;
14584 : }
14585 : default:;
14586 : }
14587 : }
14588 : break;
14589 : }
14590 481468 : default:;
14591 : }
14592 481468 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
14593 : {
14594 8842 : switch (TREE_CODE (_p2))
14595 : {
14596 8668 : case INTEGER_CST:
14597 8668 : {
14598 8668 : {
14599 8668 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
14600 8668 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
14601 8668 : if (res) return res;
14602 : }
14603 31 : break;
14604 : }
14605 : default:;
14606 : }
14607 : }
14608 472831 : switch (TREE_CODE (_p1))
14609 : {
14610 47927 : case PLUS_EXPR:
14611 47927 : {
14612 47927 : tree _q50 = TREE_OPERAND (_p1, 0);
14613 47927 : tree _q51 = TREE_OPERAND (_p1, 1);
14614 47927 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14615 : {
14616 737 : switch (TREE_CODE (_q51))
14617 : {
14618 737 : case INTEGER_CST:
14619 737 : {
14620 737 : switch (TREE_CODE (_p2))
14621 : {
14622 729 : case INTEGER_CST:
14623 729 : {
14624 729 : {
14625 729 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
14626 729 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, PLUS_EXPR);
14627 729 : if (res) return res;
14628 : }
14629 17 : break;
14630 : }
14631 : default:;
14632 : }
14633 : break;
14634 : }
14635 : default:;
14636 : }
14637 : }
14638 : break;
14639 : }
14640 193 : case MINUS_EXPR:
14641 193 : {
14642 193 : tree _q50 = TREE_OPERAND (_p1, 0);
14643 193 : tree _q51 = TREE_OPERAND (_p1, 1);
14644 193 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14645 : {
14646 4 : switch (TREE_CODE (_q51))
14647 : {
14648 0 : case INTEGER_CST:
14649 0 : {
14650 0 : switch (TREE_CODE (_p2))
14651 : {
14652 0 : case INTEGER_CST:
14653 0 : {
14654 0 : {
14655 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
14656 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MINUS_EXPR);
14657 0 : if (res) return res;
14658 : }
14659 0 : break;
14660 : }
14661 : default:;
14662 : }
14663 : break;
14664 : }
14665 : default:;
14666 : }
14667 : }
14668 : break;
14669 : }
14670 : default:;
14671 : }
14672 : break;
14673 : }
14674 917763 : default:;
14675 : }
14676 917763 : switch (TREE_CODE (_p1))
14677 : {
14678 18 : case MIN_EXPR:
14679 18 : {
14680 18 : tree _q50 = TREE_OPERAND (_p1, 0);
14681 18 : tree _q51 = TREE_OPERAND (_p1, 1);
14682 18 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14683 : {
14684 7 : switch (TREE_CODE (_p2))
14685 : {
14686 0 : case MIN_EXPR:
14687 0 : {
14688 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14689 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14690 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
14691 : {
14692 0 : {
14693 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
14694 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
14695 0 : if (res) return res;
14696 : }
14697 : }
14698 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
14699 : {
14700 0 : {
14701 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
14702 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
14703 0 : if (res) return res;
14704 : }
14705 : }
14706 : break;
14707 : }
14708 7 : default:;
14709 : }
14710 7 : {
14711 7 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q51, _p2 };
14712 7 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
14713 7 : if (res) return res;
14714 : }
14715 : }
14716 18 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14717 : {
14718 0 : switch (TREE_CODE (_p2))
14719 : {
14720 0 : case MIN_EXPR:
14721 0 : {
14722 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14723 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14724 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
14725 : {
14726 0 : {
14727 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
14728 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
14729 0 : if (res) return res;
14730 : }
14731 : }
14732 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
14733 : {
14734 0 : {
14735 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
14736 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
14737 0 : if (res) return res;
14738 : }
14739 : }
14740 : break;
14741 : }
14742 : default:;
14743 : }
14744 : }
14745 18 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14746 : {
14747 8 : switch (TREE_CODE (_p2))
14748 : {
14749 0 : case MIN_EXPR:
14750 0 : {
14751 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14752 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14753 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
14754 : {
14755 0 : {
14756 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
14757 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
14758 0 : if (res) return res;
14759 : }
14760 : }
14761 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
14762 : {
14763 0 : {
14764 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
14765 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
14766 0 : if (res) return res;
14767 : }
14768 : }
14769 : break;
14770 : }
14771 : default:;
14772 : }
14773 : }
14774 18 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14775 : {
14776 7 : switch (TREE_CODE (_p2))
14777 : {
14778 0 : case MIN_EXPR:
14779 0 : {
14780 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14781 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14782 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
14783 : {
14784 0 : {
14785 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
14786 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
14787 0 : if (res) return res;
14788 : }
14789 : }
14790 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
14791 : {
14792 0 : {
14793 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
14794 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
14795 0 : if (res) return res;
14796 : }
14797 : }
14798 : break;
14799 : }
14800 : default:;
14801 : }
14802 : }
14803 18 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14804 : {
14805 0 : {
14806 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
14807 0 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MIN_EXPR);
14808 0 : if (res) return res;
14809 : }
14810 : }
14811 : break;
14812 : }
14813 109 : case MAX_EXPR:
14814 109 : {
14815 109 : tree _q50 = TREE_OPERAND (_p1, 0);
14816 109 : tree _q51 = TREE_OPERAND (_p1, 1);
14817 109 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
14818 : {
14819 0 : switch (TREE_CODE (_p2))
14820 : {
14821 0 : case MAX_EXPR:
14822 0 : {
14823 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14824 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14825 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
14826 : {
14827 0 : {
14828 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
14829 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
14830 0 : if (res) return res;
14831 : }
14832 : }
14833 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
14834 : {
14835 0 : {
14836 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
14837 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
14838 0 : if (res) return res;
14839 : }
14840 : }
14841 : break;
14842 : }
14843 : default:;
14844 : }
14845 : }
14846 109 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
14847 : {
14848 11 : switch (TREE_CODE (_p2))
14849 : {
14850 10 : case MAX_EXPR:
14851 10 : {
14852 10 : tree _q80 = TREE_OPERAND (_p2, 0);
14853 10 : tree _q81 = TREE_OPERAND (_p2, 1);
14854 10 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
14855 : {
14856 0 : {
14857 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
14858 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
14859 0 : if (res) return res;
14860 : }
14861 : }
14862 10 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
14863 : {
14864 10 : {
14865 10 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
14866 10 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GT_EXPR, MAX_EXPR);
14867 10 : if (res) return res;
14868 : }
14869 : }
14870 : break;
14871 : }
14872 : default:;
14873 : }
14874 : }
14875 107 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
14876 : {
14877 1 : switch (TREE_CODE (_p2))
14878 : {
14879 0 : case MAX_EXPR:
14880 0 : {
14881 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14882 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14883 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
14884 : {
14885 0 : {
14886 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
14887 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
14888 0 : if (res) return res;
14889 : }
14890 : }
14891 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
14892 : {
14893 0 : {
14894 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
14895 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
14896 0 : if (res) return res;
14897 : }
14898 : }
14899 : break;
14900 : }
14901 1 : default:;
14902 : }
14903 1 : {
14904 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q51, _p2 };
14905 1 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
14906 1 : if (res) return res;
14907 : }
14908 : }
14909 106 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
14910 : {
14911 0 : switch (TREE_CODE (_p2))
14912 : {
14913 0 : case MAX_EXPR:
14914 0 : {
14915 0 : tree _q80 = TREE_OPERAND (_p2, 0);
14916 0 : tree _q81 = TREE_OPERAND (_p2, 1);
14917 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
14918 : {
14919 0 : {
14920 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
14921 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
14922 0 : if (res) return res;
14923 : }
14924 : }
14925 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
14926 : {
14927 0 : {
14928 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
14929 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
14930 0 : if (res) return res;
14931 : }
14932 : }
14933 : break;
14934 : }
14935 0 : default:;
14936 : }
14937 0 : {
14938 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q50, _p2 };
14939 0 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MAX_EXPR);
14940 0 : if (res) return res;
14941 : }
14942 : }
14943 : break;
14944 : }
14945 917760 : default:;
14946 : }
14947 917760 : if (integer_zerop (_q20))
14948 : {
14949 0 : {
14950 0 : tree _q21_pops[1];
14951 0 : if (tree_nop_convert (_q21, _q21_pops))
14952 : {
14953 0 : tree _q40 = _q21_pops[0];
14954 0 : switch (TREE_CODE (_p1))
14955 : {
14956 0 : case MIN_EXPR:
14957 0 : {
14958 0 : tree _q60 = TREE_OPERAND (_p1, 0);
14959 0 : tree _q61 = TREE_OPERAND (_p1, 1);
14960 0 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
14961 : {
14962 0 : switch (TREE_CODE (_q61))
14963 : {
14964 0 : case INTEGER_CST:
14965 0 : {
14966 0 : switch (TREE_CODE (_p2))
14967 : {
14968 0 : case INTEGER_CST:
14969 0 : {
14970 0 : {
14971 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q20, _p1, _q61, _p2 };
14972 0 : tree res = generic_simplify_352 (loc, type, _p0, _p1, _p2, captures, LT_EXPR, MIN_EXPR);
14973 0 : if (res) return res;
14974 : }
14975 0 : break;
14976 : }
14977 : default:;
14978 : }
14979 : break;
14980 : }
14981 : default:;
14982 : }
14983 : }
14984 : break;
14985 : }
14986 : default:;
14987 : }
14988 : }
14989 : }
14990 : }
14991 917760 : if (tree_expr_nonnegative_p (_q21))
14992 : {
14993 590368 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
14994 : {
14995 612 : switch (TREE_CODE (_p2))
14996 : {
14997 0 : case ABS_EXPR:
14998 0 : {
14999 0 : tree _q60 = TREE_OPERAND (_p2, 0);
15000 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
15001 : {
15002 0 : {
15003 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
15004 0 : tree res = generic_simplify_354 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
15005 0 : if (res) return res;
15006 : }
15007 : }
15008 : break;
15009 : }
15010 : default:;
15011 : }
15012 : }
15013 590368 : switch (TREE_CODE (_p1))
15014 : {
15015 1 : case ABS_EXPR:
15016 1 : {
15017 1 : tree _q50 = TREE_OPERAND (_p1, 0);
15018 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15019 : {
15020 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
15021 : {
15022 0 : {
15023 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q21 };
15024 0 : tree res = generic_simplify_355 (loc, type, _p0, _p1, _p2, captures, GT_EXPR);
15025 0 : if (res) return res;
15026 : }
15027 : }
15028 : }
15029 : break;
15030 : }
15031 : default:;
15032 : }
15033 : }
15034 917760 : switch (TREE_CODE (_q20))
15035 : {
15036 56590 : case PLUS_EXPR:
15037 56590 : {
15038 56590 : tree _q30 = TREE_OPERAND (_q20, 0);
15039 56590 : tree _q31 = TREE_OPERAND (_q20, 1);
15040 56590 : if (integer_onep (_q31))
15041 : {
15042 28453 : switch (TREE_CODE (_p1))
15043 : {
15044 2 : case NEGATE_EXPR:
15045 2 : {
15046 2 : tree _q70 = TREE_OPERAND (_p1, 0);
15047 2 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
15048 : {
15049 2 : if (integer_onep (_p2))
15050 : {
15051 2 : {
15052 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
15053 2 : if (TYPE_UNSIGNED (type)
15054 : )
15055 : {
15056 2 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1859;
15057 2 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1859;
15058 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1859;
15059 2 : {
15060 2 : tree res_op0;
15061 2 : {
15062 2 : tree _o1[2], _r1;
15063 2 : _o1[0] = unshare_expr (captures[0]);
15064 2 : _o1[1] = captures[1];
15065 2 : _r1 = fold_build2_loc (loc, GE_EXPR, boolean_type_node, _o1[0], _o1[1]);
15066 2 : res_op0 = _r1;
15067 : }
15068 2 : tree res_op1;
15069 2 : {
15070 2 : tree _o1[1], _r1;
15071 2 : _o1[0] = captures[0];
15072 2 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
15073 2 : res_op1 = _r1;
15074 : }
15075 2 : tree res_op2;
15076 2 : res_op2 = captures[2];
15077 2 : tree _r;
15078 2 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
15079 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1049, __FILE__, __LINE__, true);
15080 2 : return _r;
15081 : }
15082 0 : next_after_fail1859:;
15083 : }
15084 : }
15085 : }
15086 : }
15087 : break;
15088 : }
15089 : default:;
15090 : }
15091 : }
15092 : break;
15093 : }
15094 : default:;
15095 : }
15096 : break;
15097 : }
15098 1401399 : case LE_EXPR:
15099 1401399 : {
15100 1401399 : tree _q20 = TREE_OPERAND (_p0, 0);
15101 1401399 : tree _q21 = TREE_OPERAND (_p0, 1);
15102 1401399 : switch (TREE_CODE (_q20))
15103 : {
15104 198 : case MINUS_EXPR:
15105 198 : {
15106 198 : tree _q30 = TREE_OPERAND (_q20, 0);
15107 198 : tree _q31 = TREE_OPERAND (_q20, 1);
15108 198 : switch (TREE_CODE (_q30))
15109 : {
15110 0 : case CALL_EXPR:
15111 0 : switch (get_call_combined_fn (_q30))
15112 : {
15113 0 : case CFN_BUILT_IN_CEIL:
15114 0 : if (call_expr_nargs (_q30) == 1)
15115 : {
15116 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
15117 0 : switch (TREE_CODE (_q40))
15118 : {
15119 0 : case SSA_NAME:
15120 0 : {
15121 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
15122 : {
15123 0 : switch (TREE_CODE (_q31))
15124 : {
15125 0 : case SSA_NAME:
15126 0 : {
15127 0 : switch (TREE_CODE (_q21))
15128 : {
15129 0 : case MINUS_EXPR:
15130 0 : {
15131 0 : tree _q80 = TREE_OPERAND (_q21, 0);
15132 0 : tree _q81 = TREE_OPERAND (_q21, 1);
15133 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
15134 : {
15135 0 : switch (TREE_CODE (_q80))
15136 : {
15137 0 : case SSA_NAME:
15138 0 : {
15139 0 : switch (TREE_CODE (_q81))
15140 : {
15141 0 : case CALL_EXPR:
15142 0 : switch (get_call_combined_fn (_q81))
15143 : {
15144 0 : case CFN_BUILT_IN_FLOOR:
15145 0 : if (call_expr_nargs (_q81) == 1)
15146 : {
15147 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
15148 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
15149 : {
15150 0 : switch (TREE_CODE (_q110))
15151 : {
15152 0 : case SSA_NAME:
15153 0 : {
15154 0 : switch (TREE_CODE (_p1))
15155 : {
15156 0 : case CALL_EXPR:
15157 0 : switch (get_call_combined_fn (_p1))
15158 : {
15159 0 : case CFN_BUILT_IN_CEIL:
15160 0 : if (call_expr_nargs (_p1) == 1)
15161 : {
15162 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
15163 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
15164 : {
15165 0 : switch (TREE_CODE (_q140))
15166 : {
15167 0 : case SSA_NAME:
15168 0 : {
15169 0 : switch (TREE_CODE (_p2))
15170 : {
15171 0 : case CALL_EXPR:
15172 0 : switch (get_call_combined_fn (_p2))
15173 : {
15174 0 : case CFN_BUILT_IN_FLOOR:
15175 0 : if (call_expr_nargs (_p2) == 1)
15176 : {
15177 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
15178 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
15179 : {
15180 0 : switch (TREE_CODE (_q170))
15181 : {
15182 0 : case SSA_NAME:
15183 0 : {
15184 0 : {
15185 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
15186 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEIL, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_CEIL);
15187 0 : if (res) return res;
15188 : }
15189 0 : break;
15190 : }
15191 : default:;
15192 : }
15193 : }
15194 : }
15195 : break;
15196 : default:;
15197 : }
15198 : break;
15199 : default:;
15200 : }
15201 : break;
15202 : }
15203 : default:;
15204 : }
15205 : }
15206 : }
15207 : break;
15208 : default:;
15209 : }
15210 : break;
15211 : default:;
15212 : }
15213 : break;
15214 : }
15215 : default:;
15216 : }
15217 : }
15218 : }
15219 : break;
15220 : default:;
15221 : }
15222 : break;
15223 : default:;
15224 : }
15225 : break;
15226 : }
15227 : default:;
15228 : }
15229 : }
15230 : break;
15231 : }
15232 : default:;
15233 : }
15234 : break;
15235 : }
15236 : default:;
15237 : }
15238 : }
15239 : break;
15240 : }
15241 : default:;
15242 : }
15243 : }
15244 : break;
15245 0 : case CFN_CEIL:
15246 0 : if (call_expr_nargs (_q30) == 1)
15247 : {
15248 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
15249 0 : switch (TREE_CODE (_q40))
15250 : {
15251 0 : case SSA_NAME:
15252 0 : {
15253 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
15254 : {
15255 0 : switch (TREE_CODE (_q31))
15256 : {
15257 0 : case SSA_NAME:
15258 0 : {
15259 0 : switch (TREE_CODE (_q21))
15260 : {
15261 0 : case MINUS_EXPR:
15262 0 : {
15263 0 : tree _q80 = TREE_OPERAND (_q21, 0);
15264 0 : tree _q81 = TREE_OPERAND (_q21, 1);
15265 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
15266 : {
15267 0 : switch (TREE_CODE (_q80))
15268 : {
15269 0 : case SSA_NAME:
15270 0 : {
15271 0 : switch (TREE_CODE (_q81))
15272 : {
15273 0 : case CALL_EXPR:
15274 0 : switch (get_call_combined_fn (_q81))
15275 : {
15276 0 : case CFN_FLOOR:
15277 0 : if (call_expr_nargs (_q81) == 1)
15278 : {
15279 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
15280 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
15281 : {
15282 0 : switch (TREE_CODE (_q110))
15283 : {
15284 0 : case SSA_NAME:
15285 0 : {
15286 0 : switch (TREE_CODE (_p1))
15287 : {
15288 0 : case CALL_EXPR:
15289 0 : switch (get_call_combined_fn (_p1))
15290 : {
15291 0 : case CFN_CEIL:
15292 0 : if (call_expr_nargs (_p1) == 1)
15293 : {
15294 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
15295 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
15296 : {
15297 0 : switch (TREE_CODE (_q140))
15298 : {
15299 0 : case SSA_NAME:
15300 0 : {
15301 0 : switch (TREE_CODE (_p2))
15302 : {
15303 0 : case CALL_EXPR:
15304 0 : switch (get_call_combined_fn (_p2))
15305 : {
15306 0 : case CFN_FLOOR:
15307 0 : if (call_expr_nargs (_p2) == 1)
15308 : {
15309 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
15310 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
15311 : {
15312 0 : switch (TREE_CODE (_q170))
15313 : {
15314 0 : case SSA_NAME:
15315 0 : {
15316 0 : {
15317 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
15318 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_CEIL, CFN_FLOOR, CFN_FLOOR, CFN_CEIL);
15319 0 : if (res) return res;
15320 : }
15321 0 : break;
15322 : }
15323 : default:;
15324 : }
15325 : }
15326 : }
15327 : break;
15328 : default:;
15329 : }
15330 : break;
15331 : default:;
15332 : }
15333 : break;
15334 : }
15335 : default:;
15336 : }
15337 : }
15338 : }
15339 : break;
15340 : default:;
15341 : }
15342 : break;
15343 : default:;
15344 : }
15345 : break;
15346 : }
15347 : default:;
15348 : }
15349 : }
15350 : }
15351 : break;
15352 : default:;
15353 : }
15354 : break;
15355 : default:;
15356 : }
15357 : break;
15358 : }
15359 : default:;
15360 : }
15361 : }
15362 : break;
15363 : }
15364 : default:;
15365 : }
15366 : break;
15367 : }
15368 : default:;
15369 : }
15370 : }
15371 : break;
15372 : }
15373 : default:;
15374 : }
15375 : }
15376 : break;
15377 0 : case CFN_BUILT_IN_CEILF:
15378 0 : if (call_expr_nargs (_q30) == 1)
15379 : {
15380 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
15381 0 : switch (TREE_CODE (_q40))
15382 : {
15383 0 : case SSA_NAME:
15384 0 : {
15385 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
15386 : {
15387 0 : switch (TREE_CODE (_q31))
15388 : {
15389 0 : case SSA_NAME:
15390 0 : {
15391 0 : switch (TREE_CODE (_q21))
15392 : {
15393 0 : case MINUS_EXPR:
15394 0 : {
15395 0 : tree _q80 = TREE_OPERAND (_q21, 0);
15396 0 : tree _q81 = TREE_OPERAND (_q21, 1);
15397 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
15398 : {
15399 0 : switch (TREE_CODE (_q80))
15400 : {
15401 0 : case SSA_NAME:
15402 0 : {
15403 0 : switch (TREE_CODE (_q81))
15404 : {
15405 0 : case CALL_EXPR:
15406 0 : switch (get_call_combined_fn (_q81))
15407 : {
15408 0 : case CFN_BUILT_IN_FLOORF:
15409 0 : if (call_expr_nargs (_q81) == 1)
15410 : {
15411 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
15412 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
15413 : {
15414 0 : switch (TREE_CODE (_q110))
15415 : {
15416 0 : case SSA_NAME:
15417 0 : {
15418 0 : switch (TREE_CODE (_p1))
15419 : {
15420 0 : case CALL_EXPR:
15421 0 : switch (get_call_combined_fn (_p1))
15422 : {
15423 0 : case CFN_BUILT_IN_CEILF:
15424 0 : if (call_expr_nargs (_p1) == 1)
15425 : {
15426 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
15427 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
15428 : {
15429 0 : switch (TREE_CODE (_q140))
15430 : {
15431 0 : case SSA_NAME:
15432 0 : {
15433 0 : switch (TREE_CODE (_p2))
15434 : {
15435 0 : case CALL_EXPR:
15436 0 : switch (get_call_combined_fn (_p2))
15437 : {
15438 0 : case CFN_BUILT_IN_FLOORF:
15439 0 : if (call_expr_nargs (_p2) == 1)
15440 : {
15441 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
15442 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
15443 : {
15444 0 : switch (TREE_CODE (_q170))
15445 : {
15446 0 : case SSA_NAME:
15447 0 : {
15448 0 : {
15449 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
15450 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEILF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_CEILF);
15451 0 : if (res) return res;
15452 : }
15453 0 : break;
15454 : }
15455 : default:;
15456 : }
15457 : }
15458 : }
15459 : break;
15460 : default:;
15461 : }
15462 : break;
15463 : default:;
15464 : }
15465 : break;
15466 : }
15467 : default:;
15468 : }
15469 : }
15470 : }
15471 : break;
15472 : default:;
15473 : }
15474 : break;
15475 : default:;
15476 : }
15477 : break;
15478 : }
15479 : default:;
15480 : }
15481 : }
15482 : }
15483 : break;
15484 : default:;
15485 : }
15486 : break;
15487 : default:;
15488 : }
15489 : break;
15490 : }
15491 : default:;
15492 : }
15493 : }
15494 : break;
15495 : }
15496 : default:;
15497 : }
15498 : break;
15499 : }
15500 : default:;
15501 : }
15502 : }
15503 : break;
15504 : }
15505 : default:;
15506 : }
15507 : }
15508 : break;
15509 0 : case CFN_BUILT_IN_CEILL:
15510 0 : if (call_expr_nargs (_q30) == 1)
15511 : {
15512 0 : tree _q40 = CALL_EXPR_ARG (_q30, 0);
15513 0 : switch (TREE_CODE (_q40))
15514 : {
15515 0 : case SSA_NAME:
15516 0 : {
15517 0 : if ((_q31 == _q40 && ! TREE_SIDE_EFFECTS (_q31)) || (operand_equal_p (_q31, _q40, 0) && types_match (_q31, _q40)))
15518 : {
15519 0 : switch (TREE_CODE (_q31))
15520 : {
15521 0 : case SSA_NAME:
15522 0 : {
15523 0 : switch (TREE_CODE (_q21))
15524 : {
15525 0 : case MINUS_EXPR:
15526 0 : {
15527 0 : tree _q80 = TREE_OPERAND (_q21, 0);
15528 0 : tree _q81 = TREE_OPERAND (_q21, 1);
15529 0 : if ((_q80 == _q40 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q40, 0) && types_match (_q80, _q40)))
15530 : {
15531 0 : switch (TREE_CODE (_q80))
15532 : {
15533 0 : case SSA_NAME:
15534 0 : {
15535 0 : switch (TREE_CODE (_q81))
15536 : {
15537 0 : case CALL_EXPR:
15538 0 : switch (get_call_combined_fn (_q81))
15539 : {
15540 0 : case CFN_BUILT_IN_FLOORL:
15541 0 : if (call_expr_nargs (_q81) == 1)
15542 : {
15543 0 : tree _q110 = CALL_EXPR_ARG (_q81, 0);
15544 0 : if ((_q110 == _q40 && ! TREE_SIDE_EFFECTS (_q110)) || (operand_equal_p (_q110, _q40, 0) && types_match (_q110, _q40)))
15545 : {
15546 0 : switch (TREE_CODE (_q110))
15547 : {
15548 0 : case SSA_NAME:
15549 0 : {
15550 0 : switch (TREE_CODE (_p1))
15551 : {
15552 0 : case CALL_EXPR:
15553 0 : switch (get_call_combined_fn (_p1))
15554 : {
15555 0 : case CFN_BUILT_IN_CEILL:
15556 0 : if (call_expr_nargs (_p1) == 1)
15557 : {
15558 0 : tree _q140 = CALL_EXPR_ARG (_p1, 0);
15559 0 : if ((_q140 == _q40 && ! TREE_SIDE_EFFECTS (_q140)) || (operand_equal_p (_q140, _q40, 0) && types_match (_q140, _q40)))
15560 : {
15561 0 : switch (TREE_CODE (_q140))
15562 : {
15563 0 : case SSA_NAME:
15564 0 : {
15565 0 : switch (TREE_CODE (_p2))
15566 : {
15567 0 : case CALL_EXPR:
15568 0 : switch (get_call_combined_fn (_p2))
15569 : {
15570 0 : case CFN_BUILT_IN_FLOORL:
15571 0 : if (call_expr_nargs (_p2) == 1)
15572 : {
15573 0 : tree _q170 = CALL_EXPR_ARG (_p2, 0);
15574 0 : if ((_q170 == _q40 && ! TREE_SIDE_EFFECTS (_q170)) || (operand_equal_p (_q170, _q40, 0) && types_match (_q170, _q40)))
15575 : {
15576 0 : switch (TREE_CODE (_q170))
15577 : {
15578 0 : case SSA_NAME:
15579 0 : {
15580 0 : {
15581 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q40, _q20 };
15582 0 : tree res = generic_simplify_347 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, CFN_BUILT_IN_CEILL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_CEILL);
15583 0 : if (res) return res;
15584 : }
15585 0 : break;
15586 : }
15587 : default:;
15588 : }
15589 : }
15590 : }
15591 : break;
15592 : default:;
15593 : }
15594 : break;
15595 : default:;
15596 : }
15597 : break;
15598 : }
15599 : default:;
15600 : }
15601 : }
15602 : }
15603 : break;
15604 : default:;
15605 : }
15606 : break;
15607 : default:;
15608 : }
15609 : break;
15610 : }
15611 : default:;
15612 : }
15613 : }
15614 : }
15615 : break;
15616 : default:;
15617 : }
15618 : break;
15619 : default:;
15620 : }
15621 : break;
15622 : }
15623 : default:;
15624 : }
15625 : }
15626 : break;
15627 : }
15628 : default:;
15629 : }
15630 : break;
15631 : }
15632 : default:;
15633 : }
15634 : }
15635 : break;
15636 : }
15637 : default:;
15638 : }
15639 : }
15640 : break;
15641 : default:;
15642 : }
15643 : break;
15644 : default:;
15645 : }
15646 : break;
15647 : }
15648 1401399 : default:;
15649 : }
15650 1401399 : if (integer_zerop (_q21))
15651 : {
15652 125764 : switch (TREE_CODE (_p1))
15653 : {
15654 218 : case NEGATE_EXPR:
15655 218 : {
15656 218 : tree _q50 = TREE_OPERAND (_p1, 0);
15657 218 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15658 : {
15659 70 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
15660 : {
15661 70 : if (integer_zerop (_p2))
15662 : {
15663 70 : {
15664 70 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
15665 70 : if (ANY_INTEGRAL_TYPE_P (type) && TYPE_OVERFLOW_UNDEFINED (type)
15666 : )
15667 : {
15668 68 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1860;
15669 68 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1860;
15670 68 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1860;
15671 68 : {
15672 68 : tree res_op0;
15673 68 : res_op0 = captures[2];
15674 68 : tree res_op1;
15675 68 : res_op1 = captures[1];
15676 68 : tree _r;
15677 68 : _r = fold_build2_loc (loc, MAX_EXPR, type, res_op0, res_op1);
15678 68 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1050, __FILE__, __LINE__, true);
15679 68 : return _r;
15680 : }
15681 2 : next_after_fail1860:;
15682 : }
15683 : }
15684 : }
15685 : }
15686 : }
15687 : break;
15688 : }
15689 : default:;
15690 : }
15691 : }
15692 1401331 : switch (TREE_CODE (_q20))
15693 : {
15694 141561 : CASE_CONVERT:
15695 141561 : {
15696 141561 : tree _q30 = TREE_OPERAND (_q20, 0);
15697 141561 : switch (TREE_CODE (_q21))
15698 : {
15699 105446 : case INTEGER_CST:
15700 105446 : {
15701 105446 : switch (TREE_CODE (_p1))
15702 : {
15703 709 : CASE_CONVERT:
15704 709 : {
15705 709 : tree _q60 = TREE_OPERAND (_p1, 0);
15706 709 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
15707 : {
15708 8 : switch (TREE_CODE (_p2))
15709 : {
15710 8 : case INTEGER_CST:
15711 8 : {
15712 8 : {
15713 8 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
15714 8 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR);
15715 8 : if (res) return res;
15716 : }
15717 8 : break;
15718 : }
15719 : default:;
15720 : }
15721 : }
15722 : break;
15723 : }
15724 105446 : default:;
15725 : }
15726 105446 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
15727 : {
15728 21 : switch (TREE_CODE (_p2))
15729 : {
15730 21 : case INTEGER_CST:
15731 21 : {
15732 21 : {
15733 21 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
15734 21 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR);
15735 21 : if (res) return res;
15736 : }
15737 21 : break;
15738 : }
15739 : default:;
15740 : }
15741 : }
15742 105446 : switch (TREE_CODE (_p1))
15743 : {
15744 216 : case PLUS_EXPR:
15745 216 : {
15746 216 : tree _q60 = TREE_OPERAND (_p1, 0);
15747 216 : tree _q61 = TREE_OPERAND (_p1, 1);
15748 216 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
15749 : {
15750 6 : switch (TREE_CODE (_q61))
15751 : {
15752 6 : case INTEGER_CST:
15753 6 : {
15754 6 : switch (TREE_CODE (_p2))
15755 : {
15756 6 : case INTEGER_CST:
15757 6 : {
15758 6 : {
15759 6 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
15760 6 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, PLUS_EXPR);
15761 6 : if (res) return res;
15762 : }
15763 6 : break;
15764 : }
15765 : default:;
15766 : }
15767 : break;
15768 : }
15769 : default:;
15770 : }
15771 : }
15772 : break;
15773 : }
15774 699 : case MINUS_EXPR:
15775 699 : {
15776 699 : tree _q60 = TREE_OPERAND (_p1, 0);
15777 699 : tree _q61 = TREE_OPERAND (_p1, 1);
15778 699 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
15779 : {
15780 0 : switch (TREE_CODE (_q61))
15781 : {
15782 0 : case INTEGER_CST:
15783 0 : {
15784 0 : switch (TREE_CODE (_p2))
15785 : {
15786 0 : case INTEGER_CST:
15787 0 : {
15788 0 : {
15789 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q21, _q61, _p2 };
15790 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MINUS_EXPR);
15791 0 : if (res) return res;
15792 : }
15793 0 : break;
15794 : }
15795 : default:;
15796 : }
15797 : break;
15798 : }
15799 : default:;
15800 : }
15801 : }
15802 : break;
15803 : }
15804 : default:;
15805 : }
15806 : break;
15807 : }
15808 : default:;
15809 : }
15810 : break;
15811 : }
15812 1401331 : default:;
15813 : }
15814 1401331 : switch (TREE_CODE (_q21))
15815 : {
15816 1004658 : case INTEGER_CST:
15817 1004658 : {
15818 1004658 : switch (TREE_CODE (_p1))
15819 : {
15820 24947 : CASE_CONVERT:
15821 24947 : {
15822 24947 : tree _q50 = TREE_OPERAND (_p1, 0);
15823 24947 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15824 : {
15825 228 : switch (TREE_CODE (_p2))
15826 : {
15827 210 : case INTEGER_CST:
15828 210 : {
15829 210 : {
15830 210 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
15831 210 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR);
15832 210 : if (res) return res;
15833 : }
15834 110 : break;
15835 : }
15836 : default:;
15837 : }
15838 : }
15839 : break;
15840 : }
15841 1004558 : default:;
15842 : }
15843 1004558 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
15844 : {
15845 289 : switch (TREE_CODE (_p2))
15846 : {
15847 252 : case INTEGER_CST:
15848 252 : {
15849 252 : {
15850 252 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
15851 252 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, LE_EXPR);
15852 252 : if (res) return res;
15853 : }
15854 107 : break;
15855 : }
15856 : default:;
15857 : }
15858 : }
15859 1004413 : switch (TREE_CODE (_p1))
15860 : {
15861 3021 : case PLUS_EXPR:
15862 3021 : {
15863 3021 : tree _q50 = TREE_OPERAND (_p1, 0);
15864 3021 : tree _q51 = TREE_OPERAND (_p1, 1);
15865 3021 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15866 : {
15867 203 : switch (TREE_CODE (_q51))
15868 : {
15869 203 : case INTEGER_CST:
15870 203 : {
15871 203 : switch (TREE_CODE (_p2))
15872 : {
15873 184 : case INTEGER_CST:
15874 184 : {
15875 184 : {
15876 184 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
15877 184 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, PLUS_EXPR);
15878 184 : if (res) return res;
15879 : }
15880 182 : break;
15881 : }
15882 : default:;
15883 : }
15884 : break;
15885 : }
15886 : default:;
15887 : }
15888 : }
15889 : break;
15890 : }
15891 7227 : case MINUS_EXPR:
15892 7227 : {
15893 7227 : tree _q50 = TREE_OPERAND (_p1, 0);
15894 7227 : tree _q51 = TREE_OPERAND (_p1, 1);
15895 7227 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15896 : {
15897 0 : switch (TREE_CODE (_q51))
15898 : {
15899 0 : case INTEGER_CST:
15900 0 : {
15901 0 : switch (TREE_CODE (_p2))
15902 : {
15903 0 : case INTEGER_CST:
15904 0 : {
15905 0 : {
15906 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _p2 };
15907 0 : tree res = generic_simplify_349 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MINUS_EXPR);
15908 0 : if (res) return res;
15909 : }
15910 0 : break;
15911 : }
15912 : default:;
15913 : }
15914 : break;
15915 : }
15916 : default:;
15917 : }
15918 : }
15919 : break;
15920 : }
15921 : default:;
15922 : }
15923 : break;
15924 : }
15925 1401084 : default:;
15926 : }
15927 1401084 : switch (TREE_CODE (_p1))
15928 : {
15929 46 : case MIN_EXPR:
15930 46 : {
15931 46 : tree _q50 = TREE_OPERAND (_p1, 0);
15932 46 : tree _q51 = TREE_OPERAND (_p1, 1);
15933 46 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
15934 : {
15935 1 : switch (TREE_CODE (_p2))
15936 : {
15937 0 : case MIN_EXPR:
15938 0 : {
15939 0 : tree _q80 = TREE_OPERAND (_p2, 0);
15940 0 : tree _q81 = TREE_OPERAND (_p2, 1);
15941 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
15942 : {
15943 0 : {
15944 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
15945 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
15946 0 : if (res) return res;
15947 : }
15948 : }
15949 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
15950 : {
15951 0 : {
15952 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
15953 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
15954 0 : if (res) return res;
15955 : }
15956 : }
15957 : break;
15958 : }
15959 : default:;
15960 : }
15961 : }
15962 46 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
15963 : {
15964 10 : switch (TREE_CODE (_p2))
15965 : {
15966 9 : case MIN_EXPR:
15967 9 : {
15968 9 : tree _q80 = TREE_OPERAND (_p2, 0);
15969 9 : tree _q81 = TREE_OPERAND (_p2, 1);
15970 9 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
15971 : {
15972 0 : {
15973 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
15974 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
15975 0 : if (res) return res;
15976 : }
15977 : }
15978 9 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
15979 : {
15980 9 : {
15981 9 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
15982 9 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MIN_EXPR);
15983 9 : if (res) return res;
15984 : }
15985 : }
15986 : break;
15987 : }
15988 : default:;
15989 : }
15990 : }
15991 45 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
15992 : {
15993 1 : switch (TREE_CODE (_p2))
15994 : {
15995 0 : case MIN_EXPR:
15996 0 : {
15997 0 : tree _q80 = TREE_OPERAND (_p2, 0);
15998 0 : tree _q81 = TREE_OPERAND (_p2, 1);
15999 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
16000 : {
16001 0 : {
16002 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
16003 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
16004 0 : if (res) return res;
16005 : }
16006 : }
16007 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
16008 : {
16009 0 : {
16010 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
16011 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
16012 0 : if (res) return res;
16013 : }
16014 : }
16015 : break;
16016 : }
16017 1 : default:;
16018 : }
16019 1 : {
16020 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q51, _p2 };
16021 1 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
16022 1 : if (res) return res;
16023 : }
16024 : }
16025 44 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
16026 : {
16027 1 : switch (TREE_CODE (_p2))
16028 : {
16029 0 : case MIN_EXPR:
16030 0 : {
16031 0 : tree _q80 = TREE_OPERAND (_p2, 0);
16032 0 : tree _q81 = TREE_OPERAND (_p2, 1);
16033 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
16034 : {
16035 0 : {
16036 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
16037 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
16038 0 : if (res) return res;
16039 : }
16040 : }
16041 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
16042 : {
16043 0 : {
16044 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
16045 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
16046 0 : if (res) return res;
16047 : }
16048 : }
16049 : break;
16050 : }
16051 1 : default:;
16052 : }
16053 1 : {
16054 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q50, _p2 };
16055 1 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MIN_EXPR);
16056 1 : if (res) return res;
16057 : }
16058 : }
16059 : break;
16060 : }
16061 12 : case MAX_EXPR:
16062 12 : {
16063 12 : tree _q50 = TREE_OPERAND (_p1, 0);
16064 12 : tree _q51 = TREE_OPERAND (_p1, 1);
16065 12 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
16066 : {
16067 0 : switch (TREE_CODE (_p2))
16068 : {
16069 0 : case MAX_EXPR:
16070 0 : {
16071 0 : tree _q80 = TREE_OPERAND (_p2, 0);
16072 0 : tree _q81 = TREE_OPERAND (_p2, 1);
16073 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
16074 : {
16075 0 : {
16076 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
16077 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
16078 0 : if (res) return res;
16079 : }
16080 : }
16081 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
16082 : {
16083 0 : {
16084 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
16085 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
16086 0 : if (res) return res;
16087 : }
16088 : }
16089 : break;
16090 : }
16091 0 : default:;
16092 : }
16093 0 : {
16094 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q51, _p2 };
16095 0 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
16096 0 : if (res) return res;
16097 : }
16098 : }
16099 12 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
16100 : {
16101 0 : switch (TREE_CODE (_p2))
16102 : {
16103 0 : case MAX_EXPR:
16104 0 : {
16105 0 : tree _q80 = TREE_OPERAND (_p2, 0);
16106 0 : tree _q81 = TREE_OPERAND (_p2, 1);
16107 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
16108 : {
16109 0 : {
16110 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
16111 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
16112 0 : if (res) return res;
16113 : }
16114 : }
16115 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
16116 : {
16117 0 : {
16118 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
16119 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
16120 0 : if (res) return res;
16121 : }
16122 : }
16123 : break;
16124 : }
16125 : default:;
16126 : }
16127 : }
16128 12 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
16129 : {
16130 0 : switch (TREE_CODE (_p2))
16131 : {
16132 0 : case MAX_EXPR:
16133 0 : {
16134 0 : tree _q80 = TREE_OPERAND (_p2, 0);
16135 0 : tree _q81 = TREE_OPERAND (_p2, 1);
16136 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
16137 : {
16138 0 : {
16139 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
16140 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
16141 0 : if (res) return res;
16142 : }
16143 : }
16144 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
16145 : {
16146 0 : {
16147 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
16148 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
16149 0 : if (res) return res;
16150 : }
16151 : }
16152 : break;
16153 : }
16154 : default:;
16155 : }
16156 : }
16157 12 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
16158 : {
16159 0 : switch (TREE_CODE (_p2))
16160 : {
16161 0 : case MAX_EXPR:
16162 0 : {
16163 0 : tree _q80 = TREE_OPERAND (_p2, 0);
16164 0 : tree _q81 = TREE_OPERAND (_p2, 1);
16165 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
16166 : {
16167 0 : {
16168 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
16169 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
16170 0 : if (res) return res;
16171 : }
16172 : }
16173 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
16174 : {
16175 0 : {
16176 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
16177 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
16178 0 : if (res) return res;
16179 : }
16180 : }
16181 : break;
16182 : }
16183 : default:;
16184 : }
16185 : }
16186 12 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
16187 : {
16188 0 : {
16189 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
16190 0 : tree res = generic_simplify_351 (loc, type, _p0, _p1, _p2, captures, LE_EXPR, MAX_EXPR);
16191 0 : if (res) return res;
16192 : }
16193 : }
16194 : break;
16195 : }
16196 1401081 : default:;
16197 : }
16198 1401081 : if (integer_zerop (_q20))
16199 : {
16200 2 : {
16201 2 : tree _q21_pops[1];
16202 2 : if (tree_nop_convert (_q21, _q21_pops))
16203 : {
16204 0 : tree _q40 = _q21_pops[0];
16205 0 : switch (TREE_CODE (_p1))
16206 : {
16207 0 : case MAX_EXPR:
16208 0 : {
16209 0 : tree _q60 = TREE_OPERAND (_p1, 0);
16210 0 : tree _q61 = TREE_OPERAND (_p1, 1);
16211 0 : if ((_q60 == _q40 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q40, 0) && types_match (_q60, _q40)))
16212 : {
16213 0 : switch (TREE_CODE (_q61))
16214 : {
16215 0 : case INTEGER_CST:
16216 0 : {
16217 0 : switch (TREE_CODE (_p2))
16218 : {
16219 0 : case INTEGER_CST:
16220 0 : {
16221 0 : {
16222 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q40, _q20, _p1, _q61, _p2 };
16223 0 : tree res = generic_simplify_352 (loc, type, _p0, _p1, _p2, captures, GE_EXPR, MAX_EXPR);
16224 0 : if (res) return res;
16225 : }
16226 0 : break;
16227 : }
16228 : default:;
16229 : }
16230 : break;
16231 : }
16232 : default:;
16233 : }
16234 : }
16235 : break;
16236 : }
16237 : default:;
16238 : }
16239 : }
16240 : }
16241 : }
16242 1401081 : if (tree_expr_nonnegative_p (_q20))
16243 : {
16244 894734 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
16245 : {
16246 12 : switch (TREE_CODE (_p2))
16247 : {
16248 0 : case ABS_EXPR:
16249 0 : {
16250 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16251 0 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
16252 : {
16253 0 : {
16254 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p2 };
16255 0 : tree res = generic_simplify_354 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
16256 0 : if (res) return res;
16257 : }
16258 : }
16259 : break;
16260 : }
16261 : default:;
16262 : }
16263 : }
16264 894734 : switch (TREE_CODE (_p1))
16265 : {
16266 0 : case ABS_EXPR:
16267 0 : {
16268 0 : tree _q50 = TREE_OPERAND (_p1, 0);
16269 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
16270 : {
16271 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
16272 : {
16273 0 : {
16274 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q21, _q20 };
16275 0 : tree res = generic_simplify_355 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
16276 0 : if (res) return res;
16277 : }
16278 : }
16279 : }
16280 : break;
16281 : }
16282 : default:;
16283 : }
16284 : }
16285 : break;
16286 : }
16287 1788406 : case EQ_EXPR:
16288 1788406 : {
16289 1788406 : tree _q20 = TREE_OPERAND (_p0, 0);
16290 1788406 : tree _q21 = TREE_OPERAND (_p0, 1);
16291 1788406 : if (tree_zero_one_valued_p (_q20))
16292 : {
16293 169508 : if (integer_zerop (_q21))
16294 : {
16295 1203 : switch (TREE_CODE (_p2))
16296 : {
16297 1 : case BIT_XOR_EXPR:
16298 1 : {
16299 1 : tree _q60 = TREE_OPERAND (_p2, 0);
16300 1 : tree _q61 = TREE_OPERAND (_p2, 1);
16301 1 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16302 : {
16303 1 : {
16304 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q60 };
16305 1 : tree res = generic_simplify_356 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
16306 1 : if (res) return res;
16307 : }
16308 : }
16309 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16310 : {
16311 0 : {
16312 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q61 };
16313 0 : tree res = generic_simplify_356 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
16314 0 : if (res) return res;
16315 : }
16316 : }
16317 : break;
16318 : }
16319 1 : case BIT_IOR_EXPR:
16320 1 : {
16321 1 : tree _q60 = TREE_OPERAND (_p2, 0);
16322 1 : tree _q61 = TREE_OPERAND (_p2, 1);
16323 1 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16324 : {
16325 1 : {
16326 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q60 };
16327 1 : tree res = generic_simplify_356 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
16328 1 : if (res) return res;
16329 : }
16330 : }
16331 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16332 : {
16333 0 : {
16334 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q61 };
16335 0 : tree res = generic_simplify_356 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
16336 0 : if (res) return res;
16337 : }
16338 : }
16339 : break;
16340 : }
16341 1 : case PLUS_EXPR:
16342 1 : {
16343 1 : tree _q60 = TREE_OPERAND (_p2, 0);
16344 1 : tree _q61 = TREE_OPERAND (_p2, 1);
16345 1 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16346 : {
16347 1 : {
16348 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q60 };
16349 1 : tree res = generic_simplify_356 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
16350 1 : if (res) return res;
16351 : }
16352 : }
16353 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16354 : {
16355 0 : {
16356 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _q61 };
16357 0 : tree res = generic_simplify_356 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
16358 0 : if (res) return res;
16359 : }
16360 : }
16361 : break;
16362 : }
16363 : default:;
16364 : }
16365 : }
16366 : }
16367 1788403 : if (integer_zerop (_q21))
16368 : {
16369 591513 : switch (TREE_CODE (_p2))
16370 : {
16371 24509 : case PLUS_EXPR:
16372 24509 : {
16373 24509 : tree _q60 = TREE_OPERAND (_p2, 0);
16374 24509 : tree _q61 = TREE_OPERAND (_p2, 1);
16375 24509 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16376 : {
16377 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16378 : {
16379 0 : {
16380 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16381 0 : tree res = generic_simplify_357 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
16382 0 : if (res) return res;
16383 : }
16384 : }
16385 : }
16386 24509 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16387 : {
16388 2011 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16389 : {
16390 0 : {
16391 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16392 0 : tree res = generic_simplify_357 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
16393 0 : if (res) return res;
16394 : }
16395 : }
16396 : }
16397 : break;
16398 : }
16399 108 : case BIT_IOR_EXPR:
16400 108 : {
16401 108 : tree _q60 = TREE_OPERAND (_p2, 0);
16402 108 : tree _q61 = TREE_OPERAND (_p2, 1);
16403 108 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16404 : {
16405 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16406 : {
16407 0 : {
16408 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16409 0 : tree res = generic_simplify_357 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
16410 0 : if (res) return res;
16411 : }
16412 : }
16413 : }
16414 108 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16415 : {
16416 0 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16417 : {
16418 0 : {
16419 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16420 0 : tree res = generic_simplify_357 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
16421 0 : if (res) return res;
16422 : }
16423 : }
16424 : }
16425 : break;
16426 : }
16427 0 : case BIT_XOR_EXPR:
16428 0 : {
16429 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16430 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16431 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16432 : {
16433 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16434 : {
16435 0 : {
16436 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16437 0 : tree res = generic_simplify_357 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
16438 0 : if (res) return res;
16439 : }
16440 : }
16441 : }
16442 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16443 : {
16444 0 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16445 : {
16446 0 : {
16447 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16448 0 : tree res = generic_simplify_357 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
16449 0 : if (res) return res;
16450 : }
16451 : }
16452 : }
16453 : break;
16454 : }
16455 1 : case LROTATE_EXPR:
16456 1 : {
16457 1 : tree _q60 = TREE_OPERAND (_p2, 0);
16458 1 : tree _q61 = TREE_OPERAND (_p2, 1);
16459 1 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16460 : {
16461 1 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16462 : {
16463 1 : {
16464 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16465 1 : tree res = generic_simplify_358 (loc, type, _p0, _p1, _p2, captures);
16466 1 : if (res) return res;
16467 : }
16468 : }
16469 : }
16470 : break;
16471 : }
16472 0 : case RROTATE_EXPR:
16473 0 : {
16474 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16475 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16476 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16477 : {
16478 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16479 : {
16480 0 : {
16481 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16482 0 : tree res = generic_simplify_358 (loc, type, _p0, _p1, _p2, captures);
16483 0 : if (res) return res;
16484 : }
16485 : }
16486 : }
16487 : break;
16488 : }
16489 48 : case LSHIFT_EXPR:
16490 48 : {
16491 48 : tree _q60 = TREE_OPERAND (_p2, 0);
16492 48 : tree _q61 = TREE_OPERAND (_p2, 1);
16493 48 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16494 : {
16495 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16496 : {
16497 0 : {
16498 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16499 0 : tree res = generic_simplify_358 (loc, type, _p0, _p1, _p2, captures);
16500 0 : if (res) return res;
16501 : }
16502 : }
16503 : }
16504 : break;
16505 : }
16506 46 : case RSHIFT_EXPR:
16507 46 : {
16508 46 : tree _q60 = TREE_OPERAND (_p2, 0);
16509 46 : tree _q61 = TREE_OPERAND (_p2, 1);
16510 46 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16511 : {
16512 20 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16513 : {
16514 20 : {
16515 20 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16516 20 : tree res = generic_simplify_358 (loc, type, _p0, _p1, _p2, captures);
16517 20 : if (res) return res;
16518 : }
16519 : }
16520 : }
16521 : break;
16522 : }
16523 198 : case MINUS_EXPR:
16524 198 : {
16525 198 : tree _q60 = TREE_OPERAND (_p2, 0);
16526 198 : tree _q61 = TREE_OPERAND (_p2, 1);
16527 198 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16528 : {
16529 7 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16530 : {
16531 0 : {
16532 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16533 0 : tree res = generic_simplify_358 (loc, type, _p0, _p1, _p2, captures);
16534 0 : if (res) return res;
16535 : }
16536 : }
16537 : }
16538 : break;
16539 : }
16540 155800 : case POINTER_PLUS_EXPR:
16541 155800 : {
16542 155800 : tree _q60 = TREE_OPERAND (_p2, 0);
16543 155800 : tree _q61 = TREE_OPERAND (_p2, 1);
16544 155800 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16545 : {
16546 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16547 : {
16548 0 : {
16549 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16550 0 : tree res = generic_simplify_358 (loc, type, _p0, _p1, _p2, captures);
16551 0 : if (res) return res;
16552 : }
16553 : }
16554 : }
16555 : break;
16556 : }
16557 : default:;
16558 : }
16559 : }
16560 1788382 : if (integer_onep (_q21))
16561 : {
16562 49196 : switch (TREE_CODE (_p2))
16563 : {
16564 107 : case TRUNC_DIV_EXPR:
16565 107 : {
16566 107 : tree _q60 = TREE_OPERAND (_p2, 0);
16567 107 : tree _q61 = TREE_OPERAND (_p2, 1);
16568 107 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16569 : {
16570 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16571 : {
16572 0 : {
16573 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16574 0 : tree res = generic_simplify_359 (loc, type, _p0, _p1, _p2, captures, TRUNC_DIV_EXPR);
16575 0 : if (res) return res;
16576 : }
16577 : }
16578 : }
16579 : break;
16580 : }
16581 0 : case CEIL_DIV_EXPR:
16582 0 : {
16583 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16584 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16585 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16586 : {
16587 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16588 : {
16589 0 : {
16590 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16591 0 : tree res = generic_simplify_359 (loc, type, _p0, _p1, _p2, captures, CEIL_DIV_EXPR);
16592 0 : if (res) return res;
16593 : }
16594 : }
16595 : }
16596 : break;
16597 : }
16598 0 : case FLOOR_DIV_EXPR:
16599 0 : {
16600 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16601 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16602 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16603 : {
16604 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16605 : {
16606 0 : {
16607 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16608 0 : tree res = generic_simplify_359 (loc, type, _p0, _p1, _p2, captures, FLOOR_DIV_EXPR);
16609 0 : if (res) return res;
16610 : }
16611 : }
16612 : }
16613 : break;
16614 : }
16615 0 : case ROUND_DIV_EXPR:
16616 0 : {
16617 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16618 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16619 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16620 : {
16621 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16622 : {
16623 0 : {
16624 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16625 0 : tree res = generic_simplify_359 (loc, type, _p0, _p1, _p2, captures, ROUND_DIV_EXPR);
16626 0 : if (res) return res;
16627 : }
16628 : }
16629 : }
16630 : break;
16631 : }
16632 0 : case EXACT_DIV_EXPR:
16633 0 : {
16634 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16635 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16636 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16637 : {
16638 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16639 : {
16640 0 : {
16641 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16642 0 : tree res = generic_simplify_359 (loc, type, _p0, _p1, _p2, captures, EXACT_DIV_EXPR);
16643 0 : if (res) return res;
16644 : }
16645 : }
16646 : }
16647 : break;
16648 : }
16649 0 : case MULT_EXPR:
16650 0 : {
16651 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16652 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16653 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16654 : {
16655 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16656 : {
16657 0 : {
16658 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16659 0 : tree res = generic_simplify_360 (loc, type, _p0, _p1, _p2, captures, MULT_EXPR);
16660 0 : if (res) return res;
16661 : }
16662 : }
16663 : }
16664 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16665 : {
16666 0 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16667 : {
16668 0 : {
16669 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16670 0 : tree res = generic_simplify_360 (loc, type, _p0, _p1, _p2, captures, MULT_EXPR);
16671 0 : if (res) return res;
16672 : }
16673 : }
16674 : }
16675 : break;
16676 : }
16677 : default:;
16678 : }
16679 : }
16680 1788382 : if (integer_all_onesp (_q21))
16681 : {
16682 50110 : switch (TREE_CODE (_p2))
16683 : {
16684 0 : case BIT_AND_EXPR:
16685 0 : {
16686 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16687 0 : tree _q61 = TREE_OPERAND (_p2, 1);
16688 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
16689 : {
16690 0 : if ((_q61 == _q20 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _q20, 0) && types_match (_q61, _q20)))
16691 : {
16692 0 : {
16693 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16694 0 : tree res = generic_simplify_361 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
16695 0 : if (res) return res;
16696 : }
16697 : }
16698 : }
16699 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16700 : {
16701 0 : if ((_q61 == _p1 && ! TREE_SIDE_EFFECTS (_q61)) || (operand_equal_p (_q61, _p1, 0) && types_match (_q61, _p1)))
16702 : {
16703 0 : {
16704 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
16705 0 : tree res = generic_simplify_361 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
16706 0 : if (res) return res;
16707 : }
16708 : }
16709 : }
16710 : break;
16711 : }
16712 : default:;
16713 : }
16714 : }
16715 1788382 : switch (TREE_CODE (_q20))
16716 : {
16717 114531 : case BIT_AND_EXPR:
16718 114531 : {
16719 114531 : tree _q30 = TREE_OPERAND (_q20, 0);
16720 114531 : tree _q31 = TREE_OPERAND (_q20, 1);
16721 114531 : switch (TREE_CODE (_q31))
16722 : {
16723 114275 : case INTEGER_CST:
16724 114275 : {
16725 114275 : if (integer_zerop (_q21))
16726 : {
16727 1794 : switch (TREE_CODE (_p1))
16728 : {
16729 0 : case BIT_IOR_EXPR:
16730 0 : {
16731 0 : tree _q70 = TREE_OPERAND (_p1, 0);
16732 0 : tree _q71 = TREE_OPERAND (_p1, 1);
16733 0 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
16734 : {
16735 0 : if ((_q71 == _q31 && ! TREE_SIDE_EFFECTS (_q71)) || (operand_equal_p (_q71, _q31, 0) && types_match (_q71, _q31)))
16736 : {
16737 0 : switch (TREE_CODE (_q71))
16738 : {
16739 0 : case INTEGER_CST:
16740 0 : {
16741 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
16742 : {
16743 0 : {
16744 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
16745 0 : if (wi::popcount (wi::to_wide (captures[1])) == 1
16746 : )
16747 : {
16748 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1861;
16749 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1861;
16750 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1861;
16751 0 : {
16752 0 : tree _r;
16753 0 : _r = captures[2];
16754 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1051, __FILE__, __LINE__, true);
16755 0 : return _r;
16756 : }
16757 0 : next_after_fail1861:;
16758 : }
16759 : }
16760 : }
16761 : break;
16762 : }
16763 : default:;
16764 : }
16765 : }
16766 : }
16767 : break;
16768 : }
16769 : default:;
16770 : }
16771 : }
16772 : break;
16773 : }
16774 : default:;
16775 : }
16776 : break;
16777 : }
16778 68396 : CASE_CONVERT:
16779 68396 : {
16780 68396 : tree _q30 = TREE_OPERAND (_q20, 0);
16781 68396 : switch (TREE_CODE (_q21))
16782 : {
16783 26553 : case INTEGER_CST:
16784 26553 : {
16785 26553 : switch (TREE_CODE (_p1))
16786 : {
16787 12648 : CASE_CONVERT:
16788 12648 : {
16789 12648 : tree _q60 = TREE_OPERAND (_p1, 0);
16790 12648 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
16791 : {
16792 57 : switch (TREE_CODE (_p2))
16793 : {
16794 56 : case INTEGER_CST:
16795 56 : {
16796 56 : {
16797 56 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
16798 56 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16799 56 : if (res) return res;
16800 : }
16801 56 : break;
16802 : }
16803 : default:;
16804 : }
16805 : }
16806 : break;
16807 : }
16808 26553 : default:;
16809 : }
16810 26553 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
16811 : {
16812 118 : switch (TREE_CODE (_p2))
16813 : {
16814 112 : case INTEGER_CST:
16815 112 : {
16816 112 : {
16817 112 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
16818 112 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16819 112 : if (res) return res;
16820 : }
16821 112 : break;
16822 : }
16823 : default:;
16824 : }
16825 : }
16826 : break;
16827 : }
16828 : default:;
16829 : }
16830 : break;
16831 : }
16832 1788382 : default:;
16833 : }
16834 1788382 : switch (TREE_CODE (_q21))
16835 : {
16836 944102 : case INTEGER_CST:
16837 944102 : {
16838 944102 : switch (TREE_CODE (_p1))
16839 : {
16840 212841 : CASE_CONVERT:
16841 212841 : {
16842 212841 : tree _q50 = TREE_OPERAND (_p1, 0);
16843 212841 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
16844 : {
16845 324 : switch (TREE_CODE (_p2))
16846 : {
16847 7 : case INTEGER_CST:
16848 7 : {
16849 7 : {
16850 7 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
16851 7 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16852 7 : if (res) return res;
16853 : }
16854 0 : break;
16855 : }
16856 : default:;
16857 : }
16858 : }
16859 : break;
16860 : }
16861 944095 : default:;
16862 : }
16863 944095 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
16864 : {
16865 61 : switch (TREE_CODE (_p2))
16866 : {
16867 5 : case INTEGER_CST:
16868 5 : {
16869 5 : {
16870 5 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
16871 5 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16872 5 : if (res) return res;
16873 : }
16874 0 : break;
16875 : }
16876 : default:;
16877 : }
16878 : }
16879 : break;
16880 : }
16881 1788370 : default:;
16882 : }
16883 1788370 : if (tree_expr_nonnegative_p (_q21))
16884 : {
16885 1628027 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
16886 : {
16887 83 : switch (TREE_CODE (_p2))
16888 : {
16889 0 : case ABS_EXPR:
16890 0 : {
16891 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16892 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16893 : {
16894 0 : {
16895 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
16896 0 : tree res = generic_simplify_354 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16897 0 : if (res) return res;
16898 : }
16899 : }
16900 : break;
16901 : }
16902 : default:;
16903 : }
16904 : }
16905 : }
16906 1788370 : if (tree_expr_nonnegative_p (_q20))
16907 : {
16908 1069788 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
16909 : {
16910 24141 : switch (TREE_CODE (_p2))
16911 : {
16912 0 : case ABS_EXPR:
16913 0 : {
16914 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16915 0 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
16916 : {
16917 0 : {
16918 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p2 };
16919 0 : tree res = generic_simplify_354 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
16920 0 : if (res) return res;
16921 : }
16922 : }
16923 : break;
16924 : }
16925 : default:;
16926 : }
16927 : }
16928 1069788 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
16929 : {
16930 25 : switch (TREE_CODE (_p2))
16931 : {
16932 0 : case ABS_EXPR:
16933 0 : {
16934 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16935 0 : if ((_q60 == _q21 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q21, 0) && types_match (_q60, _q21)))
16936 : {
16937 0 : {
16938 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p2 };
16939 0 : tree res = generic_simplify_362 (loc, type, _p0, _p1, _p2, captures);
16940 0 : if (res) return res;
16941 : }
16942 : }
16943 : break;
16944 : }
16945 : default:;
16946 : }
16947 : }
16948 : }
16949 1788370 : if (tree_expr_nonnegative_p (_q21))
16950 : {
16951 1628027 : if ((_p1 == _q21 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q21, 0) && types_match (_p1, _q21)))
16952 : {
16953 24513 : switch (TREE_CODE (_p2))
16954 : {
16955 0 : case ABS_EXPR:
16956 0 : {
16957 0 : tree _q60 = TREE_OPERAND (_p2, 0);
16958 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
16959 : {
16960 0 : {
16961 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
16962 0 : tree res = generic_simplify_362 (loc, type, _p0, _p1, _p2, captures);
16963 0 : if (res) return res;
16964 : }
16965 : }
16966 : break;
16967 : }
16968 : default:;
16969 : }
16970 : }
16971 : }
16972 : break;
16973 : }
16974 2932792 : case NE_EXPR:
16975 2932792 : {
16976 2932792 : tree _q20 = TREE_OPERAND (_p0, 0);
16977 2932792 : tree _q21 = TREE_OPERAND (_p0, 1);
16978 2932792 : if (tree_zero_one_valued_p (_q20))
16979 : {
16980 163301 : if (integer_zerop (_q21))
16981 : {
16982 161525 : switch (TREE_CODE (_p1))
16983 : {
16984 5 : case BIT_XOR_EXPR:
16985 5 : {
16986 5 : tree _q50 = TREE_OPERAND (_p1, 0);
16987 5 : tree _q51 = TREE_OPERAND (_p1, 1);
16988 5 : if ((_p2 == _q51 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q51, 0) && types_match (_p2, _q51)))
16989 : {
16990 1 : {
16991 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q50, _q51 };
16992 1 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
16993 1 : if (res) return res;
16994 : }
16995 : }
16996 4 : if ((_p2 == _q50 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q50, 0) && types_match (_p2, _q50)))
16997 : {
16998 4 : {
16999 4 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q51, _q50 };
17000 4 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, BIT_XOR_EXPR);
17001 4 : if (res) return res;
17002 : }
17003 : }
17004 : break;
17005 : }
17006 1 : case BIT_IOR_EXPR:
17007 1 : {
17008 1 : tree _q50 = TREE_OPERAND (_p1, 0);
17009 1 : tree _q51 = TREE_OPERAND (_p1, 1);
17010 1 : if ((_p2 == _q51 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q51, 0) && types_match (_p2, _q51)))
17011 : {
17012 1 : {
17013 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q50, _q51 };
17014 1 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
17015 1 : if (res) return res;
17016 : }
17017 : }
17018 0 : if ((_p2 == _q50 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q50, 0) && types_match (_p2, _q50)))
17019 : {
17020 0 : {
17021 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q51, _q50 };
17022 0 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
17023 0 : if (res) return res;
17024 : }
17025 : }
17026 : break;
17027 : }
17028 110 : case PLUS_EXPR:
17029 110 : {
17030 110 : tree _q50 = TREE_OPERAND (_p1, 0);
17031 110 : tree _q51 = TREE_OPERAND (_p1, 1);
17032 110 : if ((_p2 == _q51 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q51, 0) && types_match (_p2, _q51)))
17033 : {
17034 8 : {
17035 8 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q50, _q51 };
17036 8 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
17037 8 : if (res) return res;
17038 : }
17039 : }
17040 109 : if ((_p2 == _q50 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q50, 0) && types_match (_p2, _q50)))
17041 : {
17042 1 : {
17043 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q51, _q50 };
17044 1 : tree res = generic_simplify_363 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
17045 1 : if (res) return res;
17046 : }
17047 : }
17048 : break;
17049 : }
17050 : default:;
17051 : }
17052 : }
17053 : }
17054 2932784 : if (integer_zerop (_q21))
17055 : {
17056 1937735 : switch (TREE_CODE (_p1))
17057 : {
17058 96 : case TRUNC_DIV_EXPR:
17059 96 : {
17060 96 : tree _q50 = TREE_OPERAND (_p1, 0);
17061 96 : tree _q51 = TREE_OPERAND (_p1, 1);
17062 96 : if (integer_zerop (_p2))
17063 : {
17064 58 : {
17065 58 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
17066 58 : tree res = generic_simplify_364 (loc, type, _p0, _p1, _p2, captures, TRUNC_DIV_EXPR);
17067 58 : if (res) return res;
17068 : }
17069 : }
17070 : break;
17071 : }
17072 0 : case CEIL_DIV_EXPR:
17073 0 : {
17074 0 : tree _q50 = TREE_OPERAND (_p1, 0);
17075 0 : tree _q51 = TREE_OPERAND (_p1, 1);
17076 0 : if (integer_zerop (_p2))
17077 : {
17078 0 : {
17079 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
17080 0 : tree res = generic_simplify_364 (loc, type, _p0, _p1, _p2, captures, CEIL_DIV_EXPR);
17081 0 : if (res) return res;
17082 : }
17083 : }
17084 : break;
17085 : }
17086 0 : case FLOOR_DIV_EXPR:
17087 0 : {
17088 0 : tree _q50 = TREE_OPERAND (_p1, 0);
17089 0 : tree _q51 = TREE_OPERAND (_p1, 1);
17090 0 : if (integer_zerop (_p2))
17091 : {
17092 0 : {
17093 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
17094 0 : tree res = generic_simplify_364 (loc, type, _p0, _p1, _p2, captures, FLOOR_DIV_EXPR);
17095 0 : if (res) return res;
17096 : }
17097 : }
17098 : break;
17099 : }
17100 0 : case ROUND_DIV_EXPR:
17101 0 : {
17102 0 : tree _q50 = TREE_OPERAND (_p1, 0);
17103 0 : tree _q51 = TREE_OPERAND (_p1, 1);
17104 0 : if (integer_zerop (_p2))
17105 : {
17106 0 : {
17107 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
17108 0 : tree res = generic_simplify_364 (loc, type, _p0, _p1, _p2, captures, ROUND_DIV_EXPR);
17109 0 : if (res) return res;
17110 : }
17111 : }
17112 : break;
17113 : }
17114 31 : case EXACT_DIV_EXPR:
17115 31 : {
17116 31 : tree _q50 = TREE_OPERAND (_p1, 0);
17117 31 : tree _q51 = TREE_OPERAND (_p1, 1);
17118 31 : if (integer_zerop (_p2))
17119 : {
17120 0 : {
17121 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
17122 0 : tree res = generic_simplify_364 (loc, type, _p0, _p1, _p2, captures, EXACT_DIV_EXPR);
17123 0 : if (res) return res;
17124 : }
17125 : }
17126 : break;
17127 : }
17128 606 : case MULT_EXPR:
17129 606 : {
17130 606 : tree _q50 = TREE_OPERAND (_p1, 0);
17131 606 : tree _q51 = TREE_OPERAND (_p1, 1);
17132 606 : if (integer_zerop (_p2))
17133 : {
17134 40 : {
17135 40 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
17136 40 : tree res = generic_simplify_365 (loc, type, _p0, _p1, _p2, captures, MULT_EXPR);
17137 40 : if (res) return res;
17138 : }
17139 40 : {
17140 40 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q51, _q50 };
17141 40 : tree res = generic_simplify_365 (loc, type, _p0, _p1, _p2, captures, MULT_EXPR);
17142 40 : if (res) return res;
17143 : }
17144 : }
17145 : break;
17146 : }
17147 288 : case BIT_AND_EXPR:
17148 288 : {
17149 288 : tree _q50 = TREE_OPERAND (_p1, 0);
17150 288 : tree _q51 = TREE_OPERAND (_p1, 1);
17151 288 : if (integer_zerop (_p2))
17152 : {
17153 62 : {
17154 62 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q50, _q51 };
17155 62 : tree res = generic_simplify_365 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
17156 62 : if (res) return res;
17157 : }
17158 62 : {
17159 62 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _p1, _q51, _q50 };
17160 62 : tree res = generic_simplify_365 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
17161 62 : if (res) return res;
17162 : }
17163 : }
17164 : break;
17165 : }
17166 : default:;
17167 : }
17168 : }
17169 2932782 : if (uniform_integer_cst_p (_q21))
17170 : {
17171 2253308 : switch (TREE_CODE (_p1))
17172 : {
17173 130555 : case PLUS_EXPR:
17174 130555 : {
17175 130555 : tree _q50 = TREE_OPERAND (_p1, 0);
17176 130555 : tree _q51 = TREE_OPERAND (_p1, 1);
17177 130555 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17178 : {
17179 2629 : if (uniform_integer_cst_p (_q51))
17180 : {
17181 2629 : if (uniform_integer_cst_p (_p2))
17182 : {
17183 2625 : {
17184 2625 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q51, _p2 };
17185 2625 : {
17186 2625 : tree cst1 = uniform_integer_cst_p (captures[1]);
17187 2625 : tree cst2 = uniform_integer_cst_p (captures[3]);
17188 2625 : tree cst3 = uniform_integer_cst_p (captures[4]);
17189 2625 : if (wi::to_wide (cst1) + wi::to_wide (cst2) == wi::to_wide (cst3)
17190 : )
17191 : {
17192 10 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1862;
17193 10 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1862;
17194 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1862;
17195 10 : {
17196 10 : tree _r;
17197 10 : _r = captures[2];
17198 10 : if (TREE_SIDE_EFFECTS (captures[1]))
17199 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
17200 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1052, __FILE__, __LINE__, true);
17201 10 : return _r;
17202 : }
17203 2615 : next_after_fail1862:;
17204 : }
17205 : }
17206 : }
17207 : }
17208 : }
17209 : }
17210 : break;
17211 : }
17212 : default:;
17213 : }
17214 : }
17215 2932772 : switch (TREE_CODE (_q20))
17216 : {
17217 282249 : case BIT_AND_EXPR:
17218 282249 : {
17219 282249 : tree _q30 = TREE_OPERAND (_q20, 0);
17220 282249 : tree _q31 = TREE_OPERAND (_q20, 1);
17221 282249 : switch (TREE_CODE (_q31))
17222 : {
17223 211716 : case INTEGER_CST:
17224 211716 : {
17225 211716 : if (integer_zerop (_q21))
17226 : {
17227 211703 : switch (TREE_CODE (_p1))
17228 : {
17229 54 : case BIT_AND_EXPR:
17230 54 : {
17231 54 : tree _q70 = TREE_OPERAND (_p1, 0);
17232 54 : tree _q71 = TREE_OPERAND (_p1, 1);
17233 54 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
17234 : {
17235 18 : switch (TREE_CODE (_q71))
17236 : {
17237 18 : case INTEGER_CST:
17238 18 : {
17239 18 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
17240 : {
17241 0 : {
17242 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q30, _q31, _p1, _q71 };
17243 0 : if (wi::to_wide (captures[3]) == ~wi::to_wide (captures[1])
17244 : )
17245 : {
17246 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1863;
17247 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1863;
17248 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1863;
17249 0 : {
17250 0 : tree _r;
17251 0 : _r = captures[2];
17252 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1053, __FILE__, __LINE__, true);
17253 0 : return _r;
17254 : }
17255 0 : next_after_fail1863:;
17256 : }
17257 : }
17258 : }
17259 18 : switch (TREE_CODE (_p2))
17260 : {
17261 18 : case BIT_IOR_EXPR:
17262 18 : {
17263 18 : tree _q100 = TREE_OPERAND (_p2, 0);
17264 18 : tree _q101 = TREE_OPERAND (_p2, 1);
17265 18 : if ((_q100 == _q30 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q30, 0) && types_match (_q100, _q30)))
17266 : {
17267 18 : if ((_q101 == _q31 && ! TREE_SIDE_EFFECTS (_q101)) || (operand_equal_p (_q101, _q31, 0) && types_match (_q101, _q31)))
17268 : {
17269 18 : {
17270 18 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q71 };
17271 18 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
17272 18 : if (res) return res;
17273 : }
17274 : }
17275 : }
17276 : break;
17277 : }
17278 : default:;
17279 : }
17280 : break;
17281 : }
17282 : default:;
17283 : }
17284 : }
17285 : break;
17286 : }
17287 139 : case PLUS_EXPR:
17288 139 : {
17289 139 : tree _q70 = TREE_OPERAND (_p1, 0);
17290 139 : tree _q71 = TREE_OPERAND (_p1, 1);
17291 139 : if ((_q70 == _q30 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q30, 0) && types_match (_q70, _q30)))
17292 : {
17293 18 : switch (TREE_CODE (_q71))
17294 : {
17295 18 : case INTEGER_CST:
17296 18 : {
17297 18 : switch (TREE_CODE (_p2))
17298 : {
17299 18 : case BIT_IOR_EXPR:
17300 18 : {
17301 18 : tree _q100 = TREE_OPERAND (_p2, 0);
17302 18 : tree _q101 = TREE_OPERAND (_p2, 1);
17303 18 : if ((_q100 == _q30 && ! TREE_SIDE_EFFECTS (_q100)) || (operand_equal_p (_q100, _q30, 0) && types_match (_q100, _q30)))
17304 : {
17305 18 : if ((_q101 == _q31 && ! TREE_SIDE_EFFECTS (_q101)) || (operand_equal_p (_q101, _q31, 0) && types_match (_q101, _q31)))
17306 : {
17307 18 : {
17308 18 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _q71 };
17309 18 : tree res = generic_simplify_366 (loc, type, _p0, _p1, _p2, captures, PLUS_EXPR);
17310 18 : if (res) return res;
17311 : }
17312 : }
17313 : }
17314 : break;
17315 : }
17316 : default:;
17317 : }
17318 : break;
17319 : }
17320 : default:;
17321 : }
17322 : }
17323 : break;
17324 : }
17325 : default:;
17326 : }
17327 : }
17328 : break;
17329 : }
17330 : default:;
17331 : }
17332 : break;
17333 : }
17334 361783 : CASE_CONVERT:
17335 361783 : {
17336 361783 : tree _q30 = TREE_OPERAND (_q20, 0);
17337 361783 : switch (TREE_CODE (_q21))
17338 : {
17339 313530 : case INTEGER_CST:
17340 313530 : {
17341 313530 : switch (TREE_CODE (_p1))
17342 : {
17343 102960 : CASE_CONVERT:
17344 102960 : {
17345 102960 : tree _q60 = TREE_OPERAND (_p1, 0);
17346 102960 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
17347 : {
17348 57 : switch (TREE_CODE (_p2))
17349 : {
17350 9 : case INTEGER_CST:
17351 9 : {
17352 9 : {
17353 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
17354 9 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, NE_EXPR);
17355 9 : if (res) return res;
17356 : }
17357 9 : break;
17358 : }
17359 : default:;
17360 : }
17361 : }
17362 : break;
17363 : }
17364 313530 : default:;
17365 : }
17366 313530 : if ((_p1 == _q30 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q30, 0) && types_match (_p1, _q30)))
17367 : {
17368 48 : switch (TREE_CODE (_p2))
17369 : {
17370 0 : case INTEGER_CST:
17371 0 : {
17372 0 : {
17373 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q21, _p2 };
17374 0 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, NE_EXPR);
17375 0 : if (res) return res;
17376 : }
17377 0 : break;
17378 : }
17379 : default:;
17380 : }
17381 : }
17382 : break;
17383 : }
17384 : default:;
17385 : }
17386 : break;
17387 : }
17388 2932748 : default:;
17389 : }
17390 2932748 : switch (TREE_CODE (_q21))
17391 : {
17392 2253274 : case INTEGER_CST:
17393 2253274 : {
17394 2253274 : switch (TREE_CODE (_p1))
17395 : {
17396 382788 : CASE_CONVERT:
17397 382788 : {
17398 382788 : tree _q50 = TREE_OPERAND (_p1, 0);
17399 382788 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17400 : {
17401 76426 : switch (TREE_CODE (_p2))
17402 : {
17403 75189 : case INTEGER_CST:
17404 75189 : {
17405 75189 : {
17406 75189 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
17407 75189 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, NE_EXPR);
17408 75189 : if (res) return res;
17409 : }
17410 75183 : break;
17411 : }
17412 : default:;
17413 : }
17414 : }
17415 : break;
17416 : }
17417 2253268 : default:;
17418 : }
17419 2253268 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
17420 : {
17421 54463 : switch (TREE_CODE (_p2))
17422 : {
17423 51920 : case INTEGER_CST:
17424 51920 : {
17425 51920 : {
17426 51920 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
17427 51920 : tree res = generic_simplify_348 (loc, type, _p0, _p1, _p2, captures, NE_EXPR);
17428 51920 : if (res) return res;
17429 : }
17430 51920 : break;
17431 : }
17432 : default:;
17433 : }
17434 : }
17435 : break;
17436 : }
17437 2932742 : default:;
17438 : }
17439 2932742 : switch (TREE_CODE (_p1))
17440 : {
17441 12655 : case MINUS_EXPR:
17442 12655 : {
17443 12655 : tree _q50 = TREE_OPERAND (_p1, 0);
17444 12655 : tree _q51 = TREE_OPERAND (_p1, 1);
17445 12655 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17446 : {
17447 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17448 : {
17449 0 : if (integer_zerop (_p2))
17450 : {
17451 0 : {
17452 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17453 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures);
17454 0 : if (res) return res;
17455 : }
17456 : }
17457 : }
17458 : }
17459 12655 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17460 : {
17461 19 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17462 : {
17463 19 : if (integer_zerop (_p2))
17464 : {
17465 0 : {
17466 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17467 0 : tree res = generic_simplify_367 (loc, type, _p0, _p1, _p2, captures);
17468 0 : if (res) return res;
17469 : }
17470 : }
17471 : }
17472 : }
17473 : break;
17474 : }
17475 14 : case BIT_XOR_EXPR:
17476 14 : {
17477 14 : tree _q50 = TREE_OPERAND (_p1, 0);
17478 14 : tree _q51 = TREE_OPERAND (_p1, 1);
17479 14 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17480 : {
17481 7 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17482 : {
17483 7 : if (integer_zerop (_p2))
17484 : {
17485 0 : {
17486 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17487 0 : tree res = generic_simplify_368 (loc, type, _p0, _p1, _p2, captures);
17488 0 : if (res) return res;
17489 : }
17490 : }
17491 : }
17492 : }
17493 14 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17494 : {
17495 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17496 : {
17497 0 : if (integer_zerop (_p2))
17498 : {
17499 0 : {
17500 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17501 0 : tree res = generic_simplify_368 (loc, type, _p0, _p1, _p2, captures);
17502 0 : if (res) return res;
17503 : }
17504 : }
17505 : }
17506 : }
17507 : break;
17508 : }
17509 275 : case BIT_AND_EXPR:
17510 275 : {
17511 275 : tree _q50 = TREE_OPERAND (_p1, 0);
17512 275 : tree _q51 = TREE_OPERAND (_p1, 1);
17513 275 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17514 : {
17515 2 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17516 : {
17517 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17518 : {
17519 0 : {
17520 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17521 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
17522 0 : if (res) return res;
17523 : }
17524 : }
17525 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17526 : {
17527 0 : {
17528 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17529 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
17530 0 : if (res) return res;
17531 : }
17532 : }
17533 : }
17534 : }
17535 275 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17536 : {
17537 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17538 : {
17539 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17540 : {
17541 0 : {
17542 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17543 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
17544 0 : if (res) return res;
17545 : }
17546 : }
17547 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17548 : {
17549 0 : {
17550 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17551 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, BIT_AND_EXPR);
17552 0 : if (res) return res;
17553 : }
17554 : }
17555 : }
17556 : }
17557 : break;
17558 : }
17559 9560 : case BIT_IOR_EXPR:
17560 9560 : {
17561 9560 : tree _q50 = TREE_OPERAND (_p1, 0);
17562 9560 : tree _q51 = TREE_OPERAND (_p1, 1);
17563 9560 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17564 : {
17565 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17566 : {
17567 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17568 : {
17569 0 : {
17570 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17571 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
17572 0 : if (res) return res;
17573 : }
17574 : }
17575 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17576 : {
17577 0 : {
17578 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17579 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
17580 0 : if (res) return res;
17581 : }
17582 : }
17583 : }
17584 : }
17585 9560 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17586 : {
17587 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17588 : {
17589 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17590 : {
17591 0 : {
17592 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17593 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
17594 0 : if (res) return res;
17595 : }
17596 : }
17597 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17598 : {
17599 0 : {
17600 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17601 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, BIT_IOR_EXPR);
17602 0 : if (res) return res;
17603 : }
17604 : }
17605 : }
17606 : }
17607 : break;
17608 : }
17609 0 : case MIN_EXPR:
17610 0 : {
17611 0 : tree _q50 = TREE_OPERAND (_p1, 0);
17612 0 : tree _q51 = TREE_OPERAND (_p1, 1);
17613 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17614 : {
17615 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17616 : {
17617 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17618 : {
17619 0 : {
17620 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17621 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, MIN_EXPR);
17622 0 : if (res) return res;
17623 : }
17624 : }
17625 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17626 : {
17627 0 : {
17628 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17629 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, MIN_EXPR);
17630 0 : if (res) return res;
17631 : }
17632 : }
17633 : }
17634 0 : switch (TREE_CODE (_p2))
17635 : {
17636 0 : case MIN_EXPR:
17637 0 : {
17638 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17639 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17640 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
17641 : {
17642 0 : {
17643 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
17644 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17645 0 : if (res) return res;
17646 : }
17647 : }
17648 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
17649 : {
17650 0 : {
17651 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
17652 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17653 0 : if (res) return res;
17654 : }
17655 : }
17656 : break;
17657 : }
17658 : default:;
17659 : }
17660 : }
17661 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17662 : {
17663 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17664 : {
17665 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17666 : {
17667 0 : {
17668 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17669 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, MIN_EXPR);
17670 0 : if (res) return res;
17671 : }
17672 : }
17673 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17674 : {
17675 0 : {
17676 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17677 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, MIN_EXPR);
17678 0 : if (res) return res;
17679 : }
17680 : }
17681 : }
17682 0 : switch (TREE_CODE (_p2))
17683 : {
17684 0 : case MIN_EXPR:
17685 0 : {
17686 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17687 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17688 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
17689 : {
17690 0 : {
17691 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
17692 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17693 0 : if (res) return res;
17694 : }
17695 : }
17696 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
17697 : {
17698 0 : {
17699 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
17700 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17701 0 : if (res) return res;
17702 : }
17703 : }
17704 : break;
17705 : }
17706 : default:;
17707 : }
17708 : }
17709 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17710 : {
17711 0 : switch (TREE_CODE (_p2))
17712 : {
17713 0 : case MIN_EXPR:
17714 0 : {
17715 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17716 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17717 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
17718 : {
17719 0 : {
17720 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
17721 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17722 0 : if (res) return res;
17723 : }
17724 : }
17725 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
17726 : {
17727 0 : {
17728 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
17729 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17730 0 : if (res) return res;
17731 : }
17732 : }
17733 : break;
17734 : }
17735 : default:;
17736 : }
17737 : }
17738 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17739 : {
17740 0 : switch (TREE_CODE (_p2))
17741 : {
17742 0 : case MIN_EXPR:
17743 0 : {
17744 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17745 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17746 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
17747 : {
17748 0 : {
17749 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
17750 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17751 0 : if (res) return res;
17752 : }
17753 : }
17754 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
17755 : {
17756 0 : {
17757 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
17758 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MIN_EXPR);
17759 0 : if (res) return res;
17760 : }
17761 : }
17762 : break;
17763 : }
17764 : default:;
17765 : }
17766 : }
17767 : break;
17768 : }
17769 0 : case MAX_EXPR:
17770 0 : {
17771 0 : tree _q50 = TREE_OPERAND (_p1, 0);
17772 0 : tree _q51 = TREE_OPERAND (_p1, 1);
17773 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17774 : {
17775 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17776 : {
17777 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17778 : {
17779 0 : {
17780 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17781 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, MAX_EXPR);
17782 0 : if (res) return res;
17783 : }
17784 : }
17785 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17786 : {
17787 0 : {
17788 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17789 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, MAX_EXPR);
17790 0 : if (res) return res;
17791 : }
17792 : }
17793 : }
17794 0 : switch (TREE_CODE (_p2))
17795 : {
17796 0 : case MAX_EXPR:
17797 0 : {
17798 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17799 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17800 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
17801 : {
17802 0 : {
17803 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q80 };
17804 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17805 0 : if (res) return res;
17806 : }
17807 : }
17808 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
17809 : {
17810 0 : {
17811 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q51, _q81 };
17812 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17813 0 : if (res) return res;
17814 : }
17815 : }
17816 : break;
17817 : }
17818 : default:;
17819 : }
17820 : }
17821 0 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17822 : {
17823 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17824 : {
17825 0 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
17826 : {
17827 0 : {
17828 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17829 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, MAX_EXPR);
17830 0 : if (res) return res;
17831 : }
17832 : }
17833 0 : if ((_p2 == _q21 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q21, 0) && types_match (_p2, _q21)))
17834 : {
17835 0 : {
17836 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17837 0 : tree res = generic_simplify_369 (loc, type, _p0, _p1, _p2, captures, MAX_EXPR);
17838 0 : if (res) return res;
17839 : }
17840 : }
17841 : }
17842 0 : switch (TREE_CODE (_p2))
17843 : {
17844 0 : case MAX_EXPR:
17845 0 : {
17846 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17847 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17848 0 : if ((_q81 == _q51 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q51, 0) && types_match (_q81, _q51)))
17849 : {
17850 0 : {
17851 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q80 };
17852 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17853 0 : if (res) return res;
17854 : }
17855 : }
17856 0 : if ((_q80 == _q51 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q51, 0) && types_match (_q80, _q51)))
17857 : {
17858 0 : {
17859 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q51, _q81 };
17860 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17861 0 : if (res) return res;
17862 : }
17863 : }
17864 : break;
17865 : }
17866 : default:;
17867 : }
17868 : }
17869 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17870 : {
17871 0 : switch (TREE_CODE (_p2))
17872 : {
17873 0 : case MAX_EXPR:
17874 0 : {
17875 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17876 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17877 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
17878 : {
17879 0 : {
17880 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q80 };
17881 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17882 0 : if (res) return res;
17883 : }
17884 : }
17885 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
17886 : {
17887 0 : {
17888 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _q50, _q81 };
17889 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17890 0 : if (res) return res;
17891 : }
17892 : }
17893 : break;
17894 : }
17895 : default:;
17896 : }
17897 : }
17898 0 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17899 : {
17900 0 : switch (TREE_CODE (_p2))
17901 : {
17902 0 : case MAX_EXPR:
17903 0 : {
17904 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17905 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17906 0 : if ((_q81 == _q50 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q50, 0) && types_match (_q81, _q50)))
17907 : {
17908 0 : {
17909 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q80 };
17910 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17911 0 : if (res) return res;
17912 : }
17913 : }
17914 0 : if ((_q80 == _q50 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q50, 0) && types_match (_q80, _q50)))
17915 : {
17916 0 : {
17917 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _q50, _q81 };
17918 0 : tree res = generic_simplify_350 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, MAX_EXPR);
17919 0 : if (res) return res;
17920 : }
17921 : }
17922 : break;
17923 : }
17924 : default:;
17925 : }
17926 : }
17927 : break;
17928 : }
17929 25546 : case MULT_EXPR:
17930 25546 : {
17931 25546 : tree _q50 = TREE_OPERAND (_p1, 0);
17932 25546 : tree _q51 = TREE_OPERAND (_p1, 1);
17933 25546 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
17934 : {
17935 20849 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
17936 : {
17937 0 : switch (TREE_CODE (_p2))
17938 : {
17939 0 : case MULT_EXPR:
17940 0 : {
17941 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17942 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17943 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
17944 : {
17945 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
17946 : {
17947 0 : {
17948 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
17949 0 : const enum tree_code op = MULT_EXPR;
17950 0 : if (ANY_INTEGRAL_TYPE_P (type)
17951 : )
17952 : {
17953 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1864;
17954 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1864;
17955 0 : {
17956 0 : tree _r;
17957 0 : _r = captures[2];
17958 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1054, __FILE__, __LINE__, true);
17959 0 : return _r;
17960 : }
17961 0 : next_after_fail1864:;
17962 : }
17963 : }
17964 : }
17965 : }
17966 : break;
17967 : }
17968 : default:;
17969 : }
17970 : }
17971 : }
17972 25546 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
17973 : {
17974 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
17975 : {
17976 0 : switch (TREE_CODE (_p2))
17977 : {
17978 0 : case MULT_EXPR:
17979 0 : {
17980 0 : tree _q80 = TREE_OPERAND (_p2, 0);
17981 0 : tree _q81 = TREE_OPERAND (_p2, 1);
17982 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
17983 : {
17984 0 : if ((_q81 == _q21 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q21, 0) && types_match (_q81, _q21)))
17985 : {
17986 0 : {
17987 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
17988 0 : const enum tree_code op = MULT_EXPR;
17989 0 : if (ANY_INTEGRAL_TYPE_P (type)
17990 : )
17991 : {
17992 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1865;
17993 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1865;
17994 0 : {
17995 0 : tree _r;
17996 0 : _r = captures[2];
17997 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1054, __FILE__, __LINE__, true);
17998 0 : return _r;
17999 : }
18000 0 : next_after_fail1865:;
18001 : }
18002 : }
18003 : }
18004 : }
18005 : break;
18006 : }
18007 : default:;
18008 : }
18009 : }
18010 : }
18011 : break;
18012 : }
18013 130605 : case PLUS_EXPR:
18014 130605 : {
18015 130605 : tree _q50 = TREE_OPERAND (_p1, 0);
18016 130605 : tree _q51 = TREE_OPERAND (_p1, 1);
18017 130605 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18018 : {
18019 2627 : if ((_q51 == _q21 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q21, 0) && types_match (_q51, _q21)))
18020 : {
18021 0 : switch (TREE_CODE (_p2))
18022 : {
18023 0 : case PLUS_EXPR:
18024 0 : {
18025 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18026 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18027 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
18028 : {
18029 0 : if ((_q81 == _q20 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q20, 0) && types_match (_q81, _q20)))
18030 : {
18031 0 : {
18032 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
18033 0 : const enum tree_code op = PLUS_EXPR;
18034 0 : if (ANY_INTEGRAL_TYPE_P (type)
18035 : )
18036 : {
18037 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1866;
18038 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1866;
18039 0 : {
18040 0 : tree _r;
18041 0 : _r = captures[2];
18042 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1054, __FILE__, __LINE__, true);
18043 0 : return _r;
18044 : }
18045 0 : next_after_fail1866:;
18046 : }
18047 : }
18048 : }
18049 : }
18050 : break;
18051 : }
18052 0 : case MULT_EXPR:
18053 0 : {
18054 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18055 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18056 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
18057 : {
18058 0 : if (uniform_integer_cst_p (_q81))
18059 : {
18060 0 : {
18061 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q81 };
18062 0 : if (wi::to_wide (uniform_integer_cst_p (captures[3])) == 2
18063 : )
18064 : {
18065 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1867;
18066 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1867;
18067 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1867;
18068 0 : {
18069 0 : tree _r;
18070 0 : _r = captures[2];
18071 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1055, __FILE__, __LINE__, true);
18072 0 : return _r;
18073 : }
18074 0 : next_after_fail1867:;
18075 : }
18076 : }
18077 : }
18078 : }
18079 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
18080 : {
18081 0 : if (uniform_integer_cst_p (_q81))
18082 : {
18083 0 : {
18084 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q81 };
18085 0 : if (wi::to_wide (uniform_integer_cst_p (captures[3])) == 2
18086 : )
18087 : {
18088 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1868;
18089 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1868;
18090 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1868;
18091 0 : {
18092 0 : tree _r;
18093 0 : _r = captures[2];
18094 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1055, __FILE__, __LINE__, true);
18095 0 : return _r;
18096 : }
18097 0 : next_after_fail1868:;
18098 : }
18099 : }
18100 : }
18101 : }
18102 : break;
18103 : }
18104 : default:;
18105 : }
18106 : }
18107 : }
18108 130605 : if ((_q50 == _q21 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q21, 0) && types_match (_q50, _q21)))
18109 : {
18110 0 : if ((_q51 == _q20 && ! TREE_SIDE_EFFECTS (_q51)) || (operand_equal_p (_q51, _q20, 0) && types_match (_q51, _q20)))
18111 : {
18112 0 : switch (TREE_CODE (_p2))
18113 : {
18114 0 : case PLUS_EXPR:
18115 0 : {
18116 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18117 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18118 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
18119 : {
18120 0 : if ((_q81 == _q21 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q21, 0) && types_match (_q81, _q21)))
18121 : {
18122 0 : {
18123 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q21, _q20, _p1 };
18124 0 : const enum tree_code op = PLUS_EXPR;
18125 0 : if (ANY_INTEGRAL_TYPE_P (type)
18126 : )
18127 : {
18128 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1869;
18129 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1869;
18130 0 : {
18131 0 : tree _r;
18132 0 : _r = captures[2];
18133 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1054, __FILE__, __LINE__, true);
18134 0 : return _r;
18135 : }
18136 0 : next_after_fail1869:;
18137 : }
18138 : }
18139 : }
18140 : }
18141 : break;
18142 : }
18143 0 : case MULT_EXPR:
18144 0 : {
18145 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18146 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18147 0 : if ((_q80 == _q20 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q20, 0) && types_match (_q80, _q20)))
18148 : {
18149 0 : if (uniform_integer_cst_p (_q81))
18150 : {
18151 0 : {
18152 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q81 };
18153 0 : if (wi::to_wide (uniform_integer_cst_p (captures[3])) == 2
18154 : )
18155 : {
18156 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1870;
18157 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1870;
18158 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1870;
18159 0 : {
18160 0 : tree _r;
18161 0 : _r = captures[2];
18162 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1055, __FILE__, __LINE__, true);
18163 0 : return _r;
18164 : }
18165 0 : next_after_fail1870:;
18166 : }
18167 : }
18168 : }
18169 : }
18170 0 : if ((_q80 == _q21 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q21, 0) && types_match (_q80, _q21)))
18171 : {
18172 0 : if (uniform_integer_cst_p (_q81))
18173 : {
18174 0 : {
18175 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q21, _q20, _p1, _q81 };
18176 0 : if (wi::to_wide (uniform_integer_cst_p (captures[3])) == 2
18177 : )
18178 : {
18179 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1871;
18180 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1871;
18181 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1871;
18182 0 : {
18183 0 : tree _r;
18184 0 : _r = captures[2];
18185 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1055, __FILE__, __LINE__, true);
18186 0 : return _r;
18187 : }
18188 0 : next_after_fail1871:;
18189 : }
18190 : }
18191 : }
18192 : }
18193 : break;
18194 : }
18195 : default:;
18196 : }
18197 : }
18198 : }
18199 : break;
18200 : }
18201 2932742 : default:;
18202 : }
18203 2932742 : switch (TREE_CODE (_q21))
18204 : {
18205 2253268 : case INTEGER_CST:
18206 2253268 : {
18207 2253268 : switch (TREE_CODE (_p1))
18208 : {
18209 228 : case NEGATE_EXPR:
18210 228 : {
18211 228 : tree _q50 = TREE_OPERAND (_p1, 0);
18212 228 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18213 : {
18214 42 : switch (TREE_CODE (_p2))
18215 : {
18216 14 : case INTEGER_CST:
18217 14 : {
18218 14 : {
18219 14 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
18220 14 : if (!TYPE_SATURATING (type)
18221 28 : && wi::eq_p (wi::neg (wi::to_wide (captures[1])), wi::to_wide (captures[3]))
18222 : )
18223 : {
18224 12 : if (TYPE_OVERFLOW_WRAPS (type)
18225 4 : || !wi::only_sign_bit_p (wi::to_wide (captures[1]))
18226 : )
18227 : {
18228 11 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1872;
18229 11 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1872;
18230 11 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1872;
18231 11 : {
18232 11 : tree _r;
18233 11 : _r = captures[2];
18234 11 : if (TREE_SIDE_EFFECTS (captures[1]))
18235 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
18236 11 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1056, __FILE__, __LINE__, true);
18237 11 : return _r;
18238 : }
18239 2 : next_after_fail1872:;
18240 : }
18241 : else
18242 : {
18243 1 : {
18244 1 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
18245 1 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1873;
18246 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1873;
18247 1 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1873;
18248 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1873;
18249 1 : {
18250 1 : tree res_op0;
18251 1 : {
18252 1 : tree _o1[1], _r1;
18253 1 : {
18254 1 : tree _o2[1], _r2;
18255 1 : _o2[0] = captures[0];
18256 1 : if (TREE_TYPE (_o2[0]) != utype)
18257 : {
18258 1 : _r2 = fold_build1_loc (loc, NOP_EXPR, utype, _o2[0]);
18259 : }
18260 : else
18261 : _r2 = _o2[0];
18262 1 : _o1[0] = _r2;
18263 : }
18264 1 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
18265 1 : res_op0 = _r1;
18266 : }
18267 1 : tree _r;
18268 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
18269 1 : if (TREE_SIDE_EFFECTS (captures[1]))
18270 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
18271 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1057, __FILE__, __LINE__, true);
18272 1 : return _r;
18273 : }
18274 2 : next_after_fail1873:;
18275 : }
18276 : }
18277 : }
18278 : }
18279 2 : break;
18280 : }
18281 : default:;
18282 : }
18283 : }
18284 : break;
18285 : }
18286 95 : case BIT_NOT_EXPR:
18287 95 : {
18288 95 : tree _q50 = TREE_OPERAND (_p1, 0);
18289 95 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18290 : {
18291 18 : switch (TREE_CODE (_p2))
18292 : {
18293 18 : case INTEGER_CST:
18294 18 : {
18295 18 : {
18296 18 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
18297 18 : if (wi::eq_p (wi::bit_not (wi::to_wide (captures[1])), wi::to_wide (captures[3]))
18298 : )
18299 : {
18300 18 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1874;
18301 18 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1874;
18302 18 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1874;
18303 18 : {
18304 18 : tree _r;
18305 18 : _r = captures[2];
18306 18 : if (TREE_SIDE_EFFECTS (captures[1]))
18307 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
18308 18 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1058, __FILE__, __LINE__, true);
18309 18 : return _r;
18310 : }
18311 0 : next_after_fail1874:;
18312 : }
18313 : }
18314 0 : break;
18315 : }
18316 : default:;
18317 : }
18318 : }
18319 : break;
18320 : }
18321 5 : case ABS_EXPR:
18322 5 : {
18323 5 : tree _q50 = TREE_OPERAND (_p1, 0);
18324 5 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18325 : {
18326 1 : switch (TREE_CODE (_p2))
18327 : {
18328 1 : case INTEGER_CST:
18329 1 : {
18330 1 : {
18331 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
18332 1 : if (wi::abs (wi::to_wide (captures[1])) == wi::to_wide (captures[3])
18333 : )
18334 : {
18335 0 : if (ABS_EXPR != ABSU_EXPR && wi::only_sign_bit_p (wi::to_wide (captures[1]))
18336 : )
18337 : {
18338 0 : {
18339 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
18340 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1875;
18341 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1875;
18342 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1875;
18343 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1875;
18344 0 : {
18345 0 : tree res_op0;
18346 0 : {
18347 0 : tree _o1[1], _r1;
18348 0 : _o1[0] = captures[0];
18349 0 : _r1 = fold_build1_loc (loc, ABSU_EXPR, utype, _o1[0]);
18350 0 : res_op0 = _r1;
18351 : }
18352 0 : tree _r;
18353 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
18354 0 : if (TREE_SIDE_EFFECTS (captures[1]))
18355 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
18356 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1059, __FILE__, __LINE__, true);
18357 0 : return _r;
18358 : }
18359 1 : next_after_fail1875:;
18360 : }
18361 : }
18362 : else
18363 : {
18364 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1876;
18365 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1876;
18366 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1876;
18367 0 : {
18368 0 : tree _r;
18369 0 : _r = captures[2];
18370 0 : if (TREE_SIDE_EFFECTS (captures[1]))
18371 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
18372 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1060, __FILE__, __LINE__, true);
18373 0 : return _r;
18374 : }
18375 1 : next_after_fail1876:;
18376 : }
18377 : }
18378 : }
18379 1 : break;
18380 : }
18381 : default:;
18382 : }
18383 : }
18384 : break;
18385 : }
18386 0 : case ABSU_EXPR:
18387 0 : {
18388 0 : tree _q50 = TREE_OPERAND (_p1, 0);
18389 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18390 : {
18391 0 : switch (TREE_CODE (_p2))
18392 : {
18393 0 : case INTEGER_CST:
18394 0 : {
18395 0 : {
18396 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
18397 0 : if (wi::abs (wi::to_wide (captures[1])) == wi::to_wide (captures[3])
18398 : )
18399 : {
18400 0 : if (ABSU_EXPR != ABSU_EXPR && wi::only_sign_bit_p (wi::to_wide (captures[1]))
18401 : )
18402 : {
18403 : {
18404 : tree utype = unsigned_type_for (TREE_TYPE (captures[0]));
18405 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1877;
18406 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1877;
18407 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1877;
18408 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1877;
18409 : {
18410 : tree res_op0;
18411 : {
18412 : tree _o1[1], _r1;
18413 : _o1[0] = captures[0];
18414 : _r1 = fold_build1_loc (loc, ABSU_EXPR, utype, _o1[0]);
18415 : res_op0 = _r1;
18416 : }
18417 : tree _r;
18418 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
18419 : if (TREE_SIDE_EFFECTS (captures[1]))
18420 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
18421 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1059, __FILE__, __LINE__, true);
18422 : return _r;
18423 : }
18424 : next_after_fail1877:;
18425 : }
18426 : }
18427 : else
18428 : {
18429 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1878;
18430 0 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1878;
18431 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1878;
18432 0 : {
18433 0 : tree _r;
18434 0 : _r = captures[2];
18435 0 : if (TREE_SIDE_EFFECTS (captures[1]))
18436 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[1]), _r);
18437 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1060, __FILE__, __LINE__, true);
18438 0 : return _r;
18439 : }
18440 0 : next_after_fail1878:;
18441 : }
18442 : }
18443 : }
18444 0 : break;
18445 : }
18446 : default:;
18447 : }
18448 : }
18449 : break;
18450 : }
18451 : default:;
18452 : }
18453 : break;
18454 : }
18455 : default:;
18456 : }
18457 : break;
18458 : }
18459 1278596 : case INTEGER_CST:
18460 1278596 : {
18461 1278596 : {
18462 1278596 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _p1, _p2 };
18463 1278596 : if (integer_zerop (captures[0])
18464 : )
18465 : {
18466 668541 : if (!VOID_TYPE_P (TREE_TYPE (captures[2])) || VOID_TYPE_P (type)
18467 : )
18468 : {
18469 660327 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1879;
18470 482571 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1879;
18471 466009 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1879;
18472 466009 : {
18473 466009 : tree _r;
18474 466009 : _r = captures[2];
18475 466009 : if (TREE_SIDE_EFFECTS (captures[0]))
18476 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
18477 466009 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1061, __FILE__, __LINE__, true);
18478 466009 : return _r;
18479 : }
18480 430648 : next_after_fail1879:;
18481 : }
18482 : }
18483 : else
18484 : {
18485 610055 : if (!VOID_TYPE_P (TREE_TYPE (captures[1])) || VOID_TYPE_P (type)
18486 : )
18487 : {
18488 609063 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1880;
18489 482355 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1880;
18490 381939 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1880;
18491 381939 : {
18492 381939 : tree _r;
18493 381939 : _r = captures[1];
18494 381939 : if (TREE_SIDE_EFFECTS (captures[0]))
18495 0 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
18496 381939 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1062, __FILE__, __LINE__, true);
18497 381939 : return _r;
18498 : }
18499 430648 : next_after_fail1880:;
18500 : }
18501 : }
18502 : }
18503 430648 : break;
18504 : }
18505 12107181 : default:;
18506 : }
18507 12107181 : switch (TREE_CODE (_p1))
18508 : {
18509 846791 : case COND_EXPR:
18510 846791 : {
18511 846791 : tree _q30 = TREE_OPERAND (_p1, 0);
18512 846791 : tree _q31 = TREE_OPERAND (_p1, 1);
18513 846791 : tree _q32 = TREE_OPERAND (_p1, 2);
18514 846791 : if ((_q30 == _p0 && ! TREE_SIDE_EFFECTS (_q30)) || (operand_equal_p (_q30, _p0, 0) && types_match (_q30, _p0)))
18515 : {
18516 609 : {
18517 609 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _q31, _q32, _p2 };
18518 609 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1881;
18519 609 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1881;
18520 55 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1881;
18521 54 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1881;
18522 10 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1881;
18523 10 : {
18524 10 : tree res_op0;
18525 10 : res_op0 = captures[0];
18526 10 : tree res_op1;
18527 10 : res_op1 = captures[1];
18528 10 : tree res_op2;
18529 10 : res_op2 = captures[3];
18530 10 : tree _r;
18531 10 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
18532 10 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1063, __FILE__, __LINE__, true);
18533 10 : return _r;
18534 : }
18535 599 : next_after_fail1881:;
18536 : }
18537 : }
18538 : break;
18539 : }
18540 12107171 : default:;
18541 : }
18542 12107171 : switch (TREE_CODE (_p2))
18543 : {
18544 892589 : case COND_EXPR:
18545 892589 : {
18546 892589 : tree _q40 = TREE_OPERAND (_p2, 0);
18547 892589 : tree _q41 = TREE_OPERAND (_p2, 1);
18548 892589 : tree _q42 = TREE_OPERAND (_p2, 2);
18549 892589 : if ((_q40 == _p0 && ! TREE_SIDE_EFFECTS (_q40)) || (operand_equal_p (_q40, _p0, 0) && types_match (_q40, _p0)))
18550 : {
18551 3762 : {
18552 3762 : tree captures[4] ATTRIBUTE_UNUSED = { _p0, _p1, _q41, _q42 };
18553 3762 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1882;
18554 3762 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1882;
18555 3762 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1882;
18556 184 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1882;
18557 184 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1882;
18558 184 : {
18559 184 : tree res_op0;
18560 184 : res_op0 = captures[0];
18561 184 : tree res_op1;
18562 184 : res_op1 = captures[1];
18563 184 : tree res_op2;
18564 184 : res_op2 = captures[3];
18565 184 : tree _r;
18566 184 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
18567 184 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1064, __FILE__, __LINE__, true);
18568 184 : return _r;
18569 : }
18570 3578 : next_after_fail1882:;
18571 : }
18572 : }
18573 892405 : {
18574 892405 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _p1, _q40, _q41, _q42 };
18575 892405 : if (inverse_conditions_p (captures[0], captures[2])
18576 : )
18577 : {
18578 1162 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1883;
18579 1162 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1883;
18580 1162 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1883;
18581 1162 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1883;
18582 1162 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1883;
18583 1162 : {
18584 1162 : tree res_op0;
18585 1162 : res_op0 = captures[0];
18586 1162 : tree res_op1;
18587 1162 : res_op1 = captures[1];
18588 1162 : tree res_op2;
18589 1162 : res_op2 = captures[3];
18590 1162 : tree _r;
18591 1162 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
18592 1162 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1065, __FILE__, __LINE__, true);
18593 1162 : return _r;
18594 : }
18595 891243 : next_after_fail1883:;
18596 : }
18597 : }
18598 891243 : break;
18599 : }
18600 12105825 : default:;
18601 : }
18602 12105825 : switch (TREE_CODE (_p1))
18603 : {
18604 846781 : case COND_EXPR:
18605 846781 : {
18606 846781 : tree _q30 = TREE_OPERAND (_p1, 0);
18607 846781 : tree _q31 = TREE_OPERAND (_p1, 1);
18608 846781 : tree _q32 = TREE_OPERAND (_p1, 2);
18609 846781 : {
18610 846781 : tree captures[5] ATTRIBUTE_UNUSED = { _p0, _q30, _q31, _q32, _p2 };
18611 846781 : if (inverse_conditions_p (captures[0], captures[1])
18612 : )
18613 : {
18614 160 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1884;
18615 160 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1884;
18616 2 : if (TREE_SIDE_EFFECTS (captures[3])) goto next_after_fail1884;
18617 2 : if (TREE_SIDE_EFFECTS (captures[4])) goto next_after_fail1884;
18618 2 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1884;
18619 2 : {
18620 2 : tree res_op0;
18621 2 : res_op0 = captures[0];
18622 2 : tree res_op1;
18623 2 : res_op1 = captures[3];
18624 2 : tree res_op2;
18625 2 : res_op2 = captures[4];
18626 2 : tree _r;
18627 2 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
18628 2 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1066, __FILE__, __LINE__, true);
18629 2 : return _r;
18630 : }
18631 846779 : next_after_fail1884:;
18632 : }
18633 : }
18634 846779 : break;
18635 : }
18636 12105823 : default:;
18637 : }
18638 12105823 : if ((_p2 == _p1 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _p1, 0) && types_match (_p2, _p1)))
18639 : {
18640 50963 : {
18641 50963 : tree captures[2] ATTRIBUTE_UNUSED = { _p0, _p1 };
18642 50963 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1885;
18643 50963 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1885;
18644 50963 : {
18645 50963 : tree _r;
18646 50963 : _r = captures[1];
18647 50963 : if (TREE_SIDE_EFFECTS (captures[0]))
18648 358 : _r = build2_loc (loc, COMPOUND_EXPR, type, fold_ignored_result (captures[0]), _r);
18649 50963 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1067, __FILE__, __LINE__, true);
18650 50963 : return _r;
18651 : }
18652 0 : next_after_fail1885:;
18653 : }
18654 : }
18655 12054860 : switch (TREE_CODE (_p0))
18656 : {
18657 1758453 : case EQ_EXPR:
18658 1758453 : {
18659 1758453 : tree _q20 = TREE_OPERAND (_p0, 0);
18660 1758453 : tree _q21 = TREE_OPERAND (_p0, 1);
18661 1758453 : if (CONSTANT_CLASS_P (_q21))
18662 : {
18663 1250507 : {
18664 1250507 : tree _p1_pops[1];
18665 1250507 : if (tree_nop_convert (_p1, _p1_pops))
18666 : {
18667 190673 : tree _q50 = _p1_pops[0];
18668 190673 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
18669 : {
18670 282 : if (CONSTANT_CLASS_P (_p2))
18671 : {
18672 0 : {
18673 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
18674 0 : if (ANY_INTEGRAL_TYPE_P (type)
18675 0 : && operand_equal_p (captures[1], captures[2])
18676 : )
18677 : {
18678 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1886;
18679 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1886;
18680 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1886;
18681 0 : {
18682 0 : tree res_op0;
18683 0 : res_op0 = captures[1];
18684 0 : tree _r;
18685 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
18686 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1068, __FILE__, __LINE__, true);
18687 0 : return _r;
18688 : }
18689 0 : next_after_fail1886:;
18690 : }
18691 : }
18692 : }
18693 : }
18694 : }
18695 : }
18696 1250507 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
18697 : {
18698 93 : if (CONSTANT_CLASS_P (_p2))
18699 : {
18700 7 : {
18701 7 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p2 };
18702 7 : if (ANY_INTEGRAL_TYPE_P (type)
18703 7 : && operand_equal_p (captures[1], captures[2])
18704 : )
18705 : {
18706 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1887;
18707 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1887;
18708 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1887;
18709 0 : {
18710 0 : tree res_op0;
18711 0 : res_op0 = captures[1];
18712 0 : tree _r;
18713 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
18714 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1068, __FILE__, __LINE__, true);
18715 0 : return _r;
18716 : }
18717 7 : next_after_fail1887:;
18718 : }
18719 : }
18720 : }
18721 : }
18722 : }
18723 1758453 : if (zerop (_q21))
18724 : {
18725 794150 : switch (TREE_CODE (_p2))
18726 : {
18727 36 : case NEGATE_EXPR:
18728 36 : {
18729 36 : tree _q60 = TREE_OPERAND (_p2, 0);
18730 36 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
18731 : {
18732 16 : {
18733 16 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
18734 16 : const enum tree_code cmp = EQ_EXPR;
18735 16 : if (!HONOR_SIGNED_ZEROS (type)
18736 16 : && bitwise_equal_p (captures[0], captures[1])
18737 : )
18738 : {
18739 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1888;
18740 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1888;
18741 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1888;
18742 0 : {
18743 0 : tree _r;
18744 0 : _r = captures[2];
18745 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1069, __FILE__, __LINE__, true);
18746 0 : return _r;
18747 : }
18748 16 : next_after_fail1888:;
18749 : }
18750 : }
18751 : }
18752 : break;
18753 : }
18754 794150 : default:;
18755 : }
18756 794150 : if (zerop (_p1))
18757 : {
18758 52703 : switch (TREE_CODE (_p2))
18759 : {
18760 14 : case NEGATE_EXPR:
18761 14 : {
18762 14 : tree _q60 = TREE_OPERAND (_p2, 0);
18763 14 : {
18764 14 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p2, _q60 };
18765 14 : const enum tree_code cmp = EQ_EXPR;
18766 14 : if (!HONOR_SIGNED_ZEROS (type)
18767 14 : && bitwise_equal_p (captures[0], captures[2])
18768 : )
18769 : {
18770 7 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1889;
18771 7 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1889;
18772 7 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1889;
18773 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1889;
18774 7 : {
18775 7 : tree _r;
18776 7 : _r = captures[1];
18777 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1070, __FILE__, __LINE__, true);
18778 7 : return _r;
18779 : }
18780 7 : next_after_fail1889:;
18781 : }
18782 : }
18783 7 : break;
18784 : }
18785 : default:;
18786 : }
18787 : }
18788 : }
18789 1758446 : switch (TREE_CODE (_q20))
18790 : {
18791 0 : case MINUS_EXPR:
18792 0 : {
18793 0 : tree _q30 = TREE_OPERAND (_q20, 0);
18794 0 : tree _q31 = TREE_OPERAND (_q20, 1);
18795 0 : if (zerop (_q21))
18796 : {
18797 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
18798 : {
18799 0 : switch (TREE_CODE (_p2))
18800 : {
18801 0 : case MINUS_EXPR:
18802 0 : {
18803 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18804 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18805 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
18806 : {
18807 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
18808 : {
18809 0 : {
18810 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p2 };
18811 0 : const enum tree_code cmp = EQ_EXPR;
18812 0 : if (!HONOR_SIGNED_ZEROS (type)
18813 : )
18814 : {
18815 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1890;
18816 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1890;
18817 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1890;
18818 0 : {
18819 0 : tree _r;
18820 0 : _r = captures[3];
18821 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1071, __FILE__, __LINE__, true);
18822 0 : return _r;
18823 : }
18824 0 : next_after_fail1890:;
18825 : }
18826 : }
18827 : }
18828 : }
18829 : break;
18830 : }
18831 : default:;
18832 : }
18833 : }
18834 : }
18835 0 : if (integer_zerop (_q21))
18836 : {
18837 0 : if (integer_zerop (_p1))
18838 : {
18839 0 : switch (TREE_CODE (_p2))
18840 : {
18841 0 : case MINUS_EXPR:
18842 0 : {
18843 0 : tree _q80 = TREE_OPERAND (_p2, 0);
18844 0 : tree _q81 = TREE_OPERAND (_p2, 1);
18845 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
18846 : {
18847 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
18848 : {
18849 0 : {
18850 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p2 };
18851 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR);
18852 0 : if (res) return res;
18853 : }
18854 : }
18855 : }
18856 : break;
18857 : }
18858 : default:;
18859 : }
18860 : }
18861 : }
18862 : break;
18863 : }
18864 61202 : case CALL_EXPR:
18865 61202 : switch (get_call_combined_fn (_q20))
18866 : {
18867 0 : case CFN_BUILT_IN_SIGNBITF:
18868 0 : if (call_expr_nargs (_q20) == 1)
18869 : {
18870 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
18871 0 : if (integer_zerop (_q21))
18872 : {
18873 0 : switch (TREE_CODE (_p1))
18874 : {
18875 0 : case NEGATE_EXPR:
18876 0 : {
18877 0 : tree _q60 = TREE_OPERAND (_p1, 0);
18878 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
18879 : {
18880 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
18881 : {
18882 0 : {
18883 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
18884 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR, CFN_BUILT_IN_SIGNBITF);
18885 0 : if (res) return res;
18886 : }
18887 : }
18888 : }
18889 : break;
18890 : }
18891 : default:;
18892 : }
18893 : }
18894 : }
18895 : break;
18896 0 : case CFN_BUILT_IN_SIGNBITL:
18897 0 : if (call_expr_nargs (_q20) == 1)
18898 : {
18899 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
18900 0 : if (integer_zerop (_q21))
18901 : {
18902 0 : switch (TREE_CODE (_p1))
18903 : {
18904 0 : case NEGATE_EXPR:
18905 0 : {
18906 0 : tree _q60 = TREE_OPERAND (_p1, 0);
18907 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
18908 : {
18909 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
18910 : {
18911 0 : {
18912 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
18913 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR, CFN_BUILT_IN_SIGNBITL);
18914 0 : if (res) return res;
18915 : }
18916 : }
18917 : }
18918 : break;
18919 : }
18920 : default:;
18921 : }
18922 : }
18923 : }
18924 : break;
18925 0 : case CFN_SIGNBIT:
18926 0 : if (call_expr_nargs (_q20) == 1)
18927 : {
18928 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
18929 0 : if (integer_zerop (_q21))
18930 : {
18931 0 : switch (TREE_CODE (_p1))
18932 : {
18933 0 : case NEGATE_EXPR:
18934 0 : {
18935 0 : tree _q60 = TREE_OPERAND (_p1, 0);
18936 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
18937 : {
18938 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
18939 : {
18940 0 : {
18941 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
18942 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR, CFN_SIGNBIT);
18943 0 : if (res) return res;
18944 : }
18945 : }
18946 : }
18947 : break;
18948 : }
18949 : default:;
18950 : }
18951 : }
18952 : }
18953 : break;
18954 411 : case CFN_BUILT_IN_SIGNBIT:
18955 411 : if (call_expr_nargs (_q20) == 1)
18956 : {
18957 411 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
18958 411 : if (integer_zerop (_q21))
18959 : {
18960 411 : switch (TREE_CODE (_p1))
18961 : {
18962 3 : case NEGATE_EXPR:
18963 3 : {
18964 3 : tree _q60 = TREE_OPERAND (_p1, 0);
18965 3 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
18966 : {
18967 3 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
18968 : {
18969 3 : {
18970 3 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
18971 3 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, EQ_EXPR, CFN_BUILT_IN_SIGNBIT);
18972 3 : if (res) return res;
18973 : }
18974 : }
18975 : }
18976 : break;
18977 : }
18978 : default:;
18979 : }
18980 : }
18981 : }
18982 : break;
18983 : default:;
18984 : }
18985 : break;
18986 : default:;
18987 : }
18988 : break;
18989 : }
18990 2930605 : case NE_EXPR:
18991 2930605 : {
18992 2930605 : tree _q20 = TREE_OPERAND (_p0, 0);
18993 2930605 : tree _q21 = TREE_OPERAND (_p0, 1);
18994 2930605 : if (CONSTANT_CLASS_P (_q21))
18995 : {
18996 2433959 : if (CONSTANT_CLASS_P (_p1))
18997 : {
18998 257336 : {
18999 257336 : tree _p2_pops[1];
19000 257336 : if (tree_nop_convert (_p2, _p2_pops))
19001 : {
19002 45953 : tree _q60 = _p2_pops[0];
19003 45953 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19004 : {
19005 0 : {
19006 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
19007 0 : if (ANY_INTEGRAL_TYPE_P (type)
19008 0 : && operand_equal_p (captures[1], captures[2])
19009 : )
19010 : {
19011 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1891;
19012 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1891;
19013 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1891;
19014 0 : {
19015 0 : tree res_op0;
19016 0 : res_op0 = captures[1];
19017 0 : tree _r;
19018 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
19019 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1072, __FILE__, __LINE__, true);
19020 0 : return _r;
19021 : }
19022 0 : next_after_fail1891:;
19023 : }
19024 : }
19025 : }
19026 : }
19027 : }
19028 257336 : if ((_p2 == _q20 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q20, 0) && types_match (_p2, _q20)))
19029 : {
19030 2 : {
19031 2 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q21, _p1 };
19032 0 : if (ANY_INTEGRAL_TYPE_P (type)
19033 2 : && operand_equal_p (captures[1], captures[2])
19034 : )
19035 : {
19036 0 : if (TREE_SIDE_EFFECTS (captures[0])) goto next_after_fail1892;
19037 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1892;
19038 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1892;
19039 0 : {
19040 0 : tree res_op0;
19041 0 : res_op0 = captures[1];
19042 0 : tree _r;
19043 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
19044 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1072, __FILE__, __LINE__, true);
19045 0 : return _r;
19046 : }
19047 2 : next_after_fail1892:;
19048 : }
19049 : }
19050 : }
19051 : }
19052 : }
19053 2930605 : if (zerop (_q21))
19054 : {
19055 2008922 : switch (TREE_CODE (_p2))
19056 : {
19057 50 : case NEGATE_EXPR:
19058 50 : {
19059 50 : tree _q60 = TREE_OPERAND (_p2, 0);
19060 50 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
19061 : {
19062 10 : {
19063 10 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
19064 10 : const enum tree_code cmp = NE_EXPR;
19065 10 : if (!HONOR_SIGNED_ZEROS (type)
19066 10 : && bitwise_equal_p (captures[0], captures[1])
19067 : )
19068 : {
19069 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1893;
19070 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1893;
19071 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1893;
19072 0 : {
19073 0 : tree _r;
19074 0 : _r = captures[1];
19075 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1073, __FILE__, __LINE__, true);
19076 0 : return _r;
19077 : }
19078 10 : next_after_fail1893:;
19079 : }
19080 : }
19081 : }
19082 : break;
19083 : }
19084 2008922 : default:;
19085 : }
19086 2008922 : if (integer_zerop (_p2))
19087 : {
19088 339670 : {
19089 339670 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
19090 339670 : const enum tree_code cmp = NE_EXPR;
19091 339670 : if (!HONOR_SIGNED_ZEROS (type)
19092 339670 : && bitwise_equal_p (captures[0], captures[1])
19093 : )
19094 : {
19095 2869 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1894;
19096 2835 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1894;
19097 2835 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1894;
19098 2835 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1894;
19099 2835 : {
19100 2835 : tree _r;
19101 2835 : _r = captures[1];
19102 2835 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1074, __FILE__, __LINE__, true);
19103 2835 : return _r;
19104 : }
19105 336835 : next_after_fail1894:;
19106 : }
19107 : }
19108 : }
19109 : }
19110 2927770 : switch (TREE_CODE (_q20))
19111 : {
19112 573 : case MINUS_EXPR:
19113 573 : {
19114 573 : tree _q30 = TREE_OPERAND (_q20, 0);
19115 573 : tree _q31 = TREE_OPERAND (_q20, 1);
19116 573 : if (zerop (_q21))
19117 : {
19118 80 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
19119 : {
19120 0 : switch (TREE_CODE (_p2))
19121 : {
19122 0 : case MINUS_EXPR:
19123 0 : {
19124 0 : tree _q80 = TREE_OPERAND (_p2, 0);
19125 0 : tree _q81 = TREE_OPERAND (_p2, 1);
19126 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
19127 : {
19128 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
19129 : {
19130 0 : {
19131 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
19132 0 : const enum tree_code cmp = NE_EXPR;
19133 0 : if (!HONOR_SIGNED_ZEROS (type)
19134 : )
19135 : {
19136 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1895;
19137 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1895;
19138 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1895;
19139 0 : {
19140 0 : tree _r;
19141 0 : _r = captures[0];
19142 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1075, __FILE__, __LINE__, true);
19143 0 : return _r;
19144 : }
19145 0 : next_after_fail1895:;
19146 : }
19147 : }
19148 : }
19149 : }
19150 : break;
19151 : }
19152 : default:;
19153 : }
19154 : }
19155 : }
19156 573 : if (integer_zerop (_q21))
19157 : {
19158 29 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
19159 : {
19160 0 : if (integer_zerop (_p2))
19161 : {
19162 0 : {
19163 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
19164 0 : tree res = generic_simplify_372 (loc, type, _p0, _p1, _p2, captures, NE_EXPR);
19165 0 : if (res) return res;
19166 : }
19167 : }
19168 : }
19169 : }
19170 : break;
19171 : }
19172 282225 : case BIT_AND_EXPR:
19173 282225 : {
19174 282225 : tree _q30 = TREE_OPERAND (_q20, 0);
19175 282225 : tree _q31 = TREE_OPERAND (_q20, 1);
19176 282225 : if (integer_pow2p (_q31))
19177 : {
19178 209902 : if (integer_zerop (_q21))
19179 : {
19180 209902 : switch (TREE_CODE (_p1))
19181 : {
19182 2370 : case INTEGER_CST:
19183 2370 : {
19184 2370 : if (integer_zerop (_p2))
19185 : {
19186 1442 : {
19187 1442 : tree captures[3] ATTRIBUTE_UNUSED = { _q30, _q31, _p1 };
19188 1442 : if (!POINTER_TYPE_P (type) && integer_pow2p (captures[2])
19189 : )
19190 : {
19191 662 : {
19192 662 : int shift = (wi::exact_log2 (wi::to_wide (captures[2]))
19193 662 : - wi::exact_log2 (wi::to_wide (captures[1])));
19194 662 : if (shift > 0
19195 : )
19196 : {
19197 387 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1896;
19198 387 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1896;
19199 387 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1896;
19200 387 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1896;
19201 387 : {
19202 387 : tree res_op0;
19203 387 : {
19204 387 : tree _o1[2], _r1;
19205 387 : {
19206 387 : tree _o2[1], _r2;
19207 387 : _o2[0] = captures[0];
19208 387 : if (TREE_TYPE (_o2[0]) != type)
19209 : {
19210 384 : _r2 = fold_build1_loc (loc, NOP_EXPR, type, _o2[0]);
19211 : }
19212 : else
19213 : _r2 = _o2[0];
19214 387 : _o1[0] = _r2;
19215 : }
19216 387 : _o1[1] = build_int_cst (integer_type_node, shift);
19217 387 : _r1 = fold_build2_loc (loc, LSHIFT_EXPR, TREE_TYPE (_o1[0]), _o1[0], _o1[1]);
19218 387 : res_op0 = _r1;
19219 : }
19220 387 : tree res_op1;
19221 387 : res_op1 = captures[2];
19222 387 : tree _r;
19223 387 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
19224 387 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1076, __FILE__, __LINE__, true);
19225 662 : return _r;
19226 : }
19227 : next_after_fail1896:;
19228 : }
19229 : else
19230 : {
19231 275 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1897;
19232 275 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1897;
19233 275 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1897;
19234 275 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1897;
19235 275 : {
19236 275 : tree res_op0;
19237 275 : {
19238 275 : tree _o1[1], _r1;
19239 275 : {
19240 275 : tree _o2[2], _r2;
19241 275 : _o2[0] = captures[0];
19242 275 : _o2[1] = build_int_cst (integer_type_node, -shift);
19243 275 : _r2 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
19244 275 : _o1[0] = _r2;
19245 : }
19246 275 : if (TREE_TYPE (_o1[0]) != type)
19247 : {
19248 139 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
19249 : }
19250 : else
19251 : _r1 = _o1[0];
19252 275 : res_op0 = _r1;
19253 : }
19254 275 : tree res_op1;
19255 275 : res_op1 = captures[2];
19256 275 : tree _r;
19257 275 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
19258 275 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1077, __FILE__, __LINE__, true);
19259 275 : return _r;
19260 : }
19261 : next_after_fail1897:;
19262 : }
19263 : }
19264 : }
19265 : }
19266 : }
19267 : break;
19268 : }
19269 : default:;
19270 : }
19271 : }
19272 : }
19273 : break;
19274 : }
19275 326250 : case CALL_EXPR:
19276 326250 : switch (get_call_combined_fn (_q20))
19277 : {
19278 30 : case CFN_BUILT_IN_SIGNBITF:
19279 30 : if (call_expr_nargs (_q20) == 1)
19280 : {
19281 30 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
19282 30 : if (integer_zerop (_q21))
19283 : {
19284 30 : switch (TREE_CODE (_p1))
19285 : {
19286 0 : case NEGATE_EXPR:
19287 0 : {
19288 0 : tree _q60 = TREE_OPERAND (_p1, 0);
19289 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
19290 : {
19291 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
19292 : {
19293 0 : {
19294 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
19295 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, CFN_BUILT_IN_SIGNBITF);
19296 0 : if (res) return res;
19297 : }
19298 : }
19299 : }
19300 : break;
19301 : }
19302 : default:;
19303 : }
19304 : }
19305 : }
19306 : break;
19307 30 : case CFN_BUILT_IN_SIGNBITL:
19308 30 : if (call_expr_nargs (_q20) == 1)
19309 : {
19310 30 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
19311 30 : if (integer_zerop (_q21))
19312 : {
19313 30 : switch (TREE_CODE (_p1))
19314 : {
19315 0 : case NEGATE_EXPR:
19316 0 : {
19317 0 : tree _q60 = TREE_OPERAND (_p1, 0);
19318 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
19319 : {
19320 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
19321 : {
19322 0 : {
19323 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
19324 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, CFN_BUILT_IN_SIGNBITL);
19325 0 : if (res) return res;
19326 : }
19327 : }
19328 : }
19329 : break;
19330 : }
19331 : default:;
19332 : }
19333 : }
19334 : }
19335 : break;
19336 0 : case CFN_SIGNBIT:
19337 0 : if (call_expr_nargs (_q20) == 1)
19338 : {
19339 0 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
19340 0 : if (integer_zerop (_q21))
19341 : {
19342 0 : switch (TREE_CODE (_p1))
19343 : {
19344 0 : case NEGATE_EXPR:
19345 0 : {
19346 0 : tree _q60 = TREE_OPERAND (_p1, 0);
19347 0 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
19348 : {
19349 0 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
19350 : {
19351 0 : {
19352 0 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
19353 0 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, CFN_SIGNBIT);
19354 0 : if (res) return res;
19355 : }
19356 : }
19357 : }
19358 : break;
19359 : }
19360 : default:;
19361 : }
19362 : }
19363 : }
19364 : break;
19365 2896 : case CFN_BUILT_IN_SIGNBIT:
19366 2896 : if (call_expr_nargs (_q20) == 1)
19367 : {
19368 2896 : tree _q30 = CALL_EXPR_ARG (_q20, 0);
19369 2896 : if (integer_zerop (_q21))
19370 : {
19371 2896 : switch (TREE_CODE (_p1))
19372 : {
19373 4 : case NEGATE_EXPR:
19374 4 : {
19375 4 : tree _q60 = TREE_OPERAND (_p1, 0);
19376 4 : if ((_q60 == _q30 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q30, 0) && types_match (_q60, _q30)))
19377 : {
19378 3 : if ((_p2 == _q30 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q30, 0) && types_match (_p2, _q30)))
19379 : {
19380 3 : {
19381 3 : tree captures[1] ATTRIBUTE_UNUSED = { _q30 };
19382 3 : tree res = generic_simplify_371 (loc, type, _p0, _p1, _p2, captures, NE_EXPR, CFN_BUILT_IN_SIGNBIT);
19383 3 : if (res) return res;
19384 : }
19385 : }
19386 : }
19387 : break;
19388 : }
19389 : default:;
19390 : }
19391 : }
19392 : }
19393 : break;
19394 : default:;
19395 : }
19396 : break;
19397 2927105 : default:;
19398 : }
19399 2927105 : if (integer_zerop (_q21))
19400 : {
19401 1932208 : switch (TREE_CODE (_p1))
19402 : {
19403 109333 : case PLUS_EXPR:
19404 109333 : {
19405 109333 : tree _q50 = TREE_OPERAND (_p1, 0);
19406 109333 : tree _q51 = TREE_OPERAND (_p1, 1);
19407 109333 : {
19408 109333 : tree _q50_pops[1];
19409 109333 : if (tree_nop_convert (_q50, _q50_pops))
19410 : {
19411 11869 : tree _q60 = _q50_pops[0];
19412 11869 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19413 : {
19414 1688 : if (integer_all_onesp (_q51))
19415 : {
19416 1688 : if (integer_zerop (_p2))
19417 : {
19418 1680 : {
19419 1680 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q50 };
19420 1680 : tree res = generic_simplify_376 (loc, type, _p0, _p1, _p2, captures);
19421 1680 : if (res) return res;
19422 : }
19423 : }
19424 : }
19425 : }
19426 : }
19427 : }
19428 107653 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19429 : {
19430 2056 : if (integer_all_onesp (_q51))
19431 : {
19432 2021 : if (integer_zerop (_p2))
19433 : {
19434 2011 : {
19435 2011 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q50 };
19436 2011 : tree res = generic_simplify_377 (loc, type, _p0, _p1, _p2, captures);
19437 2011 : if (res) return res;
19438 : }
19439 : }
19440 : }
19441 : }
19442 : break;
19443 : }
19444 589563 : case CALL_EXPR:
19445 589563 : switch (get_call_combined_fn (_p1))
19446 : {
19447 0 : case CFN_PARITY:
19448 0 : if (call_expr_nargs (_p1) == 1)
19449 : {
19450 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19451 0 : switch (TREE_CODE (_q50))
19452 : {
19453 0 : CASE_CONVERT:
19454 0 : {
19455 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19456 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19457 : {
19458 0 : if (integer_zerop (_p2))
19459 : {
19460 0 : {
19461 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19462 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_PARITY);
19463 0 : if (res) return res;
19464 : }
19465 : }
19466 : }
19467 : break;
19468 : }
19469 0 : default:;
19470 : }
19471 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19472 : {
19473 0 : if (integer_zerop (_p2))
19474 : {
19475 0 : {
19476 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19477 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_PARITY);
19478 0 : if (res) return res;
19479 : }
19480 : }
19481 : }
19482 : }
19483 : break;
19484 7 : case CFN_BUILT_IN_FFS:
19485 7 : if (call_expr_nargs (_p1) == 1)
19486 : {
19487 7 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19488 7 : switch (TREE_CODE (_q50))
19489 : {
19490 0 : CASE_CONVERT:
19491 0 : {
19492 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19493 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19494 : {
19495 0 : if (integer_zerop (_p2))
19496 : {
19497 0 : {
19498 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19499 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFS);
19500 0 : if (res) return res;
19501 : }
19502 : }
19503 : }
19504 : break;
19505 : }
19506 7 : default:;
19507 : }
19508 7 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19509 : {
19510 0 : if (integer_zerop (_p2))
19511 : {
19512 0 : {
19513 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19514 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFS);
19515 0 : if (res) return res;
19516 : }
19517 : }
19518 : }
19519 : }
19520 : break;
19521 0 : case CFN_BUILT_IN_FFSIMAX:
19522 0 : if (call_expr_nargs (_p1) == 1)
19523 : {
19524 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19525 0 : switch (TREE_CODE (_q50))
19526 : {
19527 0 : CASE_CONVERT:
19528 0 : {
19529 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19530 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19531 : {
19532 0 : if (integer_zerop (_p2))
19533 : {
19534 0 : {
19535 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19536 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSIMAX);
19537 0 : if (res) return res;
19538 : }
19539 : }
19540 : }
19541 : break;
19542 : }
19543 0 : default:;
19544 : }
19545 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19546 : {
19547 0 : if (integer_zerop (_p2))
19548 : {
19549 0 : {
19550 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19551 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSIMAX);
19552 0 : if (res) return res;
19553 : }
19554 : }
19555 : }
19556 : }
19557 : break;
19558 2 : case CFN_BUILT_IN_POPCOUNT:
19559 2 : if (call_expr_nargs (_p1) == 1)
19560 : {
19561 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19562 2 : switch (TREE_CODE (_q50))
19563 : {
19564 1 : CASE_CONVERT:
19565 1 : {
19566 1 : tree _q60 = TREE_OPERAND (_q50, 0);
19567 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19568 : {
19569 1 : if (integer_zerop (_p2))
19570 : {
19571 1 : {
19572 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19573 1 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNT);
19574 1 : if (res) return res;
19575 : }
19576 : }
19577 : }
19578 : break;
19579 : }
19580 1 : default:;
19581 : }
19582 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19583 : {
19584 0 : if (integer_zerop (_p2))
19585 : {
19586 0 : {
19587 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19588 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNT);
19589 0 : if (res) return res;
19590 : }
19591 : }
19592 : }
19593 : }
19594 : break;
19595 2 : case CFN_BUILT_IN_PARITYL:
19596 2 : if (call_expr_nargs (_p1) == 1)
19597 : {
19598 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19599 2 : switch (TREE_CODE (_q50))
19600 : {
19601 1 : CASE_CONVERT:
19602 1 : {
19603 1 : tree _q60 = TREE_OPERAND (_q50, 0);
19604 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19605 : {
19606 1 : if (integer_zerop (_p2))
19607 : {
19608 1 : {
19609 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19610 1 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYL);
19611 1 : if (res) return res;
19612 : }
19613 : }
19614 : }
19615 : break;
19616 : }
19617 1 : default:;
19618 : }
19619 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19620 : {
19621 0 : if (integer_zerop (_p2))
19622 : {
19623 0 : {
19624 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19625 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYL);
19626 0 : if (res) return res;
19627 : }
19628 : }
19629 : }
19630 : }
19631 : break;
19632 16 : case CFN_BUILT_IN_FFSL:
19633 16 : if (call_expr_nargs (_p1) == 1)
19634 : {
19635 16 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19636 16 : switch (TREE_CODE (_q50))
19637 : {
19638 16 : CASE_CONVERT:
19639 16 : {
19640 16 : tree _q60 = TREE_OPERAND (_q50, 0);
19641 16 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19642 : {
19643 0 : if (integer_zerop (_p2))
19644 : {
19645 0 : {
19646 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19647 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSL);
19648 0 : if (res) return res;
19649 : }
19650 : }
19651 : }
19652 : break;
19653 : }
19654 16 : default:;
19655 : }
19656 16 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19657 : {
19658 0 : if (integer_zerop (_p2))
19659 : {
19660 0 : {
19661 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19662 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSL);
19663 0 : if (res) return res;
19664 : }
19665 : }
19666 : }
19667 : }
19668 : break;
19669 2 : case CFN_BUILT_IN_POPCOUNTLL:
19670 2 : if (call_expr_nargs (_p1) == 1)
19671 : {
19672 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19673 2 : switch (TREE_CODE (_q50))
19674 : {
19675 1 : CASE_CONVERT:
19676 1 : {
19677 1 : tree _q60 = TREE_OPERAND (_q50, 0);
19678 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19679 : {
19680 1 : if (integer_zerop (_p2))
19681 : {
19682 1 : {
19683 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19684 1 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTLL);
19685 1 : if (res) return res;
19686 : }
19687 : }
19688 : }
19689 : break;
19690 : }
19691 1 : default:;
19692 : }
19693 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19694 : {
19695 0 : if (integer_zerop (_p2))
19696 : {
19697 0 : {
19698 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19699 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTLL);
19700 0 : if (res) return res;
19701 : }
19702 : }
19703 : }
19704 : }
19705 : break;
19706 0 : case CFN_POPCOUNT:
19707 0 : if (call_expr_nargs (_p1) == 1)
19708 : {
19709 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19710 0 : switch (TREE_CODE (_q50))
19711 : {
19712 0 : CASE_CONVERT:
19713 0 : {
19714 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19715 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19716 : {
19717 0 : if (integer_zerop (_p2))
19718 : {
19719 0 : {
19720 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19721 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_POPCOUNT);
19722 0 : if (res) return res;
19723 : }
19724 : }
19725 : }
19726 : break;
19727 : }
19728 0 : default:;
19729 : }
19730 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19731 : {
19732 0 : if (integer_zerop (_p2))
19733 : {
19734 0 : {
19735 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19736 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_POPCOUNT);
19737 0 : if (res) return res;
19738 : }
19739 : }
19740 : }
19741 : }
19742 : break;
19743 0 : case CFN_BUILT_IN_PARITYIMAX:
19744 0 : if (call_expr_nargs (_p1) == 1)
19745 : {
19746 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19747 0 : switch (TREE_CODE (_q50))
19748 : {
19749 0 : CASE_CONVERT:
19750 0 : {
19751 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19752 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19753 : {
19754 0 : if (integer_zerop (_p2))
19755 : {
19756 0 : {
19757 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19758 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYIMAX);
19759 0 : if (res) return res;
19760 : }
19761 : }
19762 : }
19763 : break;
19764 : }
19765 0 : default:;
19766 : }
19767 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19768 : {
19769 0 : if (integer_zerop (_p2))
19770 : {
19771 0 : {
19772 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19773 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYIMAX);
19774 0 : if (res) return res;
19775 : }
19776 : }
19777 : }
19778 : }
19779 : break;
19780 2 : case CFN_BUILT_IN_CLRSBL:
19781 2 : if (call_expr_nargs (_p1) == 1)
19782 : {
19783 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19784 2 : switch (TREE_CODE (_q50))
19785 : {
19786 0 : CASE_CONVERT:
19787 0 : {
19788 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19789 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19790 : {
19791 0 : switch (TREE_CODE (_p2))
19792 : {
19793 0 : case INTEGER_CST:
19794 0 : {
19795 0 : {
19796 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19797 0 : tree res = generic_simplify_374 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBL);
19798 0 : if (res) return res;
19799 : }
19800 0 : break;
19801 : }
19802 : default:;
19803 : }
19804 : }
19805 : break;
19806 : }
19807 2 : default:;
19808 : }
19809 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19810 : {
19811 1 : switch (TREE_CODE (_p2))
19812 : {
19813 1 : case INTEGER_CST:
19814 1 : {
19815 1 : {
19816 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19817 1 : tree res = generic_simplify_375 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBL);
19818 1 : if (res) return res;
19819 : }
19820 0 : break;
19821 : }
19822 : default:;
19823 : }
19824 : }
19825 : }
19826 : break;
19827 0 : case CFN_FFS:
19828 0 : if (call_expr_nargs (_p1) == 1)
19829 : {
19830 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19831 0 : switch (TREE_CODE (_q50))
19832 : {
19833 0 : CASE_CONVERT:
19834 0 : {
19835 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19836 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19837 : {
19838 0 : if (integer_zerop (_p2))
19839 : {
19840 0 : {
19841 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19842 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_FFS);
19843 0 : if (res) return res;
19844 : }
19845 : }
19846 : }
19847 : break;
19848 : }
19849 0 : default:;
19850 : }
19851 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19852 : {
19853 0 : if (integer_zerop (_p2))
19854 : {
19855 0 : {
19856 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19857 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_FFS);
19858 0 : if (res) return res;
19859 : }
19860 : }
19861 : }
19862 : }
19863 : break;
19864 2 : case CFN_BUILT_IN_PARITY:
19865 2 : if (call_expr_nargs (_p1) == 1)
19866 : {
19867 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19868 2 : switch (TREE_CODE (_q50))
19869 : {
19870 1 : CASE_CONVERT:
19871 1 : {
19872 1 : tree _q60 = TREE_OPERAND (_q50, 0);
19873 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19874 : {
19875 1 : if (integer_zerop (_p2))
19876 : {
19877 1 : {
19878 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19879 1 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITY);
19880 1 : if (res) return res;
19881 : }
19882 : }
19883 : }
19884 : break;
19885 : }
19886 1 : default:;
19887 : }
19888 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19889 : {
19890 0 : if (integer_zerop (_p2))
19891 : {
19892 0 : {
19893 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19894 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITY);
19895 0 : if (res) return res;
19896 : }
19897 : }
19898 : }
19899 : }
19900 : break;
19901 0 : case CFN_BUILT_IN_POPCOUNTIMAX:
19902 0 : if (call_expr_nargs (_p1) == 1)
19903 : {
19904 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19905 0 : switch (TREE_CODE (_q50))
19906 : {
19907 0 : CASE_CONVERT:
19908 0 : {
19909 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19910 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19911 : {
19912 0 : if (integer_zerop (_p2))
19913 : {
19914 0 : {
19915 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19916 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTIMAX);
19917 0 : if (res) return res;
19918 : }
19919 : }
19920 : }
19921 : break;
19922 : }
19923 0 : default:;
19924 : }
19925 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19926 : {
19927 0 : if (integer_zerop (_p2))
19928 : {
19929 0 : {
19930 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
19931 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTIMAX);
19932 0 : if (res) return res;
19933 : }
19934 : }
19935 : }
19936 : }
19937 : break;
19938 0 : case CFN_BUILT_IN_CLRSBIMAX:
19939 0 : if (call_expr_nargs (_p1) == 1)
19940 : {
19941 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19942 0 : switch (TREE_CODE (_q50))
19943 : {
19944 0 : CASE_CONVERT:
19945 0 : {
19946 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19947 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19948 : {
19949 0 : switch (TREE_CODE (_p2))
19950 : {
19951 0 : case INTEGER_CST:
19952 0 : {
19953 0 : {
19954 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19955 0 : tree res = generic_simplify_374 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBIMAX);
19956 0 : if (res) return res;
19957 : }
19958 0 : break;
19959 : }
19960 : default:;
19961 : }
19962 : }
19963 : break;
19964 : }
19965 0 : default:;
19966 : }
19967 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
19968 : {
19969 0 : switch (TREE_CODE (_p2))
19970 : {
19971 0 : case INTEGER_CST:
19972 0 : {
19973 0 : {
19974 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
19975 0 : tree res = generic_simplify_375 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBIMAX);
19976 0 : if (res) return res;
19977 : }
19978 0 : break;
19979 : }
19980 : default:;
19981 : }
19982 : }
19983 : }
19984 : break;
19985 2 : case CFN_BUILT_IN_CLRSBLL:
19986 2 : if (call_expr_nargs (_p1) == 1)
19987 : {
19988 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
19989 2 : switch (TREE_CODE (_q50))
19990 : {
19991 0 : CASE_CONVERT:
19992 0 : {
19993 0 : tree _q60 = TREE_OPERAND (_q50, 0);
19994 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
19995 : {
19996 0 : switch (TREE_CODE (_p2))
19997 : {
19998 0 : case INTEGER_CST:
19999 0 : {
20000 0 : {
20001 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
20002 0 : tree res = generic_simplify_374 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBLL);
20003 0 : if (res) return res;
20004 : }
20005 0 : break;
20006 : }
20007 : default:;
20008 : }
20009 : }
20010 : break;
20011 : }
20012 2 : default:;
20013 : }
20014 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20015 : {
20016 1 : switch (TREE_CODE (_p2))
20017 : {
20018 1 : case INTEGER_CST:
20019 1 : {
20020 1 : {
20021 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
20022 1 : tree res = generic_simplify_375 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSBLL);
20023 1 : if (res) return res;
20024 : }
20025 0 : break;
20026 : }
20027 : default:;
20028 : }
20029 : }
20030 : }
20031 : break;
20032 0 : case CFN_BSWAP:
20033 0 : if (call_expr_nargs (_p1) == 1)
20034 : {
20035 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20036 0 : switch (TREE_CODE (_q50))
20037 : {
20038 0 : CASE_CONVERT:
20039 0 : {
20040 0 : tree _q60 = TREE_OPERAND (_q50, 0);
20041 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20042 : {
20043 0 : if (integer_zerop (_p2))
20044 : {
20045 0 : {
20046 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20047 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BSWAP);
20048 0 : if (res) return res;
20049 : }
20050 : }
20051 : }
20052 : break;
20053 : }
20054 0 : default:;
20055 : }
20056 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20057 : {
20058 0 : if (integer_zerop (_p2))
20059 : {
20060 0 : {
20061 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20062 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BSWAP);
20063 0 : if (res) return res;
20064 : }
20065 : }
20066 : }
20067 : }
20068 : break;
20069 0 : case CFN_CLRSB:
20070 0 : if (call_expr_nargs (_p1) == 1)
20071 : {
20072 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20073 0 : switch (TREE_CODE (_q50))
20074 : {
20075 0 : CASE_CONVERT:
20076 0 : {
20077 0 : tree _q60 = TREE_OPERAND (_q50, 0);
20078 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20079 : {
20080 0 : switch (TREE_CODE (_p2))
20081 : {
20082 0 : case INTEGER_CST:
20083 0 : {
20084 0 : {
20085 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
20086 0 : tree res = generic_simplify_374 (loc, type, _p0, _p1, _p2, captures, CFN_CLRSB);
20087 0 : if (res) return res;
20088 : }
20089 0 : break;
20090 : }
20091 : default:;
20092 : }
20093 : }
20094 : break;
20095 : }
20096 0 : default:;
20097 : }
20098 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20099 : {
20100 0 : switch (TREE_CODE (_p2))
20101 : {
20102 0 : case INTEGER_CST:
20103 0 : {
20104 0 : {
20105 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
20106 0 : tree res = generic_simplify_375 (loc, type, _p0, _p1, _p2, captures, CFN_CLRSB);
20107 0 : if (res) return res;
20108 : }
20109 0 : break;
20110 : }
20111 : default:;
20112 : }
20113 : }
20114 : }
20115 : break;
20116 0 : case CFN_BUILT_IN_BSWAP128:
20117 0 : if (call_expr_nargs (_p1) == 1)
20118 : {
20119 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20120 0 : switch (TREE_CODE (_q50))
20121 : {
20122 0 : CASE_CONVERT:
20123 0 : {
20124 0 : tree _q60 = TREE_OPERAND (_q50, 0);
20125 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20126 : {
20127 0 : if (integer_zerop (_p2))
20128 : {
20129 0 : {
20130 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20131 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP128);
20132 0 : if (res) return res;
20133 : }
20134 : }
20135 : }
20136 : break;
20137 : }
20138 0 : default:;
20139 : }
20140 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20141 : {
20142 0 : if (integer_zerop (_p2))
20143 : {
20144 0 : {
20145 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20146 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP128);
20147 0 : if (res) return res;
20148 : }
20149 : }
20150 : }
20151 : }
20152 : break;
20153 2 : case CFN_BUILT_IN_POPCOUNTL:
20154 2 : if (call_expr_nargs (_p1) == 1)
20155 : {
20156 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20157 2 : switch (TREE_CODE (_q50))
20158 : {
20159 1 : CASE_CONVERT:
20160 1 : {
20161 1 : tree _q60 = TREE_OPERAND (_q50, 0);
20162 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20163 : {
20164 1 : if (integer_zerop (_p2))
20165 : {
20166 1 : {
20167 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20168 1 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTL);
20169 1 : if (res) return res;
20170 : }
20171 : }
20172 : }
20173 : break;
20174 : }
20175 1 : default:;
20176 : }
20177 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20178 : {
20179 0 : if (integer_zerop (_p2))
20180 : {
20181 0 : {
20182 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20183 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_POPCOUNTL);
20184 0 : if (res) return res;
20185 : }
20186 : }
20187 : }
20188 : }
20189 : break;
20190 2 : case CFN_BUILT_IN_CLRSB:
20191 2 : if (call_expr_nargs (_p1) == 1)
20192 : {
20193 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20194 2 : switch (TREE_CODE (_q50))
20195 : {
20196 0 : CASE_CONVERT:
20197 0 : {
20198 0 : tree _q60 = TREE_OPERAND (_q50, 0);
20199 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20200 : {
20201 0 : switch (TREE_CODE (_p2))
20202 : {
20203 0 : case INTEGER_CST:
20204 0 : {
20205 0 : {
20206 0 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
20207 0 : tree res = generic_simplify_374 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSB);
20208 0 : if (res) return res;
20209 : }
20210 0 : break;
20211 : }
20212 : default:;
20213 : }
20214 : }
20215 : break;
20216 : }
20217 2 : default:;
20218 : }
20219 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20220 : {
20221 1 : switch (TREE_CODE (_p2))
20222 : {
20223 1 : case INTEGER_CST:
20224 1 : {
20225 1 : {
20226 1 : tree captures[5] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _q50, _p2 };
20227 1 : tree res = generic_simplify_375 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_CLRSB);
20228 1 : if (res) return res;
20229 : }
20230 0 : break;
20231 : }
20232 : default:;
20233 : }
20234 : }
20235 : }
20236 : break;
20237 0 : case CFN_BUILT_IN_FFSLL:
20238 0 : if (call_expr_nargs (_p1) == 1)
20239 : {
20240 0 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20241 0 : switch (TREE_CODE (_q50))
20242 : {
20243 0 : CASE_CONVERT:
20244 0 : {
20245 0 : tree _q60 = TREE_OPERAND (_q50, 0);
20246 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20247 : {
20248 0 : if (integer_zerop (_p2))
20249 : {
20250 0 : {
20251 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20252 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSLL);
20253 0 : if (res) return res;
20254 : }
20255 : }
20256 : }
20257 : break;
20258 : }
20259 0 : default:;
20260 : }
20261 0 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20262 : {
20263 0 : if (integer_zerop (_p2))
20264 : {
20265 0 : {
20266 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20267 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_FFSLL);
20268 0 : if (res) return res;
20269 : }
20270 : }
20271 : }
20272 : }
20273 : break;
20274 2 : case CFN_BUILT_IN_PARITYLL:
20275 2 : if (call_expr_nargs (_p1) == 1)
20276 : {
20277 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20278 2 : switch (TREE_CODE (_q50))
20279 : {
20280 1 : CASE_CONVERT:
20281 1 : {
20282 1 : tree _q60 = TREE_OPERAND (_q50, 0);
20283 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20284 : {
20285 1 : if (integer_zerop (_p2))
20286 : {
20287 1 : {
20288 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20289 1 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYLL);
20290 1 : if (res) return res;
20291 : }
20292 : }
20293 : }
20294 : break;
20295 : }
20296 1 : default:;
20297 : }
20298 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20299 : {
20300 0 : if (integer_zerop (_p2))
20301 : {
20302 0 : {
20303 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20304 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_PARITYLL);
20305 0 : if (res) return res;
20306 : }
20307 : }
20308 : }
20309 : }
20310 : break;
20311 3 : case CFN_BUILT_IN_BSWAP16:
20312 3 : if (call_expr_nargs (_p1) == 1)
20313 : {
20314 3 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20315 3 : switch (TREE_CODE (_q50))
20316 : {
20317 0 : CASE_CONVERT:
20318 0 : {
20319 0 : tree _q60 = TREE_OPERAND (_q50, 0);
20320 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20321 : {
20322 0 : if (integer_zerop (_p2))
20323 : {
20324 0 : {
20325 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20326 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP16);
20327 0 : if (res) return res;
20328 : }
20329 : }
20330 : }
20331 : break;
20332 : }
20333 3 : default:;
20334 : }
20335 3 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20336 : {
20337 1 : if (integer_zerop (_p2))
20338 : {
20339 1 : {
20340 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20341 1 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP16);
20342 1 : if (res) return res;
20343 : }
20344 : }
20345 : }
20346 : }
20347 : break;
20348 2 : case CFN_BUILT_IN_BSWAP32:
20349 2 : if (call_expr_nargs (_p1) == 1)
20350 : {
20351 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20352 2 : switch (TREE_CODE (_q50))
20353 : {
20354 0 : CASE_CONVERT:
20355 0 : {
20356 0 : tree _q60 = TREE_OPERAND (_q50, 0);
20357 0 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20358 : {
20359 0 : if (integer_zerop (_p2))
20360 : {
20361 0 : {
20362 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20363 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP32);
20364 0 : if (res) return res;
20365 : }
20366 : }
20367 : }
20368 : break;
20369 : }
20370 2 : default:;
20371 : }
20372 2 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20373 : {
20374 1 : if (integer_zerop (_p2))
20375 : {
20376 1 : {
20377 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20378 1 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP32);
20379 1 : if (res) return res;
20380 : }
20381 : }
20382 : }
20383 : }
20384 : break;
20385 2 : case CFN_BUILT_IN_BSWAP64:
20386 2 : if (call_expr_nargs (_p1) == 1)
20387 : {
20388 2 : tree _q50 = CALL_EXPR_ARG (_p1, 0);
20389 2 : switch (TREE_CODE (_q50))
20390 : {
20391 1 : CASE_CONVERT:
20392 1 : {
20393 1 : tree _q60 = TREE_OPERAND (_q50, 0);
20394 1 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20395 : {
20396 1 : if (integer_zerop (_p2))
20397 : {
20398 1 : {
20399 1 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20400 1 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP64);
20401 1 : if (res) return res;
20402 : }
20403 : }
20404 : }
20405 : break;
20406 : }
20407 1 : default:;
20408 : }
20409 1 : if ((_q50 == _q20 && ! TREE_SIDE_EFFECTS (_q50)) || (operand_equal_p (_q50, _q20, 0) && types_match (_q50, _q20)))
20410 : {
20411 0 : if (integer_zerop (_p2))
20412 : {
20413 0 : {
20414 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q21, _p1, _p2 };
20415 0 : tree res = generic_simplify_373 (loc, type, _p0, _p1, _p2, captures, CFN_BUILT_IN_BSWAP64);
20416 0 : if (res) return res;
20417 : }
20418 : }
20419 : }
20420 : }
20421 : break;
20422 : default:;
20423 : }
20424 : break;
20425 1928505 : default:;
20426 : }
20427 1928505 : {
20428 1928505 : tree _p1_pops[1];
20429 1928505 : if (tree_nop_convert (_p1, _p1_pops))
20430 : {
20431 163404 : tree _q50 = _p1_pops[0];
20432 163404 : switch (TREE_CODE (_q50))
20433 : {
20434 339 : case PLUS_EXPR:
20435 339 : {
20436 339 : tree _q60 = TREE_OPERAND (_q50, 0);
20437 339 : tree _q61 = TREE_OPERAND (_q50, 1);
20438 339 : {
20439 339 : tree _q60_pops[1];
20440 339 : if (tree_nop_convert (_q60, _q60_pops))
20441 : {
20442 52 : tree _q70 = _q60_pops[0];
20443 52 : if ((_q70 == _q20 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _q20, 0) && types_match (_q70, _q20)))
20444 : {
20445 2 : if (integer_all_onesp (_q61))
20446 : {
20447 2 : if (integer_zerop (_p2))
20448 : {
20449 2 : {
20450 2 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q60 };
20451 2 : tree res = generic_simplify_376 (loc, type, _p0, _p1, _p2, captures);
20452 2 : if (res) return res;
20453 : }
20454 : }
20455 : }
20456 : }
20457 : }
20458 : }
20459 337 : if ((_q60 == _q20 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _q20, 0) && types_match (_q60, _q20)))
20460 : {
20461 14 : if (integer_all_onesp (_q61))
20462 : {
20463 0 : if (integer_zerop (_p2))
20464 : {
20465 0 : {
20466 0 : tree captures[3] ATTRIBUTE_UNUSED = { _p0, _q20, _q60 };
20467 0 : tree res = generic_simplify_377 (loc, type, _p0, _p1, _p2, captures);
20468 0 : if (res) return res;
20469 : }
20470 : }
20471 : }
20472 : }
20473 : break;
20474 : }
20475 : default:;
20476 : }
20477 : }
20478 : }
20479 : }
20480 : break;
20481 : }
20482 164 : case UNEQ_EXPR:
20483 164 : {
20484 164 : tree _q20 = TREE_OPERAND (_p0, 0);
20485 164 : tree _q21 = TREE_OPERAND (_p0, 1);
20486 164 : if (zerop (_q21))
20487 : {
20488 1 : switch (TREE_CODE (_p2))
20489 : {
20490 0 : case NEGATE_EXPR:
20491 0 : {
20492 0 : tree _q60 = TREE_OPERAND (_p2, 0);
20493 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
20494 : {
20495 0 : {
20496 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
20497 0 : const enum tree_code cmp = UNEQ_EXPR;
20498 0 : if (!HONOR_SIGNED_ZEROS (type)
20499 0 : && bitwise_equal_p (captures[0], captures[1])
20500 : )
20501 : {
20502 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1898;
20503 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1898;
20504 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1898;
20505 0 : {
20506 0 : tree _r;
20507 0 : _r = captures[2];
20508 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1069, __FILE__, __LINE__, true);
20509 0 : return _r;
20510 : }
20511 0 : next_after_fail1898:;
20512 : }
20513 : }
20514 : }
20515 : break;
20516 : }
20517 1 : default:;
20518 : }
20519 1 : if (zerop (_p1))
20520 : {
20521 0 : switch (TREE_CODE (_p2))
20522 : {
20523 0 : case NEGATE_EXPR:
20524 0 : {
20525 0 : tree _q60 = TREE_OPERAND (_p2, 0);
20526 0 : {
20527 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p2, _q60 };
20528 0 : const enum tree_code cmp = UNEQ_EXPR;
20529 0 : if (!HONOR_SIGNED_ZEROS (type)
20530 0 : && bitwise_equal_p (captures[0], captures[2])
20531 : )
20532 : {
20533 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1899;
20534 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1899;
20535 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1899;
20536 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1899;
20537 0 : {
20538 0 : tree _r;
20539 0 : _r = captures[1];
20540 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1070, __FILE__, __LINE__, true);
20541 0 : return _r;
20542 : }
20543 0 : next_after_fail1899:;
20544 : }
20545 : }
20546 0 : break;
20547 : }
20548 : default:;
20549 : }
20550 : }
20551 : }
20552 164 : switch (TREE_CODE (_q20))
20553 : {
20554 0 : case MINUS_EXPR:
20555 0 : {
20556 0 : tree _q30 = TREE_OPERAND (_q20, 0);
20557 0 : tree _q31 = TREE_OPERAND (_q20, 1);
20558 0 : if (zerop (_q21))
20559 : {
20560 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
20561 : {
20562 0 : switch (TREE_CODE (_p2))
20563 : {
20564 0 : case MINUS_EXPR:
20565 0 : {
20566 0 : tree _q80 = TREE_OPERAND (_p2, 0);
20567 0 : tree _q81 = TREE_OPERAND (_p2, 1);
20568 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
20569 : {
20570 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
20571 : {
20572 0 : {
20573 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p2 };
20574 0 : const enum tree_code cmp = UNEQ_EXPR;
20575 0 : if (!HONOR_SIGNED_ZEROS (type)
20576 : )
20577 : {
20578 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1900;
20579 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1900;
20580 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1900;
20581 0 : {
20582 0 : tree _r;
20583 0 : _r = captures[3];
20584 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1071, __FILE__, __LINE__, true);
20585 0 : return _r;
20586 : }
20587 0 : next_after_fail1900:;
20588 : }
20589 : }
20590 : }
20591 : }
20592 : break;
20593 : }
20594 : default:;
20595 : }
20596 : }
20597 : }
20598 0 : if (integer_zerop (_q21))
20599 : {
20600 0 : if (integer_zerop (_p1))
20601 : {
20602 0 : switch (TREE_CODE (_p2))
20603 : {
20604 0 : case MINUS_EXPR:
20605 0 : {
20606 0 : tree _q80 = TREE_OPERAND (_p2, 0);
20607 0 : tree _q81 = TREE_OPERAND (_p2, 1);
20608 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
20609 : {
20610 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
20611 : {
20612 0 : {
20613 0 : tree captures[4] ATTRIBUTE_UNUSED = { _q20, _q30, _q31, _p2 };
20614 0 : tree res = generic_simplify_370 (loc, type, _p0, _p1, _p2, captures, UNEQ_EXPR);
20615 0 : if (res) return res;
20616 : }
20617 : }
20618 : }
20619 : break;
20620 : }
20621 : default:;
20622 : }
20623 : }
20624 : }
20625 : break;
20626 : }
20627 : default:;
20628 : }
20629 : break;
20630 : }
20631 7 : case LTGT_EXPR:
20632 7 : {
20633 7 : tree _q20 = TREE_OPERAND (_p0, 0);
20634 7 : tree _q21 = TREE_OPERAND (_p0, 1);
20635 7 : if (zerop (_q21))
20636 : {
20637 0 : switch (TREE_CODE (_p2))
20638 : {
20639 0 : case NEGATE_EXPR:
20640 0 : {
20641 0 : tree _q60 = TREE_OPERAND (_p2, 0);
20642 0 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
20643 : {
20644 0 : {
20645 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
20646 0 : const enum tree_code cmp = LTGT_EXPR;
20647 0 : if (!HONOR_SIGNED_ZEROS (type)
20648 0 : && bitwise_equal_p (captures[0], captures[1])
20649 : )
20650 : {
20651 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1901;
20652 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1901;
20653 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1901;
20654 0 : {
20655 0 : tree _r;
20656 0 : _r = captures[1];
20657 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1073, __FILE__, __LINE__, true);
20658 0 : return _r;
20659 : }
20660 0 : next_after_fail1901:;
20661 : }
20662 : }
20663 : }
20664 : break;
20665 : }
20666 0 : default:;
20667 : }
20668 0 : if (integer_zerop (_p2))
20669 : {
20670 0 : {
20671 0 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
20672 0 : const enum tree_code cmp = LTGT_EXPR;
20673 0 : if (!HONOR_SIGNED_ZEROS (type)
20674 0 : && bitwise_equal_p (captures[0], captures[1])
20675 : )
20676 : {
20677 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1902;
20678 0 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1902;
20679 0 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1902;
20680 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1902;
20681 0 : {
20682 0 : tree _r;
20683 0 : _r = captures[1];
20684 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1074, __FILE__, __LINE__, true);
20685 0 : return _r;
20686 : }
20687 0 : next_after_fail1902:;
20688 : }
20689 : }
20690 : }
20691 : }
20692 7 : switch (TREE_CODE (_q20))
20693 : {
20694 0 : case MINUS_EXPR:
20695 0 : {
20696 0 : tree _q30 = TREE_OPERAND (_q20, 0);
20697 0 : tree _q31 = TREE_OPERAND (_q20, 1);
20698 0 : if (zerop (_q21))
20699 : {
20700 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
20701 : {
20702 0 : switch (TREE_CODE (_p2))
20703 : {
20704 0 : case MINUS_EXPR:
20705 0 : {
20706 0 : tree _q80 = TREE_OPERAND (_p2, 0);
20707 0 : tree _q81 = TREE_OPERAND (_p2, 1);
20708 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
20709 : {
20710 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
20711 : {
20712 0 : {
20713 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
20714 0 : const enum tree_code cmp = LTGT_EXPR;
20715 0 : if (!HONOR_SIGNED_ZEROS (type)
20716 : )
20717 : {
20718 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1903;
20719 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1903;
20720 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1903;
20721 0 : {
20722 0 : tree _r;
20723 0 : _r = captures[0];
20724 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1075, __FILE__, __LINE__, true);
20725 0 : return _r;
20726 : }
20727 0 : next_after_fail1903:;
20728 : }
20729 : }
20730 : }
20731 : }
20732 : break;
20733 : }
20734 : default:;
20735 : }
20736 : }
20737 : }
20738 0 : if (integer_zerop (_q21))
20739 : {
20740 0 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
20741 : {
20742 0 : if (integer_zerop (_p2))
20743 : {
20744 0 : {
20745 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
20746 0 : tree res = generic_simplify_372 (loc, type, _p0, _p1, _p2, captures, LTGT_EXPR);
20747 0 : if (res) return res;
20748 : }
20749 : }
20750 : }
20751 : }
20752 : break;
20753 : }
20754 : default:;
20755 : }
20756 : break;
20757 : }
20758 552387 : case GE_EXPR:
20759 552387 : {
20760 552387 : tree _q20 = TREE_OPERAND (_p0, 0);
20761 552387 : tree _q21 = TREE_OPERAND (_p0, 1);
20762 552387 : switch (TREE_CODE (_q20))
20763 : {
20764 61817 : CASE_CONVERT:
20765 61817 : {
20766 61817 : tree _q30 = TREE_OPERAND (_q20, 0);
20767 61817 : if (zerop (_q21))
20768 : {
20769 30814 : switch (TREE_CODE (_p2))
20770 : {
20771 13 : case NEGATE_EXPR:
20772 13 : {
20773 13 : tree _q70 = TREE_OPERAND (_p2, 0);
20774 13 : if ((_q70 == _p1 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p1, 0) && types_match (_q70, _p1)))
20775 : {
20776 13 : {
20777 13 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
20778 13 : const enum tree_code cmp = GE_EXPR;
20779 13 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
20780 13 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
20781 0 : && element_precision (captures[1])
20782 0 : <= element_precision (captures[0])
20783 0 : && bitwise_equal_p (captures[1], captures[2])
20784 13 : && (!VECTOR_TYPE_P (type)
20785 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
20786 : )
20787 : {
20788 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
20789 : )
20790 : {
20791 0 : {
20792 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
20793 0 : if (types_match (captures[0], stype)
20794 : )
20795 : {
20796 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1904;
20797 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1904;
20798 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1904;
20799 0 : {
20800 0 : tree res_op0;
20801 0 : res_op0 = captures[0];
20802 0 : tree _r;
20803 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20804 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1078, __FILE__, __LINE__, true);
20805 0 : return _r;
20806 : }
20807 13 : next_after_fail1904:;
20808 : }
20809 : else
20810 : {
20811 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1905;
20812 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1905;
20813 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1905;
20814 0 : {
20815 0 : tree res_op0;
20816 0 : {
20817 0 : tree _o1[1], _r1;
20818 0 : _o1[0] = captures[2];
20819 0 : if (TREE_TYPE (_o1[0]) != stype)
20820 : {
20821 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
20822 : }
20823 : else
20824 : _r1 = _o1[0];
20825 0 : res_op0 = _r1;
20826 : }
20827 0 : tree _r;
20828 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20829 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1079, __FILE__, __LINE__, true);
20830 0 : return _r;
20831 : }
20832 13 : next_after_fail1905:;
20833 : }
20834 : }
20835 : }
20836 : else
20837 : {
20838 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1906;
20839 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1906;
20840 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1906;
20841 0 : {
20842 0 : tree res_op0;
20843 0 : res_op0 = captures[2];
20844 0 : tree _r;
20845 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
20846 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1080, __FILE__, __LINE__, true);
20847 0 : return _r;
20848 : }
20849 13 : next_after_fail1906:;
20850 : }
20851 : }
20852 : }
20853 : }
20854 : break;
20855 : }
20856 : default:;
20857 : }
20858 : }
20859 : break;
20860 : }
20861 552387 : default:;
20862 : }
20863 552387 : if (zerop (_q21))
20864 : {
20865 151199 : switch (TREE_CODE (_p2))
20866 : {
20867 31811 : case NEGATE_EXPR:
20868 31811 : {
20869 31811 : tree _q60 = TREE_OPERAND (_p2, 0);
20870 31811 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
20871 : {
20872 31805 : {
20873 31805 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _p1 };
20874 31805 : const enum tree_code cmp = GE_EXPR;
20875 31805 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
20876 31797 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
20877 63594 : && element_precision (captures[1])
20878 31797 : <= element_precision (captures[0])
20879 31797 : && bitwise_equal_p (captures[1], captures[2])
20880 63504 : && (!VECTOR_TYPE_P (type)
20881 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
20882 : )
20883 : {
20884 31699 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
20885 : )
20886 : {
20887 46 : {
20888 46 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
20889 46 : if (types_match (captures[0], stype)
20890 : )
20891 : {
20892 13 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1907;
20893 13 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1907;
20894 13 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1907;
20895 13 : {
20896 13 : tree res_op0;
20897 13 : res_op0 = captures[0];
20898 13 : tree _r;
20899 13 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20900 13 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1078, __FILE__, __LINE__, true);
20901 13 : return _r;
20902 : }
20903 106 : next_after_fail1907:;
20904 : }
20905 : else
20906 : {
20907 33 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1908;
20908 33 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1908;
20909 33 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1908;
20910 33 : {
20911 33 : tree res_op0;
20912 33 : {
20913 33 : tree _o1[1], _r1;
20914 33 : _o1[0] = captures[2];
20915 33 : if (TREE_TYPE (_o1[0]) != stype)
20916 : {
20917 33 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
20918 : }
20919 : else
20920 : _r1 = _o1[0];
20921 33 : res_op0 = _r1;
20922 : }
20923 33 : tree _r;
20924 33 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
20925 33 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1079, __FILE__, __LINE__, true);
20926 33 : return _r;
20927 : }
20928 106 : next_after_fail1908:;
20929 : }
20930 : }
20931 : }
20932 : else
20933 : {
20934 31653 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1909;
20935 31653 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1909;
20936 31653 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1909;
20937 31653 : {
20938 31653 : tree res_op0;
20939 31653 : res_op0 = captures[2];
20940 31653 : tree _r;
20941 31653 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
20942 31653 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1080, __FILE__, __LINE__, true);
20943 31653 : return _r;
20944 : }
20945 106 : next_after_fail1909:;
20946 : }
20947 : }
20948 : }
20949 : }
20950 : break;
20951 : }
20952 : default:;
20953 : }
20954 : }
20955 520688 : switch (TREE_CODE (_q20))
20956 : {
20957 31959 : case MINUS_EXPR:
20958 31959 : {
20959 31959 : tree _q30 = TREE_OPERAND (_q20, 0);
20960 31959 : tree _q31 = TREE_OPERAND (_q20, 1);
20961 31959 : if (zerop (_q21))
20962 : {
20963 31171 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
20964 : {
20965 1 : switch (TREE_CODE (_p2))
20966 : {
20967 1 : case MINUS_EXPR:
20968 1 : {
20969 1 : tree _q80 = TREE_OPERAND (_p2, 0);
20970 1 : tree _q81 = TREE_OPERAND (_p2, 1);
20971 1 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
20972 : {
20973 1 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
20974 : {
20975 1 : {
20976 1 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
20977 1 : const enum tree_code cmp = GE_EXPR;
20978 1 : if (!HONOR_SIGNED_ZEROS (type)
20979 1 : && !TYPE_UNSIGNED (type)
20980 2 : && (!VECTOR_TYPE_P (type)
20981 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
20982 : )
20983 : {
20984 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1910;
20985 1 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1910;
20986 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1910;
20987 1 : {
20988 1 : tree res_op0;
20989 1 : res_op0 = captures[0];
20990 1 : tree _r;
20991 1 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
20992 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1081, __FILE__, __LINE__, true);
20993 1 : return _r;
20994 : }
20995 0 : next_after_fail1910:;
20996 : }
20997 : }
20998 : }
20999 : }
21000 : break;
21001 : }
21002 : default:;
21003 : }
21004 : }
21005 : }
21006 : break;
21007 : }
21008 520687 : default:;
21009 : }
21010 520687 : if (integer_zerop (_q21))
21011 : {
21012 118948 : switch (TREE_CODE (_p1))
21013 : {
21014 65 : case BIT_NOT_EXPR:
21015 65 : {
21016 65 : tree _q50 = TREE_OPERAND (_p1, 0);
21017 65 : if ((_p2 == _q50 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q50, 0) && types_match (_p2, _q50)))
21018 : {
21019 9 : {
21020 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
21021 9 : tree res = generic_simplify_378 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
21022 9 : if (res) return res;
21023 : }
21024 : }
21025 : break;
21026 : }
21027 118939 : default:;
21028 : }
21029 118939 : switch (TREE_CODE (_p2))
21030 : {
21031 35 : case BIT_NOT_EXPR:
21032 35 : {
21033 35 : tree _q60 = TREE_OPERAND (_p2, 0);
21034 35 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
21035 : {
21036 9 : {
21037 9 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
21038 9 : tree res = generic_simplify_379 (loc, type, _p0, _p1, _p2, captures, GE_EXPR);
21039 9 : if (res) return res;
21040 : }
21041 : }
21042 : break;
21043 : }
21044 : default:;
21045 : }
21046 : }
21047 : break;
21048 : }
21049 917690 : case GT_EXPR:
21050 917690 : {
21051 917690 : tree _q20 = TREE_OPERAND (_p0, 0);
21052 917690 : tree _q21 = TREE_OPERAND (_p0, 1);
21053 917690 : switch (TREE_CODE (_q20))
21054 : {
21055 88505 : CASE_CONVERT:
21056 88505 : {
21057 88505 : tree _q30 = TREE_OPERAND (_q20, 0);
21058 88505 : if (zerop (_q21))
21059 : {
21060 1484 : switch (TREE_CODE (_p2))
21061 : {
21062 4 : case NEGATE_EXPR:
21063 4 : {
21064 4 : tree _q70 = TREE_OPERAND (_p2, 0);
21065 4 : if ((_q70 == _p1 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p1, 0) && types_match (_q70, _p1)))
21066 : {
21067 0 : {
21068 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
21069 0 : const enum tree_code cmp = GT_EXPR;
21070 0 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
21071 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
21072 0 : && element_precision (captures[1])
21073 0 : <= element_precision (captures[0])
21074 0 : && bitwise_equal_p (captures[1], captures[2])
21075 0 : && (!VECTOR_TYPE_P (type)
21076 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
21077 : )
21078 : {
21079 0 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
21080 : )
21081 : {
21082 0 : {
21083 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
21084 0 : if (types_match (captures[0], stype)
21085 : )
21086 : {
21087 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1911;
21088 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1911;
21089 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1911;
21090 0 : {
21091 0 : tree res_op0;
21092 0 : res_op0 = captures[0];
21093 0 : tree _r;
21094 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
21095 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1078, __FILE__, __LINE__, true);
21096 0 : return _r;
21097 : }
21098 0 : next_after_fail1911:;
21099 : }
21100 : else
21101 : {
21102 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1912;
21103 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1912;
21104 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1912;
21105 0 : {
21106 0 : tree res_op0;
21107 0 : {
21108 0 : tree _o1[1], _r1;
21109 0 : _o1[0] = captures[2];
21110 0 : if (TREE_TYPE (_o1[0]) != stype)
21111 : {
21112 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
21113 : }
21114 : else
21115 : _r1 = _o1[0];
21116 0 : res_op0 = _r1;
21117 : }
21118 0 : tree _r;
21119 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
21120 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1079, __FILE__, __LINE__, true);
21121 0 : return _r;
21122 : }
21123 0 : next_after_fail1912:;
21124 : }
21125 : }
21126 : }
21127 : else
21128 : {
21129 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1913;
21130 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1913;
21131 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1913;
21132 0 : {
21133 0 : tree res_op0;
21134 0 : res_op0 = captures[2];
21135 0 : tree _r;
21136 0 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
21137 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1080, __FILE__, __LINE__, true);
21138 0 : return _r;
21139 : }
21140 0 : next_after_fail1913:;
21141 : }
21142 : }
21143 : }
21144 : }
21145 : break;
21146 : }
21147 : default:;
21148 : }
21149 : }
21150 : break;
21151 : }
21152 917690 : default:;
21153 : }
21154 917690 : if (zerop (_q21))
21155 : {
21156 205116 : switch (TREE_CODE (_p2))
21157 : {
21158 295 : case NEGATE_EXPR:
21159 295 : {
21160 295 : tree _q60 = TREE_OPERAND (_p2, 0);
21161 295 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
21162 : {
21163 147 : {
21164 147 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _p1 };
21165 147 : const enum tree_code cmp = GT_EXPR;
21166 147 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
21167 115 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
21168 230 : && element_precision (captures[1])
21169 115 : <= element_precision (captures[0])
21170 115 : && bitwise_equal_p (captures[1], captures[2])
21171 257 : && (!VECTOR_TYPE_P (type)
21172 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
21173 : )
21174 : {
21175 110 : if (TYPE_UNSIGNED (TREE_TYPE (captures[2]))
21176 : )
21177 : {
21178 0 : {
21179 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
21180 0 : if (types_match (captures[0], stype)
21181 : )
21182 : {
21183 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1914;
21184 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1914;
21185 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1914;
21186 0 : {
21187 0 : tree res_op0;
21188 0 : res_op0 = captures[0];
21189 0 : tree _r;
21190 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
21191 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1078, __FILE__, __LINE__, true);
21192 0 : return _r;
21193 : }
21194 37 : next_after_fail1914:;
21195 : }
21196 : else
21197 : {
21198 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1915;
21199 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1915;
21200 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1915;
21201 0 : {
21202 0 : tree res_op0;
21203 0 : {
21204 0 : tree _o1[1], _r1;
21205 0 : _o1[0] = captures[2];
21206 0 : if (TREE_TYPE (_o1[0]) != stype)
21207 : {
21208 0 : _r1 = fold_build1_loc (loc, NOP_EXPR, stype, _o1[0]);
21209 : }
21210 : else
21211 : _r1 = _o1[0];
21212 0 : res_op0 = _r1;
21213 : }
21214 0 : tree _r;
21215 0 : _r = fold_build1_loc (loc, ABSU_EXPR, type, res_op0);
21216 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1079, __FILE__, __LINE__, true);
21217 0 : return _r;
21218 : }
21219 37 : next_after_fail1915:;
21220 : }
21221 : }
21222 : }
21223 : else
21224 : {
21225 110 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1916;
21226 110 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1916;
21227 110 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1916;
21228 110 : {
21229 110 : tree res_op0;
21230 110 : res_op0 = captures[2];
21231 110 : tree _r;
21232 110 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
21233 110 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1080, __FILE__, __LINE__, true);
21234 110 : return _r;
21235 : }
21236 37 : next_after_fail1916:;
21237 : }
21238 : }
21239 : }
21240 : }
21241 : break;
21242 : }
21243 : default:;
21244 : }
21245 : }
21246 917580 : switch (TREE_CODE (_q20))
21247 : {
21248 1072 : case MINUS_EXPR:
21249 1072 : {
21250 1072 : tree _q30 = TREE_OPERAND (_q20, 0);
21251 1072 : tree _q31 = TREE_OPERAND (_q20, 1);
21252 1072 : if (zerop (_q21))
21253 : {
21254 160 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
21255 : {
21256 15 : switch (TREE_CODE (_p2))
21257 : {
21258 9 : case MINUS_EXPR:
21259 9 : {
21260 9 : tree _q80 = TREE_OPERAND (_p2, 0);
21261 9 : tree _q81 = TREE_OPERAND (_p2, 1);
21262 9 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
21263 : {
21264 9 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
21265 : {
21266 9 : {
21267 9 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
21268 9 : const enum tree_code cmp = GT_EXPR;
21269 9 : if (!HONOR_SIGNED_ZEROS (type)
21270 9 : && !TYPE_UNSIGNED (type)
21271 18 : && (!VECTOR_TYPE_P (type)
21272 0 : || target_supports_op_p (type, ABS_EXPR, optab_vector))
21273 : )
21274 : {
21275 9 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1917;
21276 9 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1917;
21277 9 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1917;
21278 9 : {
21279 9 : tree res_op0;
21280 9 : res_op0 = captures[0];
21281 9 : tree _r;
21282 9 : _r = fold_build1_loc (loc, ABS_EXPR, type, res_op0);
21283 9 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1081, __FILE__, __LINE__, true);
21284 9 : return _r;
21285 : }
21286 0 : next_after_fail1917:;
21287 : }
21288 : }
21289 : }
21290 : }
21291 : break;
21292 : }
21293 : default:;
21294 : }
21295 : }
21296 : }
21297 : break;
21298 : }
21299 : default:;
21300 : }
21301 : break;
21302 : }
21303 1401038 : case LE_EXPR:
21304 1401038 : {
21305 1401038 : tree _q20 = TREE_OPERAND (_p0, 0);
21306 1401038 : tree _q21 = TREE_OPERAND (_p0, 1);
21307 1401038 : switch (TREE_CODE (_q20))
21308 : {
21309 141561 : CASE_CONVERT:
21310 141561 : {
21311 141561 : tree _q30 = TREE_OPERAND (_q20, 0);
21312 141561 : if (zerop (_q21))
21313 : {
21314 1240 : switch (TREE_CODE (_p2))
21315 : {
21316 0 : case NEGATE_EXPR:
21317 0 : {
21318 0 : tree _q70 = TREE_OPERAND (_p2, 0);
21319 0 : if ((_q70 == _p1 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p1, 0) && types_match (_q70, _p1)))
21320 : {
21321 0 : {
21322 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
21323 0 : const enum tree_code cmp = LE_EXPR;
21324 0 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
21325 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
21326 0 : && element_precision (captures[1])
21327 0 : <= element_precision (captures[0])
21328 0 : && bitwise_equal_p (captures[1], captures[2])
21329 0 : && (!VECTOR_TYPE_P (type)
21330 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
21331 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
21332 : )
21333 : {
21334 0 : if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
21335 0 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
21336 0 : || TYPE_UNSIGNED (TREE_TYPE (captures[2]))
21337 : )
21338 : {
21339 0 : {
21340 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
21341 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
21342 0 : if (types_match (captures[0], stype)
21343 : )
21344 : {
21345 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1918;
21346 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1918;
21347 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1918;
21348 0 : {
21349 0 : tree res_op0;
21350 0 : {
21351 0 : tree _o1[1], _r1;
21352 0 : {
21353 0 : tree _o2[1], _r2;
21354 0 : _o2[0] = captures[0];
21355 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21356 0 : _o1[0] = _r2;
21357 : }
21358 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21359 0 : res_op0 = _r1;
21360 : }
21361 0 : tree _r;
21362 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21363 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1082, __FILE__, __LINE__, true);
21364 0 : return _r;
21365 : }
21366 0 : next_after_fail1918:;
21367 : }
21368 : else
21369 : {
21370 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1919;
21371 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1919;
21372 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1919;
21373 0 : {
21374 0 : tree res_op0;
21375 0 : {
21376 0 : tree _o1[1], _r1;
21377 0 : {
21378 0 : tree _o2[1], _r2;
21379 0 : {
21380 0 : tree _o3[1], _r3;
21381 0 : _o3[0] = captures[2];
21382 0 : if (TREE_TYPE (_o3[0]) != stype)
21383 : {
21384 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, stype, _o3[0]);
21385 : }
21386 : else
21387 : _r3 = _o3[0];
21388 0 : _o2[0] = _r3;
21389 : }
21390 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21391 0 : _o1[0] = _r2;
21392 : }
21393 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21394 0 : res_op0 = _r1;
21395 : }
21396 0 : tree _r;
21397 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21398 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1083, __FILE__, __LINE__, true);
21399 0 : return _r;
21400 : }
21401 0 : next_after_fail1919:;
21402 : }
21403 : }
21404 : }
21405 : else
21406 : {
21407 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1920;
21408 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1920;
21409 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1920;
21410 0 : {
21411 0 : tree res_op0;
21412 0 : {
21413 0 : tree _o1[1], _r1;
21414 0 : {
21415 0 : tree _o2[1], _r2;
21416 0 : _o2[0] = captures[2];
21417 0 : _r2 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
21418 0 : _o1[0] = _r2;
21419 : }
21420 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21421 0 : res_op0 = _r1;
21422 : }
21423 0 : tree _r;
21424 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21425 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1084, __FILE__, __LINE__, true);
21426 0 : return _r;
21427 : }
21428 0 : next_after_fail1920:;
21429 : }
21430 : }
21431 : }
21432 : }
21433 : break;
21434 : }
21435 : default:;
21436 : }
21437 : }
21438 : break;
21439 : }
21440 1401038 : default:;
21441 : }
21442 1401038 : if (zerop (_q21))
21443 : {
21444 126192 : switch (TREE_CODE (_p2))
21445 : {
21446 7 : case NEGATE_EXPR:
21447 7 : {
21448 7 : tree _q60 = TREE_OPERAND (_p2, 0);
21449 7 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
21450 : {
21451 7 : {
21452 7 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _p1 };
21453 7 : const enum tree_code cmp = LE_EXPR;
21454 7 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
21455 7 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
21456 14 : && element_precision (captures[1])
21457 7 : <= element_precision (captures[0])
21458 7 : && bitwise_equal_p (captures[1], captures[2])
21459 14 : && (!VECTOR_TYPE_P (type)
21460 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
21461 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
21462 : )
21463 : {
21464 14 : if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
21465 7 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
21466 7 : || TYPE_UNSIGNED (TREE_TYPE (captures[2]))
21467 : )
21468 : {
21469 7 : {
21470 7 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
21471 7 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
21472 7 : if (types_match (captures[0], stype)
21473 : )
21474 : {
21475 7 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1921;
21476 7 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1921;
21477 7 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1921;
21478 7 : {
21479 7 : tree res_op0;
21480 7 : {
21481 7 : tree _o1[1], _r1;
21482 7 : {
21483 7 : tree _o2[1], _r2;
21484 7 : _o2[0] = captures[0];
21485 7 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21486 7 : _o1[0] = _r2;
21487 : }
21488 7 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21489 7 : res_op0 = _r1;
21490 : }
21491 7 : tree _r;
21492 7 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21493 7 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1082, __FILE__, __LINE__, true);
21494 7 : return _r;
21495 : }
21496 0 : next_after_fail1921:;
21497 : }
21498 : else
21499 : {
21500 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1922;
21501 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1922;
21502 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1922;
21503 0 : {
21504 0 : tree res_op0;
21505 0 : {
21506 0 : tree _o1[1], _r1;
21507 0 : {
21508 0 : tree _o2[1], _r2;
21509 0 : {
21510 0 : tree _o3[1], _r3;
21511 0 : _o3[0] = captures[2];
21512 0 : if (TREE_TYPE (_o3[0]) != stype)
21513 : {
21514 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, stype, _o3[0]);
21515 : }
21516 : else
21517 : _r3 = _o3[0];
21518 0 : _o2[0] = _r3;
21519 : }
21520 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21521 0 : _o1[0] = _r2;
21522 : }
21523 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21524 0 : res_op0 = _r1;
21525 : }
21526 0 : tree _r;
21527 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21528 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1083, __FILE__, __LINE__, true);
21529 0 : return _r;
21530 : }
21531 0 : next_after_fail1922:;
21532 : }
21533 : }
21534 : }
21535 : else
21536 : {
21537 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1923;
21538 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1923;
21539 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1923;
21540 0 : {
21541 0 : tree res_op0;
21542 0 : {
21543 0 : tree _o1[1], _r1;
21544 0 : {
21545 0 : tree _o2[1], _r2;
21546 0 : _o2[0] = captures[2];
21547 0 : _r2 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
21548 0 : _o1[0] = _r2;
21549 : }
21550 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21551 0 : res_op0 = _r1;
21552 : }
21553 0 : tree _r;
21554 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21555 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1084, __FILE__, __LINE__, true);
21556 0 : return _r;
21557 : }
21558 0 : next_after_fail1923:;
21559 : }
21560 : }
21561 : }
21562 : }
21563 : break;
21564 : }
21565 : default:;
21566 : }
21567 : }
21568 1401031 : switch (TREE_CODE (_q20))
21569 : {
21570 190 : case MINUS_EXPR:
21571 190 : {
21572 190 : tree _q30 = TREE_OPERAND (_q20, 0);
21573 190 : tree _q31 = TREE_OPERAND (_q20, 1);
21574 190 : if (zerop (_q21))
21575 : {
21576 148 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
21577 : {
21578 0 : switch (TREE_CODE (_p2))
21579 : {
21580 0 : case MINUS_EXPR:
21581 0 : {
21582 0 : tree _q80 = TREE_OPERAND (_p2, 0);
21583 0 : tree _q81 = TREE_OPERAND (_p2, 1);
21584 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
21585 : {
21586 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
21587 : {
21588 0 : {
21589 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
21590 0 : const enum tree_code cmp = LE_EXPR;
21591 0 : if (!HONOR_SIGNED_ZEROS (type)
21592 0 : && !TYPE_UNSIGNED (type)
21593 : )
21594 : {
21595 0 : if (ANY_INTEGRAL_TYPE_P (type)
21596 0 : && !TYPE_OVERFLOW_WRAPS (type)
21597 0 : && (!VECTOR_TYPE_P (type)
21598 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
21599 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
21600 : )
21601 : {
21602 0 : {
21603 0 : tree utype = unsigned_type_for (type);
21604 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1924;
21605 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1924;
21606 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1924;
21607 0 : {
21608 0 : tree res_op0;
21609 0 : {
21610 0 : tree _o1[1], _r1;
21611 0 : {
21612 0 : tree _o2[1], _r2;
21613 0 : _o2[0] = captures[0];
21614 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21615 0 : _o1[0] = _r2;
21616 : }
21617 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21618 0 : res_op0 = _r1;
21619 : }
21620 0 : tree _r;
21621 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21622 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1085, __FILE__, __LINE__, true);
21623 0 : return _r;
21624 : }
21625 0 : next_after_fail1924:;
21626 : }
21627 : }
21628 : else
21629 : {
21630 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1925;
21631 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1925;
21632 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1925;
21633 0 : {
21634 0 : tree res_op0;
21635 0 : {
21636 0 : tree _o1[1], _r1;
21637 0 : _o1[0] = captures[0];
21638 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21639 0 : res_op0 = _r1;
21640 : }
21641 0 : tree _r;
21642 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
21643 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1086, __FILE__, __LINE__, true);
21644 0 : return _r;
21645 : }
21646 0 : next_after_fail1925:;
21647 : }
21648 : }
21649 : }
21650 : }
21651 : }
21652 : break;
21653 : }
21654 : default:;
21655 : }
21656 : }
21657 : }
21658 : break;
21659 : }
21660 : default:;
21661 : }
21662 : break;
21663 : }
21664 1810135 : case LT_EXPR:
21665 1810135 : {
21666 1810135 : tree _q20 = TREE_OPERAND (_p0, 0);
21667 1810135 : tree _q21 = TREE_OPERAND (_p0, 1);
21668 1810135 : switch (TREE_CODE (_q20))
21669 : {
21670 101243 : CASE_CONVERT:
21671 101243 : {
21672 101243 : tree _q30 = TREE_OPERAND (_q20, 0);
21673 101243 : if (zerop (_q21))
21674 : {
21675 19365 : switch (TREE_CODE (_p2))
21676 : {
21677 8 : case NEGATE_EXPR:
21678 8 : {
21679 8 : tree _q70 = TREE_OPERAND (_p2, 0);
21680 8 : if ((_q70 == _p1 && ! TREE_SIDE_EFFECTS (_q70)) || (operand_equal_p (_q70, _p1, 0) && types_match (_q70, _p1)))
21681 : {
21682 0 : {
21683 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _p1 };
21684 0 : const enum tree_code cmp = LT_EXPR;
21685 0 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
21686 0 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
21687 0 : && element_precision (captures[1])
21688 0 : <= element_precision (captures[0])
21689 0 : && bitwise_equal_p (captures[1], captures[2])
21690 0 : && (!VECTOR_TYPE_P (type)
21691 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
21692 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
21693 : )
21694 : {
21695 0 : if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
21696 0 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
21697 0 : || TYPE_UNSIGNED (TREE_TYPE (captures[2]))
21698 : )
21699 : {
21700 0 : {
21701 0 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
21702 0 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
21703 0 : if (types_match (captures[0], stype)
21704 : )
21705 : {
21706 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1926;
21707 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1926;
21708 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1926;
21709 0 : {
21710 0 : tree res_op0;
21711 0 : {
21712 0 : tree _o1[1], _r1;
21713 0 : {
21714 0 : tree _o2[1], _r2;
21715 0 : _o2[0] = captures[0];
21716 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21717 0 : _o1[0] = _r2;
21718 : }
21719 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21720 0 : res_op0 = _r1;
21721 : }
21722 0 : tree _r;
21723 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21724 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1082, __FILE__, __LINE__, true);
21725 0 : return _r;
21726 : }
21727 0 : next_after_fail1926:;
21728 : }
21729 : else
21730 : {
21731 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1927;
21732 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1927;
21733 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1927;
21734 0 : {
21735 0 : tree res_op0;
21736 0 : {
21737 0 : tree _o1[1], _r1;
21738 0 : {
21739 0 : tree _o2[1], _r2;
21740 0 : {
21741 0 : tree _o3[1], _r3;
21742 0 : _o3[0] = captures[2];
21743 0 : if (TREE_TYPE (_o3[0]) != stype)
21744 : {
21745 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, stype, _o3[0]);
21746 : }
21747 : else
21748 : _r3 = _o3[0];
21749 0 : _o2[0] = _r3;
21750 : }
21751 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21752 0 : _o1[0] = _r2;
21753 : }
21754 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21755 0 : res_op0 = _r1;
21756 : }
21757 0 : tree _r;
21758 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21759 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1083, __FILE__, __LINE__, true);
21760 0 : return _r;
21761 : }
21762 0 : next_after_fail1927:;
21763 : }
21764 : }
21765 : }
21766 : else
21767 : {
21768 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1928;
21769 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1928;
21770 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1928;
21771 0 : {
21772 0 : tree res_op0;
21773 0 : {
21774 0 : tree _o1[1], _r1;
21775 0 : {
21776 0 : tree _o2[1], _r2;
21777 0 : _o2[0] = captures[2];
21778 0 : _r2 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
21779 0 : _o1[0] = _r2;
21780 : }
21781 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21782 0 : res_op0 = _r1;
21783 : }
21784 0 : tree _r;
21785 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21786 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1084, __FILE__, __LINE__, true);
21787 0 : return _r;
21788 : }
21789 0 : next_after_fail1928:;
21790 : }
21791 : }
21792 : }
21793 : }
21794 : break;
21795 : }
21796 : default:;
21797 : }
21798 : }
21799 : break;
21800 : }
21801 1810135 : default:;
21802 : }
21803 1810135 : if (zerop (_q21))
21804 : {
21805 384921 : switch (TREE_CODE (_p2))
21806 : {
21807 33 : case NEGATE_EXPR:
21808 33 : {
21809 33 : tree _q60 = TREE_OPERAND (_p2, 0);
21810 33 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
21811 : {
21812 25 : {
21813 25 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q20, _p1 };
21814 25 : const enum tree_code cmp = LT_EXPR;
21815 25 : if (!HONOR_SIGNED_ZEROS (TREE_TYPE (captures[1]))
21816 25 : && !TYPE_UNSIGNED (TREE_TYPE (captures[1]))
21817 50 : && element_precision (captures[1])
21818 25 : <= element_precision (captures[0])
21819 25 : && bitwise_equal_p (captures[1], captures[2])
21820 50 : && (!VECTOR_TYPE_P (type)
21821 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
21822 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
21823 : )
21824 : {
21825 50 : if ((ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2]))
21826 25 : && !TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2])))
21827 26 : || TYPE_UNSIGNED (TREE_TYPE (captures[2]))
21828 : )
21829 : {
21830 24 : {
21831 24 : tree stype = signed_type_for (TREE_TYPE (captures[2]));
21832 24 : tree utype = unsigned_type_for (TREE_TYPE (captures[2]));
21833 24 : if (types_match (captures[0], stype)
21834 : )
21835 : {
21836 24 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1929;
21837 24 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1929;
21838 24 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1929;
21839 24 : {
21840 24 : tree res_op0;
21841 24 : {
21842 24 : tree _o1[1], _r1;
21843 24 : {
21844 24 : tree _o2[1], _r2;
21845 24 : _o2[0] = captures[0];
21846 24 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21847 24 : _o1[0] = _r2;
21848 : }
21849 24 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21850 24 : res_op0 = _r1;
21851 : }
21852 24 : tree _r;
21853 24 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21854 24 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1082, __FILE__, __LINE__, true);
21855 24 : return _r;
21856 : }
21857 0 : next_after_fail1929:;
21858 : }
21859 : else
21860 : {
21861 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1930;
21862 0 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1930;
21863 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1930;
21864 0 : {
21865 0 : tree res_op0;
21866 0 : {
21867 0 : tree _o1[1], _r1;
21868 0 : {
21869 0 : tree _o2[1], _r2;
21870 0 : {
21871 0 : tree _o3[1], _r3;
21872 0 : _o3[0] = captures[2];
21873 0 : if (TREE_TYPE (_o3[0]) != stype)
21874 : {
21875 0 : _r3 = fold_build1_loc (loc, NOP_EXPR, stype, _o3[0]);
21876 : }
21877 : else
21878 : _r3 = _o3[0];
21879 0 : _o2[0] = _r3;
21880 : }
21881 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21882 0 : _o1[0] = _r2;
21883 : }
21884 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21885 0 : res_op0 = _r1;
21886 : }
21887 0 : tree _r;
21888 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21889 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1083, __FILE__, __LINE__, true);
21890 0 : return _r;
21891 : }
21892 0 : next_after_fail1930:;
21893 : }
21894 : }
21895 : }
21896 : else
21897 : {
21898 1 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1931;
21899 1 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1931;
21900 1 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1931;
21901 1 : {
21902 1 : tree res_op0;
21903 1 : {
21904 1 : tree _o1[1], _r1;
21905 1 : {
21906 1 : tree _o2[1], _r2;
21907 1 : _o2[0] = captures[2];
21908 1 : _r2 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o2[0]), _o2[0]);
21909 1 : _o1[0] = _r2;
21910 : }
21911 1 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21912 1 : res_op0 = _r1;
21913 : }
21914 1 : tree _r;
21915 1 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21916 1 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1084, __FILE__, __LINE__, true);
21917 1 : return _r;
21918 : }
21919 0 : next_after_fail1931:;
21920 : }
21921 : }
21922 : }
21923 : }
21924 : break;
21925 : }
21926 : default:;
21927 : }
21928 : }
21929 1810110 : switch (TREE_CODE (_q20))
21930 : {
21931 11327 : case MINUS_EXPR:
21932 11327 : {
21933 11327 : tree _q30 = TREE_OPERAND (_q20, 0);
21934 11327 : tree _q31 = TREE_OPERAND (_q20, 1);
21935 11327 : if (zerop (_q21))
21936 : {
21937 7401 : if ((_p1 == _q20 && ! TREE_SIDE_EFFECTS (_p1)) || (operand_equal_p (_p1, _q20, 0) && types_match (_p1, _q20)))
21938 : {
21939 0 : switch (TREE_CODE (_p2))
21940 : {
21941 0 : case MINUS_EXPR:
21942 0 : {
21943 0 : tree _q80 = TREE_OPERAND (_p2, 0);
21944 0 : tree _q81 = TREE_OPERAND (_p2, 1);
21945 0 : if ((_q80 == _q31 && ! TREE_SIDE_EFFECTS (_q80)) || (operand_equal_p (_q80, _q31, 0) && types_match (_q80, _q31)))
21946 : {
21947 0 : if ((_q81 == _q30 && ! TREE_SIDE_EFFECTS (_q81)) || (operand_equal_p (_q81, _q30, 0) && types_match (_q81, _q30)))
21948 : {
21949 0 : {
21950 0 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _q30, _q31 };
21951 0 : const enum tree_code cmp = LT_EXPR;
21952 0 : if (!HONOR_SIGNED_ZEROS (type)
21953 0 : && !TYPE_UNSIGNED (type)
21954 : )
21955 : {
21956 0 : if (ANY_INTEGRAL_TYPE_P (type)
21957 0 : && !TYPE_OVERFLOW_WRAPS (type)
21958 0 : && (!VECTOR_TYPE_P (type)
21959 0 : || (target_supports_op_p (type, ABS_EXPR, optab_vector)
21960 0 : && target_supports_op_p (type, NEGATE_EXPR, optab_vector)))
21961 : )
21962 : {
21963 0 : {
21964 0 : tree utype = unsigned_type_for (type);
21965 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1932;
21966 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1932;
21967 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1932;
21968 0 : {
21969 0 : tree res_op0;
21970 0 : {
21971 0 : tree _o1[1], _r1;
21972 0 : {
21973 0 : tree _o2[1], _r2;
21974 0 : _o2[0] = captures[0];
21975 0 : _r2 = fold_build1_loc (loc, ABSU_EXPR, utype, _o2[0]);
21976 0 : _o1[0] = _r2;
21977 : }
21978 0 : _r1 = fold_build1_loc (loc, NEGATE_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
21979 0 : res_op0 = _r1;
21980 : }
21981 0 : tree _r;
21982 0 : _r = fold_build1_loc (loc, NOP_EXPR, type, res_op0);
21983 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1085, __FILE__, __LINE__, true);
21984 0 : return _r;
21985 : }
21986 0 : next_after_fail1932:;
21987 : }
21988 : }
21989 : else
21990 : {
21991 0 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1933;
21992 0 : if (TREE_SIDE_EFFECTS (_p1)) goto next_after_fail1933;
21993 0 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1933;
21994 0 : {
21995 0 : tree res_op0;
21996 0 : {
21997 0 : tree _o1[1], _r1;
21998 0 : _o1[0] = captures[0];
21999 0 : _r1 = fold_build1_loc (loc, ABS_EXPR, TREE_TYPE (_o1[0]), _o1[0]);
22000 0 : res_op0 = _r1;
22001 : }
22002 0 : tree _r;
22003 0 : _r = fold_build1_loc (loc, NEGATE_EXPR, type, res_op0);
22004 0 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1086, __FILE__, __LINE__, true);
22005 0 : return _r;
22006 : }
22007 0 : next_after_fail1933:;
22008 : }
22009 : }
22010 : }
22011 : }
22012 : }
22013 : break;
22014 : }
22015 : default:;
22016 : }
22017 : }
22018 : }
22019 : break;
22020 : }
22021 1810110 : default:;
22022 : }
22023 1810110 : if (integer_zerop (_q21))
22024 : {
22025 327726 : switch (TREE_CODE (_p1))
22026 : {
22027 26 : case BIT_NOT_EXPR:
22028 26 : {
22029 26 : tree _q50 = TREE_OPERAND (_p1, 0);
22030 26 : if ((_p2 == _q50 && ! TREE_SIDE_EFFECTS (_p2)) || (operand_equal_p (_p2, _q50, 0) && types_match (_p2, _q50)))
22031 : {
22032 13 : {
22033 13 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _q50 };
22034 13 : tree res = generic_simplify_378 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
22035 13 : if (res) return res;
22036 : }
22037 : }
22038 : break;
22039 : }
22040 327713 : default:;
22041 : }
22042 327713 : switch (TREE_CODE (_p2))
22043 : {
22044 8 : case BIT_NOT_EXPR:
22045 8 : {
22046 8 : tree _q60 = TREE_OPERAND (_p2, 0);
22047 8 : if ((_q60 == _p1 && ! TREE_SIDE_EFFECTS (_q60)) || (operand_equal_p (_q60, _p1, 0) && types_match (_q60, _p1)))
22048 : {
22049 8 : {
22050 8 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
22051 8 : tree res = generic_simplify_379 (loc, type, _p0, _p1, _p2, captures, LT_EXPR);
22052 8 : if (res) return res;
22053 : }
22054 : }
22055 : break;
22056 : }
22057 327705 : default:;
22058 : }
22059 327705 : switch (TREE_CODE (_p1))
22060 : {
22061 290509 : case INTEGER_CST:
22062 290509 : {
22063 290509 : if (integer_zerop (_p2))
22064 : {
22065 8882 : {
22066 8882 : tree captures[2] ATTRIBUTE_UNUSED = { _q20, _p1 };
22067 8882 : if (integer_pow2p (captures[1])
22068 8882 : && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))
22069 : )
22070 : {
22071 8617 : {
22072 8617 : int shift = element_precision (captures[0]) - wi::exact_log2 (wi::to_wide (captures[1])) - 1;
22073 8617 : if (shift >= 0
22074 : )
22075 : {
22076 8602 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1934;
22077 8602 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1934;
22078 8602 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1934;
22079 8602 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1934;
22080 8602 : {
22081 8602 : tree res_op0;
22082 8602 : {
22083 8602 : tree _o1[1], _r1;
22084 8602 : {
22085 8602 : tree _o2[2], _r2;
22086 8602 : _o2[0] = captures[0];
22087 8602 : _o2[1] = build_int_cst (integer_type_node, shift);
22088 8602 : _r2 = fold_build2_loc (loc, RSHIFT_EXPR, TREE_TYPE (_o2[0]), _o2[0], _o2[1]);
22089 8602 : _o1[0] = _r2;
22090 : }
22091 8602 : if (TREE_TYPE (_o1[0]) != type)
22092 : {
22093 8585 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
22094 : }
22095 : else
22096 : _r1 = _o1[0];
22097 8602 : res_op0 = _r1;
22098 : }
22099 8602 : tree res_op1;
22100 8602 : res_op1 = captures[1];
22101 8602 : tree _r;
22102 8602 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
22103 8602 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1087, __FILE__, __LINE__, true);
22104 8617 : return _r;
22105 : }
22106 : next_after_fail1934:;
22107 : }
22108 : else
22109 : {
22110 15 : if (TREE_SIDE_EFFECTS (_p0)) goto next_after_fail1935;
22111 15 : if (TREE_SIDE_EFFECTS (_p2)) goto next_after_fail1935;
22112 15 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1935;
22113 15 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1935;
22114 15 : {
22115 15 : tree res_op0;
22116 15 : {
22117 15 : tree _o1[1], _r1;
22118 15 : _o1[0] = captures[0];
22119 15 : if (TREE_TYPE (_o1[0]) != type)
22120 : {
22121 15 : _r1 = fold_build1_loc (loc, NOP_EXPR, type, _o1[0]);
22122 : }
22123 : else
22124 : _r1 = _o1[0];
22125 15 : res_op0 = _r1;
22126 : }
22127 15 : tree res_op1;
22128 15 : res_op1 = captures[1];
22129 15 : tree _r;
22130 15 : _r = fold_build2_loc (loc, BIT_AND_EXPR, type, res_op0, res_op1);
22131 15 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1088, __FILE__, __LINE__, true);
22132 15 : return _r;
22133 : }
22134 : next_after_fail1935:;
22135 : }
22136 : }
22137 : }
22138 : }
22139 : }
22140 : break;
22141 : }
22142 : default:;
22143 : }
22144 : }
22145 : break;
22146 : }
22147 12007138 : default:;
22148 : }
22149 12007138 : {
22150 12007138 : tree _p0_pops[1];
22151 12007138 : if (tree_logical_inverted_value (_p0, _p0_pops))
22152 : {
22153 490975 : tree _q20 = _p0_pops[0];
22154 490975 : if (tree_truth_valued_p (_q20))
22155 : {
22156 4464 : {
22157 4464 : tree captures[3] ATTRIBUTE_UNUSED = { _q20, _p1, _p2 };
22158 8928 : if (COND_EXPR == VEC_COND_EXPR
22159 4464 : || TYPE_UNSIGNED (TREE_TYPE (captures[0]))
22160 : )
22161 : {
22162 3150 : if (TREE_SIDE_EFFECTS (captures[1])) goto next_after_fail1936;
22163 46 : if (TREE_SIDE_EFFECTS (captures[2])) goto next_after_fail1936;
22164 37 : if (UNLIKELY (!dbg_cnt (match))) goto next_after_fail1936;
22165 37 : {
22166 37 : tree res_op0;
22167 37 : res_op0 = captures[0];
22168 37 : tree res_op1;
22169 37 : res_op1 = captures[2];
22170 37 : tree res_op2;
22171 37 : res_op2 = captures[1];
22172 37 : tree _r;
22173 37 : _r = fold_build3_loc (loc, COND_EXPR, type, res_op0, res_op1, res_op2);
22174 37 : if (UNLIKELY (debug_dump)) generic_dump_logs ("match.pd", 1089, __FILE__, __LINE__, true);
22175 37 : return _r;
22176 : }
22177 4427 : next_after_fail1936:;
22178 : }
22179 : }
22180 : }
22181 : }
22182 : }
22183 12007101 : return NULL_TREE;
22184 : }
22185 : #pragma GCC diagnostic pop
|