/* Generated automatically by the program `genmatch' from a IL pattern matching and simplification description. */ #include "gimple-match-head.c" bool gimple_nop_convert (tree t, tree *res_ops, tree (*valueize)(tree) ATTRIBUTE_UNUSED) { const tree type = TREE_TYPE (t); switch (TREE_CODE (t)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, t)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); { /* #line 102 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 102 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))) { if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 100, __FILE__, __LINE__); res_ops[0] = captures[0]; return true; } } break; } case VIEW_CONVERT_EXPR: { tree op0 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (op0) == SSA_NAME || is_gimple_min_invariant (op0))) { op0 = do_valueize (valueize, op0); { /* #line 105 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 105 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (VECTOR_TYPE_P (type) && VECTOR_TYPE_P (TREE_TYPE (captures[0])) && known_eq (TYPE_VECTOR_SUBPARTS (type), TYPE_VECTOR_SUBPARTS (TREE_TYPE (captures[0]))) && tree_nop_conversion_p (TREE_TYPE (type), TREE_TYPE (TREE_TYPE (captures[0])))) { if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 103, __FILE__, __LINE__); res_ops[0] = captures[0]; return true; } } } break; } default:; } } break; default:; } { /* #line 110 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { t }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 110, __FILE__, __LINE__); res_ops[0] = captures[0]; return true; } return false; } bool gimple_power_of_two_cand (tree t, tree *res_ops, tree (*valueize)(tree) ATTRIBUTE_UNUSED) { const tree type = TREE_TYPE (t); switch (TREE_CODE (t)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, t)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LSHIFT_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); switch (TREE_CODE (op0)) { case INTEGER_CST: { { /* #line 556 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 556, __FILE__, __LINE__); res_ops[0] = captures[0]; return true; } break; } default:; } break; } default:; } } break; case INTEGER_CST: { { /* #line 554 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { t }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 554, __FILE__, __LINE__); res_ops[0] = captures[0]; return true; } break; } default:; } return false; } bool gimple_negate_expr_p (tree t, tree (*valueize)(tree) ATTRIBUTE_UNUSED) { const tree type = TREE_TYPE (t); switch (TREE_CODE (t)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, t)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); { /* #line 1204 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 1204 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_OVERFLOW_SANITIZED (type)) { if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1203, __FILE__, __LINE__); return true; } } break; } case MINUS_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); { /* #line 1215 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 1215 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((ANY_INTEGRAL_TYPE_P (type) && TYPE_OVERFLOW_WRAPS (type)) || (FLOAT_TYPE_P (type) && !HONOR_SIGN_DEPENDENT_ROUNDING (type) && !HONOR_SIGNED_ZEROS (type))) { if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1214, __FILE__, __LINE__); return true; } } break; } default:; } } break; case INTEGER_CST: { { /* #line 1196 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ /* #line 1196 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type)) || (!TYPE_OVERFLOW_SANITIZED (type) && may_negate_without_overflow_p (t))) { if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1195, __FILE__, __LINE__); return true; } } break; } case FIXED_CST: { { /* #line 1201 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1201, __FILE__, __LINE__); return true; } break; } case REAL_CST: { { /* #line 1207 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ /* #line 1207 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (REAL_VALUE_NEGATIVE (TREE_REAL_CST (t))) { if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1206, __FILE__, __LINE__); return true; } } break; } case VECTOR_CST: { { /* #line 1212 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ /* #line 1212 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (type)) || TYPE_OVERFLOW_WRAPS (type)) { if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1211, __FILE__, __LINE__); return true; } } break; } default:; } return false; } bool gimple_truth_valued_p (tree t, tree (*valueize)(tree) ATTRIBUTE_UNUSED) { const tree type = TREE_TYPE (t); { /* #line 1328 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { t }; /* #line 1328 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (type) && TYPE_PRECISION (type) == 1) { if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1327, __FILE__, __LINE__); return true; } } switch (TREE_CODE (t)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, t)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LT_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); { /* #line 1331 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1331, __FILE__, __LINE__); return true; } break; } case LE_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); { /* #line 1331 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1331, __FILE__, __LINE__); return true; } break; } case EQ_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); if (tree_swap_operands_p (op0, op1)) std::swap (op0, op1); { /* #line 1331 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1331, __FILE__, __LINE__); return true; } break; } case NE_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); if (tree_swap_operands_p (op0, op1)) std::swap (op0, op1); { /* #line 1331 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1331, __FILE__, __LINE__); return true; } break; } case GE_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); { /* #line 1331 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1331, __FILE__, __LINE__); return true; } break; } case GT_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); { /* #line 1331 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1331, __FILE__, __LINE__); return true; } break; } case UNORDERED_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); if (tree_swap_operands_p (op0, op1)) std::swap (op0, op1); { /* #line 1331 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1331, __FILE__, __LINE__); return true; } break; } case ORDERED_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); if (tree_swap_operands_p (op0, op1)) std::swap (op0, op1); { /* #line 1331 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1331, __FILE__, __LINE__); return true; } break; } case UNLT_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); { /* #line 1331 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1331, __FILE__, __LINE__); return true; } break; } case UNLE_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); { /* #line 1331 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1331, __FILE__, __LINE__); return true; } break; } case UNGT_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); { /* #line 1331 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1331, __FILE__, __LINE__); return true; } break; } case UNGE_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); { /* #line 1331 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1331, __FILE__, __LINE__); return true; } break; } case UNEQ_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); if (tree_swap_operands_p (op0, op1)) std::swap (op0, op1); { /* #line 1331 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1331, __FILE__, __LINE__); return true; } break; } case LTGT_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); if (tree_swap_operands_p (op0, op1)) std::swap (op0, op1); { /* #line 1331 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1331, __FILE__, __LINE__); return true; } break; } case TRUTH_AND_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); if (tree_swap_operands_p (op0, op1)) std::swap (op0, op1); { /* #line 1331 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1331, __FILE__, __LINE__); return true; } break; } case TRUTH_ANDIF_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); { /* #line 1331 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1331, __FILE__, __LINE__); return true; } break; } case TRUTH_OR_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); if (tree_swap_operands_p (op0, op1)) std::swap (op0, op1); { /* #line 1331 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1331, __FILE__, __LINE__); return true; } break; } case TRUTH_ORIF_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); { /* #line 1331 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1331, __FILE__, __LINE__); return true; } break; } case TRUTH_XOR_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); if (tree_swap_operands_p (op0, op1)) std::swap (op0, op1); { /* #line 1331 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1331, __FILE__, __LINE__); return true; } break; } case TRUTH_NOT_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); { /* #line 1333 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1333, __FILE__, __LINE__); return true; } break; } default:; } } break; default:; } return false; } bool gimple_logical_inverted_value (tree t, tree *res_ops, tree (*valueize)(tree) ATTRIBUTE_UNUSED) { const tree type = TREE_TYPE (t); switch (TREE_CODE (t)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, t)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case TRUTH_NOT_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); { /* #line 1335 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1335, __FILE__, __LINE__); res_ops[0] = captures[0]; return true; } break; } case BIT_NOT_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); if (gimple_truth_valued_p (op0, valueize)) { { /* #line 1337 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1337, __FILE__, __LINE__); res_ops[0] = captures[0]; return true; } } break; } case EQ_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); if (tree_swap_operands_p (op0, op1)) std::swap (op0, op1); if (integer_zerop (op1)) { { /* #line 1339 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1339, __FILE__, __LINE__); res_ops[0] = captures[0]; return true; } } break; } case NE_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); if (tree_swap_operands_p (op0, op1)) std::swap (op0, op1); if (gimple_truth_valued_p (op0, valueize)) { if (integer_truep (op1)) { { /* #line 1341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1341, __FILE__, __LINE__); res_ops[0] = captures[0]; return true; } } } break; } case BIT_XOR_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); if (tree_swap_operands_p (op0, op1)) std::swap (op0, op1); if (gimple_truth_valued_p (op0, valueize)) { if (integer_truep (op1)) { { /* #line 1343 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1343, __FILE__, __LINE__); res_ops[0] = captures[0]; return true; } } } break; } default:; } } break; default:; } return false; } bool gimple_with_possible_nonzero_bits (tree t, tree (*valueize)(tree) ATTRIBUTE_UNUSED) { const tree type = TREE_TYPE (t); switch (TREE_CODE (t)) { case INTEGER_CST: { { /* #line 1665 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { t }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1665, __FILE__, __LINE__); return true; } break; } case SSA_NAME: { { /* #line 1668 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { t }; /* #line 1668 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) || POINTER_TYPE_P (TREE_TYPE (captures[0]))) { if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1667, __FILE__, __LINE__); return true; } } break; } default:; } return false; } bool gimple_with_possible_nonzero_bits2 (tree t, tree *res_ops, tree (*valueize)(tree) ATTRIBUTE_UNUSED) { const tree type = TREE_TYPE (t); switch (TREE_CODE (t)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, t)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); if (tree_swap_operands_p (op0, op1)) std::swap (op0, op1); if (gimple_with_possible_nonzero_bits (op0, valueize)) { { /* #line 1672 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1672, __FILE__, __LINE__); res_ops[0] = captures[0]; return true; } } if (gimple_with_possible_nonzero_bits (op1, valueize)) { { /* #line 1672 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1672, __FILE__, __LINE__); res_ops[0] = captures[0]; return true; } } break; } default:; } } break; default:; } if (gimple_with_possible_nonzero_bits (t, valueize)) { { /* #line 1670 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { t }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1670, __FILE__, __LINE__); res_ops[0] = captures[0]; return true; } } return false; } bool gimple_with_certain_nonzero_bits2 (tree t, tree *res_ops, tree (*valueize)(tree) ATTRIBUTE_UNUSED) { const tree type = TREE_TYPE (t); switch (TREE_CODE (t)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, t)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); if (tree_swap_operands_p (op0, op1)) std::swap (op0, op1); switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 1679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1679, __FILE__, __LINE__); res_ops[0] = captures[0]; return true; } break; } default:; } break; } default:; } } break; case INTEGER_CST: { { /* #line 1677 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { t }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 1677, __FILE__, __LINE__); res_ops[0] = captures[0]; return true; } break; } default:; } return false; } bool gimple_compositional_complex (tree t, tree (*valueize)(tree) ATTRIBUTE_UNUSED) { const tree type = TREE_TYPE (t); switch (TREE_CODE (t)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, t)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case COMPLEX_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); { /* #line 2808 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 2808, __FILE__, __LINE__); return true; } break; } default:; } } break; default:; } break; } case COMPLEX_EXPR: { tree op0 = gimple_assign_rhs1 (def); op0 = do_valueize (valueize, op0); tree op1 = gimple_assign_rhs2 (def); op1 = do_valueize (valueize, op1); { /* #line 2808 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 2808, __FILE__, __LINE__); return true; } break; } default:; } } break; default:; } return false; } bool gimple_double_value_p (tree t, tree (*valueize)(tree) ATTRIBUTE_UNUSED) { const tree type = TREE_TYPE (t); { /* #line 4702 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { t }; /* #line 4702 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_MAIN_VARIANT (TREE_TYPE (captures[0])) == double_type_node) { if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 4701, __FILE__, __LINE__); return true; } } return false; } bool gimple_float_value_p (tree t, tree (*valueize)(tree) ATTRIBUTE_UNUSED) { const tree type = TREE_TYPE (t); { /* #line 4723 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { t }; /* #line 4723 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_MAIN_VARIANT (TREE_TYPE (captures[0])) == float_type_node) { if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Matching expression %s:%d, %s:%d\n", "match.pd", 4722, __FILE__, __LINE__); return true; } } return false; } static bool gimple_simplify_1 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 3811 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SSA_NAME_IS_DEFAULT_DEF (captures[1]) && TREE_CODE (SSA_NAME_VAR (captures[1])) == PARM_DECL) { { /* #line 3813 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree base = get_base_address (TREE_OPERAND (captures[0], 0)); /* #line 3814 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TREE_CODE (base) == VAR_DECL && auto_var_in_fn_p (base, current_function_decl)) { /* #line 3816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == NE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3817, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (true, type); res_op->set_value (tem); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3818, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (false, type); res_op->set_value (tem); return true; } } } } return false; } static bool gimple_simplify_2 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (mod)) { /* #line 489 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_UNSIGNED (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 490, __FILE__, __LINE__); tree tem; tem = build_zero_cst (type); res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_3 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[3])) && tree_nop_conversion_p (type, TREE_TYPE (captures[6]))) { /* #line 1153 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (single_use (captures[4]) && single_use (captures[5])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1154, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; ops1[0] = captures[6]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 1155 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (single_use (captures[0]) && single_use (captures[1])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1156, __FILE__, __LINE__); res_op->set_op (op, type, 2); { tree ops1[1], res; ops1[0] = captures[3]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = captures[4]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_4 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3668, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_5 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (bitop), const enum tree_code ARG_UNUSED (rbitop)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1294, __FILE__, __LINE__); res_op->set_op (bitop, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_6 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (rotate)) { /* #line 2553 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((element_precision (TREE_TYPE (captures[2])) <= element_precision (TREE_TYPE (captures[3])) || !TYPE_UNSIGNED (TREE_TYPE (captures[3]))) && (element_precision (type) <= element_precision (TREE_TYPE (captures[2])) || !TYPE_UNSIGNED (TREE_TYPE (captures[2])))) { { /* #line 2558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree rotate_type = TREE_TYPE (captures[2]); gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2560, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[3]; if (rotate_type != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (rotate_type, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, rotate_type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), rotate, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_7 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (hypots), const combined_fn ARG_UNUSED (copysigns)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 661, __FILE__, __LINE__); res_op->set_op (hypots, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_8 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (plusminus)) { /* #line 2139 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type) && (!FLOAT_TYPE_P (type) || flag_associative_math)) { /* #line 2154 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!ALL_FRACT_MODE_P (TYPE_MODE (type))) { /* #line 2157 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!ANY_INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_WRAPS (type) || (INTEGRAL_TYPE_P (type) && tree_expr_nonzero_p (captures[0]) && expr_not_equal_to (captures[0], wi::minus_one (TYPE_PRECISION (type))))) && single_use (captures[1])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2163, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[2], res; ops1[0] = build_one_cst (type); ops1[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), plusminus, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_9 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (cond_op)) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree op_type = TREE_TYPE (captures[3]); /* #line 5283 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (element_precision (type) == element_precision (op_type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5284, __FILE__, __LINE__); res_op->set_op (VIEW_CONVERT_EXPR, type, 1); { tree ops1[4], res; ops1[0] = captures[0]; if (COMPARISON_CLASS_P (ops1[0])) { if (!seq) return false; ops1[0] = gimple_build (seq, TREE_CODE (ops1[0]), TREE_TYPE (ops1[0]), TREE_OPERAND (ops1[0], 0), TREE_OPERAND (ops1[0], 1)); } ops1[1] = captures[1]; ops1[2] = captures[2]; { tree ops2[1], res; ops2[0] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[3] = res; } gimple_match_op tem_op (res_op->cond.any_else (), cond_op, TREE_TYPE (ops1[1]), ops1[0], ops1[1], ops1[2], ops1[3]); gimple_resimplify4 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_10 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 3748 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && !(targetm.have_canonicalize_funcptr_for_compare () && ((POINTER_TYPE_P (TREE_TYPE (captures[1])) && FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[1])))) || (POINTER_TYPE_P (TREE_TYPE (captures[3])) && FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[3])))))) && single_use (captures[0])) { /* #line 3757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[0])) && (TREE_CODE (captures[3]) == INTEGER_CST || captures[2] != captures[3]) && (TYPE_UNSIGNED (TREE_TYPE (captures[1])) == TYPE_UNSIGNED (TREE_TYPE (captures[0])) || cmp == NE_EXPR || cmp == EQ_EXPR) && !POINTER_TYPE_P (TREE_TYPE (captures[1]))) { /* #line 3767 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TREE_CODE (captures[2]) == INTEGER_CST) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3768, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = force_fit_type (TREE_TYPE (captures[1]), wi::to_widest (captures[2]), 0, TREE_OVERFLOW (captures[2])); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3770, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[2]; if (TREE_TYPE (res_op->ops[0]) != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (TREE_TYPE (res_op->ops[0]), TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (res_op->ops[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } else { /* #line 3772 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))) { /* #line 3774 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((cmp == EQ_EXPR || cmp == NE_EXPR || TYPE_UNSIGNED (TREE_TYPE (captures[0])) == TYPE_UNSIGNED (TREE_TYPE (captures[1])) || (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1])))) && (types_match (TREE_TYPE (captures[3]), TREE_TYPE (captures[1])) || ((TYPE_PRECISION (TREE_TYPE (captures[1])) >= TYPE_PRECISION (TREE_TYPE (captures[3]))) && (TYPE_UNSIGNED (TREE_TYPE (captures[1])) == TYPE_UNSIGNED (TREE_TYPE (captures[3])))) || (TREE_CODE (captures[3]) == INTEGER_CST && INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && int_fits_type_p (captures[3], TREE_TYPE (captures[1]))))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3786, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[3]; if (TREE_TYPE (res_op->ops[0]) != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (TREE_TYPE (res_op->ops[0]), TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (res_op->ops[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 3787 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TREE_CODE (captures[3]) == INTEGER_CST && INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && !int_fits_type_p (captures[3], TREE_TYPE (captures[1]))) { { /* #line 3790 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree min = lower_bound_in_type (TREE_TYPE (captures[3]), TREE_TYPE (captures[1])); tree max = upper_bound_in_type (TREE_TYPE (captures[3]), TREE_TYPE (captures[1])); bool above = integer_nonzerop (const_binop (LT_EXPR, type, max, captures[3])); bool below = integer_nonzerop (const_binop (LT_EXPR, type, captures[3], min)); /* #line 3797 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (above || below) { /* #line 3798 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == EQ_EXPR || cmp == NE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3799, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (cmp == EQ_EXPR ? false : true, type); res_op->set_value (tem); return true; } else { /* #line 3800 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR || cmp == LE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3801, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (above ? true : false, type); res_op->set_value (tem); return true; } else { /* #line 3802 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GT_EXPR || cmp == GE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3803, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (above ? false : true, type); res_op->set_value (tem); return true; } } } } } } } } } } return false; } static bool gimple_simplify_11 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (bswap)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2856, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_12 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2187, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_13 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (out)) { /* #line 4226 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_UNSIGNED (TREE_TYPE (captures[2])) && !VECTOR_TYPE_P (TREE_TYPE (captures[2]))) { { /* #line 4227 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree t = TREE_TYPE (captures[2]), cpx = build_complex_type (t); gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4228, __FILE__, __LINE__); res_op->set_op (out, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = captures[2]; ops2[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_MUL_OVERFLOW, cpx, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops1[0])), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = build_zero_cst (t); gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_14 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { /* #line 1580 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1582, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[2]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_15 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1381 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (element_precision (type) <= element_precision (TREE_TYPE (captures[0])) || !TYPE_UNSIGNED (TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1383, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_16 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 975, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_17 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (outer_op)) { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { { /* #line 1963 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree cst = const_binop (outer_op, type, captures[0], captures[2]); /* #line 1964 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cst && !TREE_OVERFLOW (cst)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1965, __FILE__, __LINE__); res_op->set_op (MINUS_EXPR, type, 2); res_op->ops[0] = cst; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } return false; } static bool gimple_simplify_18 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (neeq)) { /* #line 4035 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (POINTER_TYPE_P (TREE_TYPE (captures[0])) && ptrs_compare_unequal (captures[0], captures[1])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4037, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (neeq != EQ_EXPR, type); res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_19 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (minmax), const enum tree_code ARG_UNUSED (maxmin)) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2289, __FILE__, __LINE__); res_op->set_op (BIT_NOT_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), maxmin, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_20 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1397 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1398, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_21 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1104 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (element_precision (type) <= element_precision (TREE_TYPE (captures[0])) && element_precision (type) <= element_precision (TREE_TYPE (captures[1]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1106, __FILE__, __LINE__); res_op->set_op (BIT_XOR_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } { tree ops1[1], res; ops1[0] = captures[1]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_22 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 2540 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_UNSIGNED (TREE_TYPE (captures[2])) && (element_precision (TREE_TYPE (captures[2])) <= element_precision (TREE_TYPE (captures[3])) || !TYPE_UNSIGNED (TREE_TYPE (captures[3])))) { { /* #line 2544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree shift_type = TREE_TYPE (captures[2]); gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2546, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[3]; if (shift_type != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (shift_type, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, shift_type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), RSHIFT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_23 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1359, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (op == NE_EXPR ? true : false, type); res_op->set_value (tem); return true; return false; } static bool gimple_simplify_24 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (POW)) { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { /* #line 4578 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TREE_OVERFLOW (captures[2])) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4579, __FILE__, __LINE__); res_op->set_op (POW, type, 2); res_op->ops[0] = captures[0]; { tree ops1[2], res; ops1[0] = captures[2]; ops1[1] = build_one_cst (type); gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_25 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1230 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_SIGN_DEPENDENT_ROUNDING (element_mode (type)) && !HONOR_SIGNED_ZEROS (element_mode (type))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1232, __FILE__, __LINE__); res_op->set_op (MINUS_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_26 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (div)) { /* #line 292 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!integer_zerop (captures[1])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 293, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_27 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_after_vectorization_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5171, __FILE__, __LINE__); res_op->set_op (CFN_FNMA, type, 3); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; res_op->ops[2] = captures[2]; gimple_resimplify3 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_28 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 1453 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))) { /* #line 1455 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_expr_nonnegative_p (captures[1]) && tree_expr_nonzero_p (captures[1])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1456, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 1457 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TREE_CODE (captures[1]) == INTEGER_CST && wi::neg_p (wi::to_wide (captures[1]), TYPE_SIGN (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1459, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[2]; res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_29 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 3299 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (REAL_VALUE_MINUS_ZERO (TREE_REAL_CST (captures[1]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3300, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (TREE_TYPE (captures[1]), dconst0); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 3302 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (REAL_VALUE_ISNAN (TREE_REAL_CST (captures[1])) && ! HONOR_SNANS (captures[1])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3304, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (cmp == NE_EXPR, type); res_op->set_value (tem); return true; } else { /* #line 3306 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (REAL_VALUE_ISINF (TREE_REAL_CST (captures[1])) && MODE_HAS_INFINITIES (TYPE_MODE (TREE_TYPE (captures[1])))) { { /* #line 3308 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ REAL_VALUE_TYPE max; enum tree_code code = cmp; bool neg = REAL_VALUE_NEGATIVE (TREE_REAL_CST (captures[1])); if (neg) code = swap_tree_comparison (code); /* #line 3318 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (code == GT_EXPR && !(HONOR_NANS (captures[0]) && flag_trapping_math)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3320, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (false, type); res_op->set_value (tem); return true; } else { /* #line 3321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (code == LE_EXPR) { /* #line 3323 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (! HONOR_NANS (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3324, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (true, type); res_op->set_value (tem); return true; } else { /* #line 3327 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!flag_trapping_math) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3328, __FILE__, __LINE__); res_op->set_op (EQ_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } else { /* #line 3331 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((code == EQ_EXPR && !(HONOR_NANS (captures[0]) && flag_trapping_math)) || code == GE_EXPR) { { /* #line 3333 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ real_maxval (&max, neg, TYPE_MODE (TREE_TYPE (captures[0]))); /* #line 3334 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (neg) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3335, __FILE__, __LINE__); res_op->set_op (LT_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (TREE_TYPE (captures[0]), max); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3336, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (TREE_TYPE (captures[0]), max); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } else { /* #line 3338 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (code == LT_EXPR) { { /* #line 3339 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ real_maxval (&max, neg, TYPE_MODE (TREE_TYPE (captures[0]))); /* #line 3340 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (neg) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3341, __FILE__, __LINE__); res_op->set_op (GE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (TREE_TYPE (captures[0]), max); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3342, __FILE__, __LINE__); res_op->set_op (LE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (TREE_TYPE (captures[0]), max); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } else { /* #line 3345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (code == NE_EXPR) { { /* #line 3346 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ real_maxval (&max, neg, TYPE_MODE (TREE_TYPE (captures[0]))); /* #line 3347 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (! HONOR_NANS (captures[0])) { /* #line 3348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (neg) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3349, __FILE__, __LINE__); res_op->set_op (GE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (TREE_TYPE (captures[0]), max); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3350, __FILE__, __LINE__); res_op->set_op (LE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (TREE_TYPE (captures[0]), max); gimple_resimplify2 (lseq, res_op, valueize); return true; } } else { /* #line 3351 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (neg) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3352, __FILE__, __LINE__); res_op->set_op (UNGE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (TREE_TYPE (captures[0]), max); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3353, __FILE__, __LINE__); res_op->set_op (UNLE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (TREE_TYPE (captures[0]), max); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } } } } return false; } static bool gimple_simplify_30 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (fmas)) { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_after_vectorization_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5157, __FILE__, __LINE__); res_op->set_op (CFN_FNMS, type, 3); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; res_op->ops[2] = captures[2]; gimple_resimplify3 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_31 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (COPYSIGN_ALL)) { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_NANS (type) && !HONOR_SIGNED_ZEROS (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 252, __FILE__, __LINE__); res_op->set_op (ABS_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_32 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (POW)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4534, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_33 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 270, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_34 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4550, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_35 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (minmax), const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (comb)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2325, __FILE__, __LINE__); res_op->set_op (comb, type, 2); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), cmp, type, ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), cmp, type, ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_36 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (mod)) { /* #line 561 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (captures[0])) && tree_nop_conversion_p (type, TREE_TYPE (captures[1])) && integer_pow2p (captures[3]) && tree_int_cst_sgn (captures[3]) > 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 565, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[2], res; ops2[0] = captures[2]; ops2[1] = build_int_cst (TREE_TYPE (captures[2]), 1); gimple_match_op tem_op (res_op->cond.any_else (), MINUS_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_37 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (froms), const combined_fn ARG_UNUSED (tos)) { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (optimize && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4760, __FILE__, __LINE__); res_op->set_op (tos, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_38 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1409, __FILE__, __LINE__); res_op->set_op (BIT_XOR_EXPR, type, 2); { tree ops1[2], res; { tree ops2[2], res; ops2[0] = captures[1]; ops2[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_39 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (sq), const enum tree_code ARG_UNUSED (cmp)) { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && ! flag_errno_math) { /* #line 3523 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (! HONOR_NANS (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3524, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_40 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 3845 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3846, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[1]; { tree ops1[2], res; ops1[0] = captures[2]; { tree ops2[1], res; ops2[0] = captures[3]; if (TREE_TYPE (res_op->ops[0]) != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (TREE_TYPE (res_op->ops[0]), TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (res_op->ops[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_41 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (mod)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 500, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_42 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (SIN), const combined_fn ARG_UNUSED (COS), const combined_fn ARG_UNUSED (TAN)) { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4584, __FILE__, __LINE__); res_op->set_op (TAN, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_43 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (mod)) { /* #line 514 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_UNSIGNED (TREE_TYPE (captures[0]))) { { /* #line 515 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree utype = unsigned_type_for (TREE_TYPE (captures[0])); gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 516, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[0]; if (utype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[1]; if (utype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), mod, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } { tree ops1[1], res; ops1[0] = captures[2]; if (utype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_44 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 3224 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (! FLOAT_TYPE_P (TREE_TYPE (captures[0])) || ! HONOR_NANS (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3226, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (true, type); res_op->set_value (tem); return true; } else { /* #line 3227 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp != EQ_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3228, __FILE__, __LINE__); res_op->set_op (EQ_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_45 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (shiftrotate)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2358, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_46 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (rotate)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2332, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_47 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 4148 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (REAL_VALUE_ISNAN (TREE_REAL_CST (captures[1])) && (cmp != LTGT_EXPR || ! flag_trapping_math)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4150, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (cmp == ORDERED_EXPR || cmp == LTGT_EXPR ? false : true, type); res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_48 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 532 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (type) && !TYPE_UNSIGNED (type) && !TYPE_OVERFLOW_TRAPS (type) && tree_nop_conversion_p (type, TREE_TYPE (captures[1])) && (expr_not_equal_to (captures[0], wi::to_wide (TYPE_MIN_VALUE (type))) || expr_not_equal_to (captures[1], wi::minus_one (TYPE_PRECISION (TREE_TYPE (captures[1])))))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 542, __FILE__, __LINE__); res_op->set_op (TRUNC_MOD_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; ops1[0] = captures[1]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_49 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 1440 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])) && (TREE_INT_CST_LOW (captures[1]) & 1) != 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1443, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_50 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (div)) { /* #line 309 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (type) && TYPE_OVERFLOW_UNDEFINED (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 311, __FILE__, __LINE__); res_op->set_op (COND_EXPR, type, 3); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_zero_cst (type); gimple_match_op tem_op (res_op->cond.any_else (), LT_EXPR, boolean_type_node, ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = build_minus_one_cst (type); res_op->ops[2] = build_one_cst (type); gimple_resimplify3 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_51 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[3])) && tree_nop_conversion_p (type, TREE_TYPE (captures[6]))) { /* #line 1153 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (single_use (captures[4]) && single_use (captures[5])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1154, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; ops1[0] = captures[6]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 1155 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (single_use (captures[0]) && single_use (captures[1])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1156, __FILE__, __LINE__); res_op->set_op (op, type, 2); { tree ops1[1], res; ops1[0] = captures[3]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = captures[4]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_52 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (shift)) { /* #line 2377 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))) { { /* #line 2378 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ int width = ceil_log2 (element_precision (TREE_TYPE (captures[0]))); int prec = TYPE_PRECISION (TREE_TYPE (captures[1])); /* #line 2382 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((get_nonzero_bits (captures[1]) & wi::mask (width, false, prec)) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2383, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } return false; } static bool gimple_simplify_53 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 4196 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (single_use (captures[0]) && ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_UNSIGNED (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4200, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[2]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_54 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (out)) { /* #line 4216 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_UNSIGNED (TREE_TYPE (captures[1])) && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4218, __FILE__, __LINE__); res_op->set_op (out, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops1[0])), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = build_zero_cst (TREE_TYPE (captures[1])); gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_55 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 3197 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (single_use (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3198, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_56 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 373 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (type) && ! HONOR_NANS (type) && ! HONOR_INFINITIES (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 376, __FILE__, __LINE__); tree tem; tem = build_minus_one_cst (type); res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_57 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { /* #line 2002 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (element_precision (type) <= element_precision (TREE_TYPE (captures[1])) || (INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2012, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_58 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { /* #line 1090 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[1])) && tree_nop_conversion_p (type, TREE_TYPE (captures[4])) && (wi::to_wide (captures[2]) & wi::to_wide (captures[5])) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1093, __FILE__, __LINE__); res_op->set_op (BIT_IOR_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } { tree ops1[1], res; ops1[0] = captures[3]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_59 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { /* #line 1568 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[2]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1569, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = captures[3]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_60 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 899 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_UNSIGNED (TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 900, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (cmp == LT_EXPR, type); res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_61 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1414 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[0])) && tree_nop_conversion_p (type, TREE_TYPE (captures[3]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1416, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_62 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (popcount)) { /* #line 5216 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::bit_and (tree_nonzero_bits (captures[1]), tree_nonzero_bits (captures[3])) == 0) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5217, __FILE__, __LINE__); res_op->set_op (popcount, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_IOR_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_63 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { /* #line 4885 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (type) && INTEGRAL_TYPE_P (TREE_TYPE (captures[2])) && INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && type_has_mode_precision_p (TREE_TYPE (captures[2])) && type_has_mode_precision_p (TREE_TYPE (captures[4])) && type_has_mode_precision_p (type) && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2])) && types_match (captures[2], type) && (types_match (captures[2], captures[4]) || TREE_CODE (captures[4]) == INTEGER_CST)) { /* #line 4903 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4904, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[2]; { tree ops1[1], res; ops1[0] = captures[4]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { { /* #line 4905 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree utype = unsigned_type_for (TREE_TYPE (captures[2])); gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4906, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[2]; if (utype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[4]; if (utype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), op, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_64 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[2])) && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))) && (CONSTANT_CLASS_P (captures[2]) || (single_use (captures[1]) && single_use (captures[0]))) && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1])) && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[3]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1622, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[2]; res_op->ops[1] = build_zero_cst (TREE_TYPE (captures[2])); gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_65 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (mod)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 485, __FILE__, __LINE__); tree tem; tem = build_zero_cst (type); res_op->set_value (tem); return true; return false; } static bool gimple_simplify_66 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (scmp)) { /* #line 3209 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (integer_zerop (captures[2])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3210, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[2]; res_op->ops[1] = captures[3]; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 3211 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])) && single_use (captures[0])) { /* #line 3215 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_int_cst_sgn (captures[2]) < 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3216, __FILE__, __LINE__); res_op->set_op (scmp, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = captures[3]; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3217, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = captures[3]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_67 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3671, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_68 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 2540 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_UNSIGNED (TREE_TYPE (captures[2])) && (element_precision (TREE_TYPE (captures[2])) <= element_precision (TREE_TYPE (captures[3])) || !TYPE_UNSIGNED (TREE_TYPE (captures[3])))) { { /* #line 2544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree shift_type = TREE_TYPE (captures[2]); gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2546, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[3]; if (shift_type != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (shift_type, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, shift_type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), RSHIFT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_69 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 4063 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2])) || POINTER_TYPE_P (TREE_TYPE (captures[2])) || VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[2]))) && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))) { { /* #line 4067 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree cst = uniform_integer_cst_p (captures[2]); tree arg1_type = TREE_TYPE (cst); unsigned int prec = TYPE_PRECISION (arg1_type); wide_int max = wi::max_value (arg1_type); wide_int signed_max = wi::max_value (prec, SIGNED); wide_int min = wi::min_value (arg1_type); /* #line 4077 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::to_wide (cst) == max) { /* #line 4079 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GT_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4080, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (false, type); res_op->set_value (tem); return true; } else { /* #line 4081 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4082, __FILE__, __LINE__); res_op->set_op (EQ_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 4083 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4084, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (true, type); res_op->set_value (tem); return true; } else { /* #line 4085 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4086, __FILE__, __LINE__); res_op->set_op (NE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } else { /* #line 4087 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::to_wide (cst) == min) { /* #line 4089 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4090, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (false, type); res_op->set_value (tem); return true; } else { /* #line 4091 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4092, __FILE__, __LINE__); res_op->set_op (EQ_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 4093 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4094, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (true, type); res_op->set_value (tem); return true; } else { /* #line 4095 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GT_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4096, __FILE__, __LINE__); res_op->set_op (NE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } else { /* #line 4097 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::to_wide (cst) == max - 1) { /* #line 4099 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GT_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4100, __FILE__, __LINE__); res_op->set_op (EQ_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_uniform_cst (TREE_TYPE (captures[2]), wide_int_to_tree (TREE_TYPE (cst), wi::to_wide (cst) + 1)); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 4104 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4105, __FILE__, __LINE__); res_op->set_op (NE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_uniform_cst (TREE_TYPE (captures[2]), wide_int_to_tree (TREE_TYPE (cst), wi::to_wide (cst) + 1)); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } else { /* #line 4109 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::to_wide (cst) == min + 1) { /* #line 4111 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4112, __FILE__, __LINE__); res_op->set_op (NE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_uniform_cst (TREE_TYPE (captures[2]), wide_int_to_tree (TREE_TYPE (cst), wi::to_wide (cst) - 1)); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 4116 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4117, __FILE__, __LINE__); res_op->set_op (EQ_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_uniform_cst (TREE_TYPE (captures[2]), wide_int_to_tree (TREE_TYPE (cst), wi::to_wide (cst) - 1)); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } else { /* #line 4121 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::to_wide (cst) == signed_max && TYPE_UNSIGNED (arg1_type) && prec == GET_MODE_PRECISION (SCALAR_INT_TYPE_MODE (arg1_type)) && INTEGRAL_TYPE_P (arg1_type)) { /* #line 4132 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LE_EXPR || cmp == GT_EXPR) { { /* #line 4133 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree st = signed_type_for (TREE_TYPE (captures[2])); /* #line 4135 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cst == captures[2] && cmp == LE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4136, __FILE__, __LINE__); res_op->set_op (GE_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[1]; if (st != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (st, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, st, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = build_zero_cst (st); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 4137 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cst == captures[2] && cmp == GT_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4138, __FILE__, __LINE__); res_op->set_op (LT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[1]; if (st != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (st, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, st, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = build_zero_cst (st); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 4139 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4140, __FILE__, __LINE__); res_op->set_op (GE_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, st, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = build_zero_cst (st); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 4141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GT_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4142, __FILE__, __LINE__); res_op->set_op (LT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, st, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = build_zero_cst (st); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } } } } } return false; } static bool gimple_simplify_70 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (test1), const enum tree_code ARG_UNUSED (test2)) { /* #line 3687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) || VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3689, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (false, type); res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_71 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { /* #line 1989 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_OVERFLOW_TRAPS (type) && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1991, __FILE__, __LINE__); res_op->set_op (BIT_NOT_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_72 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 3898 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (integer_pow2p (captures[1]) && !TYPE_UNSIGNED (TREE_TYPE (captures[0]))) { { /* #line 3900 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ int shift = element_precision (captures[0]) - wi::exact_log2 (wi::to_wide (captures[1])) - 1; /* #line 3903 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (shift >= 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3904, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = captures[0]; ops2[1] = build_int_cst (integer_type_node, shift); gimple_match_op tem_op (res_op->cond.any_else (), RSHIFT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3909, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_73 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (out)) { /* #line 4181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_UNSIGNED (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])) && wi::to_wide (captures[2]) != 0 && single_use (captures[0])) { { /* #line 4185 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ unsigned int prec = TYPE_PRECISION (TREE_TYPE (captures[1])); gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4186, __FILE__, __LINE__); res_op->set_op (out, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = wide_int_to_tree (TREE_TYPE (captures[1]), wi::max_value (prec, UNSIGNED) - wi::to_wide (captures[2])); gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_74 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 2843 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (TREE_TYPE (captures[0]), type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2844, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_75 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (icmp)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2422, __FILE__, __LINE__); res_op->set_op (icmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_zero_cst (TREE_TYPE (captures[0])); gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_76 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 820, __FILE__, __LINE__); tree tem; tem = captures[2]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_77 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (icmp)) { /* #line 3560 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (captures[1])) && ! DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[1]))) { { /* #line 3562 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree itype = TREE_TYPE (captures[0]); format_helper fmt (REAL_MODE_FORMAT (TYPE_MODE (TREE_TYPE (captures[1])))); const REAL_VALUE_TYPE *cst = TREE_REAL_CST_PTR (captures[1]); bool exception_p = real_isnan (cst) && (cst->signalling || (cmp != EQ_EXPR && cmp != NE_EXPR)); /* #line 3577 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (fmt.can_represent_integral_type_p (itype) && ! exception_p) { { /* #line 3578 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ signop isign = TYPE_SIGN (itype); REAL_VALUE_TYPE imin, imax; real_from_integer (&imin, fmt, wi::min_value (itype), isign); real_from_integer (&imax, fmt, wi::max_value (itype), isign); REAL_VALUE_TYPE icst; if (cmp == GT_EXPR || cmp == GE_EXPR) real_ceil (&icst, fmt, cst); else if (cmp == LT_EXPR || cmp == LE_EXPR) real_floor (&icst, fmt, cst); else real_trunc (&icst, fmt, cst); bool cst_int_p = !real_isnan (cst) && real_identical (&icst, cst); bool overflow_p = false; wide_int icst_val = real_to_integer (&icst, &overflow_p, TYPE_PRECISION (itype)); /* #line 3601 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (LT_EXPR, cst, &imin)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3602, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (cmp == GT_EXPR || cmp == GE_EXPR || cmp == NE_EXPR, type); res_op->set_value (tem); return true; } else { /* #line 3604 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, cst, &imax)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3605, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (cmp == LT_EXPR || cmp == LE_EXPR || cmp == NE_EXPR, type); res_op->set_value (tem); return true; } else { /* #line 3608 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cst_int_p) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3609, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[0]; gcc_assert (!overflow_p); res_op->ops[1] = wide_int_to_tree (itype, icst_val); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 3615 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == EQ_EXPR || cmp == NE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3616, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (cmp == NE_EXPR, type); res_op->set_value (tem); return true; } else { { /* #line 3618 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ gcc_checking_assert (!overflow_p); gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3622, __FILE__, __LINE__); res_op->set_op (icmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = wide_int_to_tree (itype, icst_val); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } return false; } static bool gimple_simplify_78 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (bitop), const enum tree_code ARG_UNUSED (op)) { { /* #line 852 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree pmop[2]; tree utype = fold_bit_and_mask (TREE_TYPE (captures[1]), captures[5], op, captures[1], bitop, captures[2], captures[3], captures[4], ERROR_MARK, NULL_TREE, NULL_TREE, pmop); /* #line 857 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (utype) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 858, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = pmop[0]; if (utype != TREE_TYPE (ops3[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops3[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops3[0]; ops2[0] = res; } { tree ops3[1], res; ops3[0] = pmop[1]; if (utype != TREE_TYPE (ops3[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops3[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops3[0]; ops2[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), op, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[5]; if (utype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_79 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { /* #line 1537 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1539, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_80 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { /* #line 1983 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1984, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_81 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (pows), const combined_fn ARG_UNUSED (copysigns)) { { /* #line 645 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ HOST_WIDE_INT n; /* #line 646 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_isinteger (&TREE_REAL_CST (captures[2]), &n) && (n & 1) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 647, __FILE__, __LINE__); res_op->set_op (pows, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_82 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { /* #line 1553 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1555, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_83 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (bswap)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2859, __FILE__, __LINE__); res_op->set_op (BIT_NOT_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_84 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (POW)) { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4608, __FILE__, __LINE__); res_op->set_op (POW, type, 2); res_op->ops[0] = captures[1]; { tree ops1[2], res; ops1[0] = captures[2]; ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_85 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (COPYSIGN_ALL)) { /* #line 263 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (REAL_VALUE_NEGATIVE (TREE_REAL_CST (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 264, __FILE__, __LINE__); res_op->set_op (COPYSIGN_ALL, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_86 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (plusminus)) { /* #line 2139 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type) && (!FLOAT_TYPE_P (type) || flag_associative_math)) { /* #line 2154 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!ALL_FRACT_MODE_P (TYPE_MODE (type))) { /* #line 2166 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!ANY_INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_WRAPS (type) || (INTEGRAL_TYPE_P (type) && tree_expr_nonzero_p (captures[1]) && expr_not_equal_to (captures[1], wi::minus_one (TYPE_PRECISION (type))))) && single_use (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2172, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[2], res; ops1[0] = captures[2]; ops1[1] = build_one_cst (type); gimple_match_op tem_op (res_op->cond.any_else (), plusminus, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_87 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (bitop), const combined_fn ARG_UNUSED (bswap)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2863, __FILE__, __LINE__); res_op->set_op (bitop, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; ops1[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), bswap, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_88 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (rotate)) { /* #line 2553 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((element_precision (TREE_TYPE (captures[2])) <= element_precision (TREE_TYPE (captures[3])) || !TYPE_UNSIGNED (TREE_TYPE (captures[3]))) && (element_precision (type) <= element_precision (TREE_TYPE (captures[2])) || !TYPE_UNSIGNED (TREE_TYPE (captures[2])))) { { /* #line 2558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree rotate_type = TREE_TYPE (captures[2]); gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2560, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[3]; if (rotate_type != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (rotate_type, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, rotate_type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), rotate, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_89 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 789, __FILE__, __LINE__); res_op->set_op (BIT_IOR_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_90 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (ocmp)) { /* #line 1649 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TREE_CODE (TREE_TYPE (captures[0])) != COMPLEX_TYPE && (VECTOR_TYPE_P (type) || !VECTOR_TYPE_P (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1653, __FILE__, __LINE__); res_op->set_op (ocmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_91 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (bitop), const enum tree_code ARG_UNUSED (cmp)) { /* #line 757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && INTEGRAL_TYPE_P (TREE_TYPE (captures[2])) && TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (TREE_TYPE (captures[2]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 760, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); { tree ops1[2], res; ops1[0] = captures[0]; { tree ops2[1], res; ops2[0] = captures[2]; if (TREE_TYPE (ops1[0]) != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (TREE_TYPE (ops1[0]), TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (ops1[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_92 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1823 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[1])) && !TYPE_OVERFLOW_SANITIZED (type)) { { /* #line 1825 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree t1 = type; if (INTEGRAL_TYPE_P (type) && TYPE_OVERFLOW_WRAPS (type) != TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))) t1 = TYPE_OVERFLOW_WRAPS (type) ? type : TREE_TYPE (captures[1]); gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1832, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[0]; if (t1 != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (t1, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, t1, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[1]; if (t1 != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (t1, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, t1, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), MINUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_93 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 547 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (type) || VECTOR_INTEGER_TYPE_P (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 548, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), TRUNC_MOD_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_94 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (SQRT_ALL)) { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4252 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_SNANS (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4253, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; } } return false; } static bool gimple_simplify_95 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { { /* #line 2398 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ unsigned int prec = element_precision (type); /* #line 2399 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::ge_p (wi::to_wide (captures[1]), 0, TYPE_SIGN (TREE_TYPE (captures[1]))) && wi::lt_p (wi::to_wide (captures[1]), prec, TYPE_SIGN (TREE_TYPE (captures[1]))) && wi::ge_p (wi::to_wide (captures[2]), 0, TYPE_SIGN (TREE_TYPE (captures[2]))) && wi::lt_p (wi::to_wide (captures[2]), prec, TYPE_SIGN (TREE_TYPE (captures[2])))) { { /* #line 2403 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ unsigned int low = (tree_to_uhwi (captures[1]) + tree_to_uhwi (captures[2])); /* #line 2407 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (low >= prec) { /* #line 2408 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (op == LROTATE_EXPR || op == RROTATE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2409, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_int_cst (TREE_TYPE (captures[1]), low % prec); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 2410 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_UNSIGNED (type) || op == LSHIFT_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2411, __FILE__, __LINE__); tree tem; tem = build_zero_cst (type); res_op->set_value (tem); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2412, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_int_cst (TREE_TYPE (captures[1]), prec - 1); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2413, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_int_cst (TREE_TYPE (captures[1]), low); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } return false; } static bool gimple_simplify_96 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 2191 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TREE_CODE (type) != COMPLEX_TYPE && (! ANY_INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_UNDEFINED (type))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2194, __FILE__, __LINE__); res_op->set_op (ABS_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_97 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 3827 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1])) && wi::bit_and_not (wi::to_wide (captures[2]), wi::to_wide (captures[3])) != 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3829, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (cmp == NE_EXPR, type); res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_98 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { { /* #line 2430 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ int cand = wi::ctz (wi::to_wide (captures[2])) - wi::ctz (wi::to_wide (captures[0])); /* #line 2431 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cand < 0 || (!integer_zerop (captures[2]) && wi::lshift (wi::to_wide (captures[0]), cand) != wi::to_wide (captures[2]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2434, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (cmp == NE_EXPR, type); res_op->set_value (tem); return true; } else { /* #line 2435 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!integer_zerop (captures[2]) && wi::lshift (wi::to_wide (captures[0]), cand) == wi::to_wide (captures[2])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2437, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = build_int_cst (TREE_TYPE (captures[1]), cand); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_99 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (shift)) { /* #line 2446 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1])) && TYPE_PRECISION (type) <= HOST_BITS_PER_WIDE_INT && tree_fits_uhwi_p (captures[4]) && tree_to_uhwi (captures[4]) > 0 && tree_to_uhwi (captures[4]) < TYPE_PRECISION (type)) { { /* #line 2451 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ unsigned int shiftc = tree_to_uhwi (captures[4]); unsigned HOST_WIDE_INT mask = TREE_INT_CST_LOW (captures[5]); unsigned HOST_WIDE_INT newmask, zerobits = 0; tree shift_type = TREE_TYPE (captures[2]); unsigned int prec; if (shift == LSHIFT_EXPR) zerobits = ((HOST_WIDE_INT_1U << shiftc) - 1); else if (shift == RSHIFT_EXPR && type_has_mode_precision_p (shift_type)) { prec = TYPE_PRECISION (TREE_TYPE (captures[2])); tree arg00 = captures[3]; if (captures[2] != captures[3] && TYPE_UNSIGNED (TREE_TYPE (captures[3]))) { tree inner_type = TREE_TYPE (captures[3]); if (type_has_mode_precision_p (inner_type) && TYPE_PRECISION (inner_type) < prec) { prec = TYPE_PRECISION (inner_type); if (shiftc < prec) shift_type = inner_type; } } zerobits = HOST_WIDE_INT_M1U; if (shiftc < prec) { zerobits >>= HOST_BITS_PER_WIDE_INT - shiftc; zerobits <<= prec - shiftc; } if (!TYPE_UNSIGNED (TREE_TYPE (captures[2])) && prec == TYPE_PRECISION (TREE_TYPE (captures[2]))) { if ((mask & zerobits) == 0) shift_type = unsigned_type_for (TREE_TYPE (captures[2])); else zerobits = 0; } }/* #line 2505 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((mask & zerobits) == mask) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2506, __FILE__, __LINE__); tree tem; tem = build_int_cst (type, 0); res_op->set_value (tem); return true; } else { { /* #line 2507 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ newmask = mask | zerobits; /* #line 2508 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (newmask != mask && (newmask & (newmask + 1)) == 0) { { /* #line 2509 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ for (prec = BITS_PER_UNIT; prec < HOST_BITS_PER_WIDE_INT; prec <<= 1) if (newmask == (HOST_WIDE_INT_1U << prec) - 1) break; /* #line 2518 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (prec < HOST_BITS_PER_WIDE_INT || newmask == HOST_WIDE_INT_M1U) { { /* #line 2520 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree newmaskt = build_int_cst_type (TREE_TYPE (captures[5]), newmask); /* #line 2522 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!tree_int_cst_equal (newmaskt, captures[5])) { /* #line 2523 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (shift_type != TREE_TYPE (captures[2])) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2524, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[2]; if (shift_type != TREE_TYPE (ops3[0]) && !useless_type_conversion_p (shift_type, TREE_TYPE (ops3[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, shift_type, ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops3[0]; ops2[0] = res; } ops2[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), shift, shift_type, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = newmaskt; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2525, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = newmaskt; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } } return false; } static bool gimple_simplify_100 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (acmp)) { { /* #line 3147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree cst = uniform_integer_cst_p (captures[1]); /* #line 3148 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_int_cst_sgn (cst) == 1) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3149, __FILE__, __LINE__); res_op->set_op (acmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_uniform_cst (TREE_TYPE (captures[1]), wide_int_to_tree (TREE_TYPE (cst), wi::to_wide (cst) - 1)); gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_101 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 794, __FILE__, __LINE__); tree tem; tem = captures[2]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_102 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (scmp)) { /* #line 3730 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[0])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])))) { { /* #line 3733 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree tem = const_unop (NEGATE_EXPR, TREE_TYPE (captures[0]), captures[1]); /* #line 3734 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tem && !TREE_OVERFLOW (tem)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3735, __FILE__, __LINE__); res_op->set_op (scmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = tem; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_103 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 3867 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (integer_pow2p (captures[2])) { { /* #line 3868 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ int shift = (wi::exact_log2 (wi::to_wide (captures[2])) - wi::exact_log2 (wi::to_wide (captures[1]))); /* #line 3872 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (shift > 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3873, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[0]; if (type != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } ops1[1] = build_int_cst (integer_type_node, shift); gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3875, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = captures[0]; ops2[1] = build_int_cst (integer_type_node, -shift); gimple_match_op tem_op (res_op->cond.any_else (), RSHIFT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_104 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3243, __FILE__, __LINE__); res_op->set_op (UNORDERED_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_105 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3668, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_106 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_after_vectorization_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5193, __FILE__, __LINE__); res_op->set_op (CFN_FMS, type, 3); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; res_op->ops[2] = captures[2]; gimple_resimplify3 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_107 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (eqcmp)) { /* #line 3705 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))) { { /* #line 3706 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree ty = TREE_TYPE (captures[0]); unsigned prec = TYPE_PRECISION (ty); wide_int mask = wi::to_wide (captures[2], prec); wide_int rhs = wi::to_wide (captures[3], prec); signop sgn = TYPE_SIGN (ty); /* #line 3714 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((mask & (mask + 1)) == 0 && wi::gt_p (rhs, 0, sgn) && (rhs & (rhs + 1)) == 0 && wi::ge_p (mask, rhs, sgn)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3716, __FILE__, __LINE__); res_op->set_op (eqcmp, type, 2); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = wide_int_to_tree (ty, mask - rhs); gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = build_zero_cst (ty); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_108 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (inner_op), const enum tree_code ARG_UNUSED (neg_inner_op), const enum tree_code ARG_UNUSED (outer_op)) { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { /* #line 1926 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!ANY_INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_WRAPS (type)) { /* #line 1929 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!CONSTANT_CLASS_P (captures[0])) { /* #line 1930 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (outer_op == PLUS_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1931, __FILE__, __LINE__); res_op->set_op (PLUS_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } { tree ops1[2], res; ops1[0] = captures[2]; { tree ops2[1], res; ops2[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), inner_op, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1932, __FILE__, __LINE__); res_op->set_op (MINUS_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } { tree ops1[2], res; ops1[0] = captures[2]; { tree ops2[1], res; ops2[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), neg_inner_op, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } else { /* #line 1933 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0]))) { /* #line 1935 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (outer_op == PLUS_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1936, __FILE__, __LINE__); res_op->set_op (VIEW_CONVERT_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, TREE_TYPE (ops1[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), inner_op, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1937, __FILE__, __LINE__); res_op->set_op (VIEW_CONVERT_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, TREE_TYPE (ops1[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), neg_inner_op, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), MINUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } else { /* #line 1941 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, captures[0])) { { /* #line 1942 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree cst = const_binop (outer_op == inner_op ? PLUS_EXPR : MINUS_EXPR, type, captures[1], captures[2]); /* #line 1945 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cst && !TREE_OVERFLOW (cst)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1946, __FILE__, __LINE__); res_op->set_op (inner_op, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = cst; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 1948 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (type) && cst && wi::to_wide (cst) == wi::min_value (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1950, __FILE__, __LINE__); res_op->set_op (neg_inner_op, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = wide_int_to_tree (type, wi::to_wide (cst)); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { { /* #line 1952 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree utype = unsigned_type_for (type); /* #line 1953 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (utype) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1954, __FILE__, __LINE__); res_op->set_op (VIEW_CONVERT_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, utype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } { tree ops2[1], res; ops2[0] = drop_tree_overflow (cst); gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, utype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), inner_op, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } } } } } } } return false; } static bool gimple_simplify_109 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (shiftrotate)) { { /* #line 2367 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree tem = uniform_vector_p (captures[1]); /* #line 2368 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tem) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2369, __FILE__, __LINE__); res_op->set_op (shiftrotate, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = tem; gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_110 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (shift)) { /* #line 2446 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1])) && TYPE_PRECISION (type) <= HOST_BITS_PER_WIDE_INT && tree_fits_uhwi_p (captures[4]) && tree_to_uhwi (captures[4]) > 0 && tree_to_uhwi (captures[4]) < TYPE_PRECISION (type)) { { /* #line 2451 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ unsigned int shiftc = tree_to_uhwi (captures[4]); unsigned HOST_WIDE_INT mask = TREE_INT_CST_LOW (captures[5]); unsigned HOST_WIDE_INT newmask, zerobits = 0; tree shift_type = TREE_TYPE (captures[2]); unsigned int prec; if (shift == LSHIFT_EXPR) zerobits = ((HOST_WIDE_INT_1U << shiftc) - 1); else if (shift == RSHIFT_EXPR && type_has_mode_precision_p (shift_type)) { prec = TYPE_PRECISION (TREE_TYPE (captures[2])); tree arg00 = captures[3]; if (captures[2] != captures[3] && TYPE_UNSIGNED (TREE_TYPE (captures[3]))) { tree inner_type = TREE_TYPE (captures[3]); if (type_has_mode_precision_p (inner_type) && TYPE_PRECISION (inner_type) < prec) { prec = TYPE_PRECISION (inner_type); if (shiftc < prec) shift_type = inner_type; } } zerobits = HOST_WIDE_INT_M1U; if (shiftc < prec) { zerobits >>= HOST_BITS_PER_WIDE_INT - shiftc; zerobits <<= prec - shiftc; } if (!TYPE_UNSIGNED (TREE_TYPE (captures[2])) && prec == TYPE_PRECISION (TREE_TYPE (captures[2]))) { if ((mask & zerobits) == 0) shift_type = unsigned_type_for (TREE_TYPE (captures[2])); else zerobits = 0; } }/* #line 2505 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((mask & zerobits) == mask) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2506, __FILE__, __LINE__); tree tem; tem = build_int_cst (type, 0); res_op->set_value (tem); return true; } else { { /* #line 2507 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ newmask = mask | zerobits; /* #line 2508 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (newmask != mask && (newmask & (newmask + 1)) == 0) { { /* #line 2509 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ for (prec = BITS_PER_UNIT; prec < HOST_BITS_PER_WIDE_INT; prec <<= 1) if (newmask == (HOST_WIDE_INT_1U << prec) - 1) break; /* #line 2518 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (prec < HOST_BITS_PER_WIDE_INT || newmask == HOST_WIDE_INT_M1U) { { /* #line 2520 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree newmaskt = build_int_cst_type (TREE_TYPE (captures[5]), newmask); /* #line 2522 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!tree_int_cst_equal (newmaskt, captures[5])) { /* #line 2523 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (shift_type != TREE_TYPE (captures[2])) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2524, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[2]; if (shift_type != TREE_TYPE (ops3[0]) && !useless_type_conversion_p (shift_type, TREE_TYPE (ops3[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, shift_type, ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops3[0]; ops2[0] = res; } ops2[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), shift, shift_type, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = newmaskt; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2525, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = newmaskt; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } } return false; } static bool gimple_simplify_111 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (fmas)) { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_after_vectorization_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5154, __FILE__, __LINE__); res_op->set_op (CFN_FMS, type, 3); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; res_op->ops[2] = captures[2]; gimple_resimplify3 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_112 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { /* #line 2086 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (type) && TYPE_OVERFLOW_UNDEFINED (type) && element_precision (type) <= element_precision (TREE_TYPE (captures[1])) && element_precision (type) <= element_precision (TREE_TYPE (captures[2]))) { { /* #line 2090 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree utype = unsigned_type_for (type); gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2091, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[1]; if (utype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[2]; if (utype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), MINUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } else { /* #line 2092 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (((element_precision (type) <= element_precision (TREE_TYPE (captures[1]))) == (element_precision (type) <= element_precision (TREE_TYPE (captures[2])))) && (element_precision (type) <= element_precision (TREE_TYPE (captures[1])) || (INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && INTEGRAL_TYPE_P (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2]))))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2106, __FILE__, __LINE__); res_op->set_op (MINUS_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[1]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } { tree ops1[1], res; ops1[0] = captures[2]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } return false; } static bool gimple_simplify_113 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (bitop)) { { /* #line 886 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree pmop[2]; tree utype = fold_bit_and_mask (TREE_TYPE (captures[1]), captures[4], NEGATE_EXPR, captures[1], bitop, captures[2], captures[3], NULL_TREE, ERROR_MARK, NULL_TREE, NULL_TREE, pmop); /* #line 891 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (utype) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 892, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; { tree ops3[1], res; ops3[0] = pmop[0]; if (utype != TREE_TYPE (ops3[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops3[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops3[0]; ops2[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[4]; if (utype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_114 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 3748 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && !(targetm.have_canonicalize_funcptr_for_compare () && ((POINTER_TYPE_P (TREE_TYPE (captures[1])) && FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[1])))) || (POINTER_TYPE_P (TREE_TYPE (captures[3])) && FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[3])))))) && single_use (captures[0])) { /* #line 3757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[0])) && (TREE_CODE (captures[3]) == INTEGER_CST || captures[2] != captures[3]) && (TYPE_UNSIGNED (TREE_TYPE (captures[1])) == TYPE_UNSIGNED (TREE_TYPE (captures[0])) || cmp == NE_EXPR || cmp == EQ_EXPR) && !POINTER_TYPE_P (TREE_TYPE (captures[1]))) { /* #line 3767 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TREE_CODE (captures[2]) == INTEGER_CST) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3768, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = force_fit_type (TREE_TYPE (captures[1]), wi::to_widest (captures[2]), 0, TREE_OVERFLOW (captures[2])); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3770, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[2]; if (TREE_TYPE (res_op->ops[0]) != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (TREE_TYPE (res_op->ops[0]), TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (res_op->ops[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } else { /* #line 3772 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1]))) { /* #line 3774 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((cmp == EQ_EXPR || cmp == NE_EXPR || TYPE_UNSIGNED (TREE_TYPE (captures[0])) == TYPE_UNSIGNED (TREE_TYPE (captures[1])) || (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[1])))) && (types_match (TREE_TYPE (captures[3]), TREE_TYPE (captures[1])) || ((TYPE_PRECISION (TREE_TYPE (captures[1])) >= TYPE_PRECISION (TREE_TYPE (captures[3]))) && (TYPE_UNSIGNED (TREE_TYPE (captures[1])) == TYPE_UNSIGNED (TREE_TYPE (captures[3])))) || (TREE_CODE (captures[3]) == INTEGER_CST && INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && int_fits_type_p (captures[3], TREE_TYPE (captures[1]))))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3786, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[3]; if (TREE_TYPE (res_op->ops[0]) != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (TREE_TYPE (res_op->ops[0]), TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (res_op->ops[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 3787 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TREE_CODE (captures[3]) == INTEGER_CST && INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && !int_fits_type_p (captures[3], TREE_TYPE (captures[1]))) { { /* #line 3790 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree min = lower_bound_in_type (TREE_TYPE (captures[3]), TREE_TYPE (captures[1])); tree max = upper_bound_in_type (TREE_TYPE (captures[3]), TREE_TYPE (captures[1])); bool above = integer_nonzerop (const_binop (LT_EXPR, type, max, captures[3])); bool below = integer_nonzerop (const_binop (LT_EXPR, type, captures[3], min)); /* #line 3797 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (above || below) { /* #line 3798 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == EQ_EXPR || cmp == NE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3799, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (cmp == EQ_EXPR ? false : true, type); res_op->set_value (tem); return true; } else { /* #line 3800 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR || cmp == LE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3801, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (above ? true : false, type); res_op->set_value (tem); return true; } else { /* #line 3802 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GT_EXPR || cmp == GE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3803, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (above ? false : true, type); res_op->set_value (tem); return true; } } } } } } } } } } return false; } static bool gimple_simplify_115 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 1422 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (1 || !TREE_SIDE_EFFECTS (captures[2])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1423, __FILE__, __LINE__); res_op->set_op (COND_EXPR, type, 3); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), cmp, boolean_type_node, ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[2]; res_op->ops[2] = build_zero_cst (type); gimple_resimplify3 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_116 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1141, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_117 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 2304 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::lt_p (wi::to_wide (captures[1]), wi::to_wide (captures[2]), TYPE_SIGN (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2306, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (cmp == NE_EXPR, type); res_op->set_value (tem); return true; } else { /* #line 2307 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::gt_p (wi::to_wide (captures[1]), wi::to_wide (captures[2]), TYPE_SIGN (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2309, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_118 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { /* #line 1635 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])) || ((op == EQ_EXPR || op == NE_EXPR) && TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))) && (CONSTANT_CLASS_P (captures[2]) || single_use (captures[1]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1640, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[2]; res_op->ops[1] = build_zero_cst (TREE_TYPE (captures[2])); gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_119 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (mod)) { /* #line 504 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (type) && TYPE_OVERFLOW_UNDEFINED (type) && wi::multiple_of_p (wi::to_wide (captures[1]), wi::to_wide (captures[2]), TYPE_SIGN (type))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 508, __FILE__, __LINE__); tree tem; tem = build_zero_cst (type); res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_120 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { /* #line 4885 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (type) && INTEGRAL_TYPE_P (TREE_TYPE (captures[2])) && INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && type_has_mode_precision_p (TREE_TYPE (captures[2])) && type_has_mode_precision_p (TREE_TYPE (captures[4])) && type_has_mode_precision_p (type) && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2])) && types_match (captures[2], type) && (types_match (captures[2], captures[4]) || TREE_CODE (captures[4]) == INTEGER_CST)) { /* #line 4903 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4904, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[2]; { tree ops1[1], res; ops1[0] = captures[4]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { { /* #line 4905 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree utype = unsigned_type_for (TREE_TYPE (captures[2])); gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4906, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[2]; if (utype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[4]; if (utype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), op, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_121 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (icmp)) { /* #line 3531 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (TREE_TYPE (captures[0])) && ! DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0]))) { { /* #line 3533 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ format_helper fmt (REAL_MODE_FORMAT (TYPE_MODE (TREE_TYPE (captures[0])))); tree type1 = TREE_TYPE (captures[1]); bool type1_signed_p = TYPE_SIGN (type1) == SIGNED; tree type2 = TREE_TYPE (captures[2]); bool type2_signed_p = TYPE_SIGN (type2) == SIGNED; /* #line 3541 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (fmt.can_represent_integral_type_p (type1) && fmt.can_represent_integral_type_p (type2)) { /* #line 3543 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == ORDERED_EXPR || cmp == UNORDERED_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3544, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (cmp == ORDERED_EXPR, type); res_op->set_value (tem); return true; } else { /* #line 3545 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (type1) > TYPE_PRECISION (type2) && type1_signed_p >= type2_signed_p) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3547, __FILE__, __LINE__); res_op->set_op (icmp, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[2]; if (TREE_TYPE (res_op->ops[0]) != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (TREE_TYPE (res_op->ops[0]), TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (res_op->ops[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 3548 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (type1) < TYPE_PRECISION (type2) && type1_signed_p <= type2_signed_p) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3550, __FILE__, __LINE__); res_op->set_op (icmp, type, 2); { tree ops1[1], res; ops1[0] = captures[1]; if (type2 != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type2, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type2, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 3551 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (type1) == TYPE_PRECISION (type2) && type1_signed_p == type2_signed_p) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3553, __FILE__, __LINE__); res_op->set_op (icmp, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } return false; } static bool gimple_simplify_122 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (out)) { /* #line 4216 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_UNSIGNED (TREE_TYPE (captures[1])) && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4218, __FILE__, __LINE__); res_op->set_op (out, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops1[0])), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = build_zero_cst (TREE_TYPE (captures[1])); gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_123 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (out)) { /* #line 4226 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_UNSIGNED (TREE_TYPE (captures[2])) && !VECTOR_TYPE_P (TREE_TYPE (captures[2]))) { { /* #line 4227 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree t = TREE_TYPE (captures[2]), cpx = build_complex_type (t); gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4228, __FILE__, __LINE__); res_op->set_op (out, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = captures[2]; ops2[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_MUL_OVERFLOW, cpx, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops1[0])), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = build_zero_cst (t); gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_124 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (cond_op)) { { /* #line 5301 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree op_type = TREE_TYPE (captures[6]); /* #line 5302 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (inverse_conditions_p (captures[0], captures[2]) && element_precision (type) == element_precision (op_type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5304, __FILE__, __LINE__); res_op->set_op (VIEW_CONVERT_EXPR, type, 1); { tree ops1[5], res; ops1[0] = captures[2]; ops1[1] = captures[3]; ops1[2] = captures[4]; ops1[3] = captures[5]; { tree ops2[1], res; ops2[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[4] = res; } gimple_match_op tem_op (res_op->cond.any_else (), cond_op, TREE_TYPE (ops1[1]), ops1[0], ops1[1], ops1[2], ops1[3], ops1[4]); gimple_resimplify5 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_125 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { /* #line 4917 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (type) && INTEGRAL_TYPE_P (TREE_TYPE (captures[2])) && INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && type_has_mode_precision_p (TREE_TYPE (captures[2])) && type_has_mode_precision_p (TREE_TYPE (captures[4])) && type_has_mode_precision_p (type) && TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (TREE_TYPE (captures[2])) && types_match (captures[2], captures[4]) && (tree_int_cst_min_precision (captures[5], TYPE_SIGN (TREE_TYPE (captures[2]))) <= TYPE_PRECISION (TREE_TYPE (captures[2]))) && (wi::to_wide (captures[5]) & wi::mask (TYPE_PRECISION (TREE_TYPE (captures[2])), true, TYPE_PRECISION (type))) == 0) { /* #line 4936 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[2]))) { { /* #line 4937 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree ntype = TREE_TYPE (captures[2]); gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4938, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[2], res; ops2[0] = captures[2]; ops2[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), op, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[5]; if (ntype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (ntype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, ntype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } else { { /* #line 4939 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree utype = unsigned_type_for (TREE_TYPE (captures[2])); gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4940, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[2]; if (utype != TREE_TYPE (ops3[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops3[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops3[0]; ops2[0] = res; } { tree ops3[1], res; ops3[0] = captures[4]; if (utype != TREE_TYPE (ops3[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops3[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops3[0]; ops2[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), op, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[5]; if (utype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_126 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree from_type = TREE_TYPE (captures[0]); tree c1_type = TREE_TYPE (captures[1]), c2_type = TREE_TYPE (captures[2]); enum tree_code code = ERROR_MARK; if (INTEGRAL_TYPE_P (from_type) && int_fits_type_p (captures[2], from_type) && (types_match (c1_type, from_type) || (TYPE_PRECISION (c1_type) > TYPE_PRECISION (from_type) && (TYPE_UNSIGNED (from_type) || TYPE_SIGN (c1_type) == TYPE_SIGN (from_type)))) && (types_match (c2_type, from_type) || (TYPE_PRECISION (c2_type) > TYPE_PRECISION (from_type) && (TYPE_UNSIGNED (from_type) || TYPE_SIGN (c2_type) == TYPE_SIGN (from_type))))) { if (cmp != EQ_EXPR) { if (wi::to_widest (captures[1]) == (wi::to_widest (captures[2]) - 1)) { if (cmp == LE_EXPR) code = LT_EXPR; if (cmp == GT_EXPR) code = GE_EXPR; } if (wi::to_widest (captures[1]) == (wi::to_widest (captures[2]) + 1)) { if (cmp == LT_EXPR) code = LE_EXPR; if (cmp == GE_EXPR) code = GT_EXPR; } if (code != ERROR_MARK || wi::to_widest (captures[2]) == wi::to_widest (captures[1])) { if (cmp == LT_EXPR || cmp == LE_EXPR) code = MIN_EXPR; if (cmp == GT_EXPR || cmp == GE_EXPR) code = MAX_EXPR; } } else if (int_fits_type_p (captures[1], from_type)) code = EQ_EXPR; }/* #line 2961 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (code == MAX_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2962, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; { tree ops2[1], res; ops2[0] = captures[2]; if (TREE_TYPE (ops1[0]) != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (TREE_TYPE (ops1[0]), TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (ops1[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), MAX_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2963 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (code == MIN_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2964, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; { tree ops2[1], res; ops2[0] = captures[2]; if (TREE_TYPE (ops1[0]) != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (TREE_TYPE (ops1[0]), TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (ops1[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), MIN_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2965 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (code == EQ_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2966, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[3], res; { tree ops2[2], res; ops2[0] = captures[0]; { tree ops3[1], res; ops3[0] = captures[1]; if (TREE_TYPE (ops2[0]) != TREE_TYPE (ops3[0]) && !useless_type_conversion_p (TREE_TYPE (ops2[0]), TREE_TYPE (ops3[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (ops2[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops3[0]; ops2[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), EQ_EXPR, boolean_type_node, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[1]; if (from_type != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (from_type, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, from_type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } { tree ops2[1], res; ops2[0] = captures[2]; if (from_type != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (from_type, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, from_type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[2] = res; } gimple_match_op tem_op (res_op->cond.any_else (), COND_EXPR, TREE_TYPE (ops1[1]), ops1[0], ops1[1], ops1[2]); gimple_resimplify3 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } return false; } static bool gimple_simplify_127 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { /* #line 1977 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_OVERFLOW_TRAPS (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1978, __FILE__, __LINE__); tree tem; tem = build_all_ones_cst (type); res_op->set_value (tem); return true; } } } return false; } static bool gimple_simplify_128 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1349, __FILE__, __LINE__); tree tem; tem = build_zero_cst (type); res_op->set_value (tem); return true; return false; } static bool gimple_simplify_129 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 3850 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_single_nonzero_warnv_p (captures[0], NULL)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3851, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (cmp == NE_EXPR, type); res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_130 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 3197 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (single_use (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3198, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_131 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (coss), const combined_fn ARG_UNUSED (copysigns)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 638, __FILE__, __LINE__); res_op->set_op (coss, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_132 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[3])) && tree_nop_conversion_p (type, TREE_TYPE (captures[6]))) { /* #line 1153 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (single_use (captures[4]) && single_use (captures[5])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1154, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; ops1[0] = captures[6]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 1155 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (single_use (captures[0]) && single_use (captures[1])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1156, __FILE__, __LINE__); res_op->set_op (op, type, 2); { tree ops1[1], res; ops1[0] = captures[3]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = captures[4]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_133 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (scmp)) { /* #line 3261 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (single_use (captures[0]) && (TREE_CODE (captures[2]) == INTEGER_CST || TREE_CODE (captures[2]) == VECTOR_CST)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3263, __FILE__, __LINE__); res_op->set_op (scmp, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_134 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1836 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[1])) && !TYPE_OVERFLOW_SANITIZED (type)) { { /* #line 1838 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree t1 = type; if (INTEGRAL_TYPE_P (type) && TYPE_OVERFLOW_WRAPS (type) != TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1]))) t1 = TYPE_OVERFLOW_WRAPS (type) ? type : TREE_TYPE (captures[1]); gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1845, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[0]; if (t1 != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (t1, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, t1, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[1]; if (t1 != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (t1, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, t1, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_135 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (HYPOT)) { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4679, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = build_real_truncate (type, dconst_sqrt2 ()); gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_136 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (hypots), const combined_fn ARG_UNUSED (copysigns)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 665, __FILE__, __LINE__); res_op->set_op (hypots, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_137 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (neg_cmp)) { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { { /* #line 4267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree tem = const_binop (RDIV_EXPR, type, captures[2], captures[1]); /* #line 4269 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tem && !(REAL_VALUE_ISINF (TREE_REAL_CST (tem)) || (real_zerop (tem) && !real_zerop (captures[1])))) { /* #line 4273 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_less (&dconst0, TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4274, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = tem; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 4275 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_less (TREE_REAL_CST_PTR (captures[1]), &dconst0)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4276, __FILE__, __LINE__); res_op->set_op (neg_cmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = tem; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } return false; } static bool gimple_simplify_138 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (copysigns)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 679, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_139 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (copysigns)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 685, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_140 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (TAN), const combined_fn ARG_UNUSED (COS), const combined_fn ARG_UNUSED (SIN)) { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4573, __FILE__, __LINE__); res_op->set_op (SIN, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_141 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1008, __FILE__, __LINE__); res_op->set_op (BIT_XOR_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_142 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (logic), const enum tree_code ARG_UNUSED (op), const enum tree_code ARG_UNUSED (ext)) { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TREE_CODE (captures[1]) != INTEGER_CST) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4952, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[1]; { tree ops1[2], res; ops1[0] = captures[2]; ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), ext, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_143 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1111 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1112, __FILE__, __LINE__); res_op->set_op (BIT_XOR_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } { tree ops1[1], res; ops1[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_144 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (plusminus)) { /* #line 2139 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type) && (!FLOAT_TYPE_P (type) || flag_associative_math)) { /* #line 2144 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!ANY_INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_WRAPS (type) || (INTEGRAL_TYPE_P (type) && tree_expr_nonzero_p (captures[1]) && expr_not_equal_to (captures[1], wi::minus_one (TYPE_PRECISION (type))))) && (single_use (captures[0]) || single_use (captures[3]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2152, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[2], res; ops1[0] = captures[2]; ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), plusminus, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_145 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 904 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_UNSIGNED (TREE_TYPE (captures[1]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 905, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (cmp == GT_EXPR, type); res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_146 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 3628 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!integer_zerop (captures[1])) { /* #line 3629 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::to_wide (captures[2]) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3630, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 3631 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TREE_CODE (captures[1]) == INTEGER_CST) { { /* #line 3632 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ wi::overflow_type ovf; wide_int prod = wi::mul (wi::to_wide (captures[2]), wi::to_wide (captures[1]), TYPE_SIGN (TREE_TYPE (captures[1])), &ovf); /* #line 3638 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ovf) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3639, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (cmp == NE_EXPR, type); res_op->set_value (tem); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3640, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = wide_int_to_tree (TREE_TYPE (captures[0]), prod); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } return false; } static bool gimple_simplify_147 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 3644 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::gt_p (wi::to_wide (captures[1]), 0, TYPE_SIGN (TREE_TYPE (captures[1])))) { { /* #line 3645 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ wi::overflow_type ovf; wide_int prod = wi::mul (wi::to_wide (captures[2]), wi::to_wide (captures[1]), TYPE_SIGN (TREE_TYPE (captures[1])), &ovf); /* #line 3651 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ovf) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3652, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (wi::lt_p (wi::to_wide (captures[2]), 0, TYPE_SIGN (TREE_TYPE (captures[2]))) != (cmp == LT_EXPR || cmp == LE_EXPR), type); res_op->set_value (tem); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3655, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = wide_int_to_tree (TREE_TYPE (captures[0]), prod); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_148 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (COPYSIGN_ALL)) { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_NANS (type) && !HONOR_SIGNED_ZEROS (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 252, __FILE__, __LINE__); res_op->set_op (ABS_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_149 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (inner_op), const enum tree_code ARG_UNUSED (outer_op)) { { /* #line 1704 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool fail = false; wide_int zero_mask_not; wide_int C0; wide_int cst_emit; if (TREE_CODE (captures[1]) == SSA_NAME) zero_mask_not = get_nonzero_bits (captures[1]); else fail = true; if (inner_op == BIT_XOR_EXPR) { C0 = wi::bit_and_not (wi::to_wide (captures[2]), wi::to_wide (captures[3])); cst_emit = C0 | wi::to_wide (captures[3]); } else { C0 = wi::to_wide (captures[2]); cst_emit = C0 ^ wi::to_wide (captures[3]); }/* #line 1727 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!fail && (C0 & zero_mask_not) == 0) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1728, __FILE__, __LINE__); res_op->set_op (outer_op, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = wide_int_to_tree (type, cst_emit); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 1729 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!fail && (wi::to_wide (captures[3]) & zero_mask_not) == 0) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1730, __FILE__, __LINE__); res_op->set_op (inner_op, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = wide_int_to_tree (type, cst_emit); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_150 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1414 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[0])) && tree_nop_conversion_p (type, TREE_TYPE (captures[3]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1416, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_151 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (uncond_op), const combined_fn ARG_UNUSED (cond_op)) { { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree op_type = TREE_TYPE (captures[2]); /* #line 5255 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (vectorized_internal_fn_supported_p (as_internal_fn (cond_op), op_type) && element_precision (type) == element_precision (op_type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5257, __FILE__, __LINE__); res_op->set_op (VIEW_CONVERT_EXPR, type, 1); { tree ops1[4], res; { tree ops2[1], res; ops2[0] = captures[0]; if (COMPARISON_CLASS_P (ops2[0])) { if (!seq) return false; ops2[0] = gimple_build (seq, TREE_CODE (ops2[0]), TREE_TYPE (ops2[0]), TREE_OPERAND (ops2[0], 0), TREE_OPERAND (ops2[0], 1)); } gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[3]; ops1[2] = captures[4]; { tree ops2[1], res; ops2[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[3] = res; } gimple_match_op tem_op (res_op->cond.any_else (), cond_op, TREE_TYPE (ops1[1]), ops1[0], ops1[1], ops1[2], ops1[3]); gimple_resimplify4 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_152 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 1430 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])) && tree_expr_nonzero_p (captures[1])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1433, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_153 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 2800 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TREE_CODE (captures[3]) != INTEGER_CST && single_use (captures[0]) && !integer_zerop (captures[2]) && !integer_minus_onep (captures[2])) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2803, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_154 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[0])) && tree_nop_conversion_p (type, TREE_TYPE (captures[1]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1225, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_155 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (uncond_op), const combined_fn ARG_UNUSED (cond_op)) { { /* #line 5270 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree op_type = TREE_TYPE (captures[2]); /* #line 5271 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (vectorized_internal_fn_supported_p (as_internal_fn (cond_op), op_type) && element_precision (type) == element_precision (op_type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5273, __FILE__, __LINE__); res_op->set_op (VIEW_CONVERT_EXPR, type, 1); { tree ops1[5], res; { tree ops2[1], res; ops2[0] = captures[0]; if (COMPARISON_CLASS_P (ops2[0])) { if (!seq) return false; ops2[0] = gimple_build (seq, TREE_CODE (ops2[0]), TREE_TYPE (ops2[0]), TREE_OPERAND (ops2[0], 0), TREE_OPERAND (ops2[0], 1)); } gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[3]; ops1[2] = captures[4]; ops1[3] = captures[5]; { tree ops2[1], res; ops2[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[4] = res; } gimple_match_op tem_op (res_op->cond.any_else (), cond_op, TREE_TYPE (ops1[1]), ops1[0], ops1[1], ops1[2], ops1[3], ops1[4]); gimple_resimplify5 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_156 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (scmp)) { /* #line 3724 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[0])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3727, __FILE__, __LINE__); res_op->set_op (scmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_157 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4260, __FILE__, __LINE__); res_op->set_op (RDIV_EXPR, type, 2); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), op, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_158 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 1478 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::gt_p (wi::to_wide (captures[1]), 0, TYPE_SIGN (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1479, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_159 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (op)) { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree from_type = TREE_TYPE (captures[0]), to_type = TREE_TYPE (captures[1]); /* #line 2994 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (from_type, to_type) || (TYPE_UNSIGNED (from_type) && !TYPE_UNSIGNED (to_type) && TYPE_PRECISION (from_type) == TYPE_PRECISION (to_type) && integer_zerop (captures[1]) && (cmp == LT_EXPR || cmp == GE_EXPR))) { { /* #line 3001 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ wi::overflow_type overflow = wi::OVF_NONE; enum tree_code code, cmp_code = cmp; wide_int real_c1; wide_int c1 = wi::to_wide (captures[1]); wide_int c2 = wi::to_wide (captures[2]); wide_int c3 = wi::to_wide (captures[3]); signop sgn = TYPE_SIGN (from_type); if (!types_match (from_type, to_type)) { if (cmp_code == LT_EXPR) cmp_code = GT_EXPR; if (cmp_code == GE_EXPR) cmp_code = LE_EXPR; c1 = wi::max_value (to_type); } if (op == PLUS_EXPR) real_c1 = wi::sub (c3, c2, sgn, &overflow); else real_c1 = wi::add (c3, c2, sgn, &overflow); code = cmp_code; if (!overflow || !TYPE_OVERFLOW_UNDEFINED (from_type)) { if (!wi::cmp (wi::sub (real_c1, 1, sgn, &overflow), c1, sgn) && !overflow) { if (cmp_code == LE_EXPR) code = LT_EXPR; if (cmp_code == GT_EXPR) code = GE_EXPR; } if (!wi::cmp (wi::add (real_c1, 1, sgn, &overflow), c1, sgn) && !overflow) { if (cmp_code == LT_EXPR) code = LE_EXPR; if (cmp_code == GE_EXPR) code = GT_EXPR; } if (code != cmp_code || !wi::cmp (real_c1, c1, sgn)) { if (cmp_code == LT_EXPR || cmp_code == LE_EXPR) code = MIN_EXPR; if (cmp_code == GT_EXPR || cmp_code == GE_EXPR) code = MAX_EXPR; } }/* #line 3065 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (code == MAX_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3066, __FILE__, __LINE__); res_op->set_op (op, type, 2); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = wide_int_to_tree (from_type, real_c1); gimple_match_op tem_op (res_op->cond.any_else (), MAX_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = wide_int_to_tree (from_type, c2); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 3068 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (code == MIN_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3069, __FILE__, __LINE__); res_op->set_op (op, type, 2); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = wide_int_to_tree (from_type, real_c1); gimple_match_op tem_op (res_op->cond.any_else (), MIN_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = wide_int_to_tree (from_type, c2); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } return false; } static bool gimple_simplify_160 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (div)) { /* #line 586 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (type) && TYPE_OVERFLOW_UNDEFINED (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 588, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_161 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2179, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_162 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (POW)) { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4613, __FILE__, __LINE__); res_op->set_op (POW, type, 2); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_163 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1393 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1394, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; { tree ops2[1], res; ops2[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_164 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1903, __FILE__, __LINE__); res_op->set_op (PLUS_EXPR, type, 2); res_op->ops[0] = captures[2]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_165 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (minmax)) { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_isnan (TREE_REAL_CST_PTR (captures[1])) && (!HONOR_SNANS (captures[1]) || !TREE_REAL_CST (captures[1]).signalling)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2261, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_166 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (icmp), const enum tree_code ARG_UNUSED (ncmp)) { /* #line 3167 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (VECTOR_TYPE_P (type) || (INTEGRAL_TYPE_P (type) && TYPE_PRECISION (type) == 1)) { { /* #line 3173 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ enum tree_code ic = invert_tree_comparison (cmp, HONOR_NANS (captures[0])); /* #line 3175 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ic == icmp) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3176, __FILE__, __LINE__); res_op->set_op (icmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 3177 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ic == ncmp) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3178, __FILE__, __LINE__); res_op->set_op (ncmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } return false; } static bool gimple_simplify_167 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 765, __FILE__, __LINE__); res_op->set_op (MINUS_EXPR, type, 2); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_168 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1160 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[1])) && tree_nop_conversion_p (type, TREE_TYPE (captures[2]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1162, __FILE__, __LINE__); res_op->set_op (BIT_XOR_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[1]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } { tree ops1[1], res; ops1[0] = captures[2]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_169 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (reduc)) { { /* #line 5370 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ int i = single_nonzero_element (captures[1]); /* #line 5371 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (i >= 0) { { /* #line 5372 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree elt = vector_cst_elt (captures[1], i); tree elt_type = TREE_TYPE (elt); unsigned int elt_bits = tree_to_uhwi (TYPE_SIZE (elt_type)); tree size = bitsize_int (elt_bits); tree pos = bitsize_int (elt_bits * i); gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5377, __FILE__, __LINE__); res_op->set_op (VIEW_CONVERT_EXPR, type, 1); { tree ops1[2], res; { tree ops2[3], res; ops2[0] = captures[0]; ops2[1] = size; ops2[2] = pos; gimple_match_op tem_op (res_op->cond.any_else (), BIT_FIELD_REF, elt_type, ops2[0], ops2[1], ops2[2]); gimple_resimplify3 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = elt; gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, elt_type, ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_170 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 774, __FILE__, __LINE__); res_op->set_op (MINUS_EXPR, type, 2); res_op->ops[0] = captures[2]; { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_171 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_after_vectorization_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5199, __FILE__, __LINE__); res_op->set_op (CFN_FMA, type, 3); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; res_op->ops[2] = captures[2]; gimple_resimplify3 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_172 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 820, __FILE__, __LINE__); tree tem; tem = captures[2]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_173 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (fns)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4519, __FILE__, __LINE__); res_op->set_op (fns, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_174 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2736, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_175 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 780, __FILE__, __LINE__); res_op->set_op (BIT_XOR_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_176 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (ncmp)) { /* #line 3885 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && type_has_mode_precision_p (TREE_TYPE (captures[1])) && element_precision (captures[0]) >= element_precision (captures[1]) && wi::only_sign_bit_p (wi::to_wide (captures[2]), element_precision (captures[1]))) { { /* #line 3889 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree stype = signed_type_for (TREE_TYPE (captures[1])); gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3890, __FILE__, __LINE__); res_op->set_op (ncmp, type, 2); { tree ops1[1], res; ops1[0] = captures[1]; if (stype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (stype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, stype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = build_zero_cst (stype); gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_177 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (rep), const combined_fn ARG_UNUSED (popcount)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5223, __FILE__, __LINE__); res_op->set_op (rep, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_zero_cst (TREE_TYPE (captures[0])); gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_178 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_after_vectorization_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5179, __FILE__, __LINE__); res_op->set_op (CFN_FMA, type, 3); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; res_op->ops[2] = captures[2]; gimple_resimplify3 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_179 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (HYPOT)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4529, __FILE__, __LINE__); res_op->set_op (ABS_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_180 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (div)) { /* #line 316 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((INTEGRAL_TYPE_P (type) || VECTOR_INTEGER_TYPE_P (type)) && TYPE_OVERFLOW_UNDEFINED (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 318, __FILE__, __LINE__); tree tem; tem = build_minus_one_cst (type); res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_181 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (COPYSIGN_ALL)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4544, __FILE__, __LINE__); res_op->set_op (ABS_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_182 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4856, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_183 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 980, __FILE__, __LINE__); res_op->set_op (BIT_NOT_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_184 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 1686 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::bit_and_not (wi::to_wide (captures[1]), get_nonzero_bits (captures[0])) != 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1687, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (cmp == NE_EXPR, type); res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_185 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 794, __FILE__, __LINE__); tree tem; tem = captures[2]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_186 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 799, __FILE__, __LINE__); res_op->set_op (BIT_NOT_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_187 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 804, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_188 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[3])) && tree_nop_conversion_p (type, TREE_TYPE (captures[6]))) { /* #line 1153 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (single_use (captures[4]) && single_use (captures[5])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1154, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; ops1[0] = captures[6]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 1155 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (single_use (captures[0]) && single_use (captures[1])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1156, __FILE__, __LINE__); res_op->set_op (op, type, 2); { tree ops1[1], res; ops1[0] = captures[3]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = captures[4]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_189 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 809, __FILE__, __LINE__); res_op->set_op (BIT_IOR_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; ops1[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_190 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (fmas)) { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_after_vectorization_p ()) { /* #line 5160 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (single_use (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5161, __FILE__, __LINE__); res_op->set_op (CFN_FNMS, type, 3); res_op->ops[0] = captures[1]; res_op->ops[1] = captures[2]; res_op->ops[2] = captures[3]; gimple_resimplify3 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_191 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 825, __FILE__, __LINE__); res_op->set_op (BIT_IOR_EXPR, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_192 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 3120 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (VECTOR_TYPE_P (type) && known_eq (TYPE_VECTOR_SUBPARTS (type), TYPE_VECTOR_SUBPARTS (TREE_TYPE (captures[3]))) && (TYPE_MODE (TREE_TYPE (type)) == TYPE_MODE (TREE_TYPE (TREE_TYPE (captures[3]))))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3125, __FILE__, __LINE__); res_op->set_op (PLUS_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[3], res; ops2[0] = captures[2]; ops2[0] = unshare_expr (ops2[0]); { tree ops3[1], res; ops3[0] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[1] = res; } ops2[2] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), VEC_COND_EXPR, TREE_TYPE (ops2[1]), ops2[0], ops2[1], ops2[2]); gimple_resimplify3 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_193 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 830, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_194 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (COS), const combined_fn ARG_UNUSED (SIN), const combined_fn ARG_UNUSED (TAN)) { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4589, __FILE__, __LINE__); res_op->set_op (RDIV_EXPR, type, 2); res_op->ops[0] = build_one_cst (type); { tree ops1[1], res; ops1[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), TAN, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_195 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op), const enum tree_code ARG_UNUSED (cmp)) { /* #line 3359 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { { /* #line 3363 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree tem = const_binop (op == PLUS_EXPR ? MINUS_EXPR : PLUS_EXPR, TREE_TYPE (captures[1]), captures[2], captures[1]); /* #line 3368 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tem && !TREE_OVERFLOW (tem)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3369, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = tem; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_196 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (FMIN_ALL)) { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_finite_math_only) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2270, __FILE__, __LINE__); res_op->set_op (MIN_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_197 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { { /* #line 874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree pmop[2]; tree utype = fold_bit_and_mask (TREE_TYPE (captures[1]), captures[3], op, captures[1], ERROR_MARK, NULL_TREE, NULL_TREE, captures[2], ERROR_MARK, NULL_TREE, NULL_TREE, pmop); /* #line 879 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (utype) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 880, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = pmop[0]; if (utype != TREE_TYPE (ops3[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops3[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops3[0]; ops2[0] = res; } { tree ops3[1], res; ops3[0] = pmop[1]; if (utype != TREE_TYPE (ops3[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops3[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops3[0]; ops2[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), op, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[3]; if (utype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_198 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op), const enum tree_code ARG_UNUSED (neg_op)) { /* #line 428 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 435 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_SIGNED_ZEROS (captures[1]) && !HONOR_INFINITIES (captures[1])) { /* #line 437 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_less (&dconst0, TREE_REAL_CST_PTR (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 438, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 440 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_less (TREE_REAL_CST_PTR (captures[0]), &dconst0)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 441, __FILE__, __LINE__); res_op->set_op (neg_op, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } return false; } static bool gimple_simplify_199 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 3375 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_associative_math) { { /* #line 3378 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree tem = const_binop (MINUS_EXPR, TREE_TYPE (captures[1]), captures[0], captures[2]); /* #line 3379 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tem && !TREE_OVERFLOW (tem)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3380, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = tem; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_200 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (acmp)) { { /* #line 3137 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree cst = uniform_integer_cst_p (captures[1]); /* #line 3138 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_int_cst_sgn (cst) == -1) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3139, __FILE__, __LINE__); res_op->set_op (acmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_uniform_cst (TREE_TYPE (captures[1]), wide_int_to_tree (TREE_TYPE (cst), wi::to_wide (cst) + 1)); gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_201 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (bitop), const enum tree_code ARG_UNUSED (rbitop)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1003, __FILE__, __LINE__); res_op->set_op (bitop, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_202 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (POW)) { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { /* #line 4623 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TREE_OVERFLOW (captures[2])) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4624, __FILE__, __LINE__); res_op->set_op (POW, type, 2); res_op->ops[0] = captures[1]; { tree ops1[2], res; ops1[0] = captures[2]; ops1[1] = build_one_cst (type); gimple_match_op tem_op (res_op->cond.any_else (), MINUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_203 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { /* #line 1607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])) && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[1])) && (CONSTANT_CLASS_P (captures[1]) || single_use (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1611, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = build_zero_cst (TREE_TYPE (captures[1])); gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_204 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4554, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_205 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (ncmp)) { /* #line 3885 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && type_has_mode_precision_p (TREE_TYPE (captures[1])) && element_precision (captures[0]) >= element_precision (captures[1]) && wi::only_sign_bit_p (wi::to_wide (captures[2]), element_precision (captures[1]))) { { /* #line 3889 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree stype = signed_type_for (TREE_TYPE (captures[1])); gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3890, __FILE__, __LINE__); res_op->set_op (ncmp, type, 2); { tree ops1[1], res; ops1[0] = captures[1]; if (stype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (stype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, stype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = build_zero_cst (stype); gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_206 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (out)) { /* #line 4208 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_UNSIGNED (TREE_TYPE (captures[1])) && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4210, __FILE__, __LINE__); res_op->set_op (out, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops1[0])), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = build_zero_cst (TREE_TYPE (captures[1])); gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_207 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 3232 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp != NE_EXPR || ! FLOAT_TYPE_P (TREE_TYPE (captures[0])) || ! HONOR_NANS (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3235, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (false, type); res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_208 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (div)) { { /* #line 333 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ wi::overflow_type overflow; wide_int mul = wi::mul (wi::to_wide (captures[2]), wi::to_wide (captures[3]), TYPE_SIGN (type), &overflow); /* #line 338 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (div == EXACT_DIV_EXPR || optimize_successive_divisions_p (captures[3], captures[0])) { /* #line 340 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!overflow) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 341, __FILE__, __LINE__); res_op->set_op (div, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = wide_int_to_tree (type, mul); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 342 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_UNSIGNED (type) || mul != wi::min_value (TYPE_PRECISION (type), SIGNED)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 344, __FILE__, __LINE__); tree tem; tem = build_zero_cst (type); res_op->set_value (tem); return true; } } } } return false; } static bool gimple_simplify_209 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (cond_op)) { { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree op_type = TREE_TYPE (captures[5]); /* #line 5288 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (inverse_conditions_p (captures[0], captures[2]) && element_precision (type) == element_precision (op_type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5290, __FILE__, __LINE__); res_op->set_op (VIEW_CONVERT_EXPR, type, 1); { tree ops1[4], res; ops1[0] = captures[2]; ops1[1] = captures[3]; ops1[2] = captures[4]; { tree ops2[1], res; ops2[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[3] = res; } gimple_match_op tem_op (res_op->cond.any_else (), cond_op, TREE_TYPE (ops1[1]), ops1[0], ops1[1], ops1[2], ops1[3]); gimple_resimplify4 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_210 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 381 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type) && ! HONOR_NANS (type) && ! HONOR_INFINITIES (type)) { /* #line 385 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, float_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 386, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNF, type, 2); res_op->ops[0] = build_one_cst (type); { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 387 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 388, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGN, type, 2); res_op->ops[0] = build_one_cst (type); { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 389 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, long_double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 390, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNL, type, 2); res_op->ops[0] = build_one_cst (type); { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } return false; } static bool gimple_simplify_211 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (bitop), const enum tree_code ARG_UNUSED (rbitop)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1289, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_212 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (bitop)) { /* #line 1305 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!CONSTANT_CLASS_P (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1308, __FILE__, __LINE__); res_op->set_op (bitop, type, 2); res_op->ops[0] = captures[0]; { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), bitop, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { { /* #line 1317 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree cst1 = const_binop (bitop, type, captures[0], captures[2]); /* #line 1318 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cst1) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1319, __FILE__, __LINE__); res_op->set_op (bitop, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = cst1; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { { /* #line 1320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree cst2 = const_binop (bitop, type, captures[1], captures[2]); /* #line 1321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cst2) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1322, __FILE__, __LINE__); res_op->set_op (bitop, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = cst2; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } return false; } static bool gimple_simplify_213 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3741, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_214 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1098 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1099, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; { tree ops2[1], res; ops2[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_215 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (coshs), const combined_fn ARG_UNUSED (atanhs), const combined_fn ARG_UNUSED (sqrts)) { /* #line 4491 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!flag_errno_math) { { /* #line 4507 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree t_one = build_one_cst (type); gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4508, __FILE__, __LINE__); res_op->set_op (RDIV_EXPR, type, 2); res_op->ops[0] = t_one; { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = t_one; ops3[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), MINUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } { tree ops3[2], res; ops3[0] = t_one; ops3[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), sqrts, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_216 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (sins), const combined_fn ARG_UNUSED (atans), const combined_fn ARG_UNUSED (sqrts), const combined_fn ARG_UNUSED (copysigns)) { { /* #line 4459 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ REAL_VALUE_TYPE r_cst; build_sinatan_real (&r_cst, type); tree t_cst = build_real (type, r_cst); tree t_one = build_one_cst (type); /* #line 4466 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4467, __FILE__, __LINE__); res_op->set_op (COND_EXPR, type, 3); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = t_cst; gimple_match_op tem_op (res_op->cond.any_else (), LT_EXPR, boolean_type_node, ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } { tree ops1[2], res; ops1[0] = captures[1]; { tree ops2[1], res; { tree ops3[2], res; { tree ops4[2], res; ops4[0] = captures[1]; ops4[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops4[0]), ops4[0], ops4[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops3[0] = res; } ops3[1] = t_one; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), sqrts, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } { tree ops1[2], res; ops1[0] = t_one; ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), copysigns, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[2] = res; } gimple_resimplify3 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_217 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1891, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } return false; } static bool gimple_simplify_218 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (COPYSIGN_ALL)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4539, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_219 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1369 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (element_precision (type) <= element_precision (TREE_TYPE (captures[0])) || !TYPE_UNSIGNED (TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1371, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_each_one_cst (TREE_TYPE (captures[0])); gimple_match_op tem_op (res_op->cond.any_else (), MINUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_220 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1914, __FILE__, __LINE__); res_op->set_op (PLUS_EXPR, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_221 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3671, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_222 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (test1), const enum tree_code ARG_UNUSED (test2)) { /* #line 3679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) || VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3681, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (true, type); res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_223 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (POW)) { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4629, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[2], res; ops1[0] = captures[2]; { tree ops2[1], res; ops2[0] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), POW, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_224 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (sinhs), const combined_fn ARG_UNUSED (atanhs), const combined_fn ARG_UNUSED (sqrts)) { /* #line 4491 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!flag_errno_math) { { /* #line 4498 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree t_one = build_one_cst (type); gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4499, __FILE__, __LINE__); res_op->set_op (RDIV_EXPR, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = t_one; ops3[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), MINUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } { tree ops3[2], res; ops3[0] = t_one; ops3[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), sqrts, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_225 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ poly_int64 off0, off1; tree base0 = get_addr_base_and_unit_offset (TREE_OPERAND (captures[1], 0), &off0); tree base1 = get_addr_base_and_unit_offset (TREE_OPERAND (captures[2], 0), &off1); if (base0 && TREE_CODE (base0) == MEM_REF) { off0 += mem_ref_offset (base0).force_shwi (); base0 = TREE_OPERAND (base0, 0); } if (base1 && TREE_CODE (base1) == MEM_REF) { off1 += mem_ref_offset (base1).force_shwi (); base1 = TREE_OPERAND (base1, 0); }/* #line 3934 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (base0 && base1) { { /* #line 3935 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ int equal = 2; if (0 && ((VAR_P (base0) && DECL_HAS_VALUE_EXPR_P (base0)) || (VAR_P (base1) && DECL_HAS_VALUE_EXPR_P (base1)))) ; else if (decl_in_symtab_p (base0) && decl_in_symtab_p (base1)) equal = symtab_node::get_create (base0) ->equal_address_to (symtab_node::get_create (base1)); else if ((DECL_P (base0) || TREE_CODE (base0) == SSA_NAME || TREE_CODE (base0) == STRING_CST) && (DECL_P (base1) || TREE_CODE (base1) == SSA_NAME || TREE_CODE (base1) == STRING_CST)) equal = (base0 == base1); if (equal == 0) { if (!DECL_P (base0) || !DECL_P (base1)) equal = 2; else if (cmp != EQ_EXPR && cmp != NE_EXPR) equal = 2; else if (!INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))) ; else if (is_global_var (base0) != is_global_var (base1)) ; else { tree sz0 = DECL_SIZE_UNIT (base0); tree sz1 = DECL_SIZE_UNIT (base1); if (!tree_fits_poly_int64_p (sz0) || !tree_fits_poly_int64_p (sz1)) equal = 2; else { poly_int64 size0 = tree_to_poly_int64 (sz0); poly_int64 size1 = tree_to_poly_int64 (sz1); if (maybe_eq (off0, 0) && maybe_eq (off1, size1)) equal = 2; else if (maybe_eq (off1, 0) && maybe_eq (off0, size0)) equal = 2; if (equal == 2 && known_eq (off0, off1) && (known_ne (off0, 0) || (known_ne (size0, 0) && known_ne (size1, 0)))) equal = 0; } } }/* #line 4003 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (equal == 1 && (cmp == EQ_EXPR || cmp == NE_EXPR || known_eq (off0, off1) || TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])) || (POINTER_TYPE_P (TREE_TYPE (captures[0])) && (DECL_P (base0) || TREE_CODE (base0) == STRING_CST)))) { /* #line 4012 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == EQ_EXPR && (known_eq (off0, off1) || known_ne (off0, off1))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4013, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (known_eq (off0, off1), type); res_op->set_value (tem); return true; } else { /* #line 4014 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == NE_EXPR && (known_eq (off0, off1) || known_ne (off0, off1))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4015, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (known_ne (off0, off1), type); res_op->set_value (tem); return true; } else { /* #line 4016 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR && (known_lt (off0, off1) || known_ge (off0, off1))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4017, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (known_lt (off0, off1), type); res_op->set_value (tem); return true; } else { /* #line 4018 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LE_EXPR && (known_le (off0, off1) || known_gt (off0, off1))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4019, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (known_le (off0, off1), type); res_op->set_value (tem); return true; } else { /* #line 4020 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GE_EXPR && (known_ge (off0, off1) || known_lt (off0, off1))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4021, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (known_ge (off0, off1), type); res_op->set_value (tem); return true; } else { /* #line 4022 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GT_EXPR && (known_gt (off0, off1) || known_le (off0, off1))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4023, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (known_gt (off0, off1), type); res_op->set_value (tem); return true; } } } } } } } else { /* #line 4024 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (equal == 0) { /* #line 4026 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == EQ_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4027, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (false, type); res_op->set_value (tem); return true; } else { /* #line 4028 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == NE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4029, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (true, type); res_op->set_value (tem); return true; } } } } } } } return false; } static bool gimple_simplify_226 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (bitop), const enum tree_code ARG_UNUSED (cmp)) { /* #line 748 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && INTEGRAL_TYPE_P (TREE_TYPE (captures[2])) && TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (TREE_TYPE (captures[2]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 751, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); { tree ops1[2], res; ops1[0] = captures[0]; { tree ops2[1], res; ops2[0] = captures[2]; if (TREE_TYPE (ops1[0]) != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (TREE_TYPE (ops1[0]), TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (ops1[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), BIT_IOR_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_227 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 928, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = build_all_ones_cst (TREE_TYPE (captures[0])); gimple_resimplify1 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_228 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (logs), const combined_fn ARG_UNUSED (pows)) { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4378, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), logs, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_229 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ poly_int64 off0, off1; tree base0 = get_addr_base_and_unit_offset (TREE_OPERAND (captures[1], 0), &off0); tree base1 = get_addr_base_and_unit_offset (TREE_OPERAND (captures[2], 0), &off1); if (base0 && TREE_CODE (base0) == MEM_REF) { off0 += mem_ref_offset (base0).force_shwi (); base0 = TREE_OPERAND (base0, 0); } if (base1 && TREE_CODE (base1) == MEM_REF) { off1 += mem_ref_offset (base1).force_shwi (); base1 = TREE_OPERAND (base1, 0); }/* #line 3934 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (base0 && base1) { { /* #line 3935 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ int equal = 2; if (0 && ((VAR_P (base0) && DECL_HAS_VALUE_EXPR_P (base0)) || (VAR_P (base1) && DECL_HAS_VALUE_EXPR_P (base1)))) ; else if (decl_in_symtab_p (base0) && decl_in_symtab_p (base1)) equal = symtab_node::get_create (base0) ->equal_address_to (symtab_node::get_create (base1)); else if ((DECL_P (base0) || TREE_CODE (base0) == SSA_NAME || TREE_CODE (base0) == STRING_CST) && (DECL_P (base1) || TREE_CODE (base1) == SSA_NAME || TREE_CODE (base1) == STRING_CST)) equal = (base0 == base1); if (equal == 0) { if (!DECL_P (base0) || !DECL_P (base1)) equal = 2; else if (cmp != EQ_EXPR && cmp != NE_EXPR) equal = 2; else if (!INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))) ; else if (is_global_var (base0) != is_global_var (base1)) ; else { tree sz0 = DECL_SIZE_UNIT (base0); tree sz1 = DECL_SIZE_UNIT (base1); if (!tree_fits_poly_int64_p (sz0) || !tree_fits_poly_int64_p (sz1)) equal = 2; else { poly_int64 size0 = tree_to_poly_int64 (sz0); poly_int64 size1 = tree_to_poly_int64 (sz1); if (maybe_eq (off0, 0) && maybe_eq (off1, size1)) equal = 2; else if (maybe_eq (off1, 0) && maybe_eq (off0, size0)) equal = 2; if (equal == 2 && known_eq (off0, off1) && (known_ne (off0, 0) || (known_ne (size0, 0) && known_ne (size1, 0)))) equal = 0; } } }/* #line 4003 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (equal == 1 && (cmp == EQ_EXPR || cmp == NE_EXPR || known_eq (off0, off1) || TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])) || (POINTER_TYPE_P (TREE_TYPE (captures[0])) && (DECL_P (base0) || TREE_CODE (base0) == STRING_CST)))) { /* #line 4012 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == EQ_EXPR && (known_eq (off0, off1) || known_ne (off0, off1))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4013, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (known_eq (off0, off1), type); res_op->set_value (tem); return true; } else { /* #line 4014 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == NE_EXPR && (known_eq (off0, off1) || known_ne (off0, off1))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4015, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (known_ne (off0, off1), type); res_op->set_value (tem); return true; } else { /* #line 4016 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR && (known_lt (off0, off1) || known_ge (off0, off1))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4017, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (known_lt (off0, off1), type); res_op->set_value (tem); return true; } else { /* #line 4018 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LE_EXPR && (known_le (off0, off1) || known_gt (off0, off1))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4019, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (known_le (off0, off1), type); res_op->set_value (tem); return true; } else { /* #line 4020 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GE_EXPR && (known_ge (off0, off1) || known_lt (off0, off1))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4021, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (known_ge (off0, off1), type); res_op->set_value (tem); return true; } else { /* #line 4022 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GT_EXPR && (known_gt (off0, off1) || known_le (off0, off1))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4023, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (known_gt (off0, off1), type); res_op->set_value (tem); return true; } } } } } } } else { /* #line 4024 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (equal == 0) { /* #line 4026 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == EQ_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4027, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (false, type); res_op->set_value (tem); return true; } else { /* #line 4028 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == NE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4029, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (true, type); res_op->set_value (tem); return true; } } } } } } } return false; } static bool gimple_simplify_230 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (bitop)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 949, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_231 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 2198 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TREE_CODE (type) != COMPLEX_TYPE && (! ANY_INTEGRAL_TYPE_P (type) || TYPE_OVERFLOW_UNDEFINED (type))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2201, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_232 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (froms), const combined_fn ARG_UNUSED (tos)) { /* #line 4738 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (optimize && canonicalize_math_p () && targetm.libc_has_function (function_c99_misc)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4742, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), tos, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_233 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 963, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } { tree ops1[1], res; ops1[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_234 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (bitop)) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 970, __FILE__, __LINE__); res_op->set_op (bitop, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; ops1[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_235 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (fns)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4524, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_236 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1354, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (true, type); res_op->set_value (tem); return true; return false; } static bool gimple_simplify_237 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op), const enum tree_code ARG_UNUSED (rop)) { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[1])) && tree_nop_conversion_p (type, TREE_TYPE (captures[2]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1133, __FILE__, __LINE__); res_op->set_op (rop, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[1]; if (type != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[2]; if (type != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), op, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_238 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (mod)) { /* #line 495 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!integer_zerop (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 496, __FILE__, __LINE__); tree tem; tem = build_zero_cst (type); res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_239 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (bit_op), const enum tree_code ARG_UNUSED (shift)) { /* #line 2533 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[2]))) { { /* #line 2534 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree mask = int_const_binop (shift, fold_convert (type, captures[3]), captures[4]); gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2535, __FILE__, __LINE__); res_op->set_op (bit_op, type, 2); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[2]; if (type != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), shift, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = mask; gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_240 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1894, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_241 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]) || !single_use (captures[4]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 985, __FILE__, __LINE__); res_op->set_op (BIT_NOT_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_242 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 990, __FILE__, __LINE__); res_op->set_op (BIT_IOR_EXPR, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_243 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1386 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (element_precision (type) <= element_precision (TREE_TYPE (captures[0])) || !TYPE_UNSIGNED (TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1388, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_244 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (TAN), const combined_fn ARG_UNUSED (SIN), const combined_fn ARG_UNUSED (COS)) { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { /* #line 4601 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (! HONOR_NANS (captures[1]) && ! HONOR_INFINITIES (captures[1])) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4603, __FILE__, __LINE__); res_op->set_op (RDIV_EXPR, type, 2); res_op->ops[0] = build_one_cst (type); { tree ops1[1], res; ops1[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), COS, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_245 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]) || !single_use (captures[4]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 995, __FILE__, __LINE__); res_op->set_op (BIT_NOT_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_246 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { /* #line 1625 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (TREE_TYPE (captures[1]), TREE_TYPE (captures[2])) && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[2])) && (CONSTANT_CLASS_P (captures[3]) || (single_use (captures[1]) && single_use (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1628, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[3]; res_op->ops[1] = build_zero_cst (TREE_TYPE (captures[3])); gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_247 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (bit_op), const enum tree_code ARG_UNUSED (shift)) { /* #line 2533 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[2]))) { { /* #line 2534 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree mask = int_const_binop (shift, fold_convert (type, captures[3]), captures[4]); gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2535, __FILE__, __LINE__); res_op->set_op (bit_op, type, 2); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[2]; if (type != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), shift, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = mask; gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_248 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (uncond_op), const combined_fn ARG_UNUSED (cond_op)) { { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree op_type = TREE_TYPE (captures[1]); /* #line 5249 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (vectorized_internal_fn_supported_p (as_internal_fn (cond_op), op_type) && element_precision (type) == element_precision (op_type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5251, __FILE__, __LINE__); res_op->set_op (VIEW_CONVERT_EXPR, type, 1); { tree ops1[4], res; ops1[0] = captures[0]; if (COMPARISON_CLASS_P (ops1[0])) { if (!seq) return false; ops1[0] = gimple_build (seq, TREE_CODE (ops1[0]), TREE_TYPE (ops1[0]), TREE_OPERAND (ops1[0], 0), TREE_OPERAND (ops1[0], 1)); } ops1[1] = captures[2]; ops1[2] = captures[3]; { tree ops2[1], res; ops2[0] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[3] = res; } gimple_match_op tem_op (res_op->cond.any_else (), cond_op, TREE_TYPE (ops1[1]), ops1[0], ops1[1], ops1[2], ops1[3]); gimple_resimplify4 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_249 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 733, __FILE__, __LINE__); tree tem; tem = build_zero_cst (type); res_op->set_value (tem); return true; return false; } static bool gimple_simplify_250 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (bitop), const enum tree_code ARG_UNUSED (rbitop)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1003, __FILE__, __LINE__); res_op->set_op (bitop, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_251 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1013, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_252 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (uncond_op), const combined_fn ARG_UNUSED (cond_op)) { { /* #line 5264 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree op_type = TREE_TYPE (captures[1]); /* #line 5265 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (vectorized_internal_fn_supported_p (as_internal_fn (cond_op), op_type) && element_precision (type) == element_precision (op_type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5267, __FILE__, __LINE__); res_op->set_op (VIEW_CONVERT_EXPR, type, 1); { tree ops1[5], res; ops1[0] = captures[0]; if (COMPARISON_CLASS_P (ops1[0])) { if (!seq) return false; ops1[0] = gimple_build (seq, TREE_CODE (ops1[0]), TREE_TYPE (ops1[0]), TREE_OPERAND (ops1[0], 0), TREE_OPERAND (ops1[0], 1)); } ops1[1] = captures[2]; ops1[2] = captures[3]; ops1[3] = captures[4]; { tree ops2[1], res; ops2[0] = captures[5]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[4] = res; } gimple_match_op tem_op (res_op->cond.any_else (), cond_op, TREE_TYPE (ops1[1]), ops1[0], ops1[1], ops1[2], ops1[3], ops1[4]); gimple_resimplify5 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_253 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1021, __FILE__, __LINE__); res_op->set_op (BIT_IOR_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_254 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1026, __FILE__, __LINE__); res_op->set_op (PLUS_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_255 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (icmp)) { /* #line 1466 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_PRECISION (TREE_TYPE (captures[0])) > 1 && (wi::to_wide (captures[2]) == wi::max_value (TYPE_PRECISION (TREE_TYPE (captures[0])), SIGNED) - 1)) { { /* #line 1471 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree stype = signed_type_for (TREE_TYPE (captures[0])); gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1472, __FILE__, __LINE__); res_op->set_op (icmp, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; if (stype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (stype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, stype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = build_int_cst (stype, 0); gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_256 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3239, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (true, type); res_op->set_value (tem); return true; return false; } static bool gimple_simplify_257 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { /* #line 1909 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (type) && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1911, __FILE__, __LINE__); res_op->set_op (POINTER_DIFF_EXPR, type, 2); res_op->ops[0] = captures[2]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_258 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2183, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_259 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (cond_op)) { { /* #line 5296 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree op_type = TREE_TYPE (captures[4]); /* #line 5297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (element_precision (type) == element_precision (op_type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5298, __FILE__, __LINE__); res_op->set_op (VIEW_CONVERT_EXPR, type, 1); { tree ops1[5], res; ops1[0] = captures[0]; if (COMPARISON_CLASS_P (ops1[0])) { if (!seq) return false; ops1[0] = gimple_build (seq, TREE_CODE (ops1[0]), TREE_TYPE (ops1[0]), TREE_OPERAND (ops1[0], 0), TREE_OPERAND (ops1[0], 1)); } ops1[1] = captures[1]; ops1[2] = captures[2]; ops1[3] = captures[3]; { tree ops2[1], res; ops2[0] = captures[5]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, op_type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[4] = res; } gimple_match_op tem_op (res_op->cond.any_else (), cond_op, TREE_TYPE (ops1[1]), ops1[0], ops1[1], ops1[2], ops1[3], ops1[4]); gimple_resimplify5 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_260 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1055, __FILE__, __LINE__); res_op->set_op (BIT_XOR_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_261 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (froms), const combined_fn ARG_UNUSED (tos)) { /* #line 4716 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (optimize && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4719, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), tos, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_262 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1060, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_263 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1065, __FILE__, __LINE__); res_op->set_op (BIT_NOT_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_264 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 4063 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((INTEGRAL_TYPE_P (TREE_TYPE (captures[2])) || POINTER_TYPE_P (TREE_TYPE (captures[2])) || VECTOR_INTEGER_TYPE_P (TREE_TYPE (captures[2]))) && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))) { { /* #line 4067 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree cst = uniform_integer_cst_p (captures[2]); tree arg1_type = TREE_TYPE (cst); unsigned int prec = TYPE_PRECISION (arg1_type); wide_int max = wi::max_value (arg1_type); wide_int signed_max = wi::max_value (prec, SIGNED); wide_int min = wi::min_value (arg1_type); /* #line 4077 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::to_wide (cst) == max) { /* #line 4079 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GT_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4080, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (false, type); res_op->set_value (tem); return true; } else { /* #line 4081 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4082, __FILE__, __LINE__); res_op->set_op (EQ_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 4083 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4084, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (true, type); res_op->set_value (tem); return true; } else { /* #line 4085 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4086, __FILE__, __LINE__); res_op->set_op (NE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } else { /* #line 4087 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::to_wide (cst) == min) { /* #line 4089 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4090, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (false, type); res_op->set_value (tem); return true; } else { /* #line 4091 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4092, __FILE__, __LINE__); res_op->set_op (EQ_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 4093 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4094, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (true, type); res_op->set_value (tem); return true; } else { /* #line 4095 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GT_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4096, __FILE__, __LINE__); res_op->set_op (NE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } else { /* #line 4097 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::to_wide (cst) == max - 1) { /* #line 4099 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GT_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4100, __FILE__, __LINE__); res_op->set_op (EQ_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_uniform_cst (TREE_TYPE (captures[2]), wide_int_to_tree (TREE_TYPE (cst), wi::to_wide (cst) + 1)); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 4104 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4105, __FILE__, __LINE__); res_op->set_op (NE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_uniform_cst (TREE_TYPE (captures[2]), wide_int_to_tree (TREE_TYPE (cst), wi::to_wide (cst) + 1)); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } else { /* #line 4109 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::to_wide (cst) == min + 1) { /* #line 4111 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4112, __FILE__, __LINE__); res_op->set_op (NE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_uniform_cst (TREE_TYPE (captures[2]), wide_int_to_tree (TREE_TYPE (cst), wi::to_wide (cst) - 1)); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 4116 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4117, __FILE__, __LINE__); res_op->set_op (EQ_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_uniform_cst (TREE_TYPE (captures[2]), wide_int_to_tree (TREE_TYPE (cst), wi::to_wide (cst) - 1)); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } else { /* #line 4121 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::to_wide (cst) == signed_max && TYPE_UNSIGNED (arg1_type) && prec == GET_MODE_PRECISION (SCALAR_INT_TYPE_MODE (arg1_type)) && INTEGRAL_TYPE_P (arg1_type)) { /* #line 4132 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LE_EXPR || cmp == GT_EXPR) { { /* #line 4133 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree st = signed_type_for (TREE_TYPE (captures[2])); /* #line 4135 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cst == captures[2] && cmp == LE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4136, __FILE__, __LINE__); res_op->set_op (GE_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[1]; if (st != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (st, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, st, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = build_zero_cst (st); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 4137 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cst == captures[2] && cmp == GT_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4138, __FILE__, __LINE__); res_op->set_op (LT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[1]; if (st != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (st, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, st, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = build_zero_cst (st); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 4139 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4140, __FILE__, __LINE__); res_op->set_op (GE_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, st, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = build_zero_cst (st); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 4141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GT_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4142, __FILE__, __LINE__); res_op->set_op (LT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, st, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = build_zero_cst (st); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } } } } } return false; } static bool gimple_simplify_265 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op), const enum tree_code ARG_UNUSED (rop), const enum tree_code ARG_UNUSED (cmp)) { /* #line 4971 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TREE_OVERFLOW (captures[2]) && !TREE_OVERFLOW (captures[3]) && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[1])) && !TYPE_OVERFLOW_TRAPS (TREE_TYPE (captures[1])) && !TYPE_SATURATING (TREE_TYPE (captures[1]))) { { /* #line 4975 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree res = int_const_binop (rop, captures[3], captures[2]); /* #line 4976 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TREE_OVERFLOW (res) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4978, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (cmp == NE_EXPR, type); res_op->set_value (tem); return true; } else { /* #line 4979 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (single_use (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4980, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = TREE_OVERFLOW (res) ? drop_tree_overflow (res) : res; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } return false; } static bool gimple_simplify_266 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (div)) { /* #line 447 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (integer_pow2p (captures[2]) && tree_int_cst_sgn (captures[2]) > 0 && tree_nop_conversion_p (type, TREE_TYPE (captures[0])) && wi::to_wide (captures[2]) + wi::to_wide (captures[1]) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 451, __FILE__, __LINE__); res_op->set_op (RSHIFT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = build_int_cst (integer_type_node, wi::exact_log2 (wi::to_wide (captures[2]))); gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_267 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1070, __FILE__, __LINE__); res_op->set_op (BIT_XOR_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_268 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op), const enum tree_code ARG_UNUSED (rop), const enum tree_code ARG_UNUSED (cmp)) { /* #line 4987 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TREE_OVERFLOW (captures[2]) && !TREE_OVERFLOW (captures[3]) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1]))) { { /* #line 4989 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree res = int_const_binop (rop, captures[3], captures[2]); /* #line 4990 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TREE_OVERFLOW (res)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4991, __FILE__, __LINE__); tree tem; fold_overflow_warning (("assuming signed overflow does not occur " "when simplifying conditional to constant"), WARN_STRICT_OVERFLOW_CONDITIONAL); bool less = cmp == LE_EXPR || cmp == LT_EXPR; bool ovf_high = wi::lt_p (wi::to_wide (captures[2]), 0, TYPE_SIGN (TREE_TYPE (captures[2]))) != (op == MINUS_EXPR); tem = constant_boolean_node (less == ovf_high, type); res_op->set_value (tem); return true; } else { /* #line 5002 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (single_use (captures[0])) { { /* #line 5003 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ fold_overflow_warning (("assuming signed overflow does not occur " "when changing X +- C1 cmp C2 to " "X cmp C2 -+ C1"), WARN_STRICT_OVERFLOW_COMPARISON); gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5010, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = res; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } return false; } static bool gimple_simplify_269 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (shift)) { /* #line 2446 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1])) && TYPE_PRECISION (type) <= HOST_BITS_PER_WIDE_INT && tree_fits_uhwi_p (captures[4]) && tree_to_uhwi (captures[4]) > 0 && tree_to_uhwi (captures[4]) < TYPE_PRECISION (type)) { { /* #line 2451 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ unsigned int shiftc = tree_to_uhwi (captures[4]); unsigned HOST_WIDE_INT mask = TREE_INT_CST_LOW (captures[5]); unsigned HOST_WIDE_INT newmask, zerobits = 0; tree shift_type = TREE_TYPE (captures[2]); unsigned int prec; if (shift == LSHIFT_EXPR) zerobits = ((HOST_WIDE_INT_1U << shiftc) - 1); else if (shift == RSHIFT_EXPR && type_has_mode_precision_p (shift_type)) { prec = TYPE_PRECISION (TREE_TYPE (captures[2])); tree arg00 = captures[3]; if (captures[2] != captures[3] && TYPE_UNSIGNED (TREE_TYPE (captures[3]))) { tree inner_type = TREE_TYPE (captures[3]); if (type_has_mode_precision_p (inner_type) && TYPE_PRECISION (inner_type) < prec) { prec = TYPE_PRECISION (inner_type); if (shiftc < prec) shift_type = inner_type; } } zerobits = HOST_WIDE_INT_M1U; if (shiftc < prec) { zerobits >>= HOST_BITS_PER_WIDE_INT - shiftc; zerobits <<= prec - shiftc; } if (!TYPE_UNSIGNED (TREE_TYPE (captures[2])) && prec == TYPE_PRECISION (TREE_TYPE (captures[2]))) { if ((mask & zerobits) == 0) shift_type = unsigned_type_for (TREE_TYPE (captures[2])); else zerobits = 0; } }/* #line 2505 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((mask & zerobits) == mask) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2506, __FILE__, __LINE__); tree tem; tem = build_int_cst (type, 0); res_op->set_value (tem); return true; } else { { /* #line 2507 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ newmask = mask | zerobits; /* #line 2508 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (newmask != mask && (newmask & (newmask + 1)) == 0) { { /* #line 2509 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ for (prec = BITS_PER_UNIT; prec < HOST_BITS_PER_WIDE_INT; prec <<= 1) if (newmask == (HOST_WIDE_INT_1U << prec) - 1) break; /* #line 2518 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (prec < HOST_BITS_PER_WIDE_INT || newmask == HOST_WIDE_INT_M1U) { { /* #line 2520 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree newmaskt = build_int_cst_type (TREE_TYPE (captures[5]), newmask); /* #line 2522 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!tree_int_cst_equal (newmaskt, captures[5])) { /* #line 2523 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (shift_type != TREE_TYPE (captures[2])) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2524, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[2]; if (shift_type != TREE_TYPE (ops3[0]) && !useless_type_conversion_p (shift_type, TREE_TYPE (ops3[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, shift_type, ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops3[0]; ops2[0] = res; } ops2[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), shift, shift_type, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = newmaskt; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2525, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = newmaskt; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } } return false; } static bool gimple_simplify_270 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1403 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[2]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1404, __FILE__, __LINE__); res_op->set_op (BIT_NOT_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_271 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { /* #line 2039 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (type) && TYPE_OVERFLOW_UNDEFINED (type) && element_precision (type) <= element_precision (TREE_TYPE (captures[1]))) { { /* #line 2042 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree utype = unsigned_type_for (type); gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2043, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[1]; if (utype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } else { /* #line 2044 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (element_precision (type) <= element_precision (TREE_TYPE (captures[1])) || (INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2054, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[1]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } return false; } static bool gimple_simplify_272 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3834, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_273 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_after_vectorization_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5185, __FILE__, __LINE__); res_op->set_op (CFN_FMS, type, 3); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; res_op->ops[2] = captures[2]; gimple_resimplify3 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_274 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3840, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = build_zero_cst (TREE_TYPE (captures[1])); gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_275 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (div)) { /* #line 304 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!integer_zerop (captures[0]) && !ALL_FRACT_MODE_P (TYPE_MODE (type))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 305, __FILE__, __LINE__); tree tem; tem = build_one_cst (type); res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_276 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_after_vectorization_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5165, __FILE__, __LINE__); res_op->set_op (CFN_FNMS, type, 3); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; res_op->ops[2] = captures[2]; gimple_resimplify3 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_277 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (SIN), const combined_fn ARG_UNUSED (TAN), const combined_fn ARG_UNUSED (COS)) { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { /* #line 4594 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (! HONOR_NANS (captures[1]) && ! HONOR_INFINITIES (captures[1])) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4596, __FILE__, __LINE__); res_op->set_op (COS, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_278 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (icmp)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3859, __FILE__, __LINE__); res_op->set_op (icmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_zero_cst (TREE_TYPE (captures[1])); gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_279 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (fmas)) { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_after_vectorization_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5151, __FILE__, __LINE__); res_op->set_op (CFN_FNMA, type, 3); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; res_op->ops[2] = captures[2]; gimple_resimplify3 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_280 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1885, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; } } return false; } static bool gimple_simplify_281 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (COPYSIGN_ALL)) { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_NANS (type) && !HONOR_SIGNED_ZEROS (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 258, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_282 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (pows), const combined_fn ARG_UNUSED (exps), const combined_fn ARG_UNUSED (logs), const combined_fn ARG_UNUSED (exp2s), const combined_fn ARG_UNUSED (log2s)) { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4391 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[0]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[0])) && canonicalize_math_after_vectorization_p ()) { { /* #line 4400 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ const REAL_VALUE_TYPE *const value = TREE_REAL_CST_PTR (captures[0]); bool use_exp2 = false; if (targetm.libc_has_function (function_c99_misc) && value->cl == rvc_normal) { REAL_VALUE_TYPE frac_rvt = *value; SET_REAL_EXP (&frac_rvt, 1); if (real_equal (&frac_rvt, &dconst1)) use_exp2 = true; }/* #line 4412 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!use_exp2) { /* #line 4413 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (optimize_pow_to_exp (captures[0], captures[1])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4414, __FILE__, __LINE__); res_op->set_op (exps, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), logs, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4415, __FILE__, __LINE__); res_op->set_op (exp2s, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), log2s, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } return false; } static bool gimple_simplify_283 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (icmp), const enum tree_code ARG_UNUSED (ncmp)) { { /* #line 3181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ enum tree_code ic = invert_tree_comparison (cmp, HONOR_NANS (captures[0])); /* #line 3183 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ic == icmp) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3184, __FILE__, __LINE__); res_op->set_op (icmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 3185 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ic == ncmp) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3186, __FILE__, __LINE__); res_op->set_op (ncmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_284 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (coss), const combined_fn ARG_UNUSED (atans), const combined_fn ARG_UNUSED (sqrts), const combined_fn ARG_UNUSED (copysigns)) { { /* #line 4478 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ REAL_VALUE_TYPE r_cst; build_sinatan_real (&r_cst, type); tree t_cst = build_real (type, r_cst); tree t_one = build_one_cst (type); tree t_zero = build_zero_cst (type); /* #line 4486 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4487, __FILE__, __LINE__); res_op->set_op (COND_EXPR, type, 3); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = t_cst; gimple_match_op tem_op (res_op->cond.any_else (), LT_EXPR, boolean_type_node, ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } { tree ops1[2], res; ops1[0] = t_one; { tree ops2[1], res; { tree ops3[2], res; { tree ops4[2], res; ops4[0] = captures[1]; ops4[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops4[0]), ops4[0], ops4[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops3[0] = res; } ops3[1] = t_one; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), sqrts, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } { tree ops1[2], res; ops1[0] = t_zero; ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), copysigns, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[2] = res; } gimple_resimplify3 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_285 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (froms), const combined_fn ARG_UNUSED (tos)) { /* #line 4747 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (optimize && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4750, __FILE__, __LINE__); res_op->set_op (tos, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_286 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 4048 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (((POINTER_TYPE_P (TREE_TYPE (captures[0])) && !FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[0]))) && INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))) || (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && POINTER_TYPE_P (TREE_TYPE (captures[1])) && !FUNC_OR_METHOD_TYPE_P (TREE_TYPE (TREE_TYPE (captures[1]))))) && TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (TREE_TYPE (captures[1]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4055, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; ops1[0] = captures[1]; if (TREE_TYPE (res_op->ops[0]) != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (TREE_TYPE (res_op->ops[0]), TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (res_op->ops[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_287 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (opo), const enum tree_code ARG_UNUSED (opi)) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1119, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_288 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (shift)) { /* #line 2446 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1])) && TYPE_PRECISION (type) <= HOST_BITS_PER_WIDE_INT && tree_fits_uhwi_p (captures[4]) && tree_to_uhwi (captures[4]) > 0 && tree_to_uhwi (captures[4]) < TYPE_PRECISION (type)) { { /* #line 2451 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ unsigned int shiftc = tree_to_uhwi (captures[4]); unsigned HOST_WIDE_INT mask = TREE_INT_CST_LOW (captures[5]); unsigned HOST_WIDE_INT newmask, zerobits = 0; tree shift_type = TREE_TYPE (captures[2]); unsigned int prec; if (shift == LSHIFT_EXPR) zerobits = ((HOST_WIDE_INT_1U << shiftc) - 1); else if (shift == RSHIFT_EXPR && type_has_mode_precision_p (shift_type)) { prec = TYPE_PRECISION (TREE_TYPE (captures[2])); tree arg00 = captures[3]; if (captures[2] != captures[3] && TYPE_UNSIGNED (TREE_TYPE (captures[3]))) { tree inner_type = TREE_TYPE (captures[3]); if (type_has_mode_precision_p (inner_type) && TYPE_PRECISION (inner_type) < prec) { prec = TYPE_PRECISION (inner_type); if (shiftc < prec) shift_type = inner_type; } } zerobits = HOST_WIDE_INT_M1U; if (shiftc < prec) { zerobits >>= HOST_BITS_PER_WIDE_INT - shiftc; zerobits <<= prec - shiftc; } if (!TYPE_UNSIGNED (TREE_TYPE (captures[2])) && prec == TYPE_PRECISION (TREE_TYPE (captures[2]))) { if ((mask & zerobits) == 0) shift_type = unsigned_type_for (TREE_TYPE (captures[2])); else zerobits = 0; } }/* #line 2505 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((mask & zerobits) == mask) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2506, __FILE__, __LINE__); tree tem; tem = build_int_cst (type, 0); res_op->set_value (tem); return true; } else { { /* #line 2507 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ newmask = mask | zerobits; /* #line 2508 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (newmask != mask && (newmask & (newmask + 1)) == 0) { { /* #line 2509 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ for (prec = BITS_PER_UNIT; prec < HOST_BITS_PER_WIDE_INT; prec <<= 1) if (newmask == (HOST_WIDE_INT_1U << prec) - 1) break; /* #line 2518 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (prec < HOST_BITS_PER_WIDE_INT || newmask == HOST_WIDE_INT_M1U) { { /* #line 2520 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree newmaskt = build_int_cst_type (TREE_TYPE (captures[5]), newmask); /* #line 2522 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!tree_int_cst_equal (newmaskt, captures[5])) { /* #line 2523 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (shift_type != TREE_TYPE (captures[2])) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2524, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[2]; if (shift_type != TREE_TYPE (ops3[0]) && !useless_type_conversion_p (shift_type, TREE_TYPE (ops3[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, shift_type, ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops3[0]; ops2[0] = res; } ops2[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), shift, shift_type, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = newmaskt; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2525, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = newmaskt; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } } return false; } static bool gimple_simplify_289 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1802 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (POINTER_TYPE_P (TREE_TYPE (captures[0])) && tree_nop_conversion_p (type, TREE_TYPE (captures[0]))) { { /* #line 1804 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ unsigned int align; unsigned HOST_WIDE_INT bitpos; get_pointer_alignment_1 (captures[0], &align, &bitpos); /* #line 1810 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::ltu_p (wi::to_wide (captures[1]), align / BITS_PER_UNIT)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1811, __FILE__, __LINE__); tree tem; tem = wide_int_to_tree (type, (wi::to_wide (captures[1]) & (bitpos / BITS_PER_UNIT))); res_op->set_value (tem); return true; } } } return false; } static bool gimple_simplify_290 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (copysigns)) { /* #line 671 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (REAL_VALUE_NEGATIVE (TREE_REAL_CST (captures[1]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 672, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 673, __FILE__, __LINE__); res_op->set_op (ABS_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_291 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (popcount)) { /* #line 5211 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nonzero_bits (captures[0]) == 1) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5212, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_292 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { /* #line 1595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[1]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1596, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[3]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_293 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 703 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (! FLOAT_TYPE_P (type) && tree_nop_conversion_p (type, TREE_TYPE (captures[1]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 705, __FILE__, __LINE__); res_op->set_op (LSHIFT_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_294 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (div)) { /* #line 297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_UNSIGNED (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 298, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_295 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { /* #line 2742 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[2])) && tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[2]))) { { /* #line 2744 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ wi::overflow_type overflow; wide_int mul = wi::mul (wi::to_wide (captures[1]), wi::to_wide (captures[2]), TYPE_SIGN (type), &overflow); /* #line 2750 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, TREE_TYPE (captures[2])) && types_match (TREE_TYPE (captures[0]), TREE_TYPE (captures[2])) && !overflow) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2752, __FILE__, __LINE__); res_op->set_op (op, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = wide_int_to_tree (type, mul); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { { /* #line 2753 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree utype = unsigned_type_for (type); gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2754, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[0]; if (utype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; if (utype != TREE_TYPE (ops3[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops3[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops3[0]; ops2[0] = res; } { tree ops3[1], res; ops3[0] = captures[2]; if (utype != TREE_TYPE (ops3[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops3[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops3[0]; ops2[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), op, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } return false; } static bool gimple_simplify_296 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (mod)) { /* #line 480 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!integer_zerop (captures[1])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 481, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_297 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (COPYSIGN_ALL)) { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_NANS (type) && !HONOR_SIGNED_ZEROS (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 258, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_298 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1145, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; return false; } static bool gimple_simplify_299 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (FMAX_ALL)) { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_finite_math_only) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2273, __FILE__, __LINE__); res_op->set_op (MAX_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_300 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TREE_INT_CST_LOW (captures[1]) & 1) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1660, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (cmp == NE_EXPR, type); res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_301 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1141, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_302 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (shiftrotate)) { { /* #line 2367 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree tem = uniform_vector_p (captures[1]); /* #line 2368 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tem) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2369, __FILE__, __LINE__); res_op->set_op (shiftrotate, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = tem; gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_303 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { /* #line 783 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (~wi::to_wide (captures[1]) == wi::to_wide (captures[2])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 784, __FILE__, __LINE__); res_op->set_op (BIT_XOR_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_304 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (out)) { /* #line 4208 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_UNSIGNED (TREE_TYPE (captures[1])) && types_match (TREE_TYPE (captures[1]), TREE_TYPE (captures[2]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4210, __FILE__, __LINE__); res_op->set_op (out, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops1[0])), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = build_zero_cst (TREE_TYPE (captures[1])); gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_305 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 815, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_306 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 146 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (fold_real_zero_addition_p (type, captures[1], 0)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 147, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_307 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (sq), const enum tree_code ARG_UNUSED (cmp)) { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && ! flag_errno_math) { /* #line 3388 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (REAL_VALUE_NEGATIVE (TREE_REAL_CST (captures[1]))) { /* #line 3391 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == EQ_EXPR || cmp == LT_EXPR || cmp == LE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3392, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (false, type); res_op->set_value (tem); return true; } else { /* #line 3395 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == NE_EXPR || !HONOR_NANS (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3396, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (true, type); res_op->set_value (tem); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3398, __FILE__, __LINE__); res_op->set_op (GE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (TREE_TYPE (captures[0]), dconst0); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } else { /* #line 3399 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_equal (TREE_REAL_CST_PTR (captures[1]), &dconst0)) { /* #line 3402 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3403, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (false, type); res_op->set_value (tem); return true; } else { /* #line 3405 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GE_EXPR && !HONOR_NANS (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3406, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (true, type); res_op->set_value (tem); return true; } else { /* #line 3408 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3409, __FILE__, __LINE__); res_op->set_op (EQ_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3417, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } else { /* #line 3418 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((cmp == LT_EXPR || cmp == LE_EXPR || cmp == GT_EXPR || cmp == GE_EXPR) && !REAL_VALUE_ISNAN (TREE_REAL_CST (captures[1])) && !HONOR_SIGN_DEPENDENT_ROUNDING (TREE_TYPE (captures[0]))) { { /* #line 3425 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ REAL_VALUE_TYPE c2; enum tree_code ncmp = cmp; const real_format *fmt = REAL_MODE_FORMAT (TYPE_MODE (TREE_TYPE (captures[0]))); real_arithmetic (&c2, MULT_EXPR, &TREE_REAL_CST (captures[1]), &TREE_REAL_CST (captures[1])); real_convert (&c2, fmt, &c2); if (!REAL_VALUE_ISINF (c2)) { tree c3 = fold_const_call (CFN_SQRT, TREE_TYPE (captures[0]), build_real (TREE_TYPE (captures[0]), c2)); if (c3 == NULL_TREE || TREE_CODE (c3) != REAL_CST) ncmp = ERROR_MARK; else if ((cmp == LT_EXPR || cmp == GE_EXPR) && real_less (&TREE_REAL_CST (c3), &TREE_REAL_CST (captures[1]))) ncmp = cmp == LT_EXPR ? LE_EXPR : GT_EXPR; else if ((cmp == LE_EXPR || cmp == GT_EXPR) && real_less (&TREE_REAL_CST (captures[1]), &TREE_REAL_CST (c3))) ncmp = cmp == LE_EXPR ? LT_EXPR : GE_EXPR; else { REAL_VALUE_TYPE c2alt, tow; if (cmp == LT_EXPR || cmp == GE_EXPR) tow = dconst0; else real_inf (&tow); real_nextafter (&c2alt, fmt, &c2, &tow); real_convert (&c2alt, fmt, &c2alt); if (REAL_VALUE_ISINF (c2alt)) ncmp = ERROR_MARK; else { c3 = fold_const_call (CFN_SQRT, TREE_TYPE (captures[0]), build_real (TREE_TYPE (captures[0]), c2alt)); if (c3 == NULL_TREE || TREE_CODE (c3) != REAL_CST) ncmp = ERROR_MARK; else if (real_equal (&TREE_REAL_CST (c3), &TREE_REAL_CST (captures[1]))) c2 = c2alt; } } }/* #line 3475 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == GT_EXPR || cmp == GE_EXPR) { /* #line 3476 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (REAL_VALUE_ISINF (c2)) { /* #line 3478 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (HONOR_INFINITIES (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3479, __FILE__, __LINE__); res_op->set_op (EQ_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (TREE_TYPE (captures[0]), c2); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3480, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (false, type); res_op->set_value (tem); return true; } } else { /* #line 3482 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ncmp != ERROR_MARK) { /* #line 3483 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ncmp == GE_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3484, __FILE__, __LINE__); res_op->set_op (GE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (TREE_TYPE (captures[0]), c2); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3485, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (TREE_TYPE (captures[0]), c2); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } else { /* #line 3487 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (REAL_VALUE_ISINF (c2)) { /* #line 3491 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (! HONOR_NANS (captures[0]) && ! HONOR_INFINITIES (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3492, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (true, type); res_op->set_value (tem); return true; } else { /* #line 3495 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (! HONOR_NANS (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3496, __FILE__, __LINE__); res_op->set_op (NE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (TREE_TYPE (captures[0]), c2); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 3499 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (! HONOR_INFINITIES (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3500, __FILE__, __LINE__); res_op->set_op (GE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (TREE_TYPE (captures[0]), dconst0); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 3502 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3503, __FILE__, __LINE__); res_op->set_op (TRUTH_ANDIF_EXPR, type, 2); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (TREE_TYPE (captures[0]), dconst0); gimple_match_op tem_op (res_op->cond.any_else (), GE_EXPR, type, ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (TREE_TYPE (captures[0]), c2); gimple_match_op tem_op (res_op->cond.any_else (), NE_EXPR, type, ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } else { /* #line 3507 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ncmp != ERROR_MARK && ! HONOR_NANS (captures[0])) { /* #line 3508 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ncmp == LT_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3509, __FILE__, __LINE__); res_op->set_op (LT_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (TREE_TYPE (captures[0]), c2); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3510, __FILE__, __LINE__); res_op->set_op (LE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (TREE_TYPE (captures[0]), c2); gimple_resimplify2 (lseq, res_op, valueize); return true; } } else { /* #line 3512 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ncmp != ERROR_MARK &&0) { /* #line 3513 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ncmp == LT_EXPR) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3514, __FILE__, __LINE__); res_op->set_op (TRUTH_ANDIF_EXPR, type, 2); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (TREE_TYPE (captures[0]), dconst0); gimple_match_op tem_op (res_op->cond.any_else (), GE_EXPR, type, ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (TREE_TYPE (captures[0]), c2); gimple_match_op tem_op (res_op->cond.any_else (), LT_EXPR, type, ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3517, __FILE__, __LINE__); res_op->set_op (TRUTH_ANDIF_EXPR, type, 2); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (TREE_TYPE (captures[0]), dconst0); gimple_match_op tem_op (res_op->cond.any_else (), GE_EXPR, type, ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (TREE_TYPE (captures[0]), c2); gimple_match_op tem_op (res_op->cond.any_else (), LE_EXPR, type, ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } } return false; } static bool gimple_simplify_308 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (tans), const combined_fn ARG_UNUSED (atans)) { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4450, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } return false; } static bool gimple_simplify_309 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (minmax), const enum tree_code ARG_UNUSED (cmp), const enum tree_code ARG_UNUSED (out)) { /* #line 2297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2298, __FILE__, __LINE__); res_op->set_op (out, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_310 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 815, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_311 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 2313 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::gt_p (wi::to_wide (captures[1]), wi::to_wide (captures[2]), TYPE_SIGN (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2315, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (cmp == NE_EXPR, type); res_op->set_value (tem); return true; } else { /* #line 2316 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::lt_p (wi::to_wide (captures[1]), wi::to_wide (captures[2]), TYPE_SIGN (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2318, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_312 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (minmax)) { /* #line 2248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (type) && types_match (captures[1], type) && int_fits_type_p (captures[2], type) && TYPE_SIGN (TREE_TYPE (captures[0])) == TYPE_SIGN (type) && TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2252, __FILE__, __LINE__); res_op->set_op (minmax, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[2]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_313 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const combined_fn ARG_UNUSED (floors), const combined_fn ARG_UNUSED (truncs)) { /* #line 4692 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4698, __FILE__, __LINE__); res_op->set_op (truncs, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_314 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 975, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_315 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 3253 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (single_use (captures[0]) && single_use (captures[2])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3254, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); res_op->ops[0] = captures[3]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_316 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (shiftrotate)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2361, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; return false; } static bool gimple_simplify_317 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 3269 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) && (DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0])) == DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[1]))) && (DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0])) == DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[2])))) { { /* #line 3274 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree type1 = TREE_TYPE (captures[2]); if (TREE_CODE (captures[2]) == REAL_CST && !DECIMAL_FLOAT_TYPE_P (type1)) { REAL_VALUE_TYPE orig = TREE_REAL_CST (captures[2]); if (TYPE_PRECISION (type1) > TYPE_PRECISION (float_type_node) && exact_real_truncate (TYPE_MODE (float_type_node), &orig)) type1 = float_type_node; if (TYPE_PRECISION (type1) > TYPE_PRECISION (double_type_node) && exact_real_truncate (TYPE_MODE (double_type_node), &orig)) type1 = double_type_node; } tree newtype = (TYPE_PRECISION (TREE_TYPE (captures[1])) > TYPE_PRECISION (type1) ? TREE_TYPE (captures[1]) : type1); /* #line 3291 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (newtype)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3292, __FILE__, __LINE__); res_op->set_op (cmp, type, 2); { tree ops1[1], res; ops1[0] = captures[1]; if (newtype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (newtype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, newtype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } { tree ops1[1], res; ops1[0] = captures[2]; if (newtype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (newtype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, newtype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_318 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (mod)) { /* #line 561 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (captures[0])) && tree_nop_conversion_p (type, TREE_TYPE (captures[1])) && integer_pow2p (captures[3]) && tree_int_cst_sgn (captures[3]) > 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 565, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[2], res; ops2[0] = captures[2]; ops2[1] = build_int_cst (TREE_TYPE (captures[2]), 1); gimple_match_op tem_op (res_op->cond.any_else (), MINUS_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_319 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (cmp)) { /* #line 1485 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && integer_nonzerop (captures[2]) && !TREE_OVERFLOW (captures[2]) && !TREE_OVERFLOW (captures[3])) { { /* #line 1489 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree lo, hi; bool neg_overflow; enum tree_code code = fold_div_compare (cmp, captures[2], captures[3], &lo, &hi, &neg_overflow); /* #line 1493 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (code == LT_EXPR || code == GE_EXPR) { /* #line 1494 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TREE_OVERFLOW (lo)) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1495, __FILE__, __LINE__); tree tem; tem = build_int_cst (type, (code == LT_EXPR) ^ neg_overflow); res_op->set_value (tem); return true; } else { /* #line 1496 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (code == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1497, __FILE__, __LINE__); res_op->set_op (LT_EXPR, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = lo; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1498, __FILE__, __LINE__); res_op->set_op (GE_EXPR, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = lo; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } else { /* #line 1499 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (code == LE_EXPR || code == GT_EXPR) { /* #line 1500 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TREE_OVERFLOW (hi)) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1501, __FILE__, __LINE__); tree tem; tem = build_int_cst (type, (code == LE_EXPR) ^ neg_overflow); res_op->set_value (tem); return true; } else { /* #line 1502 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (code == LE_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1503, __FILE__, __LINE__); res_op->set_op (LE_EXPR, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = hi; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1504, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = hi; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } else { /* #line 1505 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!lo && !hi) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1506, __FILE__, __LINE__); tree tem; tem = build_int_cst (type, code == NE_EXPR); res_op->set_value (tem); return true; } else { /* #line 1507 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (code == EQ_EXPR && !hi) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1508, __FILE__, __LINE__); res_op->set_op (GE_EXPR, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = lo; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 1509 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (code == EQ_EXPR && !lo) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1510, __FILE__, __LINE__); res_op->set_op (LE_EXPR, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = hi; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 1511 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (code == NE_EXPR && !hi) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1512, __FILE__, __LINE__); res_op->set_op (LT_EXPR, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = lo; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 1513 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (code == NE_EXPR && !lo) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1514, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = hi; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 1515 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (0) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1516, __FILE__, __LINE__); tree tem; tem = build_range_check (UNKNOWN_LOCATION, type, captures[1], code == EQ_EXPR, lo, hi); res_op->set_value (tem); return true; } else { { /* #line 1518 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree etype = range_check_type (TREE_TYPE (captures[1])); if (etype) { hi = fold_convert (etype, hi); lo = fold_convert (etype, lo); hi = const_binop (MINUS_EXPR, etype, hi, lo); }/* #line 1528 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (etype && hi && !TREE_OVERFLOW (hi)) { /* #line 1529 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (code == EQ_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1530, __FILE__, __LINE__); res_op->set_op (LE_EXPR, type, 2); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[1]; if (etype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (etype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, etype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } ops1[1] = lo; gimple_match_op tem_op (res_op->cond.any_else (), MINUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = hi; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1531, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[1]; if (etype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (etype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, etype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } ops1[1] = lo; gimple_match_op tem_op (res_op->cond.any_else (), MINUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = hi; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } } } } } return false; } static bool gimple_simplify_320 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (bitop)) { /* #line 1262 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (((TREE_CODE (captures[1]) == INTEGER_CST && INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && int_fits_type_p (captures[1], TREE_TYPE (captures[0]))) || types_match (captures[0], captures[1])) && (bitop != BIT_AND_EXPR ||1) && ( TYPE_PRECISION (TREE_TYPE (captures[0])) < TYPE_PRECISION (type) || GET_MODE_CLASS (TYPE_MODE (type)) != MODE_INT || !type_has_mode_precision_p (type))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1281, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; { tree ops2[1], res; ops2[0] = captures[1]; if (TREE_TYPE (ops1[0]) != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (TREE_TYPE (ops1[0]), TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, TREE_TYPE (ops1[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), bitop, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_321 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (bitop), const enum tree_code ARG_UNUSED (op)) { { /* #line 863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree pmop[2]; tree utype = fold_bit_and_mask (TREE_TYPE (captures[1]), captures[5], op, captures[1], ERROR_MARK, NULL_TREE, NULL_TREE, captures[2], bitop, captures[3], captures[4], pmop); /* #line 868 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (utype) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 869, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = pmop[0]; if (utype != TREE_TYPE (ops3[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops3[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops3[0]; ops2[0] = res; } { tree ops3[1], res; ops3[0] = pmop[1]; if (utype != TREE_TYPE (ops3[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops3[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops3[0]; ops2[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), op, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[5]; if (utype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_322 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1906, __FILE__, __LINE__); res_op->set_op (MINUS_EXPR, type, 2); res_op->ops[0] = captures[2]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_323 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) ) { /* #line 3110 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (VECTOR_TYPE_P (type) && known_eq (TYPE_VECTOR_SUBPARTS (type), TYPE_VECTOR_SUBPARTS (TREE_TYPE (captures[3]))) && (TYPE_MODE (TREE_TYPE (type)) == TYPE_MODE (TREE_TYPE (TREE_TYPE (captures[3]))))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3115, __FILE__, __LINE__); res_op->set_op (MINUS_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[3], res; ops2[0] = captures[2]; ops2[0] = unshare_expr (ops2[0]); { tree ops3[1], res; ops3[0] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[1] = res; } ops2[2] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), VEC_COND_EXPR, TREE_TYPE (ops2[1]), ops2[0], ops2[1], ops2[2]); gimple_resimplify3 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_324 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, const tree ARG_UNUSED (type), tree *ARG_UNUSED (captures) , const enum tree_code ARG_UNUSED (op), const enum tree_code ARG_UNUSED (rop)) { /* #line 1078 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (element_precision (type) <= element_precision (TREE_TYPE (captures[0])) && element_precision (type) <= element_precision (TREE_TYPE (captures[1]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1080, __FILE__, __LINE__); res_op->set_op (BIT_NOT_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[0]; if (type != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[1]; if (type != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), rop, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } return false; } static bool gimple_simplify_ABS_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 117 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 117 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && !TYPE_UNSIGNED (TREE_TYPE (captures[0])) && element_precision (type) > element_precision (TREE_TYPE (captures[0]))) { { /* #line 120 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree utype = unsigned_type_for (TREE_TYPE (captures[0])); gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 121, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), ABSU_EXPR, utype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 1168 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1168, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 1178 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1178, __FILE__, __LINE__); res_op->set_op (ABS_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } default:; } } break; default:; } if (tree_expr_nonnegative_p (op0)) { { /* #line 1187 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1187, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_COSF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; const combined_fn coss = CFN_BUILT_IN_COSF; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 595, __FILE__, __LINE__); res_op->set_op (coss, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; const combined_fn coss = CFN_BUILT_IN_COSF; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 595, __FILE__, __LINE__); res_op->set_op (coss, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNF: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 638 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_131 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COSF, CFN_BUILT_IN_COPYSIGNF)) return true; } } break; case CFN_BUILT_IN_ATANF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4478 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_284 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COSF, CFN_BUILT_IN_ATANF, CFN_BUILT_IN_SQRTF, CFN_BUILT_IN_COPYSIGNF)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_COS (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; const combined_fn coss = CFN_BUILT_IN_COS; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 595, __FILE__, __LINE__); res_op->set_op (coss, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; const combined_fn coss = CFN_BUILT_IN_COS; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 595, __FILE__, __LINE__); res_op->set_op (coss, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGN: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 638 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_131 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COS, CFN_BUILT_IN_COPYSIGN)) return true; } } break; case CFN_BUILT_IN_ATAN: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4478 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_284 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COS, CFN_BUILT_IN_ATAN, CFN_BUILT_IN_SQRT, CFN_BUILT_IN_COPYSIGN)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_COSL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; const combined_fn coss = CFN_BUILT_IN_COSL; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 595, __FILE__, __LINE__); res_op->set_op (coss, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; const combined_fn coss = CFN_BUILT_IN_COSL; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 595, __FILE__, __LINE__); res_op->set_op (coss, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNL: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 638 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_131 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COSL, CFN_BUILT_IN_COPYSIGNL)) return true; } } break; case CFN_BUILT_IN_ATANL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4478 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_284 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COSL, CFN_BUILT_IN_ATANL, CFN_BUILT_IN_SQRTL, CFN_BUILT_IN_COPYSIGNL)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_COS (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; const combined_fn coss = CFN_COS; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 595, __FILE__, __LINE__); res_op->set_op (coss, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; const combined_fn coss = CFN_COS; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 595, __FILE__, __LINE__); res_op->set_op (coss, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_COPYSIGN: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 638 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_131 (res_op, seq, valueize, type, captures, CFN_COS, CFN_COPYSIGN)) return true; } } break; case CFN_ATAN: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4478 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_284 (res_op, seq, valueize, type, captures, CFN_COS, CFN_ATAN, CFN_SQRT, CFN_COPYSIGN)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_COSHF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; const combined_fn coss = CFN_BUILT_IN_COSHF; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 595, __FILE__, __LINE__); res_op->set_op (coss, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; const combined_fn coss = CFN_BUILT_IN_COSHF; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 595, __FILE__, __LINE__); res_op->set_op (coss, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNF: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 638 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_131 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COSHF, CFN_BUILT_IN_COPYSIGNF)) return true; } } break; case CFN_BUILT_IN_ATANHF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4491 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_215 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COSHF, CFN_BUILT_IN_ATANHF, CFN_BUILT_IN_SQRTF)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_COSH (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; const combined_fn coss = CFN_BUILT_IN_COSH; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 595, __FILE__, __LINE__); res_op->set_op (coss, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; const combined_fn coss = CFN_BUILT_IN_COSH; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 595, __FILE__, __LINE__); res_op->set_op (coss, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGN: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 638 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_131 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COSH, CFN_BUILT_IN_COPYSIGN)) return true; } } break; case CFN_BUILT_IN_ATANH: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4491 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_215 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COSH, CFN_BUILT_IN_ATANH, CFN_BUILT_IN_SQRT)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_COSHL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; const combined_fn coss = CFN_BUILT_IN_COSHL; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 595, __FILE__, __LINE__); res_op->set_op (coss, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; const combined_fn coss = CFN_BUILT_IN_COSHL; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 595, __FILE__, __LINE__); res_op->set_op (coss, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNL: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 638 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_131 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COSHL, CFN_BUILT_IN_COPYSIGNL)) return true; } } break; case CFN_BUILT_IN_ATANHL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4491 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_215 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COSHL, CFN_BUILT_IN_ATANHL, CFN_BUILT_IN_SQRTL)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_COSH (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; const combined_fn coss = CFN_COSH; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 595, __FILE__, __LINE__); res_op->set_op (coss, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; const combined_fn coss = CFN_COSH; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 595, __FILE__, __LINE__); res_op->set_op (coss, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_COPYSIGN: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 638 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_131 (res_op, seq, valueize, type, captures, CFN_COSH, CFN_COPYSIGN)) return true; } } break; case CFN_ATANH: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4491 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_215 (res_op, seq, valueize, type, captures, CFN_COSH, CFN_ATANH, CFN_SQRT)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_CCOSF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 691 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 691, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_CCOSF, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_CCOS (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 691 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 691, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_CCOS, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_CCOSL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 691 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 691, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_CCOSL, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_CCOSHF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 691 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 691, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_CCOSHF, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_CCOSH (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 691 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 691, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_CCOSH, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_CCOSHL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 691 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 691, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_CCOSHL, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_CABSF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case CONJ_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 698 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 698, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_CABSF, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 698 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 698, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_CABSF, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case COMPLEX_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (real_zerop (o21)) { { /* #line 4513 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4513, __FILE__, __LINE__); res_op->set_op (ABS_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } if (real_zerop (o20)) { { /* #line 4513 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4513, __FILE__, __LINE__); res_op->set_op (ABS_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } if ((o21 == o20 && ! TREE_SIDE_EFFECTS (o21)) || (operand_equal_p (o21, o20, 0) && types_match (o21, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4674, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = build_real_truncate (type, dconst_sqrt2 ()); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_CABS (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case CONJ_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 698 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 698, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_CABS, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 698 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 698, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_CABS, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case COMPLEX_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (real_zerop (o21)) { { /* #line 4513 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4513, __FILE__, __LINE__); res_op->set_op (ABS_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } if (real_zerop (o20)) { { /* #line 4513 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4513, __FILE__, __LINE__); res_op->set_op (ABS_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } if ((o21 == o20 && ! TREE_SIDE_EFFECTS (o21)) || (operand_equal_p (o21, o20, 0) && types_match (o21, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4674, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = build_real_truncate (type, dconst_sqrt2 ()); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_CABSL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case CONJ_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 698 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 698, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_CABSL, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 698 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 698, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_CABSL, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case COMPLEX_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (real_zerop (o21)) { { /* #line 4513 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4513, __FILE__, __LINE__); res_op->set_op (ABS_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } if (real_zerop (o20)) { { /* #line 4513 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4513, __FILE__, __LINE__); res_op->set_op (ABS_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } if ((o21 == o20 && ! TREE_SIDE_EFFECTS (o21)) || (operand_equal_p (o21, o20, 0) && types_match (o21, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4674, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = build_real_truncate (type, dconst_sqrt2 ()); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_BIT_NOT_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 825 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o30, o21 }; if (gimple_simplify_191 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 825 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o40, o20 }; if (gimple_simplify_191 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } break; } case BIT_IOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 830 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o30, o21 }; if (gimple_simplify_193 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 830 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o40, o20 }; if (gimple_simplify_193 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } break; } case BIT_NOT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 1364 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1364, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 1369 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o30 }; if (gimple_simplify_219 (res_op, seq, valueize, type, captures)) return true; } break; } case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (integer_each_onep (o31)) { { /* #line 1381 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o30 }; if (gimple_simplify_15 (res_op, seq, valueize, type, captures)) return true; } } break; } case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if (integer_all_onesp (o31)) { { /* #line 1386 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o30 }; if (gimple_simplify_243 (res_op, seq, valueize, type, captures)) return true; } } break; } case BIT_XOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { { /* #line 1393 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o31 }; if (gimple_simplify_163 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 1397 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o31 }; if (gimple_simplify_20 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 1397 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o50, o30 }; if (gimple_simplify_20 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } break; } case RSHIFT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 2540 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o30, o50, o31 }; if (gimple_simplify_68 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } break; } case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2540 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o30, o40, o31 }; if (gimple_simplify_68 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } break; } case LROTATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 2553 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o30, o50, o31 }; if (gimple_simplify_88 (res_op, seq, valueize, type, captures, LROTATE_EXPR)) return true; } break; } default:; } } break; default:; } break; } case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2553 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o30, o40, o31 }; if (gimple_simplify_88 (res_op, seq, valueize, type, captures, LROTATE_EXPR)) return true; } break; } default:; } } break; default:; } break; } case RROTATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 2553 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o30, o50, o31 }; if (gimple_simplify_88 (res_op, seq, valueize, type, captures, RROTATE_EXPR)) return true; } break; } default:; } } break; default:; } break; } case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2553 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o30, o40, o31 }; if (gimple_simplify_88 (res_op, seq, valueize, type, captures, RROTATE_EXPR)) return true; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 1369 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_219 (res_op, seq, valueize, type, captures)) return true; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_each_onep (o21)) { { /* #line 1381 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_15 (res_op, seq, valueize, type, captures)) return true; } } break; } case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if (integer_all_onesp (o21)) { { /* #line 1386 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_243 (res_op, seq, valueize, type, captures)) return true; } } break; } case BIT_XOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { { /* #line 1393 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_163 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 1397 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o21 }; if (gimple_simplify_20 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 1397 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_20 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } break; } case RSHIFT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2540 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op0, o20, o40, o21 }; if (gimple_simplify_22 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } break; } case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 2540 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op0, o20, o30, o21 }; if (gimple_simplify_22 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } break; } case LROTATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2553 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op0, o20, o40, o21 }; if (gimple_simplify_6 (res_op, seq, valueize, type, captures, LROTATE_EXPR)) return true; } break; } default:; } } break; default:; } break; } case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 2553 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op0, o20, o30, o21 }; if (gimple_simplify_6 (res_op, seq, valueize, type, captures, LROTATE_EXPR)) return true; } break; } default:; } } break; default:; } break; } case RROTATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2553 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op0, o20, o40, o21 }; if (gimple_simplify_6 (res_op, seq, valueize, type, captures, RROTATE_EXPR)) return true; } break; } default:; } } break; default:; } break; } case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 2553 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op0, o20, o30, o21 }; if (gimple_simplify_6 (res_op, seq, valueize, type, captures, RROTATE_EXPR)) return true; } break; } default:; } } break; default:; } break; } case LT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); { /* #line 3167 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_166 (res_op, seq, valueize, type, captures, LT_EXPR, GE_EXPR, UNGE_EXPR)) return true; } break; } case LE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); { /* #line 3167 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_166 (res_op, seq, valueize, type, captures, LE_EXPR, GT_EXPR, UNGT_EXPR)) return true; } break; } case EQ_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); { /* #line 3167 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_166 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR, NE_EXPR)) return true; } break; } case NE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); { /* #line 3167 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_166 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR, EQ_EXPR)) return true; } break; } case GE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); { /* #line 3167 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_166 (res_op, seq, valueize, type, captures, GE_EXPR, LT_EXPR, UNLT_EXPR)) return true; } break; } case GT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); { /* #line 3167 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_166 (res_op, seq, valueize, type, captures, GT_EXPR, LE_EXPR, UNLE_EXPR)) return true; } break; } case UNORDERED_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); { /* #line 3167 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_166 (res_op, seq, valueize, type, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR)) return true; } break; } case ORDERED_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); { /* #line 3167 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_166 (res_op, seq, valueize, type, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR)) return true; } break; } case UNLT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); { /* #line 3167 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_166 (res_op, seq, valueize, type, captures, UNLT_EXPR, GE_EXPR, GE_EXPR)) return true; } break; } case UNLE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); { /* #line 3167 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_166 (res_op, seq, valueize, type, captures, UNLE_EXPR, GT_EXPR, GT_EXPR)) return true; } break; } case UNGT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); { /* #line 3167 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_166 (res_op, seq, valueize, type, captures, UNGT_EXPR, LE_EXPR, LE_EXPR)) return true; } break; } case UNGE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); { /* #line 3167 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_166 (res_op, seq, valueize, type, captures, UNGE_EXPR, LT_EXPR, LT_EXPR)) return true; } break; } case UNEQ_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); { /* #line 3167 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_166 (res_op, seq, valueize, type, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR)) return true; } break; } case LTGT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); { /* #line 3167 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_166 (res_op, seq, valueize, type, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR)) return true; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_ABSU_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case ABSU_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 1172 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o30 }; /* #line 1172 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (TREE_TYPE (captures[0]), TREE_TYPE (captures[1]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1173, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; } } break; } default:; } } break; default:; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 1182 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1182, __FILE__, __LINE__); res_op->set_op (ABSU_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } default:; } } break; default:; } if (tree_expr_nonnegative_p (op0)) { { /* #line 1191 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1191, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_NEGATE_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if (gimple_negate_expr_p (o21, valueize)) { { /* #line 1230 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_25 (res_op, seq, valueize, type, captures)) return true; } } if (gimple_negate_expr_p (o20, valueize)) { { /* #line 1230 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_25 (res_op, seq, valueize, type, captures)) return true; } } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); { /* #line 1237 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 1237 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((ANY_INTEGRAL_TYPE_P (type) && !TYPE_OVERFLOW_SANITIZED (type)) || (FLOAT_TYPE_P (type) && !HONOR_SIGN_DEPENDENT_ROUNDING (type) && !HONOR_SIGNED_ZEROS (type))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1241, __FILE__, __LINE__); res_op->set_op (MINUS_EXPR, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } case POINTER_DIFF_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); { /* #line 1244 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 1244 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1245, __FILE__, __LINE__); res_op->set_op (POINTER_DIFF_EXPR, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o30 }; /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1851 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (type) && (TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0])) || (!TYPE_UNSIGNED (TREE_TYPE (captures[0])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])))) && !TYPE_OVERFLOW_SANITIZED (type) && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1857, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } if (gimple_negate_expr_p (o20, valueize)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1860 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type) && ((DECIMAL_FLOAT_TYPE_P (type) == DECIMAL_FLOAT_TYPE_P (TREE_TYPE (captures[0])) && TYPE_PRECISION (type) >= TYPE_PRECISION (TREE_TYPE (captures[0]))) || !HONOR_SIGN_DEPENDENT_ROUNDING (type))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1865, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_FMAF: if (gimple_call_num_args (def) == 3) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); tree o22 = gimple_call_arg (def, 2); o22 = do_valueize (valueize, o22); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o22 }; if (gimple_simplify_190 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAF)) return true; } } break; case CFN_BUILT_IN_FMA: if (gimple_call_num_args (def) == 3) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); tree o22 = gimple_call_arg (def, 2); o22 = do_valueize (valueize, o22); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o22 }; if (gimple_simplify_190 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMA)) return true; } } break; case CFN_BUILT_IN_FMAL: if (gimple_call_num_args (def) == 3) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); tree o22 = gimple_call_arg (def, 2); o22 = do_valueize (valueize, o22); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o22 }; if (gimple_simplify_190 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAL)) return true; } } break; case CFN_FMA: if (gimple_call_num_args (def) == 3) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); tree o22 = gimple_call_arg (def, 2); o22 = do_valueize (valueize, o22); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o22 }; if (gimple_simplify_190 (res_op, seq, valueize, type, captures, CFN_FMA)) return true; } } break; case CFN_FMS: if (gimple_call_num_args (def) == 3) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); tree o22 = gimple_call_arg (def, 2); o22 = do_valueize (valueize, o22); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o22 }; /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_after_vectorization_p ()) { /* #line 5174 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (single_use (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5175, __FILE__, __LINE__); res_op->set_op (CFN_FNMA, type, 3); res_op->ops[0] = captures[1]; res_op->ops[1] = captures[2]; res_op->ops[2] = captures[3]; gimple_resimplify3 (lseq, res_op, valueize); return true; } } } } break; case CFN_FNMA: if (gimple_call_num_args (def) == 3) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); tree o22 = gimple_call_arg (def, 2); o22 = do_valueize (valueize, o22); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o22 }; /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_after_vectorization_p ()) { /* #line 5188 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (single_use (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5189, __FILE__, __LINE__); res_op->set_op (CFN_FMS, type, 3); res_op->ops[0] = captures[1]; res_op->ops[1] = captures[2]; res_op->ops[2] = captures[3]; gimple_resimplify3 (lseq, res_op, valueize); return true; } } } } break; case CFN_FNMS: if (gimple_call_num_args (def) == 3) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); tree o22 = gimple_call_arg (def, 2); o22 = do_valueize (valueize, o22); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o22 }; /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_after_vectorization_p ()) { /* #line 5202 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (single_use (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5203, __FILE__, __LINE__); res_op->set_op (CFN_FMA, type, 3); res_op->ops[0] = captures[1]; res_op->ops[1] = captures[2]; res_op->ops[2] = captures[3]; gimple_resimplify3 (lseq, res_op, valueize); return true; } } } } break; default:; } } break; default:; } { tree op0_pops[1]; if (gimple_nop_convert (op0, op0_pops, valueize)) { tree o20 = op0_pops[0]; switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 1376 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o30 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1376, __FILE__, __LINE__); res_op->set_op (PLUS_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = build_each_one_cst (type); gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o30 }; /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1868 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_OVERFLOW_SANITIZED (type) && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1870, __FILE__, __LINE__); res_op->set_op (VIEW_CONVERT_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } } } return false; } static bool gimple_simplify_CONVERT_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MIN_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o21)) { case INTEGER_CST: { { /* #line 2248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o30, o21 }; if (gimple_simplify_312 (res_op, seq, valueize, type, captures, MIN_EXPR)) return true; } break; } default:; } break; } default:; } } break; default:; } break; } case MAX_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o21)) { case INTEGER_CST: { { /* #line 2248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o30, o21 }; if (gimple_simplify_312 (res_op, seq, valueize, type, captures, MAX_EXPR)) return true; } break; } default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } { /* #line 2568 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 2568 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((1 && useless_type_conversion_p (type, TREE_TYPE (captures[0]))) || (0 && type == TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2570, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 2619 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; { /* #line 2619 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree inside_type = TREE_TYPE (captures[1]); tree inter_type = TREE_TYPE (captures[0]); int inside_int = INTEGRAL_TYPE_P (inside_type); int inside_ptr = POINTER_TYPE_P (inside_type); int inside_float = FLOAT_TYPE_P (inside_type); int inside_vec = VECTOR_TYPE_P (inside_type); unsigned int inside_prec = TYPE_PRECISION (inside_type); int inside_unsignedp = TYPE_UNSIGNED (inside_type); int inter_int = INTEGRAL_TYPE_P (inter_type); int inter_ptr = POINTER_TYPE_P (inter_type); int inter_float = FLOAT_TYPE_P (inter_type); int inter_vec = VECTOR_TYPE_P (inter_type); unsigned int inter_prec = TYPE_PRECISION (inter_type); int inter_unsignedp = TYPE_UNSIGNED (inter_type); int final_int = INTEGRAL_TYPE_P (type); int final_ptr = POINTER_TYPE_P (type); int final_float = FLOAT_TYPE_P (type); int final_vec = VECTOR_TYPE_P (type); unsigned int final_prec = TYPE_PRECISION (type); int final_unsignedp = TYPE_UNSIGNED (type); /* #line 2647 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (((1 && useless_type_conversion_p (type, inside_type)) || (0 && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type))) && (((inter_int || inter_ptr) && final_int) || (inter_float && final_float)) && inter_prec >= final_prec) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2653, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2660 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (((inter_int && inside_int) || (inter_float && inside_float)) && (final_int || final_float) && inter_prec >= inside_prec && (inter_float || inter_unsignedp == inside_unsignedp)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2664, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2670 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (inside_int && inter_int && final_int && ((inside_prec < inter_prec && inter_prec < final_prec && inside_unsignedp && !inter_unsignedp) || final_prec == inter_prec)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2674, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (! inside_float && ! inter_float && ! final_float && ! inside_vec && ! inter_vec && ! final_vec && (inter_prec >= inside_prec || inter_prec >= final_prec) && ! (inside_int && inter_int && inter_unsignedp != inside_unsignedp && inter_prec < final_prec) && ((inter_unsignedp && inter_prec > inside_prec) == (final_unsignedp && final_prec > inter_prec)) && ! (inside_ptr && inter_prec != final_prec) && ! (final_ptr && inside_prec != inter_prec)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2697, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2701 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (1 && final_int && inter_int && inside_int && final_prec == inside_prec && final_prec > inter_prec && inter_unsignedp) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2706, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = wide_int_to_tree (inside_type, wi::mask (inter_prec, false, TYPE_PRECISION (inside_type))); gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2714 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (1 && inside_int && inter_float && final_int && (unsigned) significand_size (TYPE_MODE (inter_type)) >= inside_prec - !inside_unsignedp) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2718, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } } } } } break; } case FLOAT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 2619 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; { /* #line 2619 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree inside_type = TREE_TYPE (captures[1]); tree inter_type = TREE_TYPE (captures[0]); int inside_int = INTEGRAL_TYPE_P (inside_type); int inside_ptr = POINTER_TYPE_P (inside_type); int inside_float = FLOAT_TYPE_P (inside_type); int inside_vec = VECTOR_TYPE_P (inside_type); unsigned int inside_prec = TYPE_PRECISION (inside_type); int inside_unsignedp = TYPE_UNSIGNED (inside_type); int inter_int = INTEGRAL_TYPE_P (inter_type); int inter_ptr = POINTER_TYPE_P (inter_type); int inter_float = FLOAT_TYPE_P (inter_type); int inter_vec = VECTOR_TYPE_P (inter_type); unsigned int inter_prec = TYPE_PRECISION (inter_type); int inter_unsignedp = TYPE_UNSIGNED (inter_type); int final_int = INTEGRAL_TYPE_P (type); int final_ptr = POINTER_TYPE_P (type); int final_float = FLOAT_TYPE_P (type); int final_vec = VECTOR_TYPE_P (type); unsigned int final_prec = TYPE_PRECISION (type); int final_unsignedp = TYPE_UNSIGNED (type); /* #line 2647 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (((1 && useless_type_conversion_p (type, inside_type)) || (0 && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type))) && (((inter_int || inter_ptr) && final_int) || (inter_float && final_float)) && inter_prec >= final_prec) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2653, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2660 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (((inter_int && inside_int) || (inter_float && inside_float)) && (final_int || final_float) && inter_prec >= inside_prec && (inter_float || inter_unsignedp == inside_unsignedp)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2664, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2670 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (inside_int && inter_int && final_int && ((inside_prec < inter_prec && inter_prec < final_prec && inside_unsignedp && !inter_unsignedp) || final_prec == inter_prec)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2674, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (! inside_float && ! inter_float && ! final_float && ! inside_vec && ! inter_vec && ! final_vec && (inter_prec >= inside_prec || inter_prec >= final_prec) && ! (inside_int && inter_int && inter_unsignedp != inside_unsignedp && inter_prec < final_prec) && ((inter_unsignedp && inter_prec > inside_prec) == (final_unsignedp && final_prec > inter_prec)) && ! (inside_ptr && inter_prec != final_prec) && ! (final_ptr && inside_prec != inter_prec)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2697, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2701 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (1 && final_int && inter_int && inside_int && final_prec == inside_prec && final_prec > inter_prec && inter_unsignedp) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2706, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = wide_int_to_tree (inside_type, wi::mask (inter_prec, false, TYPE_PRECISION (inside_type))); gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2714 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (1 && inside_int && inter_float && final_int && (unsigned) significand_size (TYPE_MODE (inter_type)) >= inside_prec - !inside_unsignedp) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2718, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } } } } } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { { /* #line 2725 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 2725 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (type) && INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && TYPE_PRECISION (type) <= TYPE_PRECISION (TREE_TYPE (captures[0])) && operand_equal_p (captures[1], build_low_bits_mask (TREE_TYPE (captures[1]), TYPE_PRECISION (type)), 0)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2730, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } break; } case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 4885 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o30, o21, o50 }; if (gimple_simplify_63 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } break; } default:; } } break; default:; } { /* #line 4885 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o30, o21, o21 }; if (gimple_simplify_120 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } break; } default:; } } break; default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 4885 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o30, o21, o50 }; if (gimple_simplify_63 (res_op, seq, valueize, type, captures, MINUS_EXPR)) return true; } break; } default:; } } break; default:; } { /* #line 4885 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o30, o21, o21 }; if (gimple_simplify_120 (res_op, seq, valueize, type, captures, MINUS_EXPR)) return true; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_VIEW_CONVERT_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { { /* #line 2568 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 2568 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((1 && useless_type_conversion_p (type, TREE_TYPE (captures[0]))) || (0 && type == TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2570, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VIEW_CONVERT_EXPR: { tree o20 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o20) == SSA_NAME || is_gimple_min_invariant (o20))) { o20 = do_valueize (valueize, o20); { /* #line 2575 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2575, __FILE__, __LINE__); res_op->set_op (VIEW_CONVERT_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } { /* #line 2581 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 2581 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((INTEGRAL_TYPE_P (type) || POINTER_TYPE_P (type)) && (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) || POINTER_TYPE_P (TREE_TYPE (captures[0]))) && TYPE_PRECISION (type) == TYPE_PRECISION (TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2584, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 2590 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; /* #line 2590 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) || POINTER_TYPE_P (TREE_TYPE (captures[0]))) && (INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) || POINTER_TYPE_P (TREE_TYPE (captures[1]))) && TYPE_SIZE (TREE_TYPE (captures[0])) == TYPE_SIZE (TREE_TYPE (captures[1])) && (TYPE_PRECISION (TREE_TYPE (captures[0])) == TYPE_PRECISION (TREE_TYPE (captures[1])) || (TYPE_PRECISION (TREE_TYPE (captures[0])) > TYPE_PRECISION (TREE_TYPE (captures[1])) && TYPE_UNSIGNED (TREE_TYPE (captures[1]))))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2596, __FILE__, __LINE__); res_op->set_op (VIEW_CONVERT_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } case CONSTRUCTOR: { { /* #line 2601 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 2601 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TREE_CODE (captures[0]) != SSA_NAME && CONSTRUCTOR_NELTS (captures[0]) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2603, __FILE__, __LINE__); tree tem; tem = build_zero_cst (type); res_op->set_value (tem); return true; } } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_FLOAT_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { { /* #line 2568 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 2568 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((1 && useless_type_conversion_p (type, TREE_TYPE (captures[0]))) || (0 && type == TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2570, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 2619 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; { /* #line 2619 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree inside_type = TREE_TYPE (captures[1]); tree inter_type = TREE_TYPE (captures[0]); int inside_int = INTEGRAL_TYPE_P (inside_type); int inside_ptr = POINTER_TYPE_P (inside_type); int inside_float = FLOAT_TYPE_P (inside_type); int inside_vec = VECTOR_TYPE_P (inside_type); unsigned int inside_prec = TYPE_PRECISION (inside_type); int inside_unsignedp = TYPE_UNSIGNED (inside_type); int inter_int = INTEGRAL_TYPE_P (inter_type); int inter_ptr = POINTER_TYPE_P (inter_type); int inter_float = FLOAT_TYPE_P (inter_type); int inter_vec = VECTOR_TYPE_P (inter_type); unsigned int inter_prec = TYPE_PRECISION (inter_type); int inter_unsignedp = TYPE_UNSIGNED (inter_type); int final_int = INTEGRAL_TYPE_P (type); int final_ptr = POINTER_TYPE_P (type); int final_float = FLOAT_TYPE_P (type); int final_vec = VECTOR_TYPE_P (type); unsigned int final_prec = TYPE_PRECISION (type); int final_unsignedp = TYPE_UNSIGNED (type); /* #line 2647 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (((1 && useless_type_conversion_p (type, inside_type)) || (0 && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type))) && (((inter_int || inter_ptr) && final_int) || (inter_float && final_float)) && inter_prec >= final_prec) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2653, __FILE__, __LINE__); res_op->set_op (FLOAT_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2660 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (((inter_int && inside_int) || (inter_float && inside_float)) && (final_int || final_float) && inter_prec >= inside_prec && (inter_float || inter_unsignedp == inside_unsignedp)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2664, __FILE__, __LINE__); res_op->set_op (FLOAT_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2670 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (inside_int && inter_int && final_int && ((inside_prec < inter_prec && inter_prec < final_prec && inside_unsignedp && !inter_unsignedp) || final_prec == inter_prec)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2674, __FILE__, __LINE__); res_op->set_op (FLOAT_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (! inside_float && ! inter_float && ! final_float && ! inside_vec && ! inter_vec && ! final_vec && (inter_prec >= inside_prec || inter_prec >= final_prec) && ! (inside_int && inter_int && inter_unsignedp != inside_unsignedp && inter_prec < final_prec) && ((inter_unsignedp && inter_prec > inside_prec) == (final_unsignedp && final_prec > inter_prec)) && ! (inside_ptr && inter_prec != final_prec) && ! (final_ptr && inside_prec != inter_prec)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2697, __FILE__, __LINE__); res_op->set_op (FLOAT_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2701 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (1 && final_int && inter_int && inside_int && final_prec == inside_prec && final_prec > inter_prec && inter_unsignedp) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2706, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = wide_int_to_tree (inside_type, wi::mask (inter_prec, false, TYPE_PRECISION (inside_type))); gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2714 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (1 && inside_int && inter_float && final_int && (unsigned) significand_size (TYPE_MODE (inter_type)) >= inside_prec - !inside_unsignedp) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2718, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } } } } } break; } case FLOAT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 2619 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; { /* #line 2619 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree inside_type = TREE_TYPE (captures[1]); tree inter_type = TREE_TYPE (captures[0]); int inside_int = INTEGRAL_TYPE_P (inside_type); int inside_ptr = POINTER_TYPE_P (inside_type); int inside_float = FLOAT_TYPE_P (inside_type); int inside_vec = VECTOR_TYPE_P (inside_type); unsigned int inside_prec = TYPE_PRECISION (inside_type); int inside_unsignedp = TYPE_UNSIGNED (inside_type); int inter_int = INTEGRAL_TYPE_P (inter_type); int inter_ptr = POINTER_TYPE_P (inter_type); int inter_float = FLOAT_TYPE_P (inter_type); int inter_vec = VECTOR_TYPE_P (inter_type); unsigned int inter_prec = TYPE_PRECISION (inter_type); int inter_unsignedp = TYPE_UNSIGNED (inter_type); int final_int = INTEGRAL_TYPE_P (type); int final_ptr = POINTER_TYPE_P (type); int final_float = FLOAT_TYPE_P (type); int final_vec = VECTOR_TYPE_P (type); unsigned int final_prec = TYPE_PRECISION (type); int final_unsignedp = TYPE_UNSIGNED (type); /* #line 2647 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (((1 && useless_type_conversion_p (type, inside_type)) || (0 && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type))) && (((inter_int || inter_ptr) && final_int) || (inter_float && final_float)) && inter_prec >= final_prec) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2653, __FILE__, __LINE__); res_op->set_op (FLOAT_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2660 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (((inter_int && inside_int) || (inter_float && inside_float)) && (final_int || final_float) && inter_prec >= inside_prec && (inter_float || inter_unsignedp == inside_unsignedp)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2664, __FILE__, __LINE__); res_op->set_op (FLOAT_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2670 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (inside_int && inter_int && final_int && ((inside_prec < inter_prec && inter_prec < final_prec && inside_unsignedp && !inter_unsignedp) || final_prec == inter_prec)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2674, __FILE__, __LINE__); res_op->set_op (FLOAT_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (! inside_float && ! inter_float && ! final_float && ! inside_vec && ! inter_vec && ! final_vec && (inter_prec >= inside_prec || inter_prec >= final_prec) && ! (inside_int && inter_int && inter_unsignedp != inside_unsignedp && inter_prec < final_prec) && ((inter_unsignedp && inter_prec > inside_prec) == (final_unsignedp && final_prec > inter_prec)) && ! (inside_ptr && inter_prec != final_prec) && ! (final_ptr && inside_prec != inter_prec)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2697, __FILE__, __LINE__); res_op->set_op (FLOAT_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2701 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (1 && final_int && inter_int && inside_int && final_prec == inside_prec && final_prec > inter_prec && inter_unsignedp) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2706, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = wide_int_to_tree (inside_type, wi::mask (inter_prec, false, TYPE_PRECISION (inside_type))); gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2714 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (1 && inside_int && inter_float && final_int && (unsigned) significand_size (TYPE_MODE (inter_type)) >= inside_prec - !inside_unsignedp) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2718, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } } } } } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_FIX_TRUNC_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { { /* #line 2568 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 2568 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((1 && useless_type_conversion_p (type, TREE_TYPE (captures[0]))) || (0 && type == TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2570, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 2619 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; { /* #line 2619 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree inside_type = TREE_TYPE (captures[1]); tree inter_type = TREE_TYPE (captures[0]); int inside_int = INTEGRAL_TYPE_P (inside_type); int inside_ptr = POINTER_TYPE_P (inside_type); int inside_float = FLOAT_TYPE_P (inside_type); int inside_vec = VECTOR_TYPE_P (inside_type); unsigned int inside_prec = TYPE_PRECISION (inside_type); int inside_unsignedp = TYPE_UNSIGNED (inside_type); int inter_int = INTEGRAL_TYPE_P (inter_type); int inter_ptr = POINTER_TYPE_P (inter_type); int inter_float = FLOAT_TYPE_P (inter_type); int inter_vec = VECTOR_TYPE_P (inter_type); unsigned int inter_prec = TYPE_PRECISION (inter_type); int inter_unsignedp = TYPE_UNSIGNED (inter_type); int final_int = INTEGRAL_TYPE_P (type); int final_ptr = POINTER_TYPE_P (type); int final_float = FLOAT_TYPE_P (type); int final_vec = VECTOR_TYPE_P (type); unsigned int final_prec = TYPE_PRECISION (type); int final_unsignedp = TYPE_UNSIGNED (type); /* #line 2647 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (((1 && useless_type_conversion_p (type, inside_type)) || (0 && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type))) && (((inter_int || inter_ptr) && final_int) || (inter_float && final_float)) && inter_prec >= final_prec) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2653, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2660 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (((inter_int && inside_int) || (inter_float && inside_float)) && (final_int || final_float) && inter_prec >= inside_prec && (inter_float || inter_unsignedp == inside_unsignedp)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2664, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2670 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (inside_int && inter_int && final_int && ((inside_prec < inter_prec && inter_prec < final_prec && inside_unsignedp && !inter_unsignedp) || final_prec == inter_prec)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2674, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (! inside_float && ! inter_float && ! final_float && ! inside_vec && ! inter_vec && ! final_vec && (inter_prec >= inside_prec || inter_prec >= final_prec) && ! (inside_int && inter_int && inter_unsignedp != inside_unsignedp && inter_prec < final_prec) && ((inter_unsignedp && inter_prec > inside_prec) == (final_unsignedp && final_prec > inter_prec)) && ! (inside_ptr && inter_prec != final_prec) && ! (final_ptr && inside_prec != inter_prec)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2697, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2701 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (1 && final_int && inter_int && inside_int && final_prec == inside_prec && final_prec > inter_prec && inter_unsignedp) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2706, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = wide_int_to_tree (inside_type, wi::mask (inter_prec, false, TYPE_PRECISION (inside_type))); gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2714 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (1 && inside_int && inter_float && final_int && (unsigned) significand_size (TYPE_MODE (inter_type)) >= inside_prec - !inside_unsignedp) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2718, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } } } } } break; } case FLOAT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 2619 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; { /* #line 2619 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree inside_type = TREE_TYPE (captures[1]); tree inter_type = TREE_TYPE (captures[0]); int inside_int = INTEGRAL_TYPE_P (inside_type); int inside_ptr = POINTER_TYPE_P (inside_type); int inside_float = FLOAT_TYPE_P (inside_type); int inside_vec = VECTOR_TYPE_P (inside_type); unsigned int inside_prec = TYPE_PRECISION (inside_type); int inside_unsignedp = TYPE_UNSIGNED (inside_type); int inter_int = INTEGRAL_TYPE_P (inter_type); int inter_ptr = POINTER_TYPE_P (inter_type); int inter_float = FLOAT_TYPE_P (inter_type); int inter_vec = VECTOR_TYPE_P (inter_type); unsigned int inter_prec = TYPE_PRECISION (inter_type); int inter_unsignedp = TYPE_UNSIGNED (inter_type); int final_int = INTEGRAL_TYPE_P (type); int final_ptr = POINTER_TYPE_P (type); int final_float = FLOAT_TYPE_P (type); int final_vec = VECTOR_TYPE_P (type); unsigned int final_prec = TYPE_PRECISION (type); int final_unsignedp = TYPE_UNSIGNED (type); /* #line 2647 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (((1 && useless_type_conversion_p (type, inside_type)) || (0 && TYPE_MAIN_VARIANT (type) == TYPE_MAIN_VARIANT (inside_type))) && (((inter_int || inter_ptr) && final_int) || (inter_float && final_float)) && inter_prec >= final_prec) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2653, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2660 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (((inter_int && inside_int) || (inter_float && inside_float)) && (final_int || final_float) && inter_prec >= inside_prec && (inter_float || inter_unsignedp == inside_unsignedp)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2664, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2670 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (inside_int && inter_int && final_int && ((inside_prec < inter_prec && inter_prec < final_prec && inside_unsignedp && !inter_unsignedp) || final_prec == inter_prec)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2674, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (! inside_float && ! inter_float && ! final_float && ! inside_vec && ! inter_vec && ! final_vec && (inter_prec >= inside_prec || inter_prec >= final_prec) && ! (inside_int && inter_int && inter_unsignedp != inside_unsignedp && inter_prec < final_prec) && ((inter_unsignedp && inter_prec > inside_prec) == (final_unsignedp && final_prec > inter_prec)) && ! (inside_ptr && inter_prec != final_prec) && ! (final_ptr && inside_prec != inter_prec)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2697, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2701 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (1 && final_int && inter_int && inside_int && final_prec == inside_prec && final_prec > inter_prec && inter_unsignedp) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2706, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = wide_int_to_tree (inside_type, wi::mask (inter_prec, false, TYPE_PRECISION (inside_type))); gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 2714 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (1 && inside_int && inter_float && final_int && (unsigned) significand_size (TYPE_MODE (inter_type)) >= inside_prec - !inside_unsignedp) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2718, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } } } } } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_PAREN_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PAREN_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 2612 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2612, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (op0)) { { /* #line 2609 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2609, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } return false; } static bool gimple_simplify_REALPART_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case COMPLEX_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); { /* #line 2816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2816, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case CONJ_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 2824 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o30 }; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2824, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (ops1[0])), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); { /* #line 2832 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o30, o31 }; const enum tree_code op = PLUS_EXPR; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2832, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), op, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); { /* #line 2832 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o30, o31 }; const enum tree_code op = MINUS_EXPR; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2832, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), op, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_CEXPIF: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 2835 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o30 }; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2835, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_COSF, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; case CFN_BUILT_IN_CEXPI: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 2835 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o30 }; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2835, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_COS, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; case CFN_BUILT_IN_CEXPIL: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 2835 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o30 }; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2835, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_COSL, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; default:; } } break; default:; } break; } case CONJ_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 2824 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, o20 }; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2824, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (ops1[0])), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); { /* #line 2832 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op0, o20, o21 }; const enum tree_code op = PLUS_EXPR; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2832, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), op, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); { /* #line 2832 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op0, o20, o21 }; const enum tree_code op = MINUS_EXPR; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2832, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), op, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_CEXPIF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 2835 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, o20 }; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2835, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_COSF, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; case CFN_BUILT_IN_CEXPI: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 2835 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, o20 }; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2835, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_COS, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; case CFN_BUILT_IN_CEXPIL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 2835 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, o20 }; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2835, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_COSL, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_IMAGPART_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case COMPLEX_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); { /* #line 2819 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2819, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case CONJ_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 2827 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o30 }; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2827, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); { /* #line 2832 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o30, o31 }; const enum tree_code op = PLUS_EXPR; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2832, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), op, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); { /* #line 2832 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o30, o31 }; const enum tree_code op = MINUS_EXPR; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2832, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), op, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_CEXPIF: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 2838 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o30 }; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2838, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_SINF, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; case CFN_BUILT_IN_CEXPI: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 2838 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o30 }; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2838, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_SIN, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; case CFN_BUILT_IN_CEXPIL: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 2838 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o30 }; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2838, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_SINL, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; default:; } } break; default:; } break; } case CONJ_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 2827 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, o20 }; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2827, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); { /* #line 2832 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op0, o20, o21 }; const enum tree_code op = PLUS_EXPR; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2832, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), op, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); { /* #line 2832 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op0, o20, o21 }; const enum tree_code op = MINUS_EXPR; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2832, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), op, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_CEXPIF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 2838 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, o20 }; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2838, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_SINF, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; case CFN_BUILT_IN_CEXPI: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 2838 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, o20 }; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2838, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_SIN, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; case CFN_BUILT_IN_CEXPIL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 2838 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, o20 }; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2838, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_SINL, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CONJ_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case CONJ_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 2843 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o30 }; if (gimple_simplify_74 (res_op, seq, valueize, type, captures)) return true; } break; } case COMPLEX_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); { /* #line 2849 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o30, o31 }; { /* #line 2849 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree itype = TREE_TYPE (type); gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2850, __FILE__, __LINE__); res_op->set_op (COMPLEX_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[2]; if (itype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (itype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, itype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[3]; if (itype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (itype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, itype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } case CONJ_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 2843 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_74 (res_op, seq, valueize, type, captures)) return true; } break; } case COMPLEX_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); { /* #line 2849 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op0, o20, o21 }; { /* #line 2849 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree itype = TREE_TYPE (type); gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2850, __FILE__, __LINE__); res_op->set_op (COMPLEX_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[2]; if (itype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (itype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, itype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[3]; if (itype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (itype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, itype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_BSWAP16 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP16: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 2859 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o30 }; if (gimple_simplify_83 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP16)) return true; } } break; default:; } } break; default:; } break; } case BIT_XOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP16: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 2863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o21 }; if (gimple_simplify_87 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, CFN_BUILT_IN_BSWAP16)) return true; } } break; default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP16: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 2863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_87 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, CFN_BUILT_IN_BSWAP16)) return true; } } break; default:; } } break; default:; } break; } case BIT_IOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP16: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 2863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o21 }; if (gimple_simplify_87 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, CFN_BUILT_IN_BSWAP16)) return true; } } break; default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP16: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 2863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_87 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, CFN_BUILT_IN_BSWAP16)) return true; } } break; default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP16: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 2863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o21 }; if (gimple_simplify_87 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, CFN_BUILT_IN_BSWAP16)) return true; } } break; default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP16: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 2863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_87 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, CFN_BUILT_IN_BSWAP16)) return true; } } break; default:; } } break; default:; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP16: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 2856 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_11 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP16)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_BSWAP32 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP32: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 2859 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o30 }; if (gimple_simplify_83 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP32)) return true; } } break; default:; } } break; default:; } break; } case BIT_XOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP32: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 2863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o21 }; if (gimple_simplify_87 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, CFN_BUILT_IN_BSWAP32)) return true; } } break; default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP32: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 2863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_87 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, CFN_BUILT_IN_BSWAP32)) return true; } } break; default:; } } break; default:; } break; } case BIT_IOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP32: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 2863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o21 }; if (gimple_simplify_87 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, CFN_BUILT_IN_BSWAP32)) return true; } } break; default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP32: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 2863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_87 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, CFN_BUILT_IN_BSWAP32)) return true; } } break; default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP32: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 2863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o21 }; if (gimple_simplify_87 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, CFN_BUILT_IN_BSWAP32)) return true; } } break; default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP32: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 2863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_87 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, CFN_BUILT_IN_BSWAP32)) return true; } } break; default:; } } break; default:; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP32: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 2856 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_11 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP32)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_BSWAP64 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP64: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 2859 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o30 }; if (gimple_simplify_83 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP64)) return true; } } break; default:; } } break; default:; } break; } case BIT_XOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP64: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 2863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o21 }; if (gimple_simplify_87 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, CFN_BUILT_IN_BSWAP64)) return true; } } break; default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP64: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 2863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_87 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, CFN_BUILT_IN_BSWAP64)) return true; } } break; default:; } } break; default:; } break; } case BIT_IOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP64: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 2863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o21 }; if (gimple_simplify_87 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, CFN_BUILT_IN_BSWAP64)) return true; } } break; default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP64: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 2863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_87 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, CFN_BUILT_IN_BSWAP64)) return true; } } break; default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP64: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 2863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o21 }; if (gimple_simplify_87 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, CFN_BUILT_IN_BSWAP64)) return true; } } break; default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP64: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 2863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_87 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, CFN_BUILT_IN_BSWAP64)) return true; } } break; default:; } } break; default:; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_BSWAP64: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 2856 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_11 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_BSWAP64)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_LOGF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXPF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4307, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; case CFN_BUILT_IN_EXP2F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_EXP2F) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOGF, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_EXP10F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_EXP10F) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOGF, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_POW10F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_POW10F) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOGF, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_SQRTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4355 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_SQRTF) { CASE_CFN_SQRT: x = build_real (type, dconsthalf); break; CASE_CFN_CBRT: x = build_real_truncate (type, dconst_third ()); break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4371, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = x; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOGF, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_CBRTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4355 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_CBRTF) { CASE_CFN_SQRT: x = build_real (type, dconsthalf); break; CASE_CFN_CBRT: x = build_real_truncate (type, dconst_third ()); break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4371, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = x; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOGF, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_POWF: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_228 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_POWF)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_LOG (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXP: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4307, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; case CFN_BUILT_IN_EXP2: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_EXP2) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_EXP10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_EXP10) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_POW10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_POW10) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4355 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_SQRT) { CASE_CFN_SQRT: x = build_real (type, dconsthalf); break; CASE_CFN_CBRT: x = build_real_truncate (type, dconst_third ()); break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4371, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = x; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_CBRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4355 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_CBRT) { CASE_CFN_SQRT: x = build_real (type, dconsthalf); break; CASE_CFN_CBRT: x = build_real_truncate (type, dconst_third ()); break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4371, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = x; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_POW: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_228 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LOG, CFN_BUILT_IN_POW)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_LOGL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXPL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4307, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; case CFN_BUILT_IN_EXP2L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_EXP2L) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOGL, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_EXP10L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_EXP10L) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOGL, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_POW10L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_POW10L) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOGL, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_SQRTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4355 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_SQRTL) { CASE_CFN_SQRT: x = build_real (type, dconsthalf); break; CASE_CFN_CBRT: x = build_real_truncate (type, dconst_third ()); break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4371, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = x; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOGL, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_CBRTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4355 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_CBRTL) { CASE_CFN_SQRT: x = build_real (type, dconsthalf); break; CASE_CFN_CBRT: x = build_real_truncate (type, dconst_third ()); break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4371, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = x; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOGL, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_POWL: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_228 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_POWL)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_LOG (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_EXP: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4307, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; case CFN_EXP2: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_EXP2) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_LOG, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_EXP10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_EXP10) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_LOG, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4355 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_SQRT) { CASE_CFN_SQRT: x = build_real (type, dconsthalf); break; CASE_CFN_CBRT: x = build_real_truncate (type, dconst_third ()); break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4371, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = x; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_LOG, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_POW: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_228 (res_op, seq, valueize, type, captures, CFN_LOG, CFN_POW)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_LOG2F (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXP2F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4307, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; case CFN_BUILT_IN_EXPF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_EXPF) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG2F, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_EXP10F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_EXP10F) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG2F, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_POW10F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_POW10F) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG2F, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_SQRTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4355 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_SQRTF) { CASE_CFN_SQRT: x = build_real (type, dconsthalf); break; CASE_CFN_CBRT: x = build_real_truncate (type, dconst_third ()); break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4371, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = x; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG2F, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_CBRTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4355 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_CBRTF) { CASE_CFN_SQRT: x = build_real (type, dconsthalf); break; CASE_CFN_CBRT: x = build_real_truncate (type, dconst_third ()); break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4371, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = x; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG2F, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_POWF: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_228 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LOG2F, CFN_BUILT_IN_POWF)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_LOG2 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXP2: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4307, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; case CFN_BUILT_IN_EXP: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_EXP) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG2, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_EXP10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_EXP10) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG2, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_POW10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_POW10) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG2, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4355 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_SQRT) { CASE_CFN_SQRT: x = build_real (type, dconsthalf); break; CASE_CFN_CBRT: x = build_real_truncate (type, dconst_third ()); break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4371, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = x; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG2, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_CBRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4355 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_CBRT) { CASE_CFN_SQRT: x = build_real (type, dconsthalf); break; CASE_CFN_CBRT: x = build_real_truncate (type, dconst_third ()); break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4371, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = x; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG2, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_POW: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_228 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LOG2, CFN_BUILT_IN_POW)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_LOG2L (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXP2L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4307, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; case CFN_BUILT_IN_EXPL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_EXPL) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG2L, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_EXP10L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_EXP10L) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG2L, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_POW10L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_POW10L) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG2L, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_SQRTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4355 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_SQRTL) { CASE_CFN_SQRT: x = build_real (type, dconsthalf); break; CASE_CFN_CBRT: x = build_real_truncate (type, dconst_third ()); break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4371, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = x; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG2L, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_CBRTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4355 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_CBRTL) { CASE_CFN_SQRT: x = build_real (type, dconsthalf); break; CASE_CFN_CBRT: x = build_real_truncate (type, dconst_third ()); break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4371, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = x; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG2L, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_POWL: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_228 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LOG2L, CFN_BUILT_IN_POWL)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_LOG2 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_EXP2: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4307, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; case CFN_EXP: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_EXP) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_LOG2, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_EXP10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_EXP10) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_LOG2, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4355 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_SQRT) { CASE_CFN_SQRT: x = build_real (type, dconsthalf); break; CASE_CFN_CBRT: x = build_real_truncate (type, dconst_third ()); break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4371, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = x; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_LOG2, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_POW: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_228 (res_op, seq, valueize, type, captures, CFN_LOG2, CFN_POW)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_LOG10F (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXP10F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4307, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; case CFN_BUILT_IN_POW10F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4307, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; case CFN_BUILT_IN_EXPF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_EXPF) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10F, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_EXP2F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_EXP2F) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10F, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_SQRTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4355 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_SQRTF) { CASE_CFN_SQRT: x = build_real (type, dconsthalf); break; CASE_CFN_CBRT: x = build_real_truncate (type, dconst_third ()); break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4371, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = x; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10F, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_CBRTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4355 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_CBRTF) { CASE_CFN_SQRT: x = build_real (type, dconsthalf); break; CASE_CFN_CBRT: x = build_real_truncate (type, dconst_third ()); break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4371, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = x; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10F, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_POWF: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_228 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LOG10F, CFN_BUILT_IN_POWF)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_LOG10 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXP10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4307, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; case CFN_BUILT_IN_POW10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4307, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; case CFN_BUILT_IN_EXP: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_EXP) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_EXP2: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_EXP2) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4355 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_SQRT) { CASE_CFN_SQRT: x = build_real (type, dconsthalf); break; CASE_CFN_CBRT: x = build_real_truncate (type, dconst_third ()); break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4371, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = x; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_CBRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4355 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_CBRT) { CASE_CFN_SQRT: x = build_real (type, dconsthalf); break; CASE_CFN_CBRT: x = build_real_truncate (type, dconst_third ()); break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4371, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = x; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_POW: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_228 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LOG10, CFN_BUILT_IN_POW)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_LOG10L (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXP10L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4307, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; case CFN_BUILT_IN_POW10L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4307, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; case CFN_BUILT_IN_EXPL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_EXPL) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10L, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_EXP2L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_EXP2L) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10L, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_SQRTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4355 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_SQRTL) { CASE_CFN_SQRT: x = build_real (type, dconsthalf); break; CASE_CFN_CBRT: x = build_real_truncate (type, dconst_third ()); break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4371, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = x; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10L, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_CBRTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4355 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_BUILT_IN_CBRTL) { CASE_CFN_SQRT: x = build_real (type, dconsthalf); break; CASE_CFN_CBRT: x = build_real_truncate (type, dconst_third ()); break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4371, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = x; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10L, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_BUILT_IN_POWL: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_228 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LOG10L, CFN_BUILT_IN_POWL)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_LOG10 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_EXP10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4307, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; case CFN_EXP: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_EXP) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_LOG10, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_EXP2: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4320 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4321 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_EXP2) { CASE_CFN_EXP: x = build_real_truncate (type, dconst_e ()); break; CASE_CFN_EXP2: x = build_real (type, dconst2); break; CASE_CFN_EXP10: CASE_CFN_POW10: { REAL_VALUE_TYPE dconst10; real_from_integer (&dconst10, VOIDmode, 10, SIGNED); x = build_real (type, dconst10); } break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4346, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = x; gimple_match_op tem_op (res_op->cond.any_else (), CFN_LOG10, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { { /* #line 4355 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree x; switch (CFN_SQRT) { CASE_CFN_SQRT: x = build_real (type, dconsthalf); break; CASE_CFN_CBRT: x = build_real_truncate (type, dconst_third ()); break; default: gcc_unreachable (); } gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4371, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = x; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_LOG10, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; case CFN_POW: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_228 (res_op, seq, valueize, type, captures, CFN_LOG10, CFN_POW)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_EXPF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_LOGF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4311, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_EXP (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_LOG: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4311, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_EXPL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_LOGL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4311, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_EXP (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_LOG: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4311, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_EXP2F (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_LOG2F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4311, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_EXP2 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_LOG2: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4311, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_EXP2L (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_LOG2L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4311, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_EXP2 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_LOG2: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4311, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_EXP10F (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_LOG10F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4311, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_EXP10 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_LOG10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4311, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_EXP10L (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_LOG10L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4311, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_EXP10 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_LOG10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4311, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_POW10F (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_LOG10F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4311, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_POW10 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_LOG10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4311, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_POW10L (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_LOG10L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4311, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_SQRTF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXPF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4435, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXPF, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP2F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4435, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP2F, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP10F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4435, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP10F, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POW10F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4435, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW10F, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_SQRTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4637, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWF, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (type, dconst_quarter ()); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_CBRTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4641, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWF, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real_truncate (type, dconst_sixth ()); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POWF: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4653, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWF, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_SQRT (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXP: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4435, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP2: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4435, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP2, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4435, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP10, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POW10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4435, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW10, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4637, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (type, dconst_quarter ()); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_CBRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4641, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real_truncate (type, dconst_sixth ()); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POW: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4653, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_SQRTL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXPL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4435, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXPL, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP2L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4435, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP2L, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP10L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4435, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP10L, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POW10L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4435, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW10L, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_SQRTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4637, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWL, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (type, dconst_quarter ()); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_CBRTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4641, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWL, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real_truncate (type, dconst_sixth ()); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POWL: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4653, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWL, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_SQRT (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_EXP: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4435, __FILE__, __LINE__); res_op->set_op (CFN_EXP, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_EXP2: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4435, __FILE__, __LINE__); res_op->set_op (CFN_EXP2, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_EXP10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4435, __FILE__, __LINE__); res_op->set_op (CFN_EXP10, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4637, __FILE__, __LINE__); res_op->set_op (CFN_POW, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (type, dconst_quarter ()); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_POW: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4653, __FILE__, __LINE__); res_op->set_op (CFN_POW, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), ABS_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_CBRTF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXPF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4439, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXPF, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real_truncate (type, dconst_third ()); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP2F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4439, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP2F, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real_truncate (type, dconst_third ()); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP10F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4439, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP10F, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real_truncate (type, dconst_third ()); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POW10F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4439, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW10F, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real_truncate (type, dconst_third ()); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_SQRTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4645, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWF, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real_truncate (type, dconst_sixth ()); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_CBRTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (tree_expr_nonnegative_p (o20)) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4649, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWF, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real_truncate (type, dconst_ninth ()); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; case CFN_BUILT_IN_POWF: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if (tree_expr_nonnegative_p (o20)) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4657, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWF, type, 2); res_op->ops[0] = captures[0]; { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = build_real_truncate (type, dconst_third ()); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_CBRT (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXP: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4439, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real_truncate (type, dconst_third ()); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP2: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4439, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP2, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real_truncate (type, dconst_third ()); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4439, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP10, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real_truncate (type, dconst_third ()); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POW10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4439, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW10, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real_truncate (type, dconst_third ()); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4645, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real_truncate (type, dconst_sixth ()); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_CBRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (tree_expr_nonnegative_p (o20)) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4649, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real_truncate (type, dconst_ninth ()); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; case CFN_BUILT_IN_POW: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if (tree_expr_nonnegative_p (o20)) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4657, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW, type, 2); res_op->ops[0] = captures[0]; { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = build_real_truncate (type, dconst_third ()); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_CBRTL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXPL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4439, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXPL, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real_truncate (type, dconst_third ()); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP2L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4439, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP2L, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real_truncate (type, dconst_third ()); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP10L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4439, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP10L, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real_truncate (type, dconst_third ()); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POW10L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4439, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW10L, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real_truncate (type, dconst_third ()); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_SQRTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4645, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWL, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real_truncate (type, dconst_sixth ()); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_CBRTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (tree_expr_nonnegative_p (o20)) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4649, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWL, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real_truncate (type, dconst_ninth ()); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; case CFN_BUILT_IN_POWL: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if (tree_expr_nonnegative_p (o20)) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4657, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWL, type, 2); res_op->ops[0] = captures[0]; { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = build_real_truncate (type, dconst_third ()); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_TANF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_ATANF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_308 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TANF, CFN_BUILT_IN_ATANF)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_TAN (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_ATAN: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_308 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TAN, CFN_BUILT_IN_ATAN)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_TANL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_ATANL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_308 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TANL, CFN_BUILT_IN_ATANL)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_TAN (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_ATAN: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_308 (res_op, seq, valueize, type, captures, CFN_TAN, CFN_ATAN)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_SINF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_ATANF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4459 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_216 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SINF, CFN_BUILT_IN_ATANF, CFN_BUILT_IN_SQRTF, CFN_BUILT_IN_COPYSIGNF)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_SIN (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_ATAN: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4459 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_216 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SIN, CFN_BUILT_IN_ATAN, CFN_BUILT_IN_SQRT, CFN_BUILT_IN_COPYSIGN)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_SINL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_ATANL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4459 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_216 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SINL, CFN_BUILT_IN_ATANL, CFN_BUILT_IN_SQRTL, CFN_BUILT_IN_COPYSIGNL)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_SIN (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_ATAN: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4459 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_216 (res_op, seq, valueize, type, captures, CFN_SIN, CFN_ATAN, CFN_SQRT, CFN_COPYSIGN)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_SINHF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_ATANHF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4491 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_224 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SINHF, CFN_BUILT_IN_ATANHF, CFN_BUILT_IN_SQRTF)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_SINH (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_ATANH: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4491 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_224 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SINH, CFN_BUILT_IN_ATANH, CFN_BUILT_IN_SQRT)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_SINHL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_ATANHL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4491 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_224 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SINHL, CFN_BUILT_IN_ATANHL, CFN_BUILT_IN_SQRTL)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_SINH (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_ATANH: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4491 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_224 (res_op, seq, valueize, type, captures, CFN_SINH, CFN_ATANH, CFN_SQRT)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_TRUNCF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_TRUNCF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCF)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCF)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_TRUNC (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_float_value_p (o20, valueize)) { { /* #line 4738 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_232 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNC, CFN_BUILT_IN_TRUNCF)) return true; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_TRUNC: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNC)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNC)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_TRUNCL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_double_value_p (o20, valueize)) { { /* #line 4716 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_261 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCL, CFN_BUILT_IN_TRUNC)) return true; } } if (gimple_float_value_p (o20, valueize)) { { /* #line 4738 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_232 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCL, CFN_BUILT_IN_TRUNCF)) return true; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_TRUNCL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCL)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCL)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_TRUNCF16 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_TRUNCF16: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCF16)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCF16)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_TRUNCF32 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_TRUNCF32: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCF32)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCF32)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_TRUNCF64 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_TRUNCF64: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCF64)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCF64)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_TRUNCF128 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_TRUNCF128: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCF128)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCF128)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_TRUNCF32X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_TRUNCF32X: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCF32X)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCF32X)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_TRUNCF64X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_TRUNCF64X: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCF64X)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCF64X)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_TRUNCF128X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_TRUNCF128X: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCF128X)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TRUNCF128X)) return true; } } return false; } static bool gimple_simplify_CFN_TRUNC (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_TRUNC: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_TRUNC)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_TRUNC)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_FLOORF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_FLOORF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF)) return true; } } if (tree_expr_nonnegative_p (op0)) { { /* #line 4692 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_313 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF, CFN_BUILT_IN_TRUNCF)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_FLOOR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_float_value_p (o20, valueize)) { { /* #line 4738 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_232 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_FLOORF)) return true; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_FLOOR: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOOR)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOOR)) return true; } } if (tree_expr_nonnegative_p (op0)) { { /* #line 4692 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_313 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOOR, CFN_BUILT_IN_TRUNC)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_FLOORL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_double_value_p (o20, valueize)) { { /* #line 4716 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_261 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_FLOOR)) return true; } } if (gimple_float_value_p (o20, valueize)) { { /* #line 4738 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_232 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_FLOORF)) return true; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_FLOORL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORL)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORL)) return true; } } if (tree_expr_nonnegative_p (op0)) { { /* #line 4692 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_313 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORL, CFN_BUILT_IN_TRUNCL)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_FLOORF16 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_FLOORF16: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF16)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF16)) return true; } } if (tree_expr_nonnegative_p (op0)) { { /* #line 4692 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_313 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF16, CFN_BUILT_IN_TRUNCF16)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_FLOORF32 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_FLOORF32: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF32)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF32)) return true; } } if (tree_expr_nonnegative_p (op0)) { { /* #line 4692 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_313 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF32, CFN_BUILT_IN_TRUNCF32)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_FLOORF64 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_FLOORF64: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF64)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF64)) return true; } } if (tree_expr_nonnegative_p (op0)) { { /* #line 4692 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_313 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF64, CFN_BUILT_IN_TRUNCF64)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_FLOORF128 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_FLOORF128: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF128)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF128)) return true; } } if (tree_expr_nonnegative_p (op0)) { { /* #line 4692 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_313 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF128, CFN_BUILT_IN_TRUNCF128)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_FLOORF32X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_FLOORF32X: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF32X)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF32X)) return true; } } if (tree_expr_nonnegative_p (op0)) { { /* #line 4692 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_313 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF32X, CFN_BUILT_IN_TRUNCF32X)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_FLOORF64X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_FLOORF64X: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF64X)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF64X)) return true; } } if (tree_expr_nonnegative_p (op0)) { { /* #line 4692 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_313 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF64X, CFN_BUILT_IN_TRUNCF64X)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_FLOORF128X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_FLOORF128X: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF128X)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF128X)) return true; } } if (tree_expr_nonnegative_p (op0)) { { /* #line 4692 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_313 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FLOORF128X, CFN_BUILT_IN_TRUNCF128X)) return true; } } return false; } static bool gimple_simplify_CFN_FLOOR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_FLOOR: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_FLOOR)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_FLOOR)) return true; } } if (tree_expr_nonnegative_p (op0)) { { /* #line 4692 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_313 (res_op, seq, valueize, type, captures, CFN_FLOOR, CFN_TRUNC)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_CEILF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_CEILF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_CEIL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_float_value_p (o20, valueize)) { { /* #line 4738 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_232 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEIL, CFN_BUILT_IN_CEILF)) return true; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_CEIL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEIL)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEIL)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_CEILL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_double_value_p (o20, valueize)) { { /* #line 4716 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_261 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILL, CFN_BUILT_IN_CEIL)) return true; } } if (gimple_float_value_p (o20, valueize)) { { /* #line 4738 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_232 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILL, CFN_BUILT_IN_CEILF)) return true; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_CEILL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILL)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILL)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_CEILF16 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_CEILF16: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF16)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF16)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_CEILF32 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_CEILF32: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF32)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF32)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_CEILF64 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_CEILF64: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF64)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF64)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_CEILF128 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_CEILF128: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF128)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF128)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_CEILF32X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_CEILF32X: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF32X)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF32X)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_CEILF64X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_CEILF64X: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF64X)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF64X)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_CEILF128X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_CEILF128X: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF128X)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_CEILF128X)) return true; } } return false; } static bool gimple_simplify_CFN_CEIL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_CEIL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_CEIL)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_CEIL)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_ROUNDF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_ROUNDF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDF)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDF)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_ROUND (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_float_value_p (o20, valueize)) { { /* #line 4738 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_232 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUND, CFN_BUILT_IN_ROUNDF)) return true; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_ROUND: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUND)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUND)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_ROUNDL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_double_value_p (o20, valueize)) { { /* #line 4716 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_261 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDL, CFN_BUILT_IN_ROUND)) return true; } } if (gimple_float_value_p (o20, valueize)) { { /* #line 4738 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_232 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDL, CFN_BUILT_IN_ROUNDF)) return true; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_ROUNDL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDL)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDL)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_ROUNDF16 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_ROUNDF16: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDF16)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDF16)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_ROUNDF32 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_ROUNDF32: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDF32)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDF32)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_ROUNDF64 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_ROUNDF64: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDF64)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDF64)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_ROUNDF128 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_ROUNDF128: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDF128)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDF128)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_ROUNDF32X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_ROUNDF32X: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDF32X)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDF32X)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_ROUNDF64X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_ROUNDF64X: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDF64X)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDF64X)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_ROUNDF128X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_ROUNDF128X: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDF128X)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ROUNDF128X)) return true; } } return false; } static bool gimple_simplify_CFN_ROUND (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_ROUND: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_ROUND)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_ROUND)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_NEARBYINTF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_NEARBYINTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_NEARBYINT (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_float_value_p (o20, valueize)) { { /* #line 4738 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_232 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINT, CFN_BUILT_IN_NEARBYINTF)) return true; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_NEARBYINT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINT)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINT)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_NEARBYINTL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_double_value_p (o20, valueize)) { { /* #line 4716 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_261 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTL, CFN_BUILT_IN_NEARBYINT)) return true; } } if (gimple_float_value_p (o20, valueize)) { { /* #line 4738 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_232 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTL, CFN_BUILT_IN_NEARBYINTF)) return true; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_NEARBYINTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTL)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTL)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_NEARBYINTF16 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_NEARBYINTF16: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF16)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF16)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_NEARBYINTF32 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_NEARBYINTF32: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF32)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF32)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_NEARBYINTF64 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_NEARBYINTF64: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF64)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF64)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_NEARBYINTF128 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_NEARBYINTF128: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF128)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF128)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_NEARBYINTF32X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_NEARBYINTF32X: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF32X)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF32X)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_NEARBYINTF64X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_NEARBYINTF64X: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF64X)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF64X)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_NEARBYINTF128X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_NEARBYINTF128X: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF128X)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_NEARBYINTF128X)) return true; } } return false; } static bool gimple_simplify_CFN_NEARBYINT (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_NEARBYINT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_NEARBYINT)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_NEARBYINT)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_RINTF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_RINTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_RINT (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_float_value_p (o20, valueize)) { { /* #line 4738 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_232 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINT, CFN_BUILT_IN_RINTF)) return true; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_RINT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINT)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINT)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_RINTL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_double_value_p (o20, valueize)) { { /* #line 4716 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_261 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTL, CFN_BUILT_IN_RINT)) return true; } } if (gimple_float_value_p (o20, valueize)) { { /* #line 4738 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_232 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTL, CFN_BUILT_IN_RINTF)) return true; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_RINTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTL)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTL)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_RINTF16 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_RINTF16: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF16)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF16)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_RINTF32 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_RINTF32: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF32)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF32)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_RINTF64 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_RINTF64: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF64)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF64)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_RINTF128 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_RINTF128: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF128)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF128)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_RINTF32X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_RINTF32X: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF32X)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF32X)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_RINTF64X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_RINTF64X: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF64X)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF64X)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_RINTF128X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_RINTF128X: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF128X)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_RINTF128X)) return true; } } return false; } static bool gimple_simplify_CFN_RINT (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_RINT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4519 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_173 (res_op, seq, valueize, type, captures, CFN_RINT)) return true; } } break; default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4524 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_235 (res_op, seq, valueize, type, captures, CFN_RINT)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_CEXPF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { if (gimple_compositional_complex (op0, valueize)) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { /* #line 4687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (targetm.libc_has_function (function_c99_math_complex)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4688, __FILE__, __LINE__); res_op->set_op (COMPLEX_EXPR, type, 2); { tree ops1[2], res; { tree ops2[1], res; { tree ops3[1], res; ops3[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (ops3[0])), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXPF, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; captures[1] = res; } ops1[0] = captures[1]; { tree ops2[1], res; { tree ops3[1], res; { tree ops4[1], res; ops4[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops4[0])), ops4[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops3[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_CEXPIF, type, ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; captures[2] = res; } ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } { tree ops1[2], res; ops1[0] = captures[1]; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_CEXP (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { if (gimple_compositional_complex (op0, valueize)) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { /* #line 4687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (targetm.libc_has_function (function_c99_math_complex)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4688, __FILE__, __LINE__); res_op->set_op (COMPLEX_EXPR, type, 2); { tree ops1[2], res; { tree ops2[1], res; { tree ops3[1], res; ops3[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (ops3[0])), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXP, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; captures[1] = res; } ops1[0] = captures[1]; { tree ops2[1], res; { tree ops3[1], res; { tree ops4[1], res; ops4[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops4[0])), ops4[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops3[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_CEXPI, type, ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; captures[2] = res; } ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } { tree ops1[2], res; ops1[0] = captures[1]; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_CEXPL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { if (gimple_compositional_complex (op0, valueize)) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { /* #line 4687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (targetm.libc_has_function (function_c99_math_complex)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4688, __FILE__, __LINE__); res_op->set_op (COMPLEX_EXPR, type, 2); { tree ops1[2], res; { tree ops2[1], res; { tree ops3[1], res; ops3[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (ops3[0])), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXPL, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; captures[1] = res; } ops1[0] = captures[1]; { tree ops2[1], res; { tree ops3[1], res; { tree ops4[1], res; ops4[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops4[0])), ops4[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops3[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_CEXPIL, type, ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; captures[2] = res; } ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } { tree ops1[2], res; ops1[0] = captures[1]; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops2[0])), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_IFLOORL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_double_value_p (o20, valueize)) { { /* #line 4747 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_285 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_IFLOORL, CFN_BUILT_IN_IFLOOR)) return true; } } if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_IFLOORL, CFN_BUILT_IN_IFLOORF)) return true; } } break; } default:; } } break; default:; } if (tree_expr_nonnegative_p (op0)) { { /* #line 4762 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4762 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4767, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4790 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4794, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LFLOORL, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LFLOORL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_double_value_p (o20, valueize)) { { /* #line 4747 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_285 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LFLOORL, CFN_BUILT_IN_LFLOOR)) return true; } } if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LFLOORL, CFN_BUILT_IN_LFLOORF)) return true; } } break; } default:; } } break; default:; } if (tree_expr_nonnegative_p (op0)) { { /* #line 4762 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4762 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4767, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LLFLOORL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_double_value_p (o20, valueize)) { { /* #line 4747 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_285 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LLFLOORL, CFN_BUILT_IN_LLFLOOR)) return true; } } if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LLFLOORL, CFN_BUILT_IN_LLFLOORF)) return true; } } break; } default:; } } break; default:; } if (tree_expr_nonnegative_p (op0)) { { /* #line 4762 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4762 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4767, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4797 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (long_long_integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4801, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LFLOORL, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_ICEILL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_double_value_p (o20, valueize)) { { /* #line 4747 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_285 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ICEILL, CFN_BUILT_IN_ICEIL)) return true; } } if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ICEILL, CFN_BUILT_IN_ICEILF)) return true; } } break; } default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4790 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4794, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LCEILL, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LCEILL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_double_value_p (o20, valueize)) { { /* #line 4747 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_285 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LCEILL, CFN_BUILT_IN_LCEIL)) return true; } } if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LCEILL, CFN_BUILT_IN_LCEILF)) return true; } } break; } default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LLCEILL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_double_value_p (o20, valueize)) { { /* #line 4747 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_285 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LLCEILL, CFN_BUILT_IN_LLCEIL)) return true; } } if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LLCEILL, CFN_BUILT_IN_LLCEILF)) return true; } } break; } default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4797 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (long_long_integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4801, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LCEILL, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_IROUNDL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_double_value_p (o20, valueize)) { { /* #line 4747 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_285 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_IROUNDL, CFN_BUILT_IN_IROUND)) return true; } } if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_IROUNDL, CFN_BUILT_IN_IROUNDF)) return true; } } break; } default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4790 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4794, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LROUNDL, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LROUNDL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_double_value_p (o20, valueize)) { { /* #line 4747 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_285 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LROUNDL, CFN_BUILT_IN_LROUND)) return true; } } if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LROUNDL, CFN_BUILT_IN_LROUNDF)) return true; } } break; } default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LLROUNDL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_double_value_p (o20, valueize)) { { /* #line 4747 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_285 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LLROUNDL, CFN_BUILT_IN_LLROUND)) return true; } } if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LLROUNDL, CFN_BUILT_IN_LLROUNDF)) return true; } } break; } default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4797 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (long_long_integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4801, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LROUNDL, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_IRINTL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_double_value_p (o20, valueize)) { { /* #line 4747 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_285 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_IRINTL, CFN_BUILT_IN_IRINT)) return true; } } if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_IRINTL, CFN_BUILT_IN_IRINTF)) return true; } } break; } default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4777 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!flag_errno_math) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4782, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4790 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4794, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LRINTL, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LRINTL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_double_value_p (o20, valueize)) { { /* #line 4747 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_285 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LRINTL, CFN_BUILT_IN_LRINT)) return true; } } if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LRINTL, CFN_BUILT_IN_LRINTF)) return true; } } break; } default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4777 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!flag_errno_math) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4782, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LLRINTL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_double_value_p (o20, valueize)) { { /* #line 4747 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_285 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LLRINTL, CFN_BUILT_IN_LLRINT)) return true; } } if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LLRINTL, CFN_BUILT_IN_LLRINTF)) return true; } } break; } default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4777 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!flag_errno_math) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4782, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4797 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (long_long_integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4801, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LRINTL, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_IFLOOR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_IFLOOR, CFN_BUILT_IN_IFLOORF)) return true; } } break; } default:; } } break; default:; } if (tree_expr_nonnegative_p (op0)) { { /* #line 4762 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4762 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4767, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4790 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4794, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LFLOOR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LFLOOR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LFLOOR, CFN_BUILT_IN_LFLOORF)) return true; } } break; } default:; } } break; default:; } if (tree_expr_nonnegative_p (op0)) { { /* #line 4762 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4762 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4767, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LLFLOOR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LLFLOOR, CFN_BUILT_IN_LLFLOORF)) return true; } } break; } default:; } } break; default:; } if (tree_expr_nonnegative_p (op0)) { { /* #line 4762 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4762 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4767, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4797 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (long_long_integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4801, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LFLOOR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_ICEIL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_ICEIL, CFN_BUILT_IN_ICEILF)) return true; } } break; } default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4790 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4794, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LCEIL, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LCEIL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LCEIL, CFN_BUILT_IN_LCEILF)) return true; } } break; } default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LLCEIL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LLCEIL, CFN_BUILT_IN_LLCEILF)) return true; } } break; } default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4797 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (long_long_integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4801, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LCEIL, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_IROUND (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_IROUND, CFN_BUILT_IN_IROUNDF)) return true; } } break; } default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4790 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4794, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LROUND, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LROUND (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LROUND, CFN_BUILT_IN_LROUNDF)) return true; } } break; } default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LLROUND (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LLROUND, CFN_BUILT_IN_LLROUNDF)) return true; } } break; } default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4797 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (long_long_integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4801, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LROUND, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_IRINT (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_IRINT, CFN_BUILT_IN_IRINTF)) return true; } } break; } default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4777 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!flag_errno_math) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4782, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4790 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4794, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LRINT, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LRINT (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LRINT, CFN_BUILT_IN_LRINTF)) return true; } } break; } default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4777 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!flag_errno_math) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4782, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LLRINT (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (gimple_float_value_p (o20, valueize)) { { /* #line 4757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_37 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_LLRINT, CFN_BUILT_IN_LLRINTF)) return true; } } break; } default:; } } break; default:; } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4777 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!flag_errno_math) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4782, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4797 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (long_long_integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4801, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LRINT, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_IFLOORF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { if (tree_expr_nonnegative_p (op0)) { { /* #line 4762 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4762 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4767, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4790 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4794, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LFLOORF, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LFLOORF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { if (tree_expr_nonnegative_p (op0)) { { /* #line 4762 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4762 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4767, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LLFLOORF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { if (tree_expr_nonnegative_p (op0)) { { /* #line 4762 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4762 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4767, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4797 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (long_long_integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4801, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LFLOORF, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_ICEILF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4790 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4794, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LCEILF, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LCEILF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LLCEILF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4797 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (long_long_integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4801, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LCEILF, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_IROUNDF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4790 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4794, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LROUNDF, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LROUNDF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LLROUNDF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4776, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4797 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (long_long_integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4801, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LROUNDF, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_IRINTF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4777 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!flag_errno_math) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4782, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4790 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4794, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LRINTF, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LRINTF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4777 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!flag_errno_math) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4782, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_LLRINTF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { if (integer_valued_real_p (op0)) { { /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4769 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4777 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!flag_errno_math) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4782, __FILE__, __LINE__); res_op->set_op (FIX_TRUNC_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } { /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_p ()) { /* #line 4797 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (long_long_integer_type_node) == TYPE_PRECISION (long_integer_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4801, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_LRINTF, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } return false; } static bool gimple_simplify_CFN_BUILT_IN_CPROJF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { { /* #line 4806 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4806 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_INFINITIES (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4807, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case COMPLEX_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case REAL_CST: { if (tree_expr_nonnegative_p (o21)) { { /* #line 4813 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 4813 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_isinf (TREE_REAL_CST_PTR (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4814, __FILE__, __LINE__); tree tem; tem = build_complex_inf (type, false); res_op->set_value (tem); return true; } } } break; } default:; } switch (TREE_CODE (o21)) { case REAL_CST: { { /* #line 4819 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 4819 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_isinf (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4820, __FILE__, __LINE__); tree tem; tem = build_complex_inf (type, TREE_REAL_CST_PTR (captures[1])->sign); res_op->set_value (tem); return true; } } break; } default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_CPROJ (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { { /* #line 4806 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4806 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_INFINITIES (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4807, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case COMPLEX_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case REAL_CST: { if (tree_expr_nonnegative_p (o21)) { { /* #line 4813 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 4813 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_isinf (TREE_REAL_CST_PTR (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4814, __FILE__, __LINE__); tree tem; tem = build_complex_inf (type, false); res_op->set_value (tem); return true; } } } break; } default:; } switch (TREE_CODE (o21)) { case REAL_CST: { { /* #line 4819 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 4819 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_isinf (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4820, __FILE__, __LINE__); tree tem; tem = build_complex_inf (type, TREE_REAL_CST_PTR (captures[1])->sign); res_op->set_value (tem); return true; } } break; } default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_CPROJL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { { /* #line 4806 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4806 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_INFINITIES (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4807, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case COMPLEX_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case REAL_CST: { if (tree_expr_nonnegative_p (o21)) { { /* #line 4813 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 4813 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_isinf (TREE_REAL_CST_PTR (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4814, __FILE__, __LINE__); tree tem; tem = build_complex_inf (type, false); res_op->set_value (tem); return true; } } } break; } default:; } switch (TREE_CODE (o21)) { case REAL_CST: { { /* #line 4819 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 4819 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_isinf (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4820, __FILE__, __LINE__); tree tem; tem = build_complex_inf (type, TREE_REAL_CST_PTR (captures[1])->sign); res_op->set_value (tem); return true; } } break; } default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_SIGNBITF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { if (tree_expr_nonnegative_p (op0)) { { /* #line 4957 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4957, __FILE__, __LINE__); tree tem; tem = integer_zero_node; res_op->set_value (tem); return true; } } { /* #line 4962 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4962 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_SIGNED_ZEROS (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4963, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (TREE_TYPE (captures[0]), dconst0); gimple_match_op tem_op (res_op->cond.any_else (), LT_EXPR, boolean_type_node, ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_SIGNBIT (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { if (tree_expr_nonnegative_p (op0)) { { /* #line 4957 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4957, __FILE__, __LINE__); tree tem; tem = integer_zero_node; res_op->set_value (tem); return true; } } { /* #line 4962 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4962 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_SIGNED_ZEROS (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4963, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (TREE_TYPE (captures[0]), dconst0); gimple_match_op tem_op (res_op->cond.any_else (), LT_EXPR, boolean_type_node, ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_SIGNBITL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { if (tree_expr_nonnegative_p (op0)) { { /* #line 4957 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4957, __FILE__, __LINE__); tree tem; tem = integer_zero_node; res_op->set_value (tem); return true; } } { /* #line 4962 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4962 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_SIGNED_ZEROS (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4963, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = build_real (TREE_TYPE (captures[0]), dconst0); gimple_match_op tem_op (res_op->cond.any_else (), LT_EXPR, boolean_type_node, ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_POPCOUNT (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { { /* #line 5211 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_291 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POPCOUNT)) return true; } return false; } static bool gimple_simplify_CFN_BUILT_IN_POPCOUNTL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { { /* #line 5211 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_291 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POPCOUNTL)) return true; } return false; } static bool gimple_simplify_CFN_BUILT_IN_POPCOUNTLL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { { /* #line 5211 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_291 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POPCOUNTLL)) return true; } return false; } static bool gimple_simplify_CFN_BUILT_IN_POPCOUNTIMAX (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { { /* #line 5211 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_291 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POPCOUNTIMAX)) return true; } return false; } static bool gimple_simplify_CFN_REDUC_PLUS (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VIEW_CONVERT_EXPR: { tree o20 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o20) == SSA_NAME || is_gimple_min_invariant (o20))) { o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case VECTOR_CST: { { /* #line 5370 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o31 }; if (gimple_simplify_169 (res_op, seq, valueize, type, captures, CFN_REDUC_PLUS)) return true; } break; } default:; } break; } default:; } } break; default:; } } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case VECTOR_CST: { { /* #line 5370 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_169 (res_op, seq, valueize, type, captures, CFN_REDUC_PLUS)) return true; } break; } default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_REDUC_IOR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VIEW_CONVERT_EXPR: { tree o20 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o20) == SSA_NAME || is_gimple_min_invariant (o20))) { o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case VECTOR_CST: { { /* #line 5370 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o31 }; if (gimple_simplify_169 (res_op, seq, valueize, type, captures, CFN_REDUC_IOR)) return true; } break; } default:; } break; } default:; } } break; default:; } } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case VECTOR_CST: { { /* #line 5370 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_169 (res_op, seq, valueize, type, captures, CFN_REDUC_IOR)) return true; } break; } default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_REDUC_XOR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VIEW_CONVERT_EXPR: { tree o20 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o20) == SSA_NAME || is_gimple_min_invariant (o20))) { o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case VECTOR_CST: { { /* #line 5370 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o31 }; if (gimple_simplify_169 (res_op, seq, valueize, type, captures, CFN_REDUC_XOR)) return true; } break; } default:; } break; } default:; } } break; default:; } } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case VECTOR_CST: { { /* #line 5370 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_169 (res_op, seq, valueize, type, captures, CFN_REDUC_XOR)) return true; } break; } default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper code, const tree type, tree op0) { switch (code.get_rep()) { case ABS_EXPR: return gimple_simplify_ABS_EXPR (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_COSF: return gimple_simplify_CFN_BUILT_IN_COSF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_COS: return gimple_simplify_CFN_BUILT_IN_COS (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_COSL: return gimple_simplify_CFN_BUILT_IN_COSL (res_op, seq, valueize, code, type, op0); case -CFN_COS: return gimple_simplify_CFN_COS (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_COSHF: return gimple_simplify_CFN_BUILT_IN_COSHF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_COSH: return gimple_simplify_CFN_BUILT_IN_COSH (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_COSHL: return gimple_simplify_CFN_BUILT_IN_COSHL (res_op, seq, valueize, code, type, op0); case -CFN_COSH: return gimple_simplify_CFN_COSH (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CCOSF: return gimple_simplify_CFN_BUILT_IN_CCOSF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CCOS: return gimple_simplify_CFN_BUILT_IN_CCOS (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CCOSL: return gimple_simplify_CFN_BUILT_IN_CCOSL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CCOSHF: return gimple_simplify_CFN_BUILT_IN_CCOSHF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CCOSH: return gimple_simplify_CFN_BUILT_IN_CCOSH (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CCOSHL: return gimple_simplify_CFN_BUILT_IN_CCOSHL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CABSF: return gimple_simplify_CFN_BUILT_IN_CABSF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CABS: return gimple_simplify_CFN_BUILT_IN_CABS (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CABSL: return gimple_simplify_CFN_BUILT_IN_CABSL (res_op, seq, valueize, code, type, op0); case BIT_NOT_EXPR: return gimple_simplify_BIT_NOT_EXPR (res_op, seq, valueize, code, type, op0); case ABSU_EXPR: return gimple_simplify_ABSU_EXPR (res_op, seq, valueize, code, type, op0); case NEGATE_EXPR: return gimple_simplify_NEGATE_EXPR (res_op, seq, valueize, code, type, op0); CASE_CONVERT: return gimple_simplify_CONVERT_EXPR (res_op, seq, valueize, code, type, op0); case VIEW_CONVERT_EXPR: return gimple_simplify_VIEW_CONVERT_EXPR (res_op, seq, valueize, code, type, op0); case FLOAT_EXPR: return gimple_simplify_FLOAT_EXPR (res_op, seq, valueize, code, type, op0); case FIX_TRUNC_EXPR: return gimple_simplify_FIX_TRUNC_EXPR (res_op, seq, valueize, code, type, op0); case PAREN_EXPR: return gimple_simplify_PAREN_EXPR (res_op, seq, valueize, code, type, op0); case REALPART_EXPR: return gimple_simplify_REALPART_EXPR (res_op, seq, valueize, code, type, op0); case IMAGPART_EXPR: return gimple_simplify_IMAGPART_EXPR (res_op, seq, valueize, code, type, op0); case CONJ_EXPR: return gimple_simplify_CONJ_EXPR (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_BSWAP16: return gimple_simplify_CFN_BUILT_IN_BSWAP16 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_BSWAP32: return gimple_simplify_CFN_BUILT_IN_BSWAP32 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_BSWAP64: return gimple_simplify_CFN_BUILT_IN_BSWAP64 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LOGF: return gimple_simplify_CFN_BUILT_IN_LOGF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LOG: return gimple_simplify_CFN_BUILT_IN_LOG (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LOGL: return gimple_simplify_CFN_BUILT_IN_LOGL (res_op, seq, valueize, code, type, op0); case -CFN_LOG: return gimple_simplify_CFN_LOG (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LOG2F: return gimple_simplify_CFN_BUILT_IN_LOG2F (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LOG2: return gimple_simplify_CFN_BUILT_IN_LOG2 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LOG2L: return gimple_simplify_CFN_BUILT_IN_LOG2L (res_op, seq, valueize, code, type, op0); case -CFN_LOG2: return gimple_simplify_CFN_LOG2 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LOG10F: return gimple_simplify_CFN_BUILT_IN_LOG10F (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LOG10: return gimple_simplify_CFN_BUILT_IN_LOG10 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LOG10L: return gimple_simplify_CFN_BUILT_IN_LOG10L (res_op, seq, valueize, code, type, op0); case -CFN_LOG10: return gimple_simplify_CFN_LOG10 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_EXPF: return gimple_simplify_CFN_BUILT_IN_EXPF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_EXP: return gimple_simplify_CFN_BUILT_IN_EXP (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_EXPL: return gimple_simplify_CFN_BUILT_IN_EXPL (res_op, seq, valueize, code, type, op0); case -CFN_EXP: return gimple_simplify_CFN_EXP (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_EXP2F: return gimple_simplify_CFN_BUILT_IN_EXP2F (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_EXP2: return gimple_simplify_CFN_BUILT_IN_EXP2 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_EXP2L: return gimple_simplify_CFN_BUILT_IN_EXP2L (res_op, seq, valueize, code, type, op0); case -CFN_EXP2: return gimple_simplify_CFN_EXP2 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_EXP10F: return gimple_simplify_CFN_BUILT_IN_EXP10F (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_EXP10: return gimple_simplify_CFN_BUILT_IN_EXP10 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_EXP10L: return gimple_simplify_CFN_BUILT_IN_EXP10L (res_op, seq, valueize, code, type, op0); case -CFN_EXP10: return gimple_simplify_CFN_EXP10 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_POW10F: return gimple_simplify_CFN_BUILT_IN_POW10F (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_POW10: return gimple_simplify_CFN_BUILT_IN_POW10 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_POW10L: return gimple_simplify_CFN_BUILT_IN_POW10L (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_SQRTF: return gimple_simplify_CFN_BUILT_IN_SQRTF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_SQRT: return gimple_simplify_CFN_BUILT_IN_SQRT (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_SQRTL: return gimple_simplify_CFN_BUILT_IN_SQRTL (res_op, seq, valueize, code, type, op0); case -CFN_SQRT: return gimple_simplify_CFN_SQRT (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CBRTF: return gimple_simplify_CFN_BUILT_IN_CBRTF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CBRT: return gimple_simplify_CFN_BUILT_IN_CBRT (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CBRTL: return gimple_simplify_CFN_BUILT_IN_CBRTL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_TANF: return gimple_simplify_CFN_BUILT_IN_TANF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_TAN: return gimple_simplify_CFN_BUILT_IN_TAN (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_TANL: return gimple_simplify_CFN_BUILT_IN_TANL (res_op, seq, valueize, code, type, op0); case -CFN_TAN: return gimple_simplify_CFN_TAN (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_SINF: return gimple_simplify_CFN_BUILT_IN_SINF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_SIN: return gimple_simplify_CFN_BUILT_IN_SIN (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_SINL: return gimple_simplify_CFN_BUILT_IN_SINL (res_op, seq, valueize, code, type, op0); case -CFN_SIN: return gimple_simplify_CFN_SIN (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_SINHF: return gimple_simplify_CFN_BUILT_IN_SINHF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_SINH: return gimple_simplify_CFN_BUILT_IN_SINH (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_SINHL: return gimple_simplify_CFN_BUILT_IN_SINHL (res_op, seq, valueize, code, type, op0); case -CFN_SINH: return gimple_simplify_CFN_SINH (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_TRUNCF: return gimple_simplify_CFN_BUILT_IN_TRUNCF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_TRUNC: return gimple_simplify_CFN_BUILT_IN_TRUNC (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_TRUNCL: return gimple_simplify_CFN_BUILT_IN_TRUNCL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_TRUNCF16: return gimple_simplify_CFN_BUILT_IN_TRUNCF16 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_TRUNCF32: return gimple_simplify_CFN_BUILT_IN_TRUNCF32 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_TRUNCF64: return gimple_simplify_CFN_BUILT_IN_TRUNCF64 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_TRUNCF128: return gimple_simplify_CFN_BUILT_IN_TRUNCF128 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_TRUNCF32X: return gimple_simplify_CFN_BUILT_IN_TRUNCF32X (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_TRUNCF64X: return gimple_simplify_CFN_BUILT_IN_TRUNCF64X (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_TRUNCF128X: return gimple_simplify_CFN_BUILT_IN_TRUNCF128X (res_op, seq, valueize, code, type, op0); case -CFN_TRUNC: return gimple_simplify_CFN_TRUNC (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_FLOORF: return gimple_simplify_CFN_BUILT_IN_FLOORF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_FLOOR: return gimple_simplify_CFN_BUILT_IN_FLOOR (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_FLOORL: return gimple_simplify_CFN_BUILT_IN_FLOORL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_FLOORF16: return gimple_simplify_CFN_BUILT_IN_FLOORF16 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_FLOORF32: return gimple_simplify_CFN_BUILT_IN_FLOORF32 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_FLOORF64: return gimple_simplify_CFN_BUILT_IN_FLOORF64 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_FLOORF128: return gimple_simplify_CFN_BUILT_IN_FLOORF128 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_FLOORF32X: return gimple_simplify_CFN_BUILT_IN_FLOORF32X (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_FLOORF64X: return gimple_simplify_CFN_BUILT_IN_FLOORF64X (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_FLOORF128X: return gimple_simplify_CFN_BUILT_IN_FLOORF128X (res_op, seq, valueize, code, type, op0); case -CFN_FLOOR: return gimple_simplify_CFN_FLOOR (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CEILF: return gimple_simplify_CFN_BUILT_IN_CEILF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CEIL: return gimple_simplify_CFN_BUILT_IN_CEIL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CEILL: return gimple_simplify_CFN_BUILT_IN_CEILL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CEILF16: return gimple_simplify_CFN_BUILT_IN_CEILF16 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CEILF32: return gimple_simplify_CFN_BUILT_IN_CEILF32 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CEILF64: return gimple_simplify_CFN_BUILT_IN_CEILF64 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CEILF128: return gimple_simplify_CFN_BUILT_IN_CEILF128 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CEILF32X: return gimple_simplify_CFN_BUILT_IN_CEILF32X (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CEILF64X: return gimple_simplify_CFN_BUILT_IN_CEILF64X (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CEILF128X: return gimple_simplify_CFN_BUILT_IN_CEILF128X (res_op, seq, valueize, code, type, op0); case -CFN_CEIL: return gimple_simplify_CFN_CEIL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_ROUNDF: return gimple_simplify_CFN_BUILT_IN_ROUNDF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_ROUND: return gimple_simplify_CFN_BUILT_IN_ROUND (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_ROUNDL: return gimple_simplify_CFN_BUILT_IN_ROUNDL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_ROUNDF16: return gimple_simplify_CFN_BUILT_IN_ROUNDF16 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_ROUNDF32: return gimple_simplify_CFN_BUILT_IN_ROUNDF32 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_ROUNDF64: return gimple_simplify_CFN_BUILT_IN_ROUNDF64 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_ROUNDF128: return gimple_simplify_CFN_BUILT_IN_ROUNDF128 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_ROUNDF32X: return gimple_simplify_CFN_BUILT_IN_ROUNDF32X (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_ROUNDF64X: return gimple_simplify_CFN_BUILT_IN_ROUNDF64X (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_ROUNDF128X: return gimple_simplify_CFN_BUILT_IN_ROUNDF128X (res_op, seq, valueize, code, type, op0); case -CFN_ROUND: return gimple_simplify_CFN_ROUND (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_NEARBYINTF: return gimple_simplify_CFN_BUILT_IN_NEARBYINTF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_NEARBYINT: return gimple_simplify_CFN_BUILT_IN_NEARBYINT (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_NEARBYINTL: return gimple_simplify_CFN_BUILT_IN_NEARBYINTL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_NEARBYINTF16: return gimple_simplify_CFN_BUILT_IN_NEARBYINTF16 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_NEARBYINTF32: return gimple_simplify_CFN_BUILT_IN_NEARBYINTF32 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_NEARBYINTF64: return gimple_simplify_CFN_BUILT_IN_NEARBYINTF64 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_NEARBYINTF128: return gimple_simplify_CFN_BUILT_IN_NEARBYINTF128 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_NEARBYINTF32X: return gimple_simplify_CFN_BUILT_IN_NEARBYINTF32X (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_NEARBYINTF64X: return gimple_simplify_CFN_BUILT_IN_NEARBYINTF64X (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_NEARBYINTF128X: return gimple_simplify_CFN_BUILT_IN_NEARBYINTF128X (res_op, seq, valueize, code, type, op0); case -CFN_NEARBYINT: return gimple_simplify_CFN_NEARBYINT (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_RINTF: return gimple_simplify_CFN_BUILT_IN_RINTF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_RINT: return gimple_simplify_CFN_BUILT_IN_RINT (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_RINTL: return gimple_simplify_CFN_BUILT_IN_RINTL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_RINTF16: return gimple_simplify_CFN_BUILT_IN_RINTF16 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_RINTF32: return gimple_simplify_CFN_BUILT_IN_RINTF32 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_RINTF64: return gimple_simplify_CFN_BUILT_IN_RINTF64 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_RINTF128: return gimple_simplify_CFN_BUILT_IN_RINTF128 (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_RINTF32X: return gimple_simplify_CFN_BUILT_IN_RINTF32X (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_RINTF64X: return gimple_simplify_CFN_BUILT_IN_RINTF64X (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_RINTF128X: return gimple_simplify_CFN_BUILT_IN_RINTF128X (res_op, seq, valueize, code, type, op0); case -CFN_RINT: return gimple_simplify_CFN_RINT (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CEXPF: return gimple_simplify_CFN_BUILT_IN_CEXPF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CEXP: return gimple_simplify_CFN_BUILT_IN_CEXP (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CEXPL: return gimple_simplify_CFN_BUILT_IN_CEXPL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_IFLOORL: return gimple_simplify_CFN_BUILT_IN_IFLOORL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LFLOORL: return gimple_simplify_CFN_BUILT_IN_LFLOORL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LLFLOORL: return gimple_simplify_CFN_BUILT_IN_LLFLOORL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_ICEILL: return gimple_simplify_CFN_BUILT_IN_ICEILL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LCEILL: return gimple_simplify_CFN_BUILT_IN_LCEILL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LLCEILL: return gimple_simplify_CFN_BUILT_IN_LLCEILL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_IROUNDL: return gimple_simplify_CFN_BUILT_IN_IROUNDL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LROUNDL: return gimple_simplify_CFN_BUILT_IN_LROUNDL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LLROUNDL: return gimple_simplify_CFN_BUILT_IN_LLROUNDL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_IRINTL: return gimple_simplify_CFN_BUILT_IN_IRINTL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LRINTL: return gimple_simplify_CFN_BUILT_IN_LRINTL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LLRINTL: return gimple_simplify_CFN_BUILT_IN_LLRINTL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_IFLOOR: return gimple_simplify_CFN_BUILT_IN_IFLOOR (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LFLOOR: return gimple_simplify_CFN_BUILT_IN_LFLOOR (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LLFLOOR: return gimple_simplify_CFN_BUILT_IN_LLFLOOR (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_ICEIL: return gimple_simplify_CFN_BUILT_IN_ICEIL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LCEIL: return gimple_simplify_CFN_BUILT_IN_LCEIL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LLCEIL: return gimple_simplify_CFN_BUILT_IN_LLCEIL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_IROUND: return gimple_simplify_CFN_BUILT_IN_IROUND (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LROUND: return gimple_simplify_CFN_BUILT_IN_LROUND (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LLROUND: return gimple_simplify_CFN_BUILT_IN_LLROUND (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_IRINT: return gimple_simplify_CFN_BUILT_IN_IRINT (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LRINT: return gimple_simplify_CFN_BUILT_IN_LRINT (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LLRINT: return gimple_simplify_CFN_BUILT_IN_LLRINT (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_IFLOORF: return gimple_simplify_CFN_BUILT_IN_IFLOORF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LFLOORF: return gimple_simplify_CFN_BUILT_IN_LFLOORF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LLFLOORF: return gimple_simplify_CFN_BUILT_IN_LLFLOORF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_ICEILF: return gimple_simplify_CFN_BUILT_IN_ICEILF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LCEILF: return gimple_simplify_CFN_BUILT_IN_LCEILF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LLCEILF: return gimple_simplify_CFN_BUILT_IN_LLCEILF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_IROUNDF: return gimple_simplify_CFN_BUILT_IN_IROUNDF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LROUNDF: return gimple_simplify_CFN_BUILT_IN_LROUNDF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LLROUNDF: return gimple_simplify_CFN_BUILT_IN_LLROUNDF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_IRINTF: return gimple_simplify_CFN_BUILT_IN_IRINTF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LRINTF: return gimple_simplify_CFN_BUILT_IN_LRINTF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_LLRINTF: return gimple_simplify_CFN_BUILT_IN_LLRINTF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CPROJF: return gimple_simplify_CFN_BUILT_IN_CPROJF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CPROJ: return gimple_simplify_CFN_BUILT_IN_CPROJ (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_CPROJL: return gimple_simplify_CFN_BUILT_IN_CPROJL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_SIGNBITF: return gimple_simplify_CFN_BUILT_IN_SIGNBITF (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_SIGNBIT: return gimple_simplify_CFN_BUILT_IN_SIGNBIT (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_SIGNBITL: return gimple_simplify_CFN_BUILT_IN_SIGNBITL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_POPCOUNT: return gimple_simplify_CFN_BUILT_IN_POPCOUNT (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_POPCOUNTL: return gimple_simplify_CFN_BUILT_IN_POPCOUNTL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_POPCOUNTLL: return gimple_simplify_CFN_BUILT_IN_POPCOUNTLL (res_op, seq, valueize, code, type, op0); case -CFN_BUILT_IN_POPCOUNTIMAX: return gimple_simplify_CFN_BUILT_IN_POPCOUNTIMAX (res_op, seq, valueize, code, type, op0); case -CFN_REDUC_PLUS: return gimple_simplify_CFN_REDUC_PLUS (res_op, seq, valueize, code, type, op0); case -CFN_REDUC_IOR: return gimple_simplify_CFN_REDUC_IOR (res_op, seq, valueize, code, type, op0); case -CFN_REDUC_XOR: return gimple_simplify_CFN_REDUC_XOR (res_op, seq, valueize, code, type, op0); default:; } return false; } static bool gimple_simplify_PLUS_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (integer_zerop (op1)) { { /* #line 130 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 130, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } if (real_zerop (op1)) { { /* #line 146 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_306 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o20 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o20, 0) && types_match (o70, o20))) { if ((o61 == o40 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o40, 0) && types_match (o61, o40))) { { /* #line 780 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_175 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } } break; } default:; } } break; default:; } if ((o60 == o40 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o40, 0) && types_match (o60, o40))) { switch (TREE_CODE (o61)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o61)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); if ((o80 == o20 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o20, 0) && types_match (o80, o20))) { { /* #line 780 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_175 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o21 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o21, 0) && types_match (o70, o21))) { if ((o61 == o30 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o30, 0) && types_match (o61, o30))) { { /* #line 780 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o30 }; if (gimple_simplify_175 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } } break; } default:; } } break; default:; } if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o61)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); if ((o80 == o21 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o21, 0) && types_match (o80, o21))) { { /* #line 780 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o30 }; if (gimple_simplify_175 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case INTEGER_CST: { { /* #line 783 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o61, o21 }; if (gimple_simplify_303 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { switch (TREE_CODE (o51)) { case INTEGER_CST: { { /* #line 783 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; if (gimple_simplify_303 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } default:; } if (integer_onep (o21)) { if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 963 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op0, o21 }; if (gimple_simplify_233 (res_op, seq, valueize, type, captures)) return true; } } } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 928 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_227 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o30 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o30, 0) && types_match (o50, o30))) { { /* #line 928 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o30 }; if (gimple_simplify_227 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } if (real_zerop (op0)) { { /* #line 146 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_306 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 928 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_227 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 928 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_227 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { if (integer_onep (o31)) { { /* #line 963 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o31 }; if (gimple_simplify_233 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_XOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1021 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_253 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } } break; } case BIT_IOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1026 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_254 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); switch (TREE_CODE (o61)) { case INTEGER_CST: { { /* #line 1090 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o21, o50, o60, o61 }; if (gimple_simplify_58 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); switch (TREE_CODE (o51)) { case INTEGER_CST: { { /* #line 1090 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50, o51 }; if (gimple_simplify_58 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; default:; } break; } default:; } break; } case BIT_XOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1021 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_253 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } } break; } default:; } } break; default:; } break; } case BIT_IOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1026 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_254 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if (tree_swap_operands_p (o70, o71)) std::swap (o70, o71); switch (TREE_CODE (o71)) { case INTEGER_CST: { { /* #line 1090 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { o20, o30, o31, o60, o70, o71 }; if (gimple_simplify_58 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); switch (TREE_CODE (o61)) { case INTEGER_CST: { { /* #line 1090 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { o20, o30, o31, op1, o60, o61 }; if (gimple_simplify_58 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; default:; } break; } default:; } break; } case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, o30 }; if (gimple_simplify_92 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o40 }; if (gimple_simplify_92 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } break; } case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; if (gimple_simplify_92 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, o20 }; if (gimple_simplify_92 (res_op, seq, valueize, type, captures)) return true; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_217 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o51, o20 }; if (gimple_simplify_164 (res_op, seq, valueize, type, captures)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o50, o20 }; if (gimple_simplify_164 (res_op, seq, valueize, type, captures)) return true; } } break; } case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_322 (res_op, seq, valueize, type, captures)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o51, o20 }; if (gimple_simplify_322 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (o20)) { if (CONSTANT_CLASS_P (op1)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_17 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, op0 }; if (gimple_simplify_217 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_164 (res_op, seq, valueize, type, captures)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o50 }; if (gimple_simplify_164 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } case POINTER_DIFF_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_DIFF_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_257 (res_op, seq, valueize, type, captures)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o51, o20 }; if (gimple_simplify_257 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } case BIT_NOT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_127 (res_op, seq, valueize, type, captures)) return true; } } if (integer_each_onep (op1)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_80 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } { tree op0_pops[1]; if (gimple_nop_convert (op0, op0_pops, valueize)) { tree o20 = op0_pops[0]; switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if (CONSTANT_CLASS_P (o31)) { if (CONSTANT_CLASS_P (op1)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, op1 }; if (gimple_simplify_108 (res_op, seq, valueize, type, captures, PLUS_EXPR, MINUS_EXPR, PLUS_EXPR)) return true; } } } break; } case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (CONSTANT_CLASS_P (o31)) { if (CONSTANT_CLASS_P (op1)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, op1 }; if (gimple_simplify_108 (res_op, seq, valueize, type, captures, MINUS_EXPR, PLUS_EXPR, PLUS_EXPR)) return true; } } } break; } default:; } } break; default:; } } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_127 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if (integer_each_onep (op1)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o30 }; if (gimple_simplify_80 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 2139 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o51 }; if (gimple_simplify_144 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 2139 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; if (gimple_simplify_144 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 2139 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o20, op1, o51 }; if (gimple_simplify_144 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 2139 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o20, op1, o50 }; if (gimple_simplify_144 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 2139 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o31 }; if (gimple_simplify_8 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 2139 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o30 }; if (gimple_simplify_8 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 2139 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_86 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 2139 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o21, o20 }; if (gimple_simplify_86 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2762 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 2762 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (REAL_VALUE_NEGATIVE (TREE_REAL_CST (captures[1]))) { { /* #line 2763 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree tem = const_unop (NEGATE_EXPR, type, captures[1]); /* #line 2764 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TREE_OVERFLOW (tem) || !flag_trapping_math) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2765, __FILE__, __LINE__); res_op->set_op (MINUS_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = tem; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; } default:; } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2770 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 2770 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (SCALAR_FLOAT_TYPE_P (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2771, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_real (type, dconst2); gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 2772 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2773, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = build_int_cst (type, 2); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VIEW_CONVERT_EXPR: { tree o30 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o30) == SSA_NAME || is_gimple_min_invariant (o30))) { o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VEC_COND_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); tree o42 = gimple_assign_rhs3 (def); o42 = do_valueize (valueize, o42); if (integer_each_onep (o41)) { if (integer_zerop (o42)) { { /* #line 3110 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o30, o40, o41, o42 }; if (gimple_simplify_323 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VIEW_CONVERT_EXPR: { tree o20 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o20) == SSA_NAME || is_gimple_min_invariant (o20))) { o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VEC_COND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); tree o32 = gimple_assign_rhs3 (def); o32 = do_valueize (valueize, o32); if (integer_each_onep (o31)) { if (integer_zerop (o32)) { { /* #line 3110 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o20, o30, o31, o32 }; if (gimple_simplify_323 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VEC_COND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); tree o32 = gimple_assign_rhs3 (def); o32 = do_valueize (valueize, o32); if (integer_each_onep (o31)) { if (integer_zerop (o32)) { { /* #line 3110 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o30, o31, o32 }; if (gimple_simplify_323 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VEC_COND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); tree o22 = gimple_assign_rhs3 (def); o22 = do_valueize (valueize, o22); if (integer_each_onep (o21)) { if (integer_zerop (o22)) { { /* #line 3110 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, op0, o20, o21, o22 }; if (gimple_simplify_323 (res_op, seq, valueize, type, captures)) return true; } } } break; } case RDIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case RDIV_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_157 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_POPCOUNT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_POPCOUNT: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 5216 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; if (gimple_simplify_62 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POPCOUNT)) return true; } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_POPCOUNTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_POPCOUNTL: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 5216 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; if (gimple_simplify_62 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POPCOUNTL)) return true; } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_POPCOUNTLL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_POPCOUNTLL: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 5216 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; if (gimple_simplify_62 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POPCOUNTLL)) return true; } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_POPCOUNTIMAX: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_POPCOUNTIMAX: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 5216 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; if (gimple_simplify_62 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POPCOUNTIMAX)) return true; } } break; default:; } } break; default:; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_POINTER_PLUS_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (integer_zerop (op1)) { { /* #line 130 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 130, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); { /* #line 1735 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1735, __FILE__, __LINE__); res_op->set_op (POINTER_PLUS_EXPR, type, 2); res_op->ops[0] = captures[1]; { tree ops1[2], res; ops1[0] = captures[2]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } } break; default:; } if (integer_zerop (op0)) { { /* #line 135 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op1 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 135, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); switch (TREE_CODE (o41)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o41)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == op0 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, op0, 0) && types_match (o70, op0))) { { /* #line 1748 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op1, o30, o50 }; /* #line 1748 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[2])) && ((1 && useless_type_conversion_p (type, TREE_TYPE (captures[3]))) || (0 && type == TREE_TYPE (captures[3])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1751, __FILE__, __LINE__); tree tem; tem = captures[3]; res_op->set_value (tem); return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } case POINTER_DIFF_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if ((o41 == op0 && ! TREE_SIDE_EFFECTS (o41)) || operand_equal_p (o41, op0, 0)) { { /* #line 1754 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { o41, op1, o30, o40, op0 }; /* #line 1754 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (TREE_TYPE (captures[1])) >= TYPE_PRECISION (TREE_TYPE (captures[2]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1755, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[3]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } break; } case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == op0 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, op0, 0) && types_match (o60, op0))) { { /* #line 1748 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op1, op1, o40 }; /* #line 1748 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (TREE_TYPE (captures[1])) == TYPE_PRECISION (TREE_TYPE (captures[2])) && ((1 && useless_type_conversion_p (type, TREE_TYPE (captures[3]))) || (0 && type == TREE_TYPE (captures[3])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1751, __FILE__, __LINE__); tree tem; tem = captures[3]; res_op->set_value (tem); return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } case POINTER_DIFF_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || operand_equal_p (o31, op0, 0)) { { /* #line 1754 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { o31, op1, op1, o30, op0 }; /* #line 1754 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_PRECISION (TREE_TYPE (captures[1])) >= TYPE_PRECISION (TREE_TYPE (captures[2]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1755, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[3]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; } case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, op0, 0) && types_match (o50, op0))) { switch (TREE_CODE (o41)) { case INTEGER_CST: { { /* #line 1766 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o41 }; { /* #line 1766 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree algn = wide_int_to_tree (TREE_TYPE (captures[0]), ~wi::to_wide (captures[1])); gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1767, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = algn; gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_MINUS_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (integer_zerop (op1)) { { /* #line 130 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 130, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } if (real_zerop (op1)) { { /* #line 152 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 152 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (fold_real_zero_addition_p (type, captures[1], 1)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 153, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 162 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 162 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!FLOAT_TYPE_P (type) || !HONOR_NANS (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 163, __FILE__, __LINE__); tree tem; tem = build_zero_cst (type); res_op->set_value (tem); return true; } } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case TRUNC_DIV_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || operand_equal_p (o60, o20, 0)) { if ((o51 == o61 && ! TREE_SIDE_EFFECTS (o51)) || operand_equal_p (o51, o61, 0)) { { /* #line 547 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o60, o61, o20, o61 }; if (gimple_simplify_93 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } switch (TREE_CODE (o51)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o51)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case TRUNC_DIV_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if ((o70 == o20 && ! TREE_SIDE_EFFECTS (o70)) || operand_equal_p (o70, o20, 0)) { if ((o71 == o50 && ! TREE_SIDE_EFFECTS (o71)) || operand_equal_p (o71, o50, 0)) { { /* #line 547 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o70, o71, o20, o50 }; if (gimple_simplify_93 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } case MULT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case TRUNC_DIV_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o20, 0)) { if ((o41 == o51 && ! TREE_SIDE_EFFECTS (o41)) || operand_equal_p (o41, o51, 0)) { { /* #line 547 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o50, o51, o20, o51 }; if (gimple_simplify_93 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } switch (TREE_CODE (o41)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o41)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case TRUNC_DIV_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || operand_equal_p (o60, o20, 0)) { if ((o61 == o40 && ! TREE_SIDE_EFFECTS (o61)) || operand_equal_p (o61, o40, 0)) { { /* #line 547 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o60, o61, o20, o40 }; if (gimple_simplify_93 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case TRUNC_DIV_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, op0, 0)) { if ((o41 == o51 && ! TREE_SIDE_EFFECTS (o41)) || operand_equal_p (o41, o51, 0)) { { /* #line 547 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o50, o51, op0, o51 }; if (gimple_simplify_93 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } switch (TREE_CODE (o41)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o41)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case TRUNC_DIV_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if ((o60 == op0 && ! TREE_SIDE_EFFECTS (o60)) || operand_equal_p (o60, op0, 0)) { if ((o61 == o40 && ! TREE_SIDE_EFFECTS (o61)) || operand_equal_p (o61, o40, 0)) { { /* #line 547 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o60, o61, op0, o40 }; if (gimple_simplify_93 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } case MULT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case TRUNC_DIV_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || operand_equal_p (o40, op0, 0)) { if ((o31 == o41 && ! TREE_SIDE_EFFECTS (o31)) || operand_equal_p (o31, o41, 0)) { { /* #line 547 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o40, o41, op0, o41 }; if (gimple_simplify_93 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case TRUNC_DIV_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, op0, 0)) { if ((o51 == o30 && ! TREE_SIDE_EFFECTS (o51)) || operand_equal_p (o51, o30, 0)) { { /* #line 547 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o50, o51, op0, o30 }; if (gimple_simplify_93 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { if ((o61 == o40 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o40, 0) && types_match (o61, o40))) { { /* #line 765 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o40, op1 }; if (gimple_simplify_167 (res_op, seq, valueize, type, captures)) return true; } } } if ((o60 == o40 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o40, 0) && types_match (o60, o40))) { if ((o61 == o20 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o20, 0) && types_match (o61, o20))) { { /* #line 765 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o40, op1 }; if (gimple_simplify_167 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o21 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o21, 0) && types_match (o60, o21))) { if ((o61 == o30 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o30, 0) && types_match (o61, o30))) { { /* #line 765 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o21, o30, op1 }; if (gimple_simplify_167 (res_op, seq, valueize, type, captures)) return true; } } } if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { if ((o61 == o21 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o21, 0) && types_match (o61, o21))) { { /* #line 765 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o21, o30, op1 }; if (gimple_simplify_167 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (o51)) { case INTEGER_CST: { { /* #line 768 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o51 }; /* #line 768 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (~wi::to_wide (captures[2]) == wi::to_wide (captures[4])) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 769, __FILE__, __LINE__); res_op->set_op (MINUS_EXPR, type, 2); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_XOR_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[4]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (o51)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o51)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o21 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o21, 0) && types_match (o70, o21))) { { /* #line 774 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_170 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } } switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o21 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o21, 0) && types_match (o60, o21))) { if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 774 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_170 (res_op, seq, valueize, type, captures)) return true; } } } if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 774 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o21, o20, op1 }; if (gimple_simplify_170 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { switch (TREE_CODE (o51)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o51)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o20 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o20, 0) && types_match (o70, o20))) { { /* #line 774 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o21, o20, op1 }; if (gimple_simplify_170 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } break; } case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1031 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 1031 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_OVERFLOW_SANITIZED (type) && !TYPE_OVERFLOW_TRAPS (type) && !TYPE_SATURATING (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1033, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; } case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1038 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 1038 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_OVERFLOW_SANITIZED (type) && !TYPE_OVERFLOW_TRAPS (type) && !TYPE_SATURATING (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1040, __FILE__, __LINE__); res_op->set_op (BIT_IOR_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; } default:; } } break; default:; } break; } case BIT_IOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_XOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1045 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1045, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1050 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1050, __FILE__, __LINE__); res_op->set_op (BIT_XOR_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } if (gimple_negate_expr_p (op1, valueize)) { { /* #line 1250 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 1250 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!FIXED_POINT_TYPE_P (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1251, __FILE__, __LINE__); res_op->set_op (PLUS_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; ops1[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o20, 0)) { { /* #line 1414 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { o50, op1, o40, o51, o20 }; if (gimple_simplify_150 (res_op, seq, valueize, type, captures)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || operand_equal_p (o51, o20, 0)) { { /* #line 1414 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { o51, op1, o40, o50, o20 }; if (gimple_simplify_150 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || operand_equal_p (o40, o20, 0)) { { /* #line 1414 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { o40, op1, op1, o41, o20 }; if (gimple_simplify_61 (res_op, seq, valueize, type, captures)) return true; } } if ((o41 == o20 && ! TREE_SIDE_EFFECTS (o41)) || operand_equal_p (o41, o20, 0)) { { /* #line 1414 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { o41, op1, op1, o40, o20 }; if (gimple_simplify_61 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (o20)) { case ADDR_EXPR: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 1772 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; /* #line 1772 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))) { { /* #line 1773 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ poly_int64 diff; /* #line 1774 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ptr_difference_const (captures[0], captures[1], &diff)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1775, __FILE__, __LINE__); tree tem; tem = build_int_cst_type (type, diff); res_op->set_value (tem); return true; } } } } break; } default:; } } break; default:; } break; } default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case ADDR_EXPR: { { /* #line 1778 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; /* #line 1778 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (type, TREE_TYPE (captures[0]))) { { /* #line 1779 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ poly_int64 diff; /* #line 1780 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ptr_difference_const (captures[0], captures[1], &diff)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1781, __FILE__, __LINE__); tree tem; tem = build_int_cst_type (type, diff); res_op->set_value (tem); return true; } } } } break; } default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || operand_equal_p (o40, op0, 0)) { { /* #line 1414 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { o40, op1, o30, o41, op0 }; if (gimple_simplify_150 (res_op, seq, valueize, type, captures)) return true; } } if ((o41 == op0 && ! TREE_SIDE_EFFECTS (o41)) || operand_equal_p (o41, op0, 0)) { { /* #line 1414 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { o41, op1, o30, o40, op0 }; if (gimple_simplify_150 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || operand_equal_p (o30, op0, 0)) { { /* #line 1414 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { o30, op1, op1, o31, op0 }; if (gimple_simplify_61 (res_op, seq, valueize, type, captures)) return true; } } if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || operand_equal_p (o31, op0, 0)) { { /* #line 1414 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { o31, op1, op1, o30, op0 }; if (gimple_simplify_61 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1547, __FILE__, __LINE__); res_op->set_op (MINUS_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1547, __FILE__, __LINE__); res_op->set_op (MINUS_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o50 }; /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1547, __FILE__, __LINE__); res_op->set_op (MINUS_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o51 }; /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1547, __FILE__, __LINE__); res_op->set_op (MINUS_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1560 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; /* #line 1560 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1563, __FILE__, __LINE__); res_op->set_op (MINUS_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1587 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; /* #line 1587 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1590, __FILE__, __LINE__); res_op->set_op (MINUS_EXPR, type, 2); res_op->ops[0] = captures[2]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } break; } case POINTER_DIFF_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_DIFF_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1572 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o50 }; /* #line 1572 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])) && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[2]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1574, __FILE__, __LINE__); res_op->set_op (POINTER_DIFF_EXPR, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = captures[3]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1599 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o51 }; /* #line 1599 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])) && !TYPE_OVERFLOW_SANITIZED (TREE_TYPE (captures[1]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1601, __FILE__, __LINE__); res_op->set_op (POINTER_DIFF_EXPR, type, 2); res_op->ops[0] = captures[3]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o40 }; if (gimple_simplify_134 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } break; } case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; if (gimple_simplify_134 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_280 (res_op, seq, valueize, type, captures)) return true; } } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_280 (res_op, seq, valueize, type, captures)) return true; } } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1888, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o31 }; if (gimple_simplify_240 (res_op, seq, valueize, type, captures)) return true; } } if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; if (gimple_simplify_240 (res_op, seq, valueize, type, captures)) return true; } } break; } case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o31 }; /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1897, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; } } } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; if (gimple_simplify_220 (res_op, seq, valueize, type, captures)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o51 }; if (gimple_simplify_220 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (CONSTANT_CLASS_P (o20)) { if (CONSTANT_CLASS_P (op1)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_17 (res_op, seq, valueize, type, captures, MINUS_EXPR)) return true; } } } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if (integer_each_onep (op1)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o30 }; if (gimple_simplify_71 (res_op, seq, valueize, type, captures)) return true; } } break; } case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || operand_equal_p (o60, o30, 0)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, o30 }; if (gimple_simplify_57 (res_op, seq, valueize, type, captures)) return true; } } if ((o60 == o31 && ! TREE_SIDE_EFFECTS (o60)) || operand_equal_p (o60, o31, 0)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o31, o30, o31 }; if (gimple_simplify_57 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o30, 0)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, o30 }; if (gimple_simplify_57 (res_op, seq, valueize, type, captures)) return true; } } if ((op1 == o31 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o31, 0)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o31, o30, o31 }; if (gimple_simplify_57 (res_op, seq, valueize, type, captures)) return true; } } break; } case POINTER_PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || operand_equal_p (o60, o30, 0)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, o30 }; /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { /* #line 2016 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (element_precision (type) <= element_precision (TREE_TYPE (captures[1])) || (POINTER_TYPE_P (TREE_TYPE (captures[0])) && TREE_CODE (captures[1]) == INTEGER_CST && tree_int_cst_sign_bit (captures[1]) == 0)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2024, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o20, 0)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o50, o51, o20 }; if (gimple_simplify_271 (res_op, seq, valueize, type, captures)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || operand_equal_p (o51, o20, 0)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o51, o50, o20 }; if (gimple_simplify_271 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (integer_each_onep (op1)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_71 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } { tree op0_pops[1]; if (gimple_nop_convert (op0, op0_pops, valueize)) { tree o20 = op0_pops[0]; switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if (CONSTANT_CLASS_P (o31)) { if (CONSTANT_CLASS_P (op1)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, op1 }; if (gimple_simplify_108 (res_op, seq, valueize, type, captures, PLUS_EXPR, MINUS_EXPR, MINUS_EXPR)) return true; } } } break; } case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (CONSTANT_CLASS_P (o31)) { if (CONSTANT_CLASS_P (op1)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, op1 }; if (gimple_simplify_108 (res_op, seq, valueize, type, captures, MINUS_EXPR, PLUS_EXPR, MINUS_EXPR)) return true; } } } break; } default:; } } break; default:; } } } if (CONSTANT_CLASS_P (op0)) { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (CONSTANT_CLASS_P (o30)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o30, o31 }; /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { { /* #line 1970 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree cst = const_binop (MINUS_EXPR, type, captures[0], captures[1]); /* #line 1971 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cst && !TREE_OVERFLOW (cst)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1972, __FILE__, __LINE__); res_op->set_op (PLUS_EXPR, type, 2); res_op->ops[0] = cst; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } break; } default:; } } break; default:; } } if (integer_all_onesp (op0)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op1 }; /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1996, __FILE__, __LINE__); res_op->set_op (BIT_NOT_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || operand_equal_p (o40, op0, 0)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o40, o41, op0 }; if (gimple_simplify_271 (res_op, seq, valueize, type, captures)) return true; } } if ((o41 == op0 && ! TREE_SIDE_EFFECTS (o41)) || operand_equal_p (o41, op0, 0)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o41, o40, op0 }; if (gimple_simplify_271 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o20, 0)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o50, o51, o20 }; /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { /* #line 2058 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (type) && TYPE_OVERFLOW_UNDEFINED (type) && element_precision (type) <= element_precision (TREE_TYPE (captures[1]))) { { /* #line 2061 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree utype = unsigned_type_for (type); gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2062, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[1]; if (utype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } else { /* #line 2063 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (element_precision (type) <= element_precision (TREE_TYPE (captures[1])) || (POINTER_TYPE_P (TREE_TYPE (captures[0])) && TREE_CODE (captures[1]) == INTEGER_CST && tree_int_cst_sign_bit (captures[1]) == 0)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2071, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[1]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if (tree_swap_operands_p (o70, o71)) std::swap (o70, o71); if ((o70 == o30 && ! TREE_SIDE_EFFECTS (o70)) || operand_equal_p (o70, o30, 0)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o31, o71, o30 }; if (gimple_simplify_112 (res_op, seq, valueize, type, captures)) return true; } } if ((o71 == o30 && ! TREE_SIDE_EFFECTS (o71)) || operand_equal_p (o71, o30, 0)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o31, o70, o30 }; if (gimple_simplify_112 (res_op, seq, valueize, type, captures)) return true; } } if ((o70 == o31 && ! TREE_SIDE_EFFECTS (o70)) || operand_equal_p (o70, o31, 0)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o31, o30, o71, o31 }; if (gimple_simplify_112 (res_op, seq, valueize, type, captures)) return true; } } if ((o71 == o31 && ! TREE_SIDE_EFFECTS (o71)) || operand_equal_p (o71, o31, 0)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o31, o30, o70, o31 }; if (gimple_simplify_112 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } case POINTER_PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if ((o70 == o30 && ! TREE_SIDE_EFFECTS (o70)) || operand_equal_p (o70, o30, 0)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o31, o71, o30 }; /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { /* #line 2110 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (type) && TYPE_OVERFLOW_UNDEFINED (type) && element_precision (type) <= element_precision (TREE_TYPE (captures[1]))) { { /* #line 2113 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree utype = unsigned_type_for (type); gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2114, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[1]; if (utype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[0] = res; } { tree ops2[1], res; ops2[0] = captures[2]; if (utype != TREE_TYPE (ops2[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops2[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops2[0]; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), MINUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } else { /* #line 2115 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (element_precision (type) <= element_precision (TREE_TYPE (captures[1])) || (POINTER_TYPE_P (TREE_TYPE (captures[0])) && TREE_CODE (captures[1]) == INTEGER_CST && tree_int_cst_sign_bit (captures[1]) == 0 && TREE_CODE (captures[2]) == INTEGER_CST && tree_int_cst_sign_bit (captures[2]) == 0)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2125, __FILE__, __LINE__); res_op->set_op (MINUS_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[1]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } { tree ops1[1], res; ops1[0] = captures[2]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 2139 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o51 }; if (gimple_simplify_144 (res_op, seq, valueize, type, captures, MINUS_EXPR)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 2139 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; if (gimple_simplify_144 (res_op, seq, valueize, type, captures, MINUS_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 2139 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o20, op1, o51 }; if (gimple_simplify_144 (res_op, seq, valueize, type, captures, MINUS_EXPR)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 2139 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o20, op1, o50 }; if (gimple_simplify_144 (res_op, seq, valueize, type, captures, MINUS_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 2139 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o31 }; if (gimple_simplify_8 (res_op, seq, valueize, type, captures, MINUS_EXPR)) return true; } } if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 2139 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o30 }; if (gimple_simplify_8 (res_op, seq, valueize, type, captures, MINUS_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 2139 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_86 (res_op, seq, valueize, type, captures, MINUS_EXPR)) return true; } } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 2139 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o21, o20 }; if (gimple_simplify_86 (res_op, seq, valueize, type, captures, MINUS_EXPR)) return true; } } break; } default:; } } break; default:; } if (integer_zerop (op0)) { { /* #line 2778 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op1 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2778, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } if (real_zerop (op0)) { { /* #line 2788 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 2788 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (fold_real_zero_addition_p (type, captures[0], 0)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2789, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); res_op->ops[0] = captures[1]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VIEW_CONVERT_EXPR: { tree o30 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o30) == SSA_NAME || is_gimple_min_invariant (o30))) { o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VEC_COND_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); tree o42 = gimple_assign_rhs3 (def); o42 = do_valueize (valueize, o42); if (integer_each_onep (o41)) { if (integer_zerop (o42)) { { /* #line 3120 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o30, o40, o41, o42 }; if (gimple_simplify_192 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } } break; } case VEC_COND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); tree o32 = gimple_assign_rhs3 (def); o32 = do_valueize (valueize, o32); if (integer_each_onep (o31)) { if (integer_zerop (o32)) { { /* #line 3120 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o30, o31, o32 }; if (gimple_simplify_192 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case RDIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case RDIV_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_157 (res_op, seq, valueize, type, captures, MINUS_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_BIT_IOR_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (integer_zerop (op1)) { { /* #line 130 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 130, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if (integer_zerop (o21)) { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if (integer_zerop (o51)) { { /* #line 748 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_226 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, NE_EXPR)) return true; } } break; } default:; } } break; default:; } } if (integer_all_onesp (o21)) { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if (integer_all_onesp (o51)) { { /* #line 757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_91 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, NE_EXPR)) return true; } } break; } default:; } } break; default:; } } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o20 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o20, 0) && types_match (o70, o20))) { if ((o61 == o40 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o40, 0) && types_match (o61, o40))) { { /* #line 780 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_175 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } } break; } default:; } } break; default:; } if ((o60 == o40 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o40, 0) && types_match (o60, o40))) { switch (TREE_CODE (o61)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o61)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); if ((o80 == o20 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o20, 0) && types_match (o80, o20))) { { /* #line 780 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_175 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o21 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o21, 0) && types_match (o70, o21))) { if ((o61 == o30 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o30, 0) && types_match (o61, o30))) { { /* #line 780 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o30 }; if (gimple_simplify_175 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } } break; } default:; } } break; default:; } if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o61)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); if ((o80 == o21 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o21, 0) && types_match (o80, o21))) { { /* #line 780 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o30 }; if (gimple_simplify_175 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case INTEGER_CST: { { /* #line 783 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o61, o21 }; if (gimple_simplify_303 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { switch (TREE_CODE (o51)) { case INTEGER_CST: { { /* #line 783 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; if (gimple_simplify_303 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } default:; } break; } case BIT_XOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 789 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_89 (res_op, seq, valueize, type, captures)) return true; } } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 789 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_89 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (o51)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o51)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o21 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o21, 0) && types_match (o70, o21))) { { /* #line 794 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op0 }; if (gimple_simplify_101 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { switch (TREE_CODE (o51)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o51)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o20 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o20, 0) && types_match (o70, o20))) { { /* #line 794 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, op0 }; if (gimple_simplify_101 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } } switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o21 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o21, 0) && types_match (o60, o21))) { if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 794 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op0 }; if (gimple_simplify_101 (res_op, seq, valueize, type, captures)) return true; } } } if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 794 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, op0 }; if (gimple_simplify_101 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_XOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 789 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o31 }; if (gimple_simplify_89 (res_op, seq, valueize, type, captures)) return true; } } if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 789 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; if (gimple_simplify_89 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_XOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { if ((o61 == o40 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o40, 0) && types_match (o61, o40))) { { /* #line 794 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o40, op1 }; if (gimple_simplify_185 (res_op, seq, valueize, type, captures)) return true; } } } if ((o60 == o40 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o40, 0) && types_match (o60, o40))) { if ((o61 == o20 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o20, 0) && types_match (o61, o20))) { { /* #line 794 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o40, op1 }; if (gimple_simplify_185 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_XOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o21 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o21, 0) && types_match (o60, o21))) { if ((o61 == o30 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o30, 0) && types_match (o61, o30))) { { /* #line 794 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o30, op1 }; if (gimple_simplify_185 (res_op, seq, valueize, type, captures)) return true; } } } if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { if ((o61 == o21 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o21, 0) && types_match (o61, o21))) { { /* #line 794 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o30, op1 }; if (gimple_simplify_185 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_XOR_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 809 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o41 }; if (gimple_simplify_189 (res_op, seq, valueize, type, captures)) return true; } } if ((o41 == op0 && ! TREE_SIDE_EFFECTS (o41)) || (operand_equal_p (o41, op0, 0) && types_match (o41, op0))) { { /* #line 809 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o40 }; if (gimple_simplify_189 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_XOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { { /* #line 809 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, op0, o31 }; if (gimple_simplify_189 (res_op, seq, valueize, type, captures)) return true; } } if ((op1 == o31 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o31, 0) && types_match (op1, o31))) { { /* #line 809 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o31, op0, o30 }; if (gimple_simplify_189 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { if ((o61 == o31 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o31, 0) && types_match (o61, o31))) { { /* #line 820 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, op0 }; if (gimple_simplify_172 (res_op, seq, valueize, type, captures)) return true; } } } if ((o60 == o31 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o31, 0) && types_match (o60, o31))) { if ((o61 == o30 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o30, 0) && types_match (o61, o30))) { { /* #line 820 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, op0 }; if (gimple_simplify_172 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 928 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_227 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } break; } case BIT_IOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 815 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_305 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 815 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_305 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } } break; } case BIT_XOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 815 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_305 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 815 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_305 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } } } break; } CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o21, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o21 }; if (gimple_simplify_301 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o20, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o21, o20, o20 }; if (gimple_simplify_301 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o21, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o21 }; if (gimple_simplify_301 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o20, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o21, o20, o20 }; if (gimple_simplify_301 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 815 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o20, o21 }; if (gimple_simplify_310 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 815 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o21, o20 }; if (gimple_simplify_310 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } } break; } case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_XOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { if ((o61 == o21 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o21, 0) && types_match (o61, o21))) { { /* #line 820 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_76 (res_op, seq, valueize, type, captures)) return true; } } } if ((o60 == o21 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o21, 0) && types_match (o60, o21))) { if ((o61 == o20 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o20, 0) && types_match (o61, o20))) { { /* #line 820 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, op1 }; if (gimple_simplify_76 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } case BIT_XOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 815 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o20, o21 }; if (gimple_simplify_310 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 815 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o21, o20 }; if (gimple_simplify_310 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } if (integer_all_onesp (op1)) { { /* #line 910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 910, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; } } if (integer_zerop (op1)) { { /* #line 915 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 915, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 928 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_227 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o30 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o30, 0) && types_match (o50, o30))) { { /* #line 928 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o30 }; if (gimple_simplify_227 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); { /* #line 1078 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o60 }; if (gimple_simplify_324 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } break; } default:; } } break; default:; } break; } case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 1078 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o50 }; if (gimple_simplify_324 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if (tree_swap_operands_p (o70, o71)) std::swap (o70, o71); if ((o70 == o30 && ! TREE_SIDE_EFFECTS (o70)) || operand_equal_p (o70, o30, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o31, o71, o30 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } } if ((o71 == o30 && ! TREE_SIDE_EFFECTS (o71)) || operand_equal_p (o71, o30, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o31, o70, o30 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } } if ((o70 == o31 && ! TREE_SIDE_EFFECTS (o70)) || operand_equal_p (o70, o31, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o31, o30, o71, o31 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } } if ((o71 == o31 && ! TREE_SIDE_EFFECTS (o71)) || operand_equal_p (o71, o31, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o31, o30, o70, o31 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } case BIT_IOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o31 && ! TREE_SIDE_EFFECTS (o60)) || operand_equal_p (o60, o31, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o30, o31, o31 }; if (gimple_simplify_301 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || operand_equal_p (o60, o30, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o31, o30, o30 }; if (gimple_simplify_301 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o31 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o31, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o30, o31, o31 }; if (gimple_simplify_301 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o30, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o31, o30, o30 }; if (gimple_simplify_301 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || operand_equal_p (o51, o20, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o50, o51, o20 }; if (gimple_simplify_116 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o20, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o51, o50, o20 }; if (gimple_simplify_116 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case BIT_IOR_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); if ((o41 == o20 && ! TREE_SIDE_EFFECTS (o41)) || operand_equal_p (o41, o20, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o40, o41, o20 }; if (gimple_simplify_116 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || operand_equal_p (o40, o20, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o41, o40, o20 }; if (gimple_simplify_116 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 928 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_227 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 970 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o30, o41 }; if (gimple_simplify_234 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((o41 == op0 && ! TREE_SIDE_EFFECTS (o41)) || (operand_equal_p (o41, op0, 0) && types_match (o41, op0))) { { /* #line 970 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o30, o40 }; if (gimple_simplify_234 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 949 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_230 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { { /* #line 970 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o20, o31 }; if (gimple_simplify_234 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((op1 == o31 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o31, 0) && types_match (op1, o31))) { { /* #line 970 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o31, o20, o30 }; if (gimple_simplify_234 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o30 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o30, 0) && types_match (o70, o30))) { if ((o61 == o31 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o31, 0) && types_match (o61, o31))) { { /* #line 975 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o60, o30, o31 }; if (gimple_simplify_314 (res_op, seq, valueize, type, captures)) return true; } } } if ((o70 == o31 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o31, 0) && types_match (o70, o31))) { if ((o61 == o30 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o30, 0) && types_match (o61, o30))) { { /* #line 975 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o60, o31, o30 }; if (gimple_simplify_314 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } if ((o60 == o31 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o31, 0) && types_match (o60, o31))) { switch (TREE_CODE (o61)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o61)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); if ((o80 == o30 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o30, 0) && types_match (o80, o30))) { { /* #line 975 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o61, o30, o31 }; if (gimple_simplify_314 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } } if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o61)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); if ((o80 == o31 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o31, 0) && types_match (o80, o31))) { { /* #line 975 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o61, o31, o30 }; if (gimple_simplify_314 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } if ((o61 == o31 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o31, 0) && types_match (o61, o31))) { { /* #line 985 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o30, o31, op0, o20 }; if (gimple_simplify_241 (res_op, seq, valueize, type, captures)) return true; } } } break; } case BIT_XOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { if ((o61 == o31 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o31, 0) && types_match (o61, o31))) { { /* #line 995 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o30, o31, op0, o20 }; if (gimple_simplify_245 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 1003 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o41, op0 }; if (gimple_simplify_250 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } } if ((o41 == o20 && ! TREE_SIDE_EFFECTS (o41)) || (operand_equal_p (o41, o20, 0) && types_match (o41, o20))) { { /* #line 1003 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o40, op0 }; if (gimple_simplify_250 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } } break; } CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 1078 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o50 }; if (gimple_simplify_324 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } break; } default:; } } break; default:; } break; } case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 1078 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_324 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if (tree_swap_operands_p (o70, o71)) std::swap (o70, o71); if ((o70 == o30 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o30, 0) && types_match (o70, o30))) { if ((o71 == o21 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o21, 0) && types_match (o71, o21))) { { /* #line 975 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o30, o21 }; if (gimple_simplify_16 (res_op, seq, valueize, type, captures)) return true; } } } if ((o70 == o21 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o21, 0) && types_match (o70, o21))) { if ((o71 == o30 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o30, 0) && types_match (o71, o30))) { { /* #line 975 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o30, o21 }; if (gimple_simplify_16 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if (tree_swap_operands_p (o70, o71)) std::swap (o70, o71); if ((o70 == o40 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o40, 0) && types_match (o70, o40))) { if ((o71 == o20 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o20, 0) && types_match (o71, o20))) { { /* #line 975 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o40, o20 }; if (gimple_simplify_16 (res_op, seq, valueize, type, captures)) return true; } } } if ((o70 == o20 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o20, 0) && types_match (o70, o20))) { if ((o71 == o40 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o40, 0) && types_match (o71, o40))) { { /* #line 975 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o40, o20 }; if (gimple_simplify_16 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { if ((o61 == o21 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o21, 0) && types_match (o61, o21))) { { /* #line 985 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; if (gimple_simplify_241 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1003 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_201 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1003 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, op1 }; if (gimple_simplify_201 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } } break; } case BIT_XOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1021 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_253 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } } break; } case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o20, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o51, o20 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || operand_equal_p (o51, o20, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o50, o20 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o21, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o21, o20, o51, o21 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || operand_equal_p (o51, o21, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o21, o20, o50, o21 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case BIT_XOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { if ((o61 == o21 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o21, 0) && types_match (o61, o21))) { { /* #line 995 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; if (gimple_simplify_245 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1021 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_253 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); if ((o41 == op0 && ! TREE_SIDE_EFFECTS (o41)) || operand_equal_p (o41, op0, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o40, o41, op0 }; if (gimple_simplify_116 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || operand_equal_p (o40, op0, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o41, o40, op0 }; if (gimple_simplify_116 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case BIT_IOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || operand_equal_p (o31, op0, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o30, o31, op0 }; if (gimple_simplify_116 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || operand_equal_p (o30, op0, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o31, o30, op0 }; if (gimple_simplify_116 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if (tree_swap_operands_p (o70, o71)) std::swap (o70, o71); if ((o70 == o30 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o30, 0) && types_match (o70, o30))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, op1, o60, o71 }; if (gimple_simplify_3 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((o71 == o30 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o30, 0) && types_match (o71, o30))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, op1, o60, o70 }; if (gimple_simplify_3 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((o70 == o31 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o31, 0) && types_match (o70, o31))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o31, o30, op1, o60, o71 }; if (gimple_simplify_3 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((o71 == o31 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o31, 0) && types_match (o71, o31))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o31, o30, op1, o60, o70 }; if (gimple_simplify_3 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case BIT_IOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, op1, op1, o61 }; if (gimple_simplify_132 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((o61 == o30 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o30, 0) && types_match (o61, o30))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, op1, op1, o60 }; if (gimple_simplify_132 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((o60 == o31 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o31, 0) && types_match (o60, o31))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o31, o30, op1, op1, o61 }; if (gimple_simplify_132 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((o61 == o31 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o31, 0) && types_match (o61, o31))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o31, o30, op1, op1, o60 }; if (gimple_simplify_132 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 1262 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_320 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } break; } default:; } } break; default:; } { /* #line 1262 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_320 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } break; } case BIT_IOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op0, o20, o21, op1, o50, o61 }; if (gimple_simplify_51 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((o61 == o20 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o20, 0) && types_match (o61, o20))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op0, o20, o21, op1, o50, o60 }; if (gimple_simplify_51 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((o60 == o21 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o21, 0) && types_match (o60, o21))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op0, o21, o20, op1, o50, o61 }; if (gimple_simplify_51 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((o61 == o21 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o21, 0) && types_match (o61, o21))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op0, o21, o20, op1, o50, o60 }; if (gimple_simplify_51 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case BIT_IOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op0, o20, o21, op1, op1, o51 }; if (gimple_simplify_188 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op0, o20, o21, op1, op1, o50 }; if (gimple_simplify_188 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op0, o21, o20, op1, op1, o51 }; if (gimple_simplify_188 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op0, o21, o20, op1, op1, o50 }; if (gimple_simplify_188 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 1289 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_211 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 1289 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_211 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { { /* #line 1294 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o21 }; if (gimple_simplify_5 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o61 == o30 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o30, 0) && types_match (o61, o30))) { { /* #line 1409 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o30, op1, o60 }; if (gimple_simplify_38 (res_op, seq, valueize, type, captures)) return true; } } if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { { /* #line 1409 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o30, op1, o61 }; if (gimple_simplify_38 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); if ((op1 == o40 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o40, 0) && types_match (op1, o40))) { { /* #line 1294 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_5 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o61 == o40 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o40, 0) && types_match (o61, o40))) { { /* #line 1409 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o40, op1, o60 }; if (gimple_simplify_38 (res_op, seq, valueize, type, captures)) return true; } } if ((o60 == o40 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o40, 0) && types_match (o60, o40))) { { /* #line 1409 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o40, op1, o61 }; if (gimple_simplify_38 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); switch (TREE_CODE (o51)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o51)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o21 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o21, 0) && types_match (o70, o21))) { { /* #line 1409 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o50, o21, op0, o20 }; if (gimple_simplify_38 (res_op, seq, valueize, type, captures)) return true; } } if ((o70 == o20 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o20, 0) && types_match (o70, o20))) { { /* #line 1409 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o50, o20, op0, o21 }; if (gimple_simplify_38 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o21 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o21, 0) && types_match (o60, o21))) { { /* #line 1409 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o51, o21, op0, o20 }; if (gimple_simplify_38 (res_op, seq, valueize, type, captures)) return true; } } if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { { /* #line 1409 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o51, o20, op0, o21 }; if (gimple_simplify_38 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1289 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o31 }; if (gimple_simplify_211 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } } if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 1289 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; if (gimple_simplify_211 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } } switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 1294 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o31 }; if (gimple_simplify_5 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, op0, 0) && types_match (o50, op0))) { { /* #line 1294 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; if (gimple_simplify_5 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_AND_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if (CONSTANT_CLASS_P (o21)) { if (CONSTANT_CLASS_P (op1)) { { /* #line 1305 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_212 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } } break; } case BIT_XOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 1704 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_149 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_IOR_EXPR)) return true; } break; } default:; } break; } default:; } break; } case UNORDERED_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if ((o21 == o20 && ! TREE_SIDE_EFFECTS (o21)) || (operand_equal_p (o21, o20, 0) && types_match (o21, o20))) { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case UNORDERED_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o51 == o50 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o50, 0) && types_match (o51, o50))) { { /* #line 3660 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o50 }; /* #line 3660 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (captures[0], captures[1])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3661, __FILE__, __LINE__); res_op->set_op (UNORDERED_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 3668 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op1, o51 }; if (gimple_simplify_105 (res_op, seq, valueize, type, captures)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 3668 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op1, o50 }; if (gimple_simplify_105 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case UNORDERED_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 3668 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op0, o21 }; if (gimple_simplify_4 (res_op, seq, valueize, type, captures)) return true; } } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3668 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, op0, o20 }; if (gimple_simplify_4 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } case LT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case GE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_222 (res_op, seq, valueize, type, captures, LT_EXPR, GE_EXPR)) return true; } } } break; } case LT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o51 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, LT_EXPR, MAX_EXPR)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o20, op1, o50 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, GT_EXPR, MIN_EXPR)) return true; } } break; } case GT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, LT_EXPR, MAX_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o20, op1, o51 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, GT_EXPR, MIN_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); switch (TREE_CODE (o70)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o70)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); tree o81 = gimple_assign_rhs2 (def); o81 = do_valueize (valueize, o81); if ((o80 == o21 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o21, 0) && types_match (o80, o21))) { if ((o81 == o31 && ! TREE_SIDE_EFFECTS (o81)) || (operand_equal_p (o81, o31, 0) && types_match (o81, o31))) { if ((o71 == o30 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o30, 0) && types_match (o71, o30))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, o21, op1, o70 }; const enum tree_code cmp = LT_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } break; } default:; } } break; default:; } break; } case GT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if ((o70 == o30 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o30, 0) && types_match (o70, o30))) { switch (TREE_CODE (o71)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o71)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o90 = gimple_assign_rhs1 (def); o90 = do_valueize (valueize, o90); tree o91 = gimple_assign_rhs2 (def); o91 = do_valueize (valueize, o91); if ((o90 == o21 && ! TREE_SIDE_EFFECTS (o90)) || (operand_equal_p (o90, o21, 0) && types_match (o90, o21))) { if ((o91 == o31 && ! TREE_SIDE_EFFECTS (o91)) || (operand_equal_p (o91, o31, 0) && types_match (o91, o31))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, o21, op1, o71 }; const enum tree_code cmp = LT_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } break; } case LE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case GT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_222 (res_op, seq, valueize, type, captures, LE_EXPR, GT_EXPR)) return true; } } } break; } case GE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_222 (res_op, seq, valueize, type, captures, LE_EXPR, GE_EXPR)) return true; } } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, LE_EXPR, MAX_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o20, op1, o51 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, GE_EXPR, MIN_EXPR)) return true; } } break; } case NE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_222 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR)) return true; } } } break; } case LE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o51 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, LE_EXPR, MAX_EXPR)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o20, op1, o50 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, GE_EXPR, MIN_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LE_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); switch (TREE_CODE (o70)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o70)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); tree o81 = gimple_assign_rhs2 (def); o81 = do_valueize (valueize, o81); if ((o80 == o21 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o21, 0) && types_match (o80, o21))) { if ((o81 == o31 && ! TREE_SIDE_EFFECTS (o81)) || (operand_equal_p (o81, o31, 0) && types_match (o81, o31))) { if ((o71 == o30 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o30, 0) && types_match (o71, o30))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, o21, op1, o70 }; const enum tree_code cmp = LE_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } break; } default:; } } break; default:; } break; } case GE_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if ((o70 == o30 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o30, 0) && types_match (o70, o30))) { switch (TREE_CODE (o71)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o71)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o90 = gimple_assign_rhs1 (def); o90 = do_valueize (valueize, o90); tree o91 = gimple_assign_rhs2 (def); o91 = do_valueize (valueize, o91); if ((o90 == o21 && ! TREE_SIDE_EFFECTS (o90)) || (operand_equal_p (o90, o21, 0) && types_match (o90, o21))) { if ((o91 == o31 && ! TREE_SIDE_EFFECTS (o91)) || (operand_equal_p (o91, o31, 0) && types_match (o91, o31))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, o21, op1, o71 }; const enum tree_code cmp = LE_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } break; } case NE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case EQ_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_222 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR)) return true; } } } break; } case LE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_222 (res_op, seq, valueize, type, captures, LE_EXPR, NE_EXPR)) return true; } } } break; } case GE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_222 (res_op, seq, valueize, type, captures, GE_EXPR, NE_EXPR)) return true; } } } break; } default:; } } break; default:; } break; } case GE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_222 (res_op, seq, valueize, type, captures, GE_EXPR, NE_EXPR)) return true; } } } break; } case LT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_222 (res_op, seq, valueize, type, captures, LT_EXPR, GE_EXPR)) return true; } } } break; } case LE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_222 (res_op, seq, valueize, type, captures, LE_EXPR, GE_EXPR)) return true; } } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, GE_EXPR, MIN_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o20, op1, o51 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, LE_EXPR, MAX_EXPR)) return true; } } break; } case GE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o51 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, GE_EXPR, MIN_EXPR)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o20, op1, o50 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, LE_EXPR, MAX_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o41)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LE_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); switch (TREE_CODE (o70)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o70)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); tree o81 = gimple_assign_rhs2 (def); o81 = do_valueize (valueize, o81); if ((o80 == o20 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o20, 0) && types_match (o80, o20))) { if ((o81 == o41 && ! TREE_SIDE_EFFECTS (o81)) || (operand_equal_p (o81, o41, 0) && types_match (o81, o41))) { if ((o71 == o40 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o40, 0) && types_match (o71, o40))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o21, o40, o41, o20, op1, o70 }; const enum tree_code cmp = LE_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } break; } default:; } } break; default:; } break; } case GE_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if ((o70 == o40 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o40, 0) && types_match (o70, o40))) { switch (TREE_CODE (o71)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o71)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o90 = gimple_assign_rhs1 (def); o90 = do_valueize (valueize, o90); tree o91 = gimple_assign_rhs2 (def); o91 = do_valueize (valueize, o91); if ((o90 == o20 && ! TREE_SIDE_EFFECTS (o90)) || (operand_equal_p (o90, o20, 0) && types_match (o90, o20))) { if ((o91 == o41 && ! TREE_SIDE_EFFECTS (o91)) || (operand_equal_p (o91, o41, 0) && types_match (o91, o41))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o21, o40, o41, o20, op1, o71 }; const enum tree_code cmp = LE_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } break; } case GT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_222 (res_op, seq, valueize, type, captures, LE_EXPR, GT_EXPR)) return true; } } } break; } case GT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o51 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, GT_EXPR, MIN_EXPR)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o20, op1, o50 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, LT_EXPR, MAX_EXPR)) return true; } } break; } case LT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, GT_EXPR, MIN_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o20, op1, o51 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, LT_EXPR, MAX_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o41)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); switch (TREE_CODE (o70)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o70)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); tree o81 = gimple_assign_rhs2 (def); o81 = do_valueize (valueize, o81); if ((o80 == o20 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o20, 0) && types_match (o80, o20))) { if ((o81 == o41 && ! TREE_SIDE_EFFECTS (o81)) || (operand_equal_p (o81, o41, 0) && types_match (o81, o41))) { if ((o71 == o40 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o40, 0) && types_match (o71, o40))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o21, o40, o41, o20, op1, o70 }; const enum tree_code cmp = LT_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } break; } default:; } } break; default:; } break; } case GT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if ((o70 == o40 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o40, 0) && types_match (o70, o40))) { switch (TREE_CODE (o71)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o71)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o90 = gimple_assign_rhs1 (def); o90 = do_valueize (valueize, o90); tree o91 = gimple_assign_rhs2 (def); o91 = do_valueize (valueize, o91); if ((o90 == o20 && ! TREE_SIDE_EFFECTS (o90)) || (operand_equal_p (o90, o20, 0) && types_match (o90, o20))) { if ((o91 == o41 && ! TREE_SIDE_EFFECTS (o91)) || (operand_equal_p (o91, o41, 0) && types_match (o91, o41))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o21, o40, o41, o20, op1, o71 }; const enum tree_code cmp = LT_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } break; } case EQ_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_222 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } { tree op0_pops[1]; if (gimple_logical_inverted_value (op0, op0_pops, valueize)) { tree o20 = op0_pops[0]; if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { if (gimple_truth_valued_p (op1, valueize)) { { /* #line 1354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_236 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } } } } if (gimple_truth_valued_p (op0, valueize)) { { tree op1_pops[1]; if (gimple_logical_inverted_value (op1, op1_pops, valueize)) { tree o30 = op1_pops[0]; if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_236 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } } } } } return false; } static bool gimple_simplify_BIT_XOR_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (integer_zerop (op1)) { { /* #line 130 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 130, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o20 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o20, 0) && types_match (o70, o20))) { if ((o61 == o40 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o40, 0) && types_match (o61, o40))) { { /* #line 780 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_175 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } } } break; } default:; } } break; default:; } if ((o60 == o40 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o40, 0) && types_match (o60, o40))) { switch (TREE_CODE (o61)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o61)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); if ((o80 == o20 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o20, 0) && types_match (o80, o20))) { { /* #line 780 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_175 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o21 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o21, 0) && types_match (o70, o21))) { if ((o61 == o30 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o30, 0) && types_match (o61, o30))) { { /* #line 780 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o30 }; if (gimple_simplify_175 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } } } break; } default:; } } break; default:; } if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o61)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); if ((o80 == o21 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o21, 0) && types_match (o80, o21))) { { /* #line 780 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o30 }; if (gimple_simplify_175 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case INTEGER_CST: { { /* #line 783 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o61, o21 }; if (gimple_simplify_303 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { { /* #line 799 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_186 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { switch (TREE_CODE (o51)) { case INTEGER_CST: { { /* #line 783 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; if (gimple_simplify_303 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } default:; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o21 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o21, 0) && types_match (o60, o21))) { { /* #line 799 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o21, o30 }; if (gimple_simplify_186 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } case BIT_NOT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { switch (TREE_CODE (o41)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o41)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); { /* #line 799 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o20, o60 }; if (gimple_simplify_186 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } } switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o41 == o20 && ! TREE_SIDE_EFFECTS (o41)) || (operand_equal_p (o41, o20, 0) && types_match (o41, o20))) { { /* #line 799 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o20, o50 }; if (gimple_simplify_186 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 928 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_227 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 928 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_227 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o30 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o30, 0) && types_match (o50, o30))) { { /* #line 928 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o30 }; if (gimple_simplify_227 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if (tree_swap_operands_p (o70, o71)) std::swap (o70, o71); switch (TREE_CODE (o71)) { case INTEGER_CST: { { /* #line 1090 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { o20, o30, o31, o60, o70, o71 }; if (gimple_simplify_58 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } break; } default:; } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); switch (TREE_CODE (o61)) { case INTEGER_CST: { { /* #line 1090 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { o20, o30, o31, op1, o60, o61 }; if (gimple_simplify_58 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } break; } default:; } break; } default:; } } break; default:; } break; } default:; } break; } case BIT_IOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || operand_equal_p (o60, o30, 0)) { { /* #line 1098 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, o30 }; if (gimple_simplify_214 (res_op, seq, valueize, type, captures)) return true; } } if ((o60 == o31 && ! TREE_SIDE_EFFECTS (o60)) || operand_equal_p (o60, o31, 0)) { { /* #line 1098 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o31, o30, o31 }; if (gimple_simplify_214 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o30, 0)) { { /* #line 1098 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, o30 }; if (gimple_simplify_214 (res_op, seq, valueize, type, captures)) return true; } } if ((op1 == o31 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o31, 0)) { { /* #line 1098 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o31, o30, o31 }; if (gimple_simplify_214 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o20, 0)) { { /* #line 1098 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o50, o51, o20 }; if (gimple_simplify_214 (res_op, seq, valueize, type, captures)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || operand_equal_p (o51, o20, 0)) { { /* #line 1098 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o51, o50, o20 }; if (gimple_simplify_214 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } case BIT_IOR_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || operand_equal_p (o40, o20, 0)) { { /* #line 1098 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o40, o41, o20 }; if (gimple_simplify_214 (res_op, seq, valueize, type, captures)) return true; } } if ((o41 == o20 && ! TREE_SIDE_EFFECTS (o41)) || operand_equal_p (o41, o20, 0)) { { /* #line 1098 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o41, o40, o20 }; if (gimple_simplify_214 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 928 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_227 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 933 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 933, __FILE__, __LINE__); tree tem; tem = build_zero_cst (type); res_op->set_value (tem); return true; } } if (integer_all_onesp (op1)) { { /* #line 938 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 938, __FILE__, __LINE__); res_op->set_op (BIT_NOT_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (o51)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o51)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o21 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o21, 0) && types_match (o70, o21))) { { /* #line 980 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_183 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } } switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o21 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o21, 0) && types_match (o60, o21))) { if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 980 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_183 (res_op, seq, valueize, type, captures)) return true; } } } if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 980 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_183 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { switch (TREE_CODE (o51)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o51)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o20 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o20, 0) && types_match (o70, o20))) { { /* #line 980 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_183 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { if ((o61 == o40 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o40, 0) && types_match (o61, o40))) { { /* #line 980 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_183 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o21 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o21, 0) && types_match (o60, o21))) { if ((o61 == o30 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o30, 0) && types_match (o61, o30))) { { /* #line 980 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o30 }; if (gimple_simplify_183 (res_op, seq, valueize, type, captures)) return true; } } } if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { if ((o61 == o21 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o21, 0) && types_match (o61, o21))) { { /* #line 980 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o30 }; if (gimple_simplify_183 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (o61)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o61)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); if ((o80 == o21 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o21, 0) && types_match (o80, o21))) { { /* #line 1070 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o21 }; if (gimple_simplify_267 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } } switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o21 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o21, 0) && types_match (o70, o21))) { if ((o61 == o30 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o30, 0) && types_match (o61, o30))) { { /* #line 1070 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o21 }; if (gimple_simplify_267 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } case BIT_XOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { if ((o61 == o21 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o21, 0) && types_match (o61, o21))) { { /* #line 990 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o30, o21, op1 }; if (gimple_simplify_242 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o40 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o40, 0) && types_match (o60, o40))) { if ((o61 == o20 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o20, 0) && types_match (o61, o20))) { { /* #line 980 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_183 (res_op, seq, valueize, type, captures)) return true; } } } break; } case BIT_XOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o40 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o40, 0) && types_match (o60, o40))) { if ((o61 == o20 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o20, 0) && types_match (o61, o20))) { { /* #line 990 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o40, o20, op1 }; if (gimple_simplify_242 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1008 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_141 (res_op, seq, valueize, type, captures)) return true; } } } break; } case BIT_XOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1013 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_251 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o40 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o40, 0) && types_match (o60, o40))) { switch (TREE_CODE (o61)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o61)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); if ((o80 == o20 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o20, 0) && types_match (o80, o20))) { { /* #line 1070 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_267 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } } switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o20 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o20, 0) && types_match (o70, o20))) { if ((o61 == o40 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o40, 0) && types_match (o61, o40))) { { /* #line 1070 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_267 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o20, 0)) { { /* #line 1098 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o20 }; if (gimple_simplify_214 (res_op, seq, valueize, type, captures)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o21, 0)) { { /* #line 1098 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o21 }; if (gimple_simplify_214 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o20, 0)) { { /* #line 1098 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o20 }; if (gimple_simplify_214 (res_op, seq, valueize, type, captures)) return true; } } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o21, 0)) { { /* #line 1098 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o21 }; if (gimple_simplify_214 (res_op, seq, valueize, type, captures)) return true; } } break; } case BIT_XOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 990 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o20, o21, op0 }; if (gimple_simplify_242 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { switch (TREE_CODE (o51)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o51)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o20 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o20, 0) && types_match (o70, o20))) { { /* #line 990 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o20, o21, op0 }; if (gimple_simplify_242 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1013 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_251 (res_op, seq, valueize, type, captures)) return true; } } } break; } case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1021 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_253 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } } } break; } CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o21, 0)) { { /* #line 1145 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o21 }; if (gimple_simplify_298 (res_op, seq, valueize, type, captures)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o20, 0)) { { /* #line 1145 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o20 }; if (gimple_simplify_298 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o21, 0)) { { /* #line 1145 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o21 }; if (gimple_simplify_298 (res_op, seq, valueize, type, captures)) return true; } } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o20, 0)) { { /* #line 1145 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o20 }; if (gimple_simplify_298 (res_op, seq, valueize, type, captures)) return true; } } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1008 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_141 (res_op, seq, valueize, type, captures)) return true; } } } break; } case BIT_XOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1021 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_253 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } } } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); switch (TREE_CODE (o61)) { case INTEGER_CST: { { /* #line 1090 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o21, o50, o60, o61 }; if (gimple_simplify_58 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } break; } default:; } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); switch (TREE_CODE (o51)) { case INTEGER_CST: { { /* #line 1090 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50, o51 }; if (gimple_simplify_58 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } break; } default:; } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || operand_equal_p (o40, op0, 0)) { { /* #line 1098 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o40, o41, op0 }; if (gimple_simplify_214 (res_op, seq, valueize, type, captures)) return true; } } if ((o41 == op0 && ! TREE_SIDE_EFFECTS (o41)) || operand_equal_p (o41, op0, 0)) { { /* #line 1098 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o41, o40, op0 }; if (gimple_simplify_214 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } case BIT_IOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || operand_equal_p (o30, op0, 0)) { { /* #line 1098 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, op0 }; if (gimple_simplify_214 (res_op, seq, valueize, type, captures)) return true; } } if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || operand_equal_p (o31, op0, 0)) { { /* #line 1098 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o31, o30, op0 }; if (gimple_simplify_214 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); { /* #line 1104 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o60 }; if (gimple_simplify_21 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } break; } case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 1104 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o50 }; if (gimple_simplify_21 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; case INTEGER_CST: { { /* #line 1111 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, op1 }; if (gimple_simplify_143 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } break; } default:; } } break; default:; } break; } case BIT_NOT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 1104 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o50 }; if (gimple_simplify_21 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } break; } case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 1104 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_21 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; case INTEGER_CST: { { /* #line 1111 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_143 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 1119 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_287 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR)) return true; } } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 1119 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o21, o20 }; if (gimple_simplify_287 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o20, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o51, o20 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || operand_equal_p (o51, o20, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o50, o20 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o21, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o21, o20, o51, o21 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || operand_equal_p (o51, o21, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o21, o20, o50, o21 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 1119 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o30, op0 }; if (gimple_simplify_287 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR)) return true; } } if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1119 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o31, op0 }; if (gimple_simplify_287 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if (tree_swap_operands_p (o70, o71)) std::swap (o70, o71); if ((o70 == o30 && ! TREE_SIDE_EFFECTS (o70)) || operand_equal_p (o70, o30, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o31, o71, o30 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR)) return true; } } if ((o71 == o30 && ! TREE_SIDE_EFFECTS (o71)) || operand_equal_p (o71, o30, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o31, o70, o30 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR)) return true; } } if ((o70 == o31 && ! TREE_SIDE_EFFECTS (o70)) || operand_equal_p (o70, o31, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o31, o30, o71, o31 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR)) return true; } } if ((o71 == o31 && ! TREE_SIDE_EFFECTS (o71)) || operand_equal_p (o71, o31, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o31, o30, o70, o31 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, BIT_AND_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } case BIT_XOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o31 && ! TREE_SIDE_EFFECTS (o60)) || operand_equal_p (o60, o31, 0)) { { /* #line 1145 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, o31 }; if (gimple_simplify_298 (res_op, seq, valueize, type, captures)) return true; } } if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || operand_equal_p (o60, o30, 0)) { { /* #line 1145 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o31, o30, o30 }; if (gimple_simplify_298 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } if ((op1 == o31 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o31, 0)) { { /* #line 1145 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, o31 }; if (gimple_simplify_298 (res_op, seq, valueize, type, captures)) return true; } } if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o30, 0)) { { /* #line 1145 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o31, o30, o30 }; if (gimple_simplify_298 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_XOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || operand_equal_p (o51, o20, 0)) { { /* #line 1145 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o50, o51, o20 }; if (gimple_simplify_298 (res_op, seq, valueize, type, captures)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o20, 0)) { { /* #line 1145 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o51, o50, o20 }; if (gimple_simplify_298 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } case BIT_XOR_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); if ((o41 == o20 && ! TREE_SIDE_EFFECTS (o41)) || operand_equal_p (o41, o20, 0)) { { /* #line 1145 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o40, o41, o20 }; if (gimple_simplify_298 (res_op, seq, valueize, type, captures)) return true; } } if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || operand_equal_p (o40, o20, 0)) { { /* #line 1145 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o41, o40, o20 }; if (gimple_simplify_298 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_XOR_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); if ((o41 == op0 && ! TREE_SIDE_EFFECTS (o41)) || operand_equal_p (o41, op0, 0)) { { /* #line 1145 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o40, o41, op0 }; if (gimple_simplify_298 (res_op, seq, valueize, type, captures)) return true; } } if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || operand_equal_p (o40, op0, 0)) { { /* #line 1145 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o41, o40, op0 }; if (gimple_simplify_298 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } case BIT_XOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || operand_equal_p (o31, op0, 0)) { { /* #line 1145 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, op0 }; if (gimple_simplify_298 (res_op, seq, valueize, type, captures)) return true; } } if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || operand_equal_p (o30, op0, 0)) { { /* #line 1145 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o31, o30, op0 }; if (gimple_simplify_298 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_XOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_XOR_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if (tree_swap_operands_p (o70, o71)) std::swap (o70, o71); if ((o70 == o30 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o30, 0) && types_match (o70, o30))) { { /* #line 1160 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, o71 }; if (gimple_simplify_168 (res_op, seq, valueize, type, captures)) return true; } } if ((o71 == o30 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o30, 0) && types_match (o71, o30))) { { /* #line 1160 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, o70 }; if (gimple_simplify_168 (res_op, seq, valueize, type, captures)) return true; } } if ((o70 == o31 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o31, 0) && types_match (o70, o31))) { { /* #line 1160 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o31, o30, o71 }; if (gimple_simplify_168 (res_op, seq, valueize, type, captures)) return true; } } if ((o71 == o31 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o31, 0) && types_match (o71, o31))) { { /* #line 1160 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o31, o30, o70 }; if (gimple_simplify_168 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } case BIT_XOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { { /* #line 1160 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, o61 }; if (gimple_simplify_168 (res_op, seq, valueize, type, captures)) return true; } } if ((o61 == o30 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o30, 0) && types_match (o61, o30))) { { /* #line 1160 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, o60 }; if (gimple_simplify_168 (res_op, seq, valueize, type, captures)) return true; } } if ((o60 == o31 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o31, 0) && types_match (o60, o31))) { { /* #line 1160 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o31, o30, o61 }; if (gimple_simplify_168 (res_op, seq, valueize, type, captures)) return true; } } if ((o61 == o31 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o31, 0) && types_match (o61, o31))) { { /* #line 1160 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o31, o30, o60 }; if (gimple_simplify_168 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 1262 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_320 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } break; } default:; } } break; default:; } { /* #line 1262 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_320 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } break; } case BIT_XOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_XOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { { /* #line 1160 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o61 }; if (gimple_simplify_168 (res_op, seq, valueize, type, captures)) return true; } } if ((o61 == o20 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o20, 0) && types_match (o61, o20))) { { /* #line 1160 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o60 }; if (gimple_simplify_168 (res_op, seq, valueize, type, captures)) return true; } } if ((o60 == o21 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o21, 0) && types_match (o60, o21))) { { /* #line 1160 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o61 }; if (gimple_simplify_168 (res_op, seq, valueize, type, captures)) return true; } } if ((o61 == o21 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o21, 0) && types_match (o61, o21))) { { /* #line 1160 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o60 }; if (gimple_simplify_168 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } case BIT_XOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1160 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; if (gimple_simplify_168 (res_op, seq, valueize, type, captures)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1160 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_168 (res_op, seq, valueize, type, captures)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1160 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o51 }; if (gimple_simplify_168 (res_op, seq, valueize, type, captures)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1160 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o50 }; if (gimple_simplify_168 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (o21)) { if (CONSTANT_CLASS_P (op1)) { { /* #line 1305 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_212 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } } } break; } default:; } } break; default:; } { tree op0_pops[1]; if (gimple_logical_inverted_value (op0, op0_pops, valueize)) { tree o20 = op0_pops[0]; if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { if (gimple_truth_valued_p (op1, valueize)) { { /* #line 1354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_236 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } } } } } { tree op0_pops[1]; if (gimple_nop_convert (op0, op0_pops, valueize)) { tree o20 = op0_pops[0]; switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 1403 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o30, op1 }; if (gimple_simplify_270 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } } } if (gimple_truth_valued_p (op0, valueize)) { { tree op1_pops[1]; if (gimple_logical_inverted_value (op1, op1_pops, valueize)) { tree o30 = op1_pops[0]; if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_236 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } } } } } { tree op1_pops[1]; if (gimple_nop_convert (op1, op1_pops, valueize)) { tree o30 = op1_pops[0]; switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 1403 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o30, o40, op0 }; if (gimple_simplify_270 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 1704 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_149 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, BIT_XOR_EXPR)) return true; } break; } default:; } break; } default:; } break; } case LT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_truep (op1)) { { /* #line 3181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_283 (res_op, seq, valueize, type, captures, LT_EXPR, GE_EXPR, UNGE_EXPR)) return true; } } break; } case LE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_truep (op1)) { { /* #line 3181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_283 (res_op, seq, valueize, type, captures, LE_EXPR, GT_EXPR, UNGT_EXPR)) return true; } } break; } case EQ_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if (integer_truep (op1)) { { /* #line 3181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_283 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR, NE_EXPR)) return true; } } break; } case NE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if (integer_truep (op1)) { { /* #line 3181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_283 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR, EQ_EXPR)) return true; } } break; } case GE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_truep (op1)) { { /* #line 3181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_283 (res_op, seq, valueize, type, captures, GE_EXPR, LT_EXPR, UNLT_EXPR)) return true; } } break; } case GT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_truep (op1)) { { /* #line 3181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_283 (res_op, seq, valueize, type, captures, GT_EXPR, LE_EXPR, UNLE_EXPR)) return true; } } break; } case UNORDERED_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if (integer_truep (op1)) { { /* #line 3181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_283 (res_op, seq, valueize, type, captures, UNORDERED_EXPR, ORDERED_EXPR, ORDERED_EXPR)) return true; } } break; } case ORDERED_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if (integer_truep (op1)) { { /* #line 3181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_283 (res_op, seq, valueize, type, captures, ORDERED_EXPR, UNORDERED_EXPR, UNORDERED_EXPR)) return true; } } break; } case UNLT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_truep (op1)) { { /* #line 3181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_283 (res_op, seq, valueize, type, captures, UNLT_EXPR, GE_EXPR, GE_EXPR)) return true; } } break; } case UNLE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_truep (op1)) { { /* #line 3181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_283 (res_op, seq, valueize, type, captures, UNLE_EXPR, GT_EXPR, GT_EXPR)) return true; } } break; } case UNGT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_truep (op1)) { { /* #line 3181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_283 (res_op, seq, valueize, type, captures, UNGT_EXPR, LE_EXPR, LE_EXPR)) return true; } } break; } case UNGE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_truep (op1)) { { /* #line 3181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_283 (res_op, seq, valueize, type, captures, UNGE_EXPR, LT_EXPR, LT_EXPR)) return true; } } break; } case UNEQ_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if (integer_truep (op1)) { { /* #line 3181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_283 (res_op, seq, valueize, type, captures, UNEQ_EXPR, LTGT_EXPR, LTGT_EXPR)) return true; } } break; } case LTGT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if (integer_truep (op1)) { { /* #line 3181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_283 (res_op, seq, valueize, type, captures, LTGT_EXPR, UNEQ_EXPR, UNEQ_EXPR)) return true; } } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_POINTER_DIFF_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (integer_zerop (op1)) { { /* #line 140 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 140, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, op0, 0)) { { /* #line 166 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op0 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 166, __FILE__, __LINE__); tree tem; tem = build_zero_cst (type); res_op->set_value (tem); return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case ADDR_EXPR: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 1784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 1784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1])) && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))) { { /* #line 1786 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ poly_int64 diff; /* #line 1787 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ptr_difference_const (captures[1], captures[3], &diff)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1788, __FILE__, __LINE__); tree tem; tem = build_int_cst_type (type, diff); res_op->set_value (tem); return true; } } } } break; } default:; } } break; default:; } { /* #line 1784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, op1 }; /* #line 1784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1])) && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))) { { /* #line 1786 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ poly_int64 diff; /* #line 1787 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ptr_difference_const (captures[1], captures[3], &diff)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1788, __FILE__, __LINE__); tree tem; tem = build_int_cst_type (type, diff); res_op->set_value (tem); return true; } } } } break; } default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case ADDR_EXPR: { { /* #line 1791 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 1791 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1])) && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))) { { /* #line 1793 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ poly_int64 diff; /* #line 1794 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ptr_difference_const (captures[1], captures[3], &diff)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1795, __FILE__, __LINE__); tree tem; tem = build_int_cst_type (type, diff); res_op->set_value (tem); return true; } } } } break; } default:; } break; } default:; } } break; case ADDR_EXPR: { { /* #line 1791 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, op1 }; /* #line 1791 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1])) && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))) { { /* #line 1793 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ poly_int64 diff; /* #line 1794 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ptr_difference_const (captures[1], captures[3], &diff)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1795, __FILE__, __LINE__); tree tem; tem = build_int_cst_type (type, diff); res_op->set_value (tem); return true; } } } } break; } default:; } break; } default:; } } break; case ADDR_EXPR: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 1784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op0, op1, o30 }; /* #line 1784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1])) && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))) { { /* #line 1786 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ poly_int64 diff; /* #line 1787 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ptr_difference_const (captures[1], captures[3], &diff)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1788, __FILE__, __LINE__); tree tem; tem = build_int_cst_type (type, diff); res_op->set_value (tem); return true; } } } } break; } default:; } } break; default:; } { /* #line 1784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op0, op1, op1 }; /* #line 1784 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1])) && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))) { { /* #line 1786 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ poly_int64 diff; /* #line 1787 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ptr_difference_const (captures[1], captures[3], &diff)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1788, __FILE__, __LINE__); tree tem; tem = build_int_cst_type (type, diff); res_op->set_value (tem); return true; } } } } break; } default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case ADDR_EXPR: { { /* #line 1791 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op0, op1, o30 }; /* #line 1791 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1])) && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))) { { /* #line 1793 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ poly_int64 diff; /* #line 1794 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ptr_difference_const (captures[1], captures[3], &diff)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1795, __FILE__, __LINE__); tree tem; tem = build_int_cst_type (type, diff); res_op->set_value (tem); return true; } } } } break; } default:; } break; } default:; } } break; case ADDR_EXPR: { { /* #line 1791 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op0, op1, op1 }; /* #line 1791 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_nop_conversion_p (TREE_TYPE(captures[0]), TREE_TYPE (captures[1])) && tree_nop_conversion_p (TREE_TYPE(captures[2]), TREE_TYPE (captures[3]))) { { /* #line 1793 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ poly_int64 diff; /* #line 1794 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ptr_difference_const (captures[1], captures[3], &diff)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1795, __FILE__, __LINE__); tree tem; tem = build_int_cst_type (type, diff); res_op->set_value (tem); return true; } } } } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o20, 0)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o20 }; /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { { /* #line 2029 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree stype = signed_type_for (TREE_TYPE (captures[1])); gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2033, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, stype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || operand_equal_p (o30, op0, 0)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, op0 }; /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { { /* #line 2076 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree stype = signed_type_for (TREE_TYPE (captures[1])); gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2080, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, stype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o20, 0)) { { /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o51, o20 }; /* #line 1816 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_SATURATING (type)) { /* #line 1874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((!FLOAT_TYPE_P (type) || flag_associative_math) && !FIXED_POINT_TYPE_P (type)) { { /* #line 2130 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree stype = signed_type_for (TREE_TYPE (captures[1])); gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2134, __FILE__, __LINE__); res_op->set_op (MINUS_EXPR, type, 2); { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, stype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, stype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } if (integer_zerop (op0)) { { /* #line 2781 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op1 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2781, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } return false; } static bool gimple_simplify_MULT_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNF: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_31 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF)) return true; } } } } break; case CFN_BUILT_IN_COPYSIGN: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_31 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN)) return true; } } } } break; case CFN_BUILT_IN_COPYSIGNL: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_31 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL)) return true; } } } } break; case CFN_BUILT_IN_COPYSIGNF16: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_31 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF16)) return true; } } } } break; case CFN_BUILT_IN_COPYSIGNF32: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_31 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32)) return true; } } } } break; case CFN_BUILT_IN_COPYSIGNF64: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_31 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64)) return true; } } } } break; case CFN_BUILT_IN_COPYSIGNF128: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_31 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128)) return true; } } } } break; case CFN_BUILT_IN_COPYSIGNF32X: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_31 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32X)) return true; } } } } break; case CFN_BUILT_IN_COPYSIGNF64X: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_31 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64X)) return true; } } } } break; case CFN_BUILT_IN_COPYSIGNF128X: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_31 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128X)) return true; } } } } break; case CFN_COPYSIGN: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_31 (res_op, seq, valueize, type, captures, CFN_COPYSIGN)) return true; } } } } break; default:; } } break; case VECTOR_CST: { { /* #line 202 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 202 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (initializer_each_zero_or_onep (captures[1]) && !HONOR_SNANS (type) && !HONOR_SIGNED_ZEROS (type)) { { /* #line 205 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree itype = FLOAT_TYPE_P (type) ? unsigned_type_for (type) : type; /* #line 206 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (itype && (!VECTOR_MODE_P (TYPE_MODE (type)) || (VECTOR_MODE_P (TYPE_MODE (itype)) && optab_handler (and_optab, TYPE_MODE (itype)) != CODE_FOR_nothing))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 211, __FILE__, __LINE__); res_op->set_op (VIEW_CONVERT_EXPR, type, 1); { tree ops1[2], res; { tree ops2[1], res; ops2[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), VIEW_CONVERT_EXPR, itype, ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } { tree ops2[2], res; ops2[0] = captures[1]; ops2[1] = build_zero_cst (type); gimple_match_op tem_op (res_op->cond.any_else (), NE_EXPR, itype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[1] = res; } gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, itype, ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } break; } default:; } if (integer_zerop (op1)) { { /* #line 170 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 170, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; } } if (real_zerop (op1)) { { /* #line 178 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 178 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_NANS (type) && !HONOR_SIGNED_ZEROS (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 179, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; } } } if (real_onep (op1)) { { /* #line 185 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 185 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_SNANS (type) && (!HONOR_SIGNED_ZEROS (type) || !COMPLEX_FLOAT_TYPE_P (type))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 188, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } if (real_minus_onep (op1)) { { /* #line 193 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 193 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_SNANS (type) && (!HONOR_SIGNED_ZEROS (type) || !COMPLEX_FLOAT_TYPE_P (type))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 196, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNF: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if (real_onep (o20)) { if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o21 }; if (gimple_simplify_148 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF)) return true; } } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); if ((op1 == o40 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o40, 0) && types_match (op1, o40))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o40 }; if (gimple_simplify_297 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF)) return true; } } break; } default:; } } break; default:; } } } break; case CFN_BUILT_IN_COPYSIGN: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if (real_onep (o20)) { if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o21 }; if (gimple_simplify_148 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN)) return true; } } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); if ((op1 == o40 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o40, 0) && types_match (op1, o40))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o40 }; if (gimple_simplify_297 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN)) return true; } } break; } default:; } } break; default:; } } } break; case CFN_BUILT_IN_COPYSIGNL: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if (real_onep (o20)) { if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o21 }; if (gimple_simplify_148 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL)) return true; } } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); if ((op1 == o40 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o40, 0) && types_match (op1, o40))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o40 }; if (gimple_simplify_297 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL)) return true; } } break; } default:; } } break; default:; } } } break; case CFN_BUILT_IN_COPYSIGNF16: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if (real_onep (o20)) { if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o21 }; if (gimple_simplify_148 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF16)) return true; } } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); if ((op1 == o40 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o40, 0) && types_match (op1, o40))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o40 }; if (gimple_simplify_297 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF16)) return true; } } break; } default:; } } break; default:; } } } break; case CFN_BUILT_IN_COPYSIGNF32: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if (real_onep (o20)) { if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o21 }; if (gimple_simplify_148 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32)) return true; } } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); if ((op1 == o40 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o40, 0) && types_match (op1, o40))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o40 }; if (gimple_simplify_297 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32)) return true; } } break; } default:; } } break; default:; } } } break; case CFN_BUILT_IN_COPYSIGNF64: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if (real_onep (o20)) { if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o21 }; if (gimple_simplify_148 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64)) return true; } } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); if ((op1 == o40 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o40, 0) && types_match (op1, o40))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o40 }; if (gimple_simplify_297 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64)) return true; } } break; } default:; } } break; default:; } } } break; case CFN_BUILT_IN_COPYSIGNF128: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if (real_onep (o20)) { if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o21 }; if (gimple_simplify_148 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128)) return true; } } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); if ((op1 == o40 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o40, 0) && types_match (op1, o40))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o40 }; if (gimple_simplify_297 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128)) return true; } } break; } default:; } } break; default:; } } } break; case CFN_BUILT_IN_COPYSIGNF32X: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if (real_onep (o20)) { if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o21 }; if (gimple_simplify_148 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32X)) return true; } } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); if ((op1 == o40 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o40, 0) && types_match (op1, o40))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o40 }; if (gimple_simplify_297 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32X)) return true; } } break; } default:; } } break; default:; } } } break; case CFN_BUILT_IN_COPYSIGNF64X: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if (real_onep (o20)) { if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o21 }; if (gimple_simplify_148 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64X)) return true; } } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); if ((op1 == o40 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o40, 0) && types_match (op1, o40))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o40 }; if (gimple_simplify_297 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64X)) return true; } } break; } default:; } } break; default:; } } } break; case CFN_BUILT_IN_COPYSIGNF128X: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if (real_onep (o20)) { if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o21 }; if (gimple_simplify_148 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128X)) return true; } } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); if ((op1 == o40 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o40, 0) && types_match (op1, o40))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o40 }; if (gimple_simplify_297 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128X)) return true; } } break; } default:; } } break; default:; } } } break; case CFN_COPYSIGN: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if (real_onep (o20)) { if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 251 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o21 }; if (gimple_simplify_148 (res_op, seq, valueize, type, captures, CFN_COPYSIGN)) return true; } } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); if ((op1 == o40 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o40, 0) && types_match (op1, o40))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o40 }; if (gimple_simplify_297 (res_op, seq, valueize, type, captures, CFN_COPYSIGN)) return true; } } break; } default:; } } break; default:; } } } break; default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNF: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, op0, 0) && types_match (o50, op0))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_281 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF)) return true; } } break; } default:; } } break; default:; } } } break; case CFN_BUILT_IN_COPYSIGN: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, op0, 0) && types_match (o50, op0))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_281 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN)) return true; } } break; } default:; } } break; default:; } } } break; case CFN_BUILT_IN_COPYSIGNL: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, op0, 0) && types_match (o50, op0))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_281 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL)) return true; } } break; } default:; } } break; default:; } } } break; case CFN_BUILT_IN_COPYSIGNF16: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, op0, 0) && types_match (o50, op0))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_281 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF16)) return true; } } break; } default:; } } break; default:; } } } break; case CFN_BUILT_IN_COPYSIGNF32: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, op0, 0) && types_match (o50, op0))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_281 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32)) return true; } } break; } default:; } } break; default:; } } } break; case CFN_BUILT_IN_COPYSIGNF64: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, op0, 0) && types_match (o50, op0))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_281 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64)) return true; } } break; } default:; } } break; default:; } } } break; case CFN_BUILT_IN_COPYSIGNF128: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, op0, 0) && types_match (o50, op0))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_281 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128)) return true; } } break; } default:; } } break; default:; } } } break; case CFN_BUILT_IN_COPYSIGNF32X: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, op0, 0) && types_match (o50, op0))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_281 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32X)) return true; } } break; } default:; } } break; default:; } } } break; case CFN_BUILT_IN_COPYSIGNF64X: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, op0, 0) && types_match (o50, op0))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_281 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64X)) return true; } } break; } default:; } } break; default:; } } } break; case CFN_BUILT_IN_COPYSIGNF128X: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, op0, 0) && types_match (o50, op0))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_281 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128X)) return true; } } break; } default:; } } break; default:; } } } break; case CFN_COPYSIGN: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if (real_onep (o30)) { switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, op0, 0) && types_match (o50, op0))) { { /* #line 257 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_281 (res_op, seq, valueize, type, captures, CFN_COPYSIGN)) return true; } } break; } default:; } } break; default:; } } } break; default:; } } break; default:; } if (integer_onep (op1)) { { /* #line 270 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_33 (res_op, seq, valueize, type, captures, MULT_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 350 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; { /* #line 350 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ wi::overflow_type overflow; wide_int mul = wi::mul (wi::to_wide (captures[1]), wi::to_wide (captures[2]), TYPE_SIGN (type), &overflow); /* #line 357 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!overflow || TYPE_OVERFLOW_WRAPS (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 358, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = wide_int_to_tree (type, mul); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } break; } default:; } break; } case TRUNC_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_pow2p (o21)) { if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 579 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 579 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_UNSIGNED (TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 580, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; ops1[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 626 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 626, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[1]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } case ABSU_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 631 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 631, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[1]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; captures[2] = res; } res_op->ops[0] = captures[2]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNF: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 685 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_139 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF)) return true; } } } break; case CFN_BUILT_IN_COPYSIGN: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 685 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_139 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN)) return true; } } } break; case CFN_BUILT_IN_COPYSIGNL: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 685 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_139 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL)) return true; } } } break; case CFN_BUILT_IN_COPYSIGNF16: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 685 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_139 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF16)) return true; } } } break; case CFN_BUILT_IN_COPYSIGNF32: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 685 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_139 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32)) return true; } } } break; case CFN_BUILT_IN_COPYSIGNF64: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 685 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_139 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64)) return true; } } } break; case CFN_BUILT_IN_COPYSIGNF128: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 685 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_139 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128)) return true; } } } break; case CFN_BUILT_IN_COPYSIGNF32X: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 685 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_139 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32X)) return true; } } } break; case CFN_BUILT_IN_COPYSIGNF64X: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 685 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_139 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64X)) return true; } } } break; case CFN_BUILT_IN_COPYSIGNF128X: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 685 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_139 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128X)) return true; } } } break; case CFN_COPYSIGN: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 685 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_139 (res_op, seq, valueize, type, captures, CFN_COPYSIGN)) return true; } } } break; default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LSHIFT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (integer_onep (o40)) { { /* #line 703 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o40, o41 }; if (gimple_simplify_293 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LSHIFT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (integer_onep (o30)) { { /* #line 703 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o30, o31 }; if (gimple_simplify_293 (res_op, seq, valueize, type, captures)) return true; } } break; } case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if (gimple_negate_expr_p (o50, valueize)) { { /* #line 1223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o50 }; if (gimple_simplify_154 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } if (gimple_negate_expr_p (op1, valueize)) { { /* #line 1223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, op1 }; if (gimple_simplify_154 (res_op, seq, valueize, type, captures)) return true; } } break; } case GT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); { /* #line 1422 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, op1 }; if (gimple_simplify_115 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } break; } case LT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); { /* #line 1422 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, op1 }; if (gimple_simplify_115 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } break; } case GE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); { /* #line 1422 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, op1 }; if (gimple_simplify_115 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } break; } case LE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); { /* #line 1422 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, op1 }; if (gimple_simplify_115 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } break; } case EXACT_DIV_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o31 && ! TREE_SIDE_EFFECTS (o60)) || operand_equal_p (o60, o31, 0)) { { /* #line 2736 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, o31 }; if (gimple_simplify_174 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } if ((op1 == o31 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o31, 0)) { { /* #line 2736 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, o31 }; if (gimple_simplify_174 (res_op, seq, valueize, type, captures)) return true; } } break; } case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case EXACT_DIV_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); switch (TREE_CODE (o51)) { case INTEGER_CST: { switch (TREE_CODE (o31)) { case INTEGER_CST: { if ((op1 == o51 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o51, 0)) { { /* #line 2742 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o50, o51, o31, o51 }; if (gimple_simplify_295 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } break; } default:; } break; } default:; } break; } default:; } } break; default:; } break; } case EXACT_DIV_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o41)) { case INTEGER_CST: { switch (TREE_CODE (o31)) { case INTEGER_CST: { if ((op1 == o41 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o41, 0)) { { /* #line 2742 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o40, o41, o31, o41 }; if (gimple_simplify_295 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } break; } default:; } break; } default:; } break; } default:; } } break; default:; } break; } case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case EXACT_DIV_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); switch (TREE_CODE (o51)) { case INTEGER_CST: { switch (TREE_CODE (o31)) { case INTEGER_CST: { if ((op1 == o51 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o51, 0)) { { /* #line 2742 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o50, o51, o31, o51 }; if (gimple_simplify_295 (res_op, seq, valueize, type, captures, MINUS_EXPR)) return true; } } break; } default:; } break; } default:; } break; } default:; } } break; default:; } break; } case EXACT_DIV_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o41)) { case INTEGER_CST: { switch (TREE_CODE (o31)) { case INTEGER_CST: { if ((op1 == o41 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o41, 0)) { { /* #line 2742 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o40, o41, o31, o41 }; if (gimple_simplify_295 (res_op, seq, valueize, type, captures, MINUS_EXPR)) return true; } } break; } default:; } break; } default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } if (gimple_negate_expr_p (o20, valueize)) { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 1223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o50, o20 }; if (gimple_simplify_154 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } break; } case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 1223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_154 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LSHIFT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (integer_onep (o30)) { { /* #line 703 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o30, o31 }; if (gimple_simplify_293 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LSHIFT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_onep (o20)) { { /* #line 703 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o20, o21 }; if (gimple_simplify_293 (res_op, seq, valueize, type, captures)) return true; } } break; } case RDIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 723 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; /* #line 723 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_associative_math && single_use (captures[0])) { { /* #line 725 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree tem = const_binop (MULT_EXPR, type, captures[1], captures[3]); /* #line 727 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tem) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 728, __FILE__, __LINE__); res_op->set_op (RDIV_EXPR, type, 2); res_op->ops[0] = tem; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; } default:; } break; } default:; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); if (gimple_negate_expr_p (o40, valueize)) { { /* #line 1223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_154 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } if (gimple_negate_expr_p (op1, valueize)) { { /* #line 1223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_154 (res_op, seq, valueize, type, captures)) return true; } } break; } case EXACT_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o21, 0)) { { /* #line 2736 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o21 }; if (gimple_simplify_174 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o21, 0)) { { /* #line 2736 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o21 }; if (gimple_simplify_174 (res_op, seq, valueize, type, captures)) return true; } } break; } case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case EXACT_DIV_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o41)) { case INTEGER_CST: { switch (TREE_CODE (o21)) { case INTEGER_CST: { if ((op1 == o41 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o41, 0)) { { /* #line 2742 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o40, o41, o21, o41 }; if (gimple_simplify_295 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } break; } default:; } break; } default:; } break; } default:; } } break; default:; } break; } case EXACT_DIV_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (o21)) { case INTEGER_CST: { if ((op1 == o31 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o31, 0)) { { /* #line 2742 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o31, o21, o31 }; if (gimple_simplify_295 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } } break; } default:; } break; } default:; } break; } default:; } } break; default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case EXACT_DIV_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o41)) { case INTEGER_CST: { switch (TREE_CODE (o21)) { case INTEGER_CST: { if ((op1 == o41 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o41, 0)) { { /* #line 2742 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o40, o41, o21, o41 }; if (gimple_simplify_295 (res_op, seq, valueize, type, captures, MINUS_EXPR)) return true; } } break; } default:; } break; } default:; } break; } default:; } } break; default:; } break; } case EXACT_DIV_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (o21)) { case INTEGER_CST: { if ((op1 == o31 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o31, 0)) { { /* #line 2742 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o31, o21, o31 }; if (gimple_simplify_295 (res_op, seq, valueize, type, captures, MINUS_EXPR)) return true; } } break; } default:; } break; } default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } if (gimple_negate_expr_p (op0, valueize)) { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 1223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, op0 }; if (gimple_simplify_154 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } break; } case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 1223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, op0 }; if (gimple_simplify_154 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } } if (integer_minus_onep (op1)) { { /* #line 2794 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2794, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { { /* #line 2800 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_153 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { { /* #line 2800 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o30, o31, op0 }; if (gimple_simplify_153 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_94 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTF: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4282, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_SQRTF, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_94 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRT)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRT: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4282, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_SQRT, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_SQRTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_94 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTL)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTL: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4282, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_SQRTL, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_SQRTF16: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_94 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF16)) return true; } } } break; case CFN_BUILT_IN_SQRTF32: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_94 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF32)) return true; } } } break; case CFN_BUILT_IN_SQRTF64: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_94 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF64)) return true; } } } break; case CFN_BUILT_IN_SQRTF128: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_94 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF128)) return true; } } } break; case CFN_BUILT_IN_SQRTF32X: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_94 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF32X)) return true; } } } break; case CFN_BUILT_IN_SQRTF64X: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_94 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF64X)) return true; } } } break; case CFN_BUILT_IN_SQRTF128X: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_94 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF128X)) return true; } } } break; case CFN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o20 }; if (gimple_simplify_94 (res_op, seq, valueize, type, captures, CFN_SQRT)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_SQRT: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4282, __FILE__, __LINE__); res_op->set_op (CFN_SQRT, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_CBRTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_CBRTF: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4282, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_CBRTF, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_CBRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_CBRT: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4282, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_CBRT, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_CBRTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_CBRTL: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4282, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_CBRTL, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_EXPF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXPF: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4288, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXPF, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POWF: if (gimple_call_num_args (def) == 2) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o40, o41, op0, o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXPF, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOGF, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_EXP: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXP: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4288, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POW: if (gimple_call_num_args (def) == 2) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o40, o41, op0, o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_EXPL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXPL: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4288, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXPL, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POWL: if (gimple_call_num_args (def) == 2) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o40, o41, op0, o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXPL, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOGL, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } } break; default:; } } break; case CFN_EXP: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_EXP: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4288, __FILE__, __LINE__); res_op->set_op (CFN_EXP, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_POW: if (gimple_call_num_args (def) == 2) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o40, o41, op0, o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_EXP, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_LOG, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_EXP2F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXP2F: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4288, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP2F, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POWF: if (gimple_call_num_args (def) == 2) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o40, o41, op0, o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP2F, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG2F, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_EXP2: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXP2: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4288, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP2, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POW: if (gimple_call_num_args (def) == 2) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o40, o41, op0, o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP2, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG2, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_EXP2L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXP2L: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4288, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP2L, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POWL: if (gimple_call_num_args (def) == 2) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o40, o41, op0, o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP2L, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG2L, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } } break; default:; } } break; case CFN_EXP2: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_EXP2: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4288, __FILE__, __LINE__); res_op->set_op (CFN_EXP2, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_POW: if (gimple_call_num_args (def) == 2) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o40, o41, op0, o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_EXP2, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_LOG2, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_EXP10F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXP10F: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4288, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP10F, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POWF: if (gimple_call_num_args (def) == 2) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o40, o41, op0, o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP10F, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10F, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_EXP10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXP10: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4288, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP10, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POW: if (gimple_call_num_args (def) == 2) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o40, o41, op0, o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP10, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_EXP10L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXP10L: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4288, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP10L, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POWL: if (gimple_call_num_args (def) == 2) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o40, o41, op0, o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP10L, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10L, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } } break; default:; } } break; case CFN_EXP10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_EXP10: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4288, __FILE__, __LINE__); res_op->set_op (CFN_EXP10, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_POW: if (gimple_call_num_args (def) == 2) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o40, o41, op0, o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_EXP10, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_LOG10, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_POW10F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_POW10F: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4288, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW10F, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POWF: if (gimple_call_num_args (def) == 2) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o40, o41, op0, o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW10F, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10F, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_POW10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_POW10: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4288, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW10, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POW: if (gimple_call_num_args (def) == 2) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o40, o41, op0, o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW10, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_POW10L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_POW10L: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4288, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW10L, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POWL: if (gimple_call_num_args (def) == 2) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op1, o40, o41, op0, o20 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW10L, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10L, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_POWF: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case REAL_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXPF: if (gimple_call_num_args (def) == 1) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXPF, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOGF, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } break; case CFN_BUILT_IN_EXP2F: if (gimple_call_num_args (def) == 1) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP2F, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG2F, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } break; case CFN_BUILT_IN_EXP10F: if (gimple_call_num_args (def) == 1) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP10F, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10F, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } break; case CFN_BUILT_IN_POW10F: if (gimple_call_num_args (def) == 1) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW10F, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10F, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } break; default:; } } break; default:; } break; } default:; } switch (TREE_CODE (o21)) { case REAL_CST: { if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op0, o21 }; if (gimple_simplify_24 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWF)) return true; } } break; } default:; } } break; case CFN_BUILT_IN_POW: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case REAL_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXP: if (gimple_call_num_args (def) == 1) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } break; case CFN_BUILT_IN_EXP2: if (gimple_call_num_args (def) == 1) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP2, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG2, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } break; case CFN_BUILT_IN_EXP10: if (gimple_call_num_args (def) == 1) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP10, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } break; case CFN_BUILT_IN_POW10: if (gimple_call_num_args (def) == 1) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW10, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } break; default:; } } break; default:; } break; } default:; } switch (TREE_CODE (o21)) { case REAL_CST: { if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op0, o21 }; if (gimple_simplify_24 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POW)) return true; } } break; } default:; } } break; case CFN_BUILT_IN_POWL: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case REAL_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_EXPL: if (gimple_call_num_args (def) == 1) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXPL, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOGL, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } break; case CFN_BUILT_IN_EXP2L: if (gimple_call_num_args (def) == 1) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP2L, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG2L, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } break; case CFN_BUILT_IN_EXP10L: if (gimple_call_num_args (def) == 1) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP10L, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10L, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } break; case CFN_BUILT_IN_POW10L: if (gimple_call_num_args (def) == 1) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW10L, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_LOG10L, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } break; default:; } } break; default:; } break; } default:; } switch (TREE_CODE (o21)) { case REAL_CST: { if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op0, o21 }; if (gimple_simplify_24 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWL)) return true; } } break; } default:; } } break; case CFN_POW: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case REAL_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_EXP: if (gimple_call_num_args (def) == 1) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_EXP, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_LOG, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } break; case CFN_EXP2: if (gimple_call_num_args (def) == 1) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_EXP2, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_LOG2, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } break; case CFN_EXP10: if (gimple_call_num_args (def) == 1) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { /* #line 4424 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_compare (GT_EXPR, TREE_REAL_CST_PTR (captures[1]), &dconst0) && real_isfinite (TREE_REAL_CST_PTR (captures[1]))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4426, __FILE__, __LINE__); res_op->set_op (CFN_EXP10, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_LOG10, TREE_TYPE (ops3[0]), ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), PLUS_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } break; default:; } } break; default:; } break; } default:; } switch (TREE_CODE (o21)) { case REAL_CST: { if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op0, o21 }; if (gimple_simplify_24 (res_op, seq, valueize, type, captures, CFN_POW)) return true; } } break; } default:; } } break; case CFN_BUILT_IN_TANF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COSF: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_140 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TANF, CFN_BUILT_IN_COSF, CFN_BUILT_IN_SINF)) return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_TAN: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COS: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_140 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TAN, CFN_BUILT_IN_COS, CFN_BUILT_IN_SIN)) return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_TANL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COSL: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_140 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TANL, CFN_BUILT_IN_COSL, CFN_BUILT_IN_SINL)) return true; } } } break; default:; } } break; default:; } } break; case CFN_TAN: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_COS: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_140 (res_op, seq, valueize, type, captures, CFN_TAN, CFN_COS, CFN_SIN)) return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_COSF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_TANF: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o20, op0 }; if (gimple_simplify_140 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TANF, CFN_BUILT_IN_COSF, CFN_BUILT_IN_SINF)) return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_COS: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_TAN: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o20, op0 }; if (gimple_simplify_140 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TAN, CFN_BUILT_IN_COS, CFN_BUILT_IN_SIN)) return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_COSL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_TANL: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o20, op0 }; if (gimple_simplify_140 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TANL, CFN_BUILT_IN_COSL, CFN_BUILT_IN_SINL)) return true; } } } break; default:; } } break; default:; } } break; case CFN_COS: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_TAN: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o20, op0 }; if (gimple_simplify_140 (res_op, seq, valueize, type, captures, CFN_TAN, CFN_COS, CFN_SIN)) return true; } } } break; default:; } } break; default:; } } break; default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_POWF: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { switch (TREE_CODE (o31)) { case REAL_CST: { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o31 }; if (gimple_simplify_24 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWF)) return true; } break; } default:; } } } break; case CFN_BUILT_IN_POW: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { switch (TREE_CODE (o31)) { case REAL_CST: { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o31 }; if (gimple_simplify_24 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POW)) return true; } break; } default:; } } } break; case CFN_BUILT_IN_POWL: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { switch (TREE_CODE (o31)) { case REAL_CST: { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o31 }; if (gimple_simplify_24 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWL)) return true; } break; } default:; } } } break; case CFN_POW: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { switch (TREE_CODE (o31)) { case REAL_CST: { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o31 }; if (gimple_simplify_24 (res_op, seq, valueize, type, captures, CFN_POW)) return true; } break; } default:; } } } break; default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_POWF: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_POWF: if (gimple_call_num_args (def) == 2) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o51 }; if (gimple_simplify_84 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWF)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; if (gimple_simplify_162 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWF)) return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_POW: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_POW: if (gimple_call_num_args (def) == 2) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o51 }; if (gimple_simplify_84 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POW)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; if (gimple_simplify_162 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POW)) return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_POWL: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_POWL: if (gimple_call_num_args (def) == 2) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o51 }; if (gimple_simplify_84 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWL)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; if (gimple_simplify_162 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWL)) return true; } } } break; default:; } } break; default:; } } break; case CFN_POW: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_POW: if (gimple_call_num_args (def) == 2) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o51 }; if (gimple_simplify_84 (res_op, seq, valueize, type, captures, CFN_POW)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; if (gimple_simplify_162 (res_op, seq, valueize, type, captures, CFN_POW)) return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_POWIF: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_POWIF: if (gimple_call_num_args (def) == 2) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4618, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWIF, type, 2); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_POWI: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_POWI: if (gimple_call_num_args (def) == 2) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4618, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWI, type, 2); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_POWIL: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_POWIL: if (gimple_call_num_args (def) == 2) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[3]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4618, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWIL, type, 2); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; default:; } } break; default:; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_COPYSIGNF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } } break; case REAL_CST: { { /* #line 263 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_85 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF)) return true; } break; } default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 671 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_290 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNF: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_138 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF)) return true; } } break; default:; } } break; default:; } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4539 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_218 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF)) return true; } } if (tree_expr_nonnegative_p (op1)) { { /* #line 4544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_181 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_COPYSIGN (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_BUILT_IN_COPYSIGN; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_BUILT_IN_COPYSIGN; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } } break; case REAL_CST: { { /* #line 263 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_85 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN)) return true; } break; } default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 671 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_290 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGN: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_138 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN)) return true; } } break; default:; } } break; default:; } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4539 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_218 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN)) return true; } } if (tree_expr_nonnegative_p (op1)) { { /* #line 4544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_181 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGN)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_COPYSIGNL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNL; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNL; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } } break; case REAL_CST: { { /* #line 263 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_85 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL)) return true; } break; } default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 671 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_290 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNL: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_138 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL)) return true; } } break; default:; } } break; default:; } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4539 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_218 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL)) return true; } } if (tree_expr_nonnegative_p (op1)) { { /* #line 4544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_181 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNL)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_COPYSIGNF16 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF16; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF16; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } } break; case REAL_CST: { { /* #line 263 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_85 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF16)) return true; } break; } default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 671 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_290 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF16)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNF16: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_138 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF16)) return true; } } break; default:; } } break; default:; } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4539 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_218 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF16)) return true; } } if (tree_expr_nonnegative_p (op1)) { { /* #line 4544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_181 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF16)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_COPYSIGNF32 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF32; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF32; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } } break; case REAL_CST: { { /* #line 263 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_85 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32)) return true; } break; } default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 671 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_290 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNF32: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_138 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32)) return true; } } break; default:; } } break; default:; } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4539 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_218 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32)) return true; } } if (tree_expr_nonnegative_p (op1)) { { /* #line 4544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_181 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_COPYSIGNF64 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF64; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF64; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } } break; case REAL_CST: { { /* #line 263 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_85 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64)) return true; } break; } default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 671 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_290 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNF64: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_138 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64)) return true; } } break; default:; } } break; default:; } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4539 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_218 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64)) return true; } } if (tree_expr_nonnegative_p (op1)) { { /* #line 4544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_181 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_COPYSIGNF128 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF128; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF128; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } } break; case REAL_CST: { { /* #line 263 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_85 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128)) return true; } break; } default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 671 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_290 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNF128: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_138 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128)) return true; } } break; default:; } } break; default:; } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4539 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_218 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128)) return true; } } if (tree_expr_nonnegative_p (op1)) { { /* #line 4544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_181 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_COPYSIGNF32X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF32X; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF32X; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } } break; case REAL_CST: { { /* #line 263 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_85 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32X)) return true; } break; } default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 671 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_290 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32X)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNF32X: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_138 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32X)) return true; } } break; default:; } } break; default:; } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4539 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_218 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32X)) return true; } } if (tree_expr_nonnegative_p (op1)) { { /* #line 4544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_181 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF32X)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_COPYSIGNF64X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF64X; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF64X; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } } break; case REAL_CST: { { /* #line 263 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_85 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64X)) return true; } break; } default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 671 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_290 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64X)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNF64X: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_138 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64X)) return true; } } break; default:; } } break; default:; } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4539 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_218 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64X)) return true; } } if (tree_expr_nonnegative_p (op1)) { { /* #line 4544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_181 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF64X)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_COPYSIGNF128X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF128X; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_BUILT_IN_COPYSIGNF128X; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } } break; case REAL_CST: { { /* #line 263 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_85 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128X)) return true; } break; } default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 671 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_290 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128X)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNF128X: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_138 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128X)) return true; } } break; default:; } } break; default:; } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4539 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_218 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128X)) return true; } } if (tree_expr_nonnegative_p (op1)) { { /* #line 4544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_181 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COPYSIGNF128X)) return true; } } return false; } static bool gimple_simplify_CFN_COPYSIGN (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_COPYSIGN; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 621 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn copysigns = CFN_COPYSIGN; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 621, __FILE__, __LINE__); res_op->set_op (copysigns, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } } break; case REAL_CST: { { /* #line 263 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_85 (res_op, seq, valueize, type, captures, CFN_COPYSIGN)) return true; } break; } default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 671 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_290 (res_op, seq, valueize, type, captures, CFN_COPYSIGN)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_COPYSIGN: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 679 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_138 (res_op, seq, valueize, type, captures, CFN_COPYSIGN)) return true; } } break; default:; } } break; default:; } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4539 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_218 (res_op, seq, valueize, type, captures, CFN_COPYSIGN)) return true; } } if (tree_expr_nonnegative_p (op1)) { { /* #line 4544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_181 (res_op, seq, valueize, type, captures, CFN_COPYSIGN)) return true; } } return false; } static bool gimple_simplify_TRUNC_DIV_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LSHIFT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (integer_onep (o30)) { { /* #line 278 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o30, o31 }; /* #line 278 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (captures[0])) && (!VECTOR_TYPE_P (type) || target_supports_op_p (type, RSHIFT_EXPR, optab_vector) || target_supports_op_p (type, RSHIFT_EXPR, optab_scalar))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 282, __FILE__, __LINE__); res_op->set_op (RSHIFT_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } if (integer_onep (op1)) { { /* #line 270 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_33 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR)) return true; } } if (integer_zerop (op0)) { { /* #line 292 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_26 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR)) return true; } } if (integer_minus_onep (op1)) { { /* #line 297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_294 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR)) return true; } } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 304 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_275 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case ABS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 309 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_50 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 309 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_50 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 316 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_180 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 316 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_180 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR)) return true; } } break; } case TRUNC_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 333 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_208 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR)) return true; } break; } default:; } break; } default:; } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 447 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, op1 }; if (gimple_simplify_266 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 447 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_266 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if (integer_pow2p (o21)) { if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 570 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 570 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_UNSIGNED (TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 571, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = wide_int_to_tree (type, wi::mask (TYPE_PRECISION (type) - wi::exact_log2 (wi::to_wide (captures[1])), false, TYPE_PRECISION (type))); gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 586 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_160 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR)) return true; } } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 586 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_160 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR)) return true; } } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CEIL_DIV_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (integer_onep (op1)) { { /* #line 270 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_33 (res_op, seq, valueize, type, captures, CEIL_DIV_EXPR)) return true; } } if (integer_zerop (op0)) { { /* #line 292 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_26 (res_op, seq, valueize, type, captures, CEIL_DIV_EXPR)) return true; } } if (integer_minus_onep (op1)) { { /* #line 297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_294 (res_op, seq, valueize, type, captures, CEIL_DIV_EXPR)) return true; } } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 304 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_275 (res_op, seq, valueize, type, captures, CEIL_DIV_EXPR)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case ABS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 309 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_50 (res_op, seq, valueize, type, captures, CEIL_DIV_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 309 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_50 (res_op, seq, valueize, type, captures, CEIL_DIV_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 316 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_180 (res_op, seq, valueize, type, captures, CEIL_DIV_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 316 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_180 (res_op, seq, valueize, type, captures, CEIL_DIV_EXPR)) return true; } } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 447 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, op1 }; if (gimple_simplify_266 (res_op, seq, valueize, type, captures, CEIL_DIV_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 447 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_266 (res_op, seq, valueize, type, captures, CEIL_DIV_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 586 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_160 (res_op, seq, valueize, type, captures, CEIL_DIV_EXPR)) return true; } } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 586 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_160 (res_op, seq, valueize, type, captures, CEIL_DIV_EXPR)) return true; } } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_FLOOR_DIV_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (integer_onep (op1)) { { /* #line 270 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_33 (res_op, seq, valueize, type, captures, FLOOR_DIV_EXPR)) return true; } } if (integer_zerop (op0)) { { /* #line 292 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_26 (res_op, seq, valueize, type, captures, FLOOR_DIV_EXPR)) return true; } } if (integer_minus_onep (op1)) { { /* #line 297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_294 (res_op, seq, valueize, type, captures, FLOOR_DIV_EXPR)) return true; } } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 304 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_275 (res_op, seq, valueize, type, captures, FLOOR_DIV_EXPR)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case ABS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 309 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_50 (res_op, seq, valueize, type, captures, FLOOR_DIV_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 309 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_50 (res_op, seq, valueize, type, captures, FLOOR_DIV_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 316 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_180 (res_op, seq, valueize, type, captures, FLOOR_DIV_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 316 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_180 (res_op, seq, valueize, type, captures, FLOOR_DIV_EXPR)) return true; } } break; } default:; } } break; default:; } { /* #line 324 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 324 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((INTEGRAL_TYPE_P (type) || VECTOR_INTEGER_TYPE_P (type)) && TYPE_UNSIGNED (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 326, __FILE__, __LINE__); res_op->set_op (TRUNC_DIV_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 447 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, op1 }; if (gimple_simplify_266 (res_op, seq, valueize, type, captures, FLOOR_DIV_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 447 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_266 (res_op, seq, valueize, type, captures, FLOOR_DIV_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 586 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_160 (res_op, seq, valueize, type, captures, FLOOR_DIV_EXPR)) return true; } } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 586 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_160 (res_op, seq, valueize, type, captures, FLOOR_DIV_EXPR)) return true; } } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_ROUND_DIV_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (integer_onep (op1)) { { /* #line 270 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_33 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR)) return true; } } if (integer_zerop (op0)) { { /* #line 292 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_26 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR)) return true; } } if (integer_minus_onep (op1)) { { /* #line 297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_294 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR)) return true; } } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 304 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_275 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case ABS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 309 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_50 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 309 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_50 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 316 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_180 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 316 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_180 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR)) return true; } } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 447 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, op1 }; if (gimple_simplify_266 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 447 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_266 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 586 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_160 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR)) return true; } } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 586 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_160 (res_op, seq, valueize, type, captures, ROUND_DIV_EXPR)) return true; } } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_EXACT_DIV_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (integer_onep (op1)) { { /* #line 270 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_33 (res_op, seq, valueize, type, captures, EXACT_DIV_EXPR)) return true; } } if (integer_zerop (op0)) { { /* #line 292 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_26 (res_op, seq, valueize, type, captures, EXACT_DIV_EXPR)) return true; } } if (integer_minus_onep (op1)) { { /* #line 297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_294 (res_op, seq, valueize, type, captures, EXACT_DIV_EXPR)) return true; } } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 304 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_275 (res_op, seq, valueize, type, captures, EXACT_DIV_EXPR)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case ABS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 309 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_50 (res_op, seq, valueize, type, captures, EXACT_DIV_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 309 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_50 (res_op, seq, valueize, type, captures, EXACT_DIV_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 316 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_180 (res_op, seq, valueize, type, captures, EXACT_DIV_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 316 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_180 (res_op, seq, valueize, type, captures, EXACT_DIV_EXPR)) return true; } } break; } case EXACT_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 333 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_208 (res_op, seq, valueize, type, captures, EXACT_DIV_EXPR)) return true; } break; } default:; } break; } default:; } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 447 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, op1 }; if (gimple_simplify_266 (res_op, seq, valueize, type, captures, EXACT_DIV_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 447 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_266 (res_op, seq, valueize, type, captures, EXACT_DIV_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 586 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_160 (res_op, seq, valueize, type, captures, EXACT_DIV_EXPR)) return true; } } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 586 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_160 (res_op, seq, valueize, type, captures, EXACT_DIV_EXPR)) return true; } } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_RDIV_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 364 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 364 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (type) && ! HONOR_NANS (type) && ! HONOR_INFINITIES (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 367, __FILE__, __LINE__); tree tem; tem = build_one_cst (type); res_op->set_value (tem); return true; } } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 373 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_56 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 373 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_56 (res_op, seq, valueize, type, captures)) return true; } } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case ABS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 381 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_210 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case ABS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o30 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o30, 0) && types_match (o50, o30))) { { /* #line 381 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o30 }; if (gimple_simplify_210 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case ABS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 381 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_210 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 381 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_210 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } if (real_onep (op1)) { { /* #line 395 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 395 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_SNANS (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 396, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } if (real_minus_onep (op1)) { { /* #line 401 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 401 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_SNANS (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 402, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case RDIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); { /* #line 404 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; /* #line 404 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_reciprocal_math) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 408, __FILE__, __LINE__); res_op->set_op (RDIV_EXPR, type, 2); res_op->ops[0] = captures[1]; { tree ops1[2], res; ops1[0] = captures[2]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case REAL_CST: { { /* #line 404 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op1, o30, o31 }; /* #line 404 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_reciprocal_math) { { /* #line 413 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree tem = const_binop (RDIV_EXPR, type, build_one_cst (type), captures[3]); /* #line 415 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tem) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 416, __FILE__, __LINE__); res_op->set_op (RDIV_EXPR, type, 2); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = tem; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; } default:; } break; } case RDIV_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); { /* #line 404 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op1, o30, o31 }; /* #line 404 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_reciprocal_math) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 421, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[3]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 426 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 426, __FILE__, __LINE__); res_op->set_op (RDIV_EXPR, type, 2); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTF: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case RDIV_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o30, o40, o41 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4294, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[2], res; ops2[0] = captures[4]; ops2[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_SQRTF, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } } break; case CFN_BUILT_IN_SQRT: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case RDIV_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o30, o40, o41 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4294, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[2], res; ops2[0] = captures[4]; ops2[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_SQRT, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } } break; case CFN_BUILT_IN_SQRTL: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case RDIV_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o30, o40, o41 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4294, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[2], res; ops2[0] = captures[4]; ops2[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_SQRTL, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } } break; case CFN_SQRT: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case RDIV_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o30, o40, o41 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4294, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[2], res; ops2[0] = captures[4]; ops2[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_SQRT, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } } break; case CFN_BUILT_IN_CBRTF: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case RDIV_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o30, o40, o41 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4294, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[2], res; ops2[0] = captures[4]; ops2[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_CBRTF, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } } break; case CFN_BUILT_IN_CBRT: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case RDIV_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o30, o40, o41 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4294, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[2], res; ops2[0] = captures[4]; ops2[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_CBRT, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } } break; case CFN_BUILT_IN_CBRTL: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case RDIV_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o30, o40, o41 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4294, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[2], res; ops2[0] = captures[4]; ops2[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), RDIV_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_CBRTL, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } } break; case CFN_BUILT_IN_EXPF: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o30 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4300, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXPF, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o30 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4300, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXP, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXPL: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o30 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4300, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXPL, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_EXP: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o30 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4300, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_EXP, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP2F: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o30 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4300, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXP2F, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP2: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o30 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4300, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXP2, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP2L: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o30 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4300, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXP2L, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_EXP2: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o30 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4300, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_EXP2, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP10F: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o30 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4300, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXP10F, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP10: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o30 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4300, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXP10, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP10L: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o30 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4300, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_EXP10L, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_EXP10: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o30 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4300, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_EXP10, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POW10F: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o30 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4300, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_POW10F, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POW10: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o30 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4300, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_POW10, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POW10L: if (gimple_call_num_args (def) == 1) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o30 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4300, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[1], res; ops2[0] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops2[0]), ops2[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_POW10L, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; default:; } } break; case REAL_CST: { { /* #line 463 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 463 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (optimize) { /* #line 464 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_reciprocal_math && !real_zerop (captures[1])) { { /* #line 466 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree tem = const_binop (RDIV_EXPR, type, build_one_cst (type), captures[1]); /* #line 468 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tem) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 469, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = tem; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } else { /* #line 470 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (REAL_CST != COMPLEX_CST) { { /* #line 471 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree inverse = exact_inverse (type, captures[1]); /* #line 472 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (inverse) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 473, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = inverse; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } break; } case COMPLEX_CST: { { /* #line 463 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 463 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (optimize) { /* #line 464 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_reciprocal_math && !real_zerop (captures[1])) { { /* #line 466 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree tem = const_binop (RDIV_EXPR, type, build_one_cst (type), captures[1]); /* #line 468 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tem) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 469, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = tem; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } else { /* #line 470 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (COMPLEX_CST != COMPLEX_CST) { { /* #line 471 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree inverse = exact_inverse (type, captures[1]); /* #line 472 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (inverse) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 473, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = inverse; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } break; } case VECTOR_CST: { { /* #line 463 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 463 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (optimize) { /* #line 464 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_reciprocal_math && !real_zerop (captures[1])) { { /* #line 466 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree tem = const_binop (RDIV_EXPR, type, build_one_cst (type), captures[1]); /* #line 468 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tem) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 469, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = tem; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } else { /* #line 470 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (VECTOR_CST != COMPLEX_CST) { { /* #line 471 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree inverse = exact_inverse (type, captures[1]); /* #line 472 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (inverse) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 473, __FILE__, __LINE__); res_op->set_op (MULT_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = inverse; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SINF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COSF: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_42 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SINF, CFN_BUILT_IN_COSF, CFN_BUILT_IN_TANF)) return true; } } } break; case CFN_BUILT_IN_TANF: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_277 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SINF, CFN_BUILT_IN_TANF, CFN_BUILT_IN_COSF)) return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_SIN: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COS: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_42 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SIN, CFN_BUILT_IN_COS, CFN_BUILT_IN_TAN)) return true; } } } break; case CFN_BUILT_IN_TAN: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_277 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SIN, CFN_BUILT_IN_TAN, CFN_BUILT_IN_COS)) return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_SINL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COSL: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_42 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SINL, CFN_BUILT_IN_COSL, CFN_BUILT_IN_TANL)) return true; } } } break; case CFN_BUILT_IN_TANL: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_277 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SINL, CFN_BUILT_IN_TANL, CFN_BUILT_IN_COSL)) return true; } } } break; default:; } } break; default:; } } break; case CFN_SIN: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_COS: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_42 (res_op, seq, valueize, type, captures, CFN_SIN, CFN_COS, CFN_TAN)) return true; } } } break; case CFN_TAN: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_277 (res_op, seq, valueize, type, captures, CFN_SIN, CFN_TAN, CFN_COS)) return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_COSF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SINF: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_194 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COSF, CFN_BUILT_IN_SINF, CFN_BUILT_IN_TANF)) return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_COS: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SIN: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_194 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COS, CFN_BUILT_IN_SIN, CFN_BUILT_IN_TAN)) return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_COSL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SINL: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_194 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_COSL, CFN_BUILT_IN_SINL, CFN_BUILT_IN_TANL)) return true; } } } break; default:; } } break; default:; } } break; case CFN_COS: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_SIN: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_194 (res_op, seq, valueize, type, captures, CFN_COS, CFN_SIN, CFN_TAN)) return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_TANF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SINF: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_244 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TANF, CFN_BUILT_IN_SINF, CFN_BUILT_IN_COSF)) return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_TAN: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SIN: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_244 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TAN, CFN_BUILT_IN_SIN, CFN_BUILT_IN_COS)) return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_TANL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SINL: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_244 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_TANL, CFN_BUILT_IN_SINL, CFN_BUILT_IN_COSL)) return true; } } } break; default:; } } break; default:; } } break; case CFN_TAN: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_SIN: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_244 (res_op, seq, valueize, type, captures, CFN_TAN, CFN_SIN, CFN_COS)) return true; } } } break; default:; } } break; default:; } } break; case CFN_BUILT_IN_POWF: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case REAL_CST: { if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_202 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWF)) return true; } } break; } default:; } } break; case CFN_BUILT_IN_POW: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case REAL_CST: { if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_202 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POW)) return true; } } break; } default:; } } break; case CFN_BUILT_IN_POWL: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case REAL_CST: { if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_202 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWL)) return true; } } break; } default:; } } break; case CFN_POW: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case REAL_CST: { if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_202 (res_op, seq, valueize, type, captures, CFN_POW)) return true; } } break; } default:; } } break; default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_POWF: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op1, o30, o31 }; if (gimple_simplify_223 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWF)) return true; } } break; case CFN_BUILT_IN_POW: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op1, o30, o31 }; if (gimple_simplify_223 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POW)) return true; } } break; case CFN_BUILT_IN_POWL: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op1, o30, o31 }; if (gimple_simplify_223 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWL)) return true; } } break; case CFN_POW: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op1, o30, o31 }; if (gimple_simplify_223 (res_op, seq, valueize, type, captures, CFN_POW)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_LT_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case RDIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case REAL_CST: { if (real_zerop (op1)) { { /* #line 428 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_198 (res_op, seq, valueize, type, captures, LT_EXPR, GT_EXPR)) return true; } } break; } default:; } break; } case TRUNC_MOD_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 899 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_60 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } break; } case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1453 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_28 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1453 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; if (gimple_simplify_28 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1453 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o50 }; if (gimple_simplify_28 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1453 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o51 }; if (gimple_simplify_28 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case EXACT_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case EXACT_DIV_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1478 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_158 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } break; } case TRUNC_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 1485 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_319 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1537 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_79 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1537 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; if (gimple_simplify_79 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1537 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o50 }; if (gimple_simplify_79 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1537 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o51 }; if (gimple_simplify_79 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 1607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_203 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 1607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o21, o20 }; if (gimple_simplify_203 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1553 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_82 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1580 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; if (gimple_simplify_14 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case POINTER_DIFF_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_DIFF_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1568 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o50 }; if (gimple_simplify_59 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o51 }; if (gimple_simplify_292 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 1607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o30, op0 }; if (gimple_simplify_203 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o31, op0 }; if (gimple_simplify_203 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } break; } case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1635 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o31 }; if (gimple_simplify_118 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 1635 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op0, o21 }; if (gimple_simplify_118 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } break; } case MIN_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2325 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_35 (res_op, seq, valueize, type, captures, MIN_EXPR, LT_EXPR, BIT_IOR_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MAX_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2325 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_35 (res_op, seq, valueize, type, captures, MAX_EXPR, LT_EXPR, BIT_AND_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } if (uniform_integer_cst_p (op1)) { { /* #line 3147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_100 (res_op, seq, valueize, type, captures, LT_EXPR, LE_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { if (integer_zerop (op1)) { { /* #line 3209 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_66 (res_op, seq, valueize, type, captures, LT_EXPR, GT_EXPR)) return true; } } break; } default:; } break; } default:; } } break; default:; } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 3232 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_207 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3253 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; if (gimple_simplify_315 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (op1)) { { /* #line 3261 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_133 (res_op, seq, valueize, type, captures, LT_EXPR, GT_EXPR)) return true; } } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3269 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_317 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } break; } default:; } } break; default:; } { /* #line 3269 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_317 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3299 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_29 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3359 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_195 (res_op, seq, valueize, type, captures, PLUS_EXPR, LT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3359 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_195 (res_op, seq, valueize, type, captures, MINUS_EXPR, LT_EXPR)) return true; } break; } default:; } break; } default:; } switch (TREE_CODE (o20)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3375 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_199 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case FLOAT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3531 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_121 (res_op, seq, valueize, type, captures, LT_EXPR, LT_EXPR)) return true; } break; } default:; } } break; case REAL_CST: { { /* #line 3560 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_77 (res_op, seq, valueize, type, captures, LT_EXPR, LE_EXPR)) return true; } break; } default:; } break; } case EXACT_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 3644 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_147 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3724 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_156 (res_op, seq, valueize, type, captures, LT_EXPR, GT_EXPR)) return true; } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (op1)) { { /* #line 3730 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_102 (res_op, seq, valueize, type, captures, LT_EXPR, GT_EXPR)) return true; } } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3748 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; if (gimple_simplify_10 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } break; } default:; } } break; default:; } { /* #line 3748 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, op1 }; if (gimple_simplify_114 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } switch (TREE_CODE (o20)) { case ADDR_EXPR: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_229 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } break; } default:; } break; } default:; } } break; case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_229 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } break; } default:; } break; } default:; } if (uniform_integer_cst_p (op1)) { { /* #line 4063 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_69 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTF: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF, LT_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF, LT_EXPR)) return true; } break; } default:; } } break; case CFN_BUILT_IN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRT: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRT, LT_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRT, LT_EXPR)) return true; } break; } default:; } } break; case CFN_BUILT_IN_SQRTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTL: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTL, LT_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTL, LT_EXPR)) return true; } break; } default:; } } break; case CFN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_SQRT: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_SQRT, LT_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_SQRT, LT_EXPR)) return true; } break; } default:; } } break; default:; } } break; case ADDR_EXPR: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, o30 }; if (gimple_simplify_225 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } break; } default:; } break; } default:; } } break; case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, op1 }; if (gimple_simplify_225 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } break; } default:; } break; } default:; } if (uniform_integer_cst_p (op1)) { { /* #line 4063 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, op1 }; if (gimple_simplify_264 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 4181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_73 (res_op, seq, valueize, type, captures, LT_EXPR, GT_EXPR)) return true; } } switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 4987 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_268 (res_op, seq, valueize, type, captures, PLUS_EXPR, MINUS_EXPR, LT_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { switch (TREE_CODE (o31)) { case INTEGER_CST: { { /* #line 4181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, op0, o31 }; if (gimple_simplify_73 (res_op, seq, valueize, type, captures, GT_EXPR, LE_EXPR)) return true; } break; } default:; } } break; } case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 4196 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, op0, o31 }; if (gimple_simplify_53 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } break; } case REALPART_EXPR: { tree o30 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o30) == SSA_NAME || is_gimple_min_invariant (o30))) { o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_SUB_OVERFLOW: if (gimple_call_num_args (def) == 2) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 4208 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, op0, o41 }; if (gimple_simplify_206 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR)) return true; } } } break; default:; } } break; default:; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case REALPART_EXPR: { tree o20 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o20) == SSA_NAME || is_gimple_min_invariant (o20))) { o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_ADD_OVERFLOW: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { { /* #line 4216 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o30, o31 }; if (gimple_simplify_122 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR)) return true; } } if ((op1 == o31 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o31, 0) && types_match (op1, o31))) { { /* #line 4216 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o31, o30 }; if (gimple_simplify_122 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR)) return true; } } } break; default:; } } break; default:; } } break; } case TRUNC_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_all_onesp (o20)) { { /* #line 4226 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o21, op1 }; if (gimple_simplify_13 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR)) return true; } } break; } case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_137 (res_op, seq, valueize, type, captures, LT_EXPR, GT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 4987 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_268 (res_op, seq, valueize, type, captures, MINUS_EXPR, PLUS_EXPR, LT_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_LE_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case RDIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case REAL_CST: { if (real_zerop (op1)) { { /* #line 428 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_198 (res_op, seq, valueize, type, captures, LE_EXPR, GE_EXPR)) return true; } } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case TRUNC_MOD_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 904 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; if (gimple_simplify_145 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1453 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_28 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1453 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; if (gimple_simplify_28 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1453 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o50 }; if (gimple_simplify_28 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1453 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o51 }; if (gimple_simplify_28 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if (integer_minus_onep (o21)) { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 1466 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_255 (res_op, seq, valueize, type, captures, LE_EXPR, GT_EXPR)) return true; } break; } default:; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1537 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_79 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1537 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; if (gimple_simplify_79 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1537 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o50 }; if (gimple_simplify_79 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1537 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o51 }; if (gimple_simplify_79 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 1607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_203 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 1607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o21, o20 }; if (gimple_simplify_203 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } break; } case EXACT_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case EXACT_DIV_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1478 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_158 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } break; } case TRUNC_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 1485 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_319 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1553 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_82 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1580 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; if (gimple_simplify_14 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case POINTER_DIFF_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_DIFF_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1568 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o50 }; if (gimple_simplify_59 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o51 }; if (gimple_simplify_292 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 1607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o30, op0 }; if (gimple_simplify_203 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o31, op0 }; if (gimple_simplify_203 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } break; } case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1635 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o31 }; if (gimple_simplify_118 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 1635 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op0, o21 }; if (gimple_simplify_118 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } break; } case MIN_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2325 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_35 (res_op, seq, valueize, type, captures, MIN_EXPR, LE_EXPR, BIT_IOR_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MAX_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2325 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_35 (res_op, seq, valueize, type, captures, MAX_EXPR, LE_EXPR, BIT_AND_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } if (uniform_integer_cst_p (op1)) { { /* #line 3137 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_200 (res_op, seq, valueize, type, captures, LE_EXPR, LT_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { if (integer_zerop (op1)) { { /* #line 3209 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_66 (res_op, seq, valueize, type, captures, LE_EXPR, GE_EXPR)) return true; } } break; } default:; } break; } default:; } } break; default:; } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 3224 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_44 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3253 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; if (gimple_simplify_315 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (op1)) { { /* #line 3261 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_133 (res_op, seq, valueize, type, captures, LE_EXPR, GE_EXPR)) return true; } } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3269 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_317 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } break; } default:; } } break; default:; } { /* #line 3269 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_317 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3299 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_29 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3359 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_195 (res_op, seq, valueize, type, captures, PLUS_EXPR, LE_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3359 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_195 (res_op, seq, valueize, type, captures, MINUS_EXPR, LE_EXPR)) return true; } break; } default:; } break; } default:; } switch (TREE_CODE (o20)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3375 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_199 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } break; } default:; } break; } default:; } break; } case FLOAT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3531 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_121 (res_op, seq, valueize, type, captures, LE_EXPR, LE_EXPR)) return true; } break; } default:; } } break; case REAL_CST: { { /* #line 3560 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_77 (res_op, seq, valueize, type, captures, LE_EXPR, LE_EXPR)) return true; } break; } default:; } break; } case EXACT_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 3644 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_147 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 3705 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_107 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR)) return true; } break; } default:; } break; } default:; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3724 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_156 (res_op, seq, valueize, type, captures, LE_EXPR, GE_EXPR)) return true; } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (op1)) { { /* #line 3730 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_102 (res_op, seq, valueize, type, captures, LE_EXPR, GE_EXPR)) return true; } } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3748 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; if (gimple_simplify_10 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } break; } default:; } } break; default:; } { /* #line 3748 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, op1 }; if (gimple_simplify_114 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } switch (TREE_CODE (o20)) { case ADDR_EXPR: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_229 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } break; } default:; } break; } default:; } } break; case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_229 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } break; } default:; } break; } default:; } if (uniform_integer_cst_p (op1)) { { /* #line 4063 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_69 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTF: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF, LE_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF, LE_EXPR)) return true; } break; } default:; } } break; case CFN_BUILT_IN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRT: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRT, LE_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRT, LE_EXPR)) return true; } break; } default:; } } break; case CFN_BUILT_IN_SQRTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTL: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTL, LE_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTL, LE_EXPR)) return true; } break; } default:; } } break; case CFN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_SQRT: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_SQRT, LE_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_SQRT, LE_EXPR)) return true; } break; } default:; } } break; default:; } } break; case ADDR_EXPR: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, o30 }; if (gimple_simplify_225 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } break; } default:; } break; } default:; } } break; case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, op1 }; if (gimple_simplify_225 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } break; } default:; } break; } default:; } if (uniform_integer_cst_p (op1)) { { /* #line 4063 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, op1 }; if (gimple_simplify_264 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 4181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_73 (res_op, seq, valueize, type, captures, LE_EXPR, GT_EXPR)) return true; } } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { switch (TREE_CODE (o31)) { case INTEGER_CST: { { /* #line 4181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, op0, o31 }; if (gimple_simplify_73 (res_op, seq, valueize, type, captures, GE_EXPR, LE_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 4196 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_53 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } break; } case REALPART_EXPR: { tree o20 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o20) == SSA_NAME || is_gimple_min_invariant (o20))) { o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_SUB_OVERFLOW: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { { /* #line 4208 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o30, o31 }; if (gimple_simplify_304 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR)) return true; } } } break; default:; } } break; default:; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case REALPART_EXPR: { tree o30 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o30) == SSA_NAME || is_gimple_min_invariant (o30))) { o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_ADD_OVERFLOW: if (gimple_call_num_args (def) == 2) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 4216 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, op0, o41 }; if (gimple_simplify_54 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR)) return true; } } if ((o41 == op0 && ! TREE_SIDE_EFFECTS (o41)) || (operand_equal_p (o41, op0, 0) && types_match (o41, op0))) { { /* #line 4216 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, op0, o40 }; if (gimple_simplify_54 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR)) return true; } } } break; default:; } } break; default:; } } break; } case TRUNC_DIV_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (integer_all_onesp (o30)) { { /* #line 4226 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o31, op0 }; if (gimple_simplify_123 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_137 (res_op, seq, valueize, type, captures, LE_EXPR, GE_EXPR)) return true; } break; } default:; } break; } default:; } break; } case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 4987 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_268 (res_op, seq, valueize, type, captures, PLUS_EXPR, MINUS_EXPR, LE_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 4987 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_268 (res_op, seq, valueize, type, captures, MINUS_EXPR, PLUS_EXPR, LE_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_POPCOUNT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (integer_zerop (op1)) { { /* #line 5223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_177 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNT)) return true; } } } break; case CFN_BUILT_IN_POPCOUNTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (integer_zerop (op1)) { { /* #line 5223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_177 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTL)) return true; } } } break; case CFN_BUILT_IN_POPCOUNTLL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (integer_zerop (op1)) { { /* #line 5223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_177 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTLL)) return true; } } } break; case CFN_BUILT_IN_POPCOUNTIMAX: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (integer_zerop (op1)) { { /* #line 5223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_177 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTIMAX)) return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_GT_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case RDIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case REAL_CST: { if (real_zerop (op1)) { { /* #line 428 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_198 (res_op, seq, valueize, type, captures, GT_EXPR, LT_EXPR)) return true; } } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case TRUNC_MOD_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 904 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; if (gimple_simplify_145 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1453 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_28 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1453 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; if (gimple_simplify_28 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1453 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o50 }; if (gimple_simplify_28 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1453 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o51 }; if (gimple_simplify_28 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if (integer_minus_onep (o21)) { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 1466 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_255 (res_op, seq, valueize, type, captures, GT_EXPR, LE_EXPR)) return true; } break; } default:; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1537 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_79 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1537 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; if (gimple_simplify_79 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1537 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o50 }; if (gimple_simplify_79 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1537 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o51 }; if (gimple_simplify_79 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 1607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_203 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 1607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o21, o20 }; if (gimple_simplify_203 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } break; } case EXACT_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case EXACT_DIV_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1478 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_158 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } break; } case TRUNC_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 1485 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_319 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1553 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_82 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1580 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; if (gimple_simplify_14 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case POINTER_DIFF_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_DIFF_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1568 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o50 }; if (gimple_simplify_59 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o51 }; if (gimple_simplify_292 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 1607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o30, op0 }; if (gimple_simplify_203 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o31, op0 }; if (gimple_simplify_203 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } break; } case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1635 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o31 }; if (gimple_simplify_118 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 1635 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op0, o21 }; if (gimple_simplify_118 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } } break; } case MAX_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2325 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_35 (res_op, seq, valueize, type, captures, MAX_EXPR, GT_EXPR, BIT_IOR_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MIN_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2325 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_35 (res_op, seq, valueize, type, captures, MIN_EXPR, GT_EXPR, BIT_AND_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } if (uniform_integer_cst_p (op1)) { { /* #line 3137 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_200 (res_op, seq, valueize, type, captures, GT_EXPR, GE_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { if (integer_zerop (op1)) { { /* #line 3209 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_66 (res_op, seq, valueize, type, captures, GT_EXPR, LT_EXPR)) return true; } } break; } default:; } break; } default:; } } break; default:; } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 3232 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_207 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3253 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; if (gimple_simplify_315 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (op1)) { { /* #line 3261 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_133 (res_op, seq, valueize, type, captures, GT_EXPR, LT_EXPR)) return true; } } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3269 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_317 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } break; } default:; } } break; default:; } { /* #line 3269 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_317 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3299 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_29 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3359 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_195 (res_op, seq, valueize, type, captures, PLUS_EXPR, GT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3359 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_195 (res_op, seq, valueize, type, captures, MINUS_EXPR, GT_EXPR)) return true; } break; } default:; } break; } default:; } switch (TREE_CODE (o20)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3375 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_199 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case FLOAT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3531 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_121 (res_op, seq, valueize, type, captures, GT_EXPR, GT_EXPR)) return true; } break; } default:; } } break; case REAL_CST: { { /* #line 3560 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_77 (res_op, seq, valueize, type, captures, GT_EXPR, GE_EXPR)) return true; } break; } default:; } break; } case EXACT_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 3644 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_147 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 3705 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_107 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR)) return true; } break; } default:; } break; } default:; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3724 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_156 (res_op, seq, valueize, type, captures, GT_EXPR, LT_EXPR)) return true; } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (op1)) { { /* #line 3730 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_102 (res_op, seq, valueize, type, captures, GT_EXPR, LT_EXPR)) return true; } } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3748 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; if (gimple_simplify_10 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } break; } default:; } } break; default:; } { /* #line 3748 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, op1 }; if (gimple_simplify_114 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } switch (TREE_CODE (o20)) { case ADDR_EXPR: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_229 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } break; } default:; } break; } default:; } } break; case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_229 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } break; } default:; } break; } default:; } if (uniform_integer_cst_p (op1)) { { /* #line 4063 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_69 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTF: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF, GT_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF, GT_EXPR)) return true; } break; } default:; } } break; case CFN_BUILT_IN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRT: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRT, GT_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRT, GT_EXPR)) return true; } break; } default:; } } break; case CFN_BUILT_IN_SQRTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTL: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTL, GT_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTL, GT_EXPR)) return true; } break; } default:; } } break; case CFN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_SQRT: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_SQRT, GT_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_SQRT, GT_EXPR)) return true; } break; } default:; } } break; default:; } } break; case ADDR_EXPR: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, o30 }; if (gimple_simplify_225 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } break; } default:; } break; } default:; } } break; case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, op1 }; if (gimple_simplify_225 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } break; } default:; } break; } default:; } if (uniform_integer_cst_p (op1)) { { /* #line 4063 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, op1 }; if (gimple_simplify_264 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 4181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_73 (res_op, seq, valueize, type, captures, GT_EXPR, LE_EXPR)) return true; } } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { switch (TREE_CODE (o31)) { case INTEGER_CST: { { /* #line 4181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, op0, o31 }; if (gimple_simplify_73 (res_op, seq, valueize, type, captures, LT_EXPR, GT_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 4196 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_53 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } } break; } case REALPART_EXPR: { tree o20 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o20) == SSA_NAME || is_gimple_min_invariant (o20))) { o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_SUB_OVERFLOW: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { { /* #line 4208 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o30, o31 }; if (gimple_simplify_304 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR)) return true; } } } break; default:; } } break; default:; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case REALPART_EXPR: { tree o30 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o30) == SSA_NAME || is_gimple_min_invariant (o30))) { o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_ADD_OVERFLOW: if (gimple_call_num_args (def) == 2) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 4216 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, op0, o41 }; if (gimple_simplify_54 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR)) return true; } } if ((o41 == op0 && ! TREE_SIDE_EFFECTS (o41)) || (operand_equal_p (o41, op0, 0) && types_match (o41, op0))) { { /* #line 4216 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, op0, o40 }; if (gimple_simplify_54 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR)) return true; } } } break; default:; } } break; default:; } } break; } case TRUNC_DIV_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (integer_all_onesp (o30)) { { /* #line 4226 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o31, op0 }; if (gimple_simplify_123 (res_op, seq, valueize, type, captures, LT_EXPR, NE_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_137 (res_op, seq, valueize, type, captures, GT_EXPR, LT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 4987 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_268 (res_op, seq, valueize, type, captures, PLUS_EXPR, MINUS_EXPR, GT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 4987 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_268 (res_op, seq, valueize, type, captures, MINUS_EXPR, PLUS_EXPR, GT_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_POPCOUNT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (integer_zerop (op1)) { { /* #line 5223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_177 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNT)) return true; } } } break; case CFN_BUILT_IN_POPCOUNTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (integer_zerop (op1)) { { /* #line 5223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_177 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTL)) return true; } } } break; case CFN_BUILT_IN_POPCOUNTLL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (integer_zerop (op1)) { { /* #line 5223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_177 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTLL)) return true; } } } break; case CFN_BUILT_IN_POPCOUNTIMAX: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (integer_zerop (op1)) { { /* #line 5223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_177 (res_op, seq, valueize, type, captures, GT_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTIMAX)) return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_GE_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case RDIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case REAL_CST: { if (real_zerop (op1)) { { /* #line 428 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_198 (res_op, seq, valueize, type, captures, GE_EXPR, LE_EXPR)) return true; } } break; } default:; } break; } case TRUNC_MOD_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 899 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_60 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } break; } case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1453 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_28 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1453 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; if (gimple_simplify_28 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1453 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o50 }; if (gimple_simplify_28 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1453 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o51 }; if (gimple_simplify_28 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case EXACT_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case EXACT_DIV_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1478 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_158 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } break; } case TRUNC_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 1485 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_319 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } break; } default:; } break; } default:; } break; } case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1537 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_79 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1537 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; if (gimple_simplify_79 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1537 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o50 }; if (gimple_simplify_79 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1537 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o51 }; if (gimple_simplify_79 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 1607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_203 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 1607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o21, o20 }; if (gimple_simplify_203 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1553 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_82 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1580 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; if (gimple_simplify_14 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case POINTER_DIFF_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_DIFF_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1568 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o50 }; if (gimple_simplify_59 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o51 }; if (gimple_simplify_292 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 1607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o30, op0 }; if (gimple_simplify_203 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o31, op0 }; if (gimple_simplify_203 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } break; } case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1635 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o31 }; if (gimple_simplify_118 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 1635 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op0, o21 }; if (gimple_simplify_118 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } break; } case MAX_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2325 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_35 (res_op, seq, valueize, type, captures, MAX_EXPR, GE_EXPR, BIT_IOR_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MIN_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2325 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_35 (res_op, seq, valueize, type, captures, MIN_EXPR, GE_EXPR, BIT_AND_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } if (uniform_integer_cst_p (op1)) { { /* #line 3147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_100 (res_op, seq, valueize, type, captures, GE_EXPR, GT_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { if (integer_zerop (op1)) { { /* #line 3209 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_66 (res_op, seq, valueize, type, captures, GE_EXPR, LE_EXPR)) return true; } } break; } default:; } break; } default:; } } break; default:; } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 3224 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_44 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3253 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; if (gimple_simplify_315 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (op1)) { { /* #line 3261 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_133 (res_op, seq, valueize, type, captures, GE_EXPR, LE_EXPR)) return true; } } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3269 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_317 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } break; } default:; } } break; default:; } { /* #line 3269 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_317 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3299 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_29 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3359 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_195 (res_op, seq, valueize, type, captures, PLUS_EXPR, GE_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3359 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_195 (res_op, seq, valueize, type, captures, MINUS_EXPR, GE_EXPR)) return true; } break; } default:; } break; } default:; } switch (TREE_CODE (o20)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3375 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_199 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } break; } default:; } break; } default:; } break; } case FLOAT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3531 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_121 (res_op, seq, valueize, type, captures, GE_EXPR, GE_EXPR)) return true; } break; } default:; } } break; case REAL_CST: { { /* #line 3560 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_77 (res_op, seq, valueize, type, captures, GE_EXPR, GE_EXPR)) return true; } break; } default:; } break; } case EXACT_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 3644 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_147 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } break; } default:; } break; } default:; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3724 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_156 (res_op, seq, valueize, type, captures, GE_EXPR, LE_EXPR)) return true; } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (op1)) { { /* #line 3730 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_102 (res_op, seq, valueize, type, captures, GE_EXPR, LE_EXPR)) return true; } } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3748 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; if (gimple_simplify_10 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } break; } default:; } } break; default:; } { /* #line 3748 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, op1 }; if (gimple_simplify_114 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } switch (TREE_CODE (o20)) { case ADDR_EXPR: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_229 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } break; } default:; } break; } default:; } } break; case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_229 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } break; } default:; } break; } default:; } if (uniform_integer_cst_p (op1)) { { /* #line 4063 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_69 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTF: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF, GE_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF, GE_EXPR)) return true; } break; } default:; } } break; case CFN_BUILT_IN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRT: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRT, GE_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRT, GE_EXPR)) return true; } break; } default:; } } break; case CFN_BUILT_IN_SQRTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTL: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTL, GE_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTL, GE_EXPR)) return true; } break; } default:; } } break; case CFN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_SQRT: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_SQRT, GE_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_SQRT, GE_EXPR)) return true; } break; } default:; } } break; default:; } } break; case ADDR_EXPR: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, o30 }; if (gimple_simplify_225 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } break; } default:; } break; } default:; } } break; case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, op1 }; if (gimple_simplify_225 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } break; } default:; } break; } default:; } if (uniform_integer_cst_p (op1)) { { /* #line 4063 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, op1 }; if (gimple_simplify_264 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 4181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_73 (res_op, seq, valueize, type, captures, GE_EXPR, LE_EXPR)) return true; } } switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 4987 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_268 (res_op, seq, valueize, type, captures, PLUS_EXPR, MINUS_EXPR, GE_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { switch (TREE_CODE (o31)) { case INTEGER_CST: { { /* #line 4181 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, op0, o31 }; if (gimple_simplify_73 (res_op, seq, valueize, type, captures, LE_EXPR, GT_EXPR)) return true; } break; } default:; } } break; } case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 4196 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, op0, o31 }; if (gimple_simplify_53 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } } break; } case REALPART_EXPR: { tree o30 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o30) == SSA_NAME || is_gimple_min_invariant (o30))) { o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_SUB_OVERFLOW: if (gimple_call_num_args (def) == 2) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 4208 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, op0, o41 }; if (gimple_simplify_206 (res_op, seq, valueize, type, captures, LE_EXPR, EQ_EXPR)) return true; } } } break; default:; } } break; default:; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case REALPART_EXPR: { tree o20 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o20) == SSA_NAME || is_gimple_min_invariant (o20))) { o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_ADD_OVERFLOW: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { { /* #line 4216 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o30, o31 }; if (gimple_simplify_122 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR)) return true; } } if ((op1 == o31 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o31, 0) && types_match (op1, o31))) { { /* #line 4216 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o31, o30 }; if (gimple_simplify_122 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR)) return true; } } } break; default:; } } break; default:; } } break; } case TRUNC_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_all_onesp (o20)) { { /* #line 4226 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o21, op1 }; if (gimple_simplify_13 (res_op, seq, valueize, type, captures, GE_EXPR, EQ_EXPR)) return true; } } break; } case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_137 (res_op, seq, valueize, type, captures, GE_EXPR, LE_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 4987 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_268 (res_op, seq, valueize, type, captures, MINUS_EXPR, PLUS_EXPR, GE_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CEIL_MOD_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (integer_zerop (op0)) { { /* #line 480 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_296 (res_op, seq, valueize, type, captures, CEIL_MOD_EXPR)) return true; } } if (integer_onep (op1)) { { /* #line 485 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_65 (res_op, seq, valueize, type, captures, CEIL_MOD_EXPR)) return true; } } if (integer_minus_onep (op1)) { { /* #line 489 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_2 (res_op, seq, valueize, type, captures, CEIL_MOD_EXPR)) return true; } } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 495 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_238 (res_op, seq, valueize, type, captures, CEIL_MOD_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case CEIL_MOD_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 500 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_41 (res_op, seq, valueize, type, captures, CEIL_MOD_EXPR)) return true; } } break; } case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 504 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_119 (res_op, seq, valueize, type, captures, CEIL_MOD_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_FLOOR_MOD_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (integer_zerop (op0)) { { /* #line 480 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_296 (res_op, seq, valueize, type, captures, FLOOR_MOD_EXPR)) return true; } } if (integer_onep (op1)) { { /* #line 485 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_65 (res_op, seq, valueize, type, captures, FLOOR_MOD_EXPR)) return true; } } if (integer_minus_onep (op1)) { { /* #line 489 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_2 (res_op, seq, valueize, type, captures, FLOOR_MOD_EXPR)) return true; } } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 495 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_238 (res_op, seq, valueize, type, captures, FLOOR_MOD_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOOR_MOD_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 500 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_41 (res_op, seq, valueize, type, captures, FLOOR_MOD_EXPR)) return true; } } break; } case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 504 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_119 (res_op, seq, valueize, type, captures, FLOOR_MOD_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { tree o30_pops[1]; if (gimple_power_of_two_cand (o30, o30_pops, valueize)) { tree o40 = o30_pops[0]; { /* #line 561 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op1, o30, o40 }; if (gimple_simplify_318 (res_op, seq, valueize, type, captures, FLOOR_MOD_EXPR)) return true; } } } break; } default:; } } break; default:; } { tree op1_pops[1]; if (gimple_power_of_two_cand (op1, op1_pops, valueize)) { tree o30 = op1_pops[0]; { /* #line 561 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op1, op1, o30 }; if (gimple_simplify_36 (res_op, seq, valueize, type, captures, FLOOR_MOD_EXPR)) return true; } } } return false; } static bool gimple_simplify_ROUND_MOD_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (integer_zerop (op0)) { { /* #line 480 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_296 (res_op, seq, valueize, type, captures, ROUND_MOD_EXPR)) return true; } } if (integer_onep (op1)) { { /* #line 485 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_65 (res_op, seq, valueize, type, captures, ROUND_MOD_EXPR)) return true; } } if (integer_minus_onep (op1)) { { /* #line 489 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_2 (res_op, seq, valueize, type, captures, ROUND_MOD_EXPR)) return true; } } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 495 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_238 (res_op, seq, valueize, type, captures, ROUND_MOD_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case ROUND_MOD_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 500 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_41 (res_op, seq, valueize, type, captures, ROUND_MOD_EXPR)) return true; } } break; } case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 504 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_119 (res_op, seq, valueize, type, captures, ROUND_MOD_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_TRUNC_MOD_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (integer_zerop (op0)) { { /* #line 480 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_296 (res_op, seq, valueize, type, captures, TRUNC_MOD_EXPR)) return true; } } if (integer_onep (op1)) { { /* #line 485 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_65 (res_op, seq, valueize, type, captures, TRUNC_MOD_EXPR)) return true; } } if (integer_minus_onep (op1)) { { /* #line 489 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_2 (res_op, seq, valueize, type, captures, TRUNC_MOD_EXPR)) return true; } } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 495 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_238 (res_op, seq, valueize, type, captures, TRUNC_MOD_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case TRUNC_MOD_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 500 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_41 (res_op, seq, valueize, type, captures, TRUNC_MOD_EXPR)) return true; } } break; } case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 504 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_119 (res_op, seq, valueize, type, captures, TRUNC_MOD_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 532 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o40 }; if (gimple_simplify_48 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } { tree o30_pops[1]; if (gimple_power_of_two_cand (o30, o30_pops, valueize)) { tree o40 = o30_pops[0]; { /* #line 561 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op1, o30, o40 }; if (gimple_simplify_318 (res_op, seq, valueize, type, captures, TRUNC_MOD_EXPR)) return true; } } } break; } case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 532 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; if (gimple_simplify_48 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; case INTEGER_CST: { { /* #line 521 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 521 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_SIGN (type) == SIGNED && !TREE_OVERFLOW (captures[1]) && wi::neg_p (wi::to_wide (captures[1])) && !TYPE_OVERFLOW_TRAPS (type) && !sign_bit_p (captures[1], captures[1])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 527, __FILE__, __LINE__); res_op->set_op (TRUNC_MOD_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; ops1[0] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } { tree op1_pops[1]; if (gimple_power_of_two_cand (op1, op1_pops, valueize)) { tree o30 = op1_pops[0]; { /* #line 561 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op1, op1, o30 }; if (gimple_simplify_36 (res_op, seq, valueize, type, captures, TRUNC_MOD_EXPR)) return true; } } } return false; } static bool gimple_simplify_EQ_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case CEIL_MOD_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_pow2p (o21)) { if (integer_zerop (op1)) { { /* #line 514 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_43 (res_op, seq, valueize, type, captures, EQ_EXPR, CEIL_MOD_EXPR)) return true; } } } break; } case FLOOR_MOD_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_pow2p (o21)) { if (integer_zerop (op1)) { { /* #line 514 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_43 (res_op, seq, valueize, type, captures, EQ_EXPR, FLOOR_MOD_EXPR)) return true; } } } break; } case ROUND_MOD_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_pow2p (o21)) { if (integer_zerop (op1)) { { /* #line 514 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_43 (res_op, seq, valueize, type, captures, EQ_EXPR, ROUND_MOD_EXPR)) return true; } } } break; } case TRUNC_MOD_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_pow2p (o21)) { if (integer_zerop (op1)) { { /* #line 514 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_43 (res_op, seq, valueize, type, captures, EQ_EXPR, TRUNC_MOD_EXPR)) return true; } } } break; } case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1430 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_152 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1430 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; if (gimple_simplify_152 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1430 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o50 }; if (gimple_simplify_152 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1430 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o51 }; if (gimple_simplify_152 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1440 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_49 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } break; } case EXACT_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case EXACT_DIV_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1478 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_158 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } break; } case TRUNC_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 1485 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_319 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } break; } default:; } break; } case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1547, __FILE__, __LINE__); res_op->set_op (EQ_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1547, __FILE__, __LINE__); res_op->set_op (EQ_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o50 }; /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1547, __FILE__, __LINE__); res_op->set_op (EQ_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o51 }; /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1547, __FILE__, __LINE__); res_op->set_op (EQ_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1560 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; /* #line 1560 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1563, __FILE__, __LINE__); res_op->set_op (EQ_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1587 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; /* #line 1587 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1590, __FILE__, __LINE__); res_op->set_op (EQ_EXPR, type, 2); res_op->ops[0] = captures[2]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } break; } case POINTER_DIFF_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_DIFF_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1568 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o50 }; if (gimple_simplify_59 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o51 }; if (gimple_simplify_292 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); switch (TREE_CODE (o50)) { case INTEGER_CST: { switch (TREE_CODE (o51)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o51)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o20 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o20, 0) && types_match (o70, o20))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o50 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } { tree op1_pops[1]; if (gimple_nop_convert (op1, op1_pops, valueize)) { tree o40 = op1_pops[0]; switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); switch (TREE_CODE (o51)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o51)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o20 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o20, 0) && types_match (o70, o20))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o40, o50, o20 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o40, o51, o20 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o40, o50, o20 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o40, o51, o20 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } case POINTER_PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { { /* #line 1625 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o40, o20, o51 }; if (gimple_simplify_246 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1625 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o40, o20, o51 }; if (gimple_simplify_246 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } } } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o30)) { case INTEGER_CST: { switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o50 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o50, 0) && types_match (o70, o50))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o50, o30 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o50 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o50, 0) && types_match (op1, o50))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o50, o30 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o31 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o31, 0) && types_match (o60, o31))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o31, o30 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o31 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o31, 0) && types_match (op1, o31))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o31, o30 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); switch (TREE_CODE (o50)) { case INTEGER_CST: { if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o50 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } break; } default:; } } break; default:; } break; } case MINUS_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case INTEGER_CST: { switch (TREE_CODE (o41)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o41)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } if ((o41 == o20 && ! TREE_SIDE_EFFECTS (o41)) || (operand_equal_p (o41, o20, 0) && types_match (o41, o20))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } { tree op0_pops[1]; if (gimple_logical_inverted_value (op0, op0_pops, valueize)) { tree o20 = op0_pops[0]; if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { if (gimple_truth_valued_p (op1, valueize)) { { /* #line 1359 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_23 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } } } } { tree op0_pops[1]; if (gimple_nop_convert (op0, op0_pops, valueize)) { tree o20 = op0_pops[0]; switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o50 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o50, 0) && types_match (o70, o50))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o30, o50 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o40 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o40, 0) && types_match (o70, o40))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o31, o40 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o40 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o40, 0) && types_match (op1, o40))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o31, o40 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((op1 == o50 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o50, 0) && types_match (op1, o50))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o30, o50 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o31 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o31, 0) && types_match (o60, o31))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o30, o31 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o31, o30 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o31 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o31, 0) && types_match (op1, o31))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o30, o31 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o31, o30 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } case POINTER_PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o40 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o40, 0) && types_match (o70, o40))) { { /* #line 1625 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o40, o31 }; if (gimple_simplify_246 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o40 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o40, 0) && types_match (op1, o40))) { { /* #line 1625 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o40, o31 }; if (gimple_simplify_246 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { { /* #line 1625 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o30, o31 }; if (gimple_simplify_246 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { { /* #line 1625 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o30, o31 }; if (gimple_simplify_246 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } } } if (gimple_truth_valued_p (op0, valueize)) { { tree op1_pops[1]; if (gimple_logical_inverted_value (op1, op1_pops, valueize)) { tree o30 = op1_pops[0]; if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1359 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_23 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } } } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1635 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o31 }; if (gimple_simplify_118 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } { tree op1_pops[1]; if (gimple_nop_convert (op1, op1_pops, valueize)) { tree o30 = op1_pops[0]; switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); switch (TREE_CODE (o41)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o41)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == op0 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, op0, 0) && types_match (o60, op0))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o30, o40, op0 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, op0, 0) && types_match (o50, op0))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o30, o41, op0 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } if ((o41 == op0 && ! TREE_SIDE_EFFECTS (o41)) || (operand_equal_p (o41, op0, 0) && types_match (o41, op0))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o30, o40, op0 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o30, o41, op0 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } case POINTER_PLUS_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, op0, 0) && types_match (o50, op0))) { { /* #line 1625 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o30, op0, o41 }; if (gimple_simplify_246 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 1625 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o30, op0, o41 }; if (gimple_simplify_246 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 1635 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op0, o21 }; if (gimple_simplify_118 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } switch (TREE_CODE (o20)) { case INTEGER_CST: { switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o40 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o40, 0) && types_match (o60, o40))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o40 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o40, 0) && types_match (op1, o40))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } break; } case TRUNC_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_zerop (op1)) { { /* #line 1649 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_90 (res_op, seq, valueize, type, captures, EQ_EXPR, LT_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case INTEGER_CST: { switch (TREE_CODE (o41)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o41)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == op0 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, op0, 0) && types_match (o60, op0))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o40 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } if ((o41 == op0 && ! TREE_SIDE_EFFECTS (o41)) || (operand_equal_p (o41, op0, 0) && types_match (o41, op0))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o40 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } break; } default:; } } break; default:; } break; } case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o30)) { case INTEGER_CST: { switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, op0, 0) && types_match (o50, op0))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MIN_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 2297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_309 (res_op, seq, valueize, type, captures, MIN_EXPR, EQ_EXPR, LE_EXPR)) return true; } } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 2297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_309 (res_op, seq, valueize, type, captures, MIN_EXPR, EQ_EXPR, LE_EXPR)) return true; } } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2304 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_117 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MAX_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 2297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_309 (res_op, seq, valueize, type, captures, MAX_EXPR, EQ_EXPR, GE_EXPR)) return true; } } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 2297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_309 (res_op, seq, valueize, type, captures, MAX_EXPR, EQ_EXPR, GE_EXPR)) return true; } } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2313 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_311 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } { tree op0_pops[1]; if (gimple_with_possible_nonzero_bits2 (op0, op0_pops, valueize)) { tree o20 = op0_pops[0]; { tree op1_pops[1]; if (gimple_with_certain_nonzero_bits2 (op1, op1_pops, valueize)) { tree o40 = op1_pops[0]; { /* #line 1686 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_184 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } } } } { tree op0_pops[1]; if (gimple_with_certain_nonzero_bits2 (op0, op0_pops, valueize)) { tree o20 = op0_pops[0]; { tree op1_pops[1]; if (gimple_with_possible_nonzero_bits2 (op1, op1_pops, valueize)) { tree o40 = op1_pops[0]; { /* #line 1686 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_184 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } } } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MIN_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 2297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o31 }; if (gimple_simplify_309 (res_op, seq, valueize, type, captures, MIN_EXPR, EQ_EXPR, LE_EXPR)) return true; } } if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 2297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; if (gimple_simplify_309 (res_op, seq, valueize, type, captures, MIN_EXPR, EQ_EXPR, LE_EXPR)) return true; } } break; } case MAX_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 2297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o31 }; if (gimple_simplify_309 (res_op, seq, valueize, type, captures, MAX_EXPR, EQ_EXPR, GE_EXPR)) return true; } } if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 2297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; if (gimple_simplify_309 (res_op, seq, valueize, type, captures, MAX_EXPR, EQ_EXPR, GE_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LSHIFT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (integer_onep (o30)) { if (integer_onep (o21)) { if (integer_zerop (op1)) { { /* #line 2422 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o31 }; if (gimple_simplify_75 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR)) return true; } } } } break; } default:; } } break; default:; } break; } case LSHIFT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2430 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_98 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_zerop (op1)) { { /* #line 3197 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_130 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } case POINTER_DIFF_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_zerop (op1)) { { /* #line 3197 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_55 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { if (integer_zerop (op1)) { { /* #line 3209 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_66 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR)) return true; } } break; } default:; } break; } default:; } } break; default:; } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 3224 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_44 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3253 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; if (gimple_simplify_315 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (op1)) { { /* #line 3261 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_133 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR)) return true; } } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3269 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_317 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } } break; default:; } { /* #line 3269 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_317 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3299 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_29 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3359 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_195 (res_op, seq, valueize, type, captures, PLUS_EXPR, EQ_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3359 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_195 (res_op, seq, valueize, type, captures, MINUS_EXPR, EQ_EXPR)) return true; } break; } default:; } break; } default:; } switch (TREE_CODE (o20)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3375 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_199 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } break; } default:; } break; } case FLOAT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3531 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_121 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR)) return true; } break; } default:; } } break; case REAL_CST: { { /* #line 3560 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_77 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR)) return true; } break; } default:; } break; } case EXACT_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 3628 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_146 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3724 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_156 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR)) return true; } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (op1)) { { /* #line 3730 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_102 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR)) return true; } } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (zerop (op1)) { { /* #line 3741 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_213 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3748 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; if (gimple_simplify_10 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } } break; default:; } { /* #line 3748 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, op1 }; if (gimple_simplify_114 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 3827 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o30, o31, op1 }; if (gimple_simplify_97 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } break; } case BIT_IOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 3827 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_97 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_XOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if (integer_zerop (op1)) { { /* #line 3834 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_272 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 3840 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_274 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 3840 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_274 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTF: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF, EQ_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF, EQ_EXPR)) return true; } break; } default:; } } break; case CFN_BUILT_IN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRT: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRT, EQ_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRT, EQ_EXPR)) return true; } break; } default:; } } break; case CFN_BUILT_IN_SQRTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTL: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTL, EQ_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTL, EQ_EXPR)) return true; } break; } default:; } } break; case CFN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_SQRT: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_SQRT, EQ_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_SQRT, EQ_EXPR)) return true; } break; } default:; } } break; default:; } } break; case ADDR_EXPR: { switch (TREE_CODE (op1)) { case SSA_NAME: { { /* #line 3811 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_1 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } break; } default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_XOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 3840 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o31 }; if (gimple_simplify_274 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 3840 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; if (gimple_simplify_274 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_XOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 3845 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o30, o31, op1 }; if (gimple_simplify_40 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; case ADDR_EXPR: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_229 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } break; } default:; } } break; case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_229 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } if (integer_zerop (op1)) { { /* #line 3850 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_129 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } break; } case BIT_XOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 3845 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_40 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if (integer_pow2p (o21)) { if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 3859 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_278 (res_op, seq, valueize, type, captures, EQ_EXPR, NE_EXPR)) return true; } } } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if (integer_pow2p (o21)) { if (integer_zerop (op1)) { { /* #line 3885 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o30, o21 }; if (gimple_simplify_176 (res_op, seq, valueize, type, captures, EQ_EXPR, GE_EXPR)) return true; } } } break; } default:; } } break; default:; } if (integer_pow2p (o21)) { if (integer_zerop (op1)) { { /* #line 3885 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o20, o21 }; if (gimple_simplify_205 (res_op, seq, valueize, type, captures, EQ_EXPR, GE_EXPR)) return true; } } } break; } default:; } } break; case ADDR_EXPR: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, o30 }; if (gimple_simplify_225 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } break; } default:; } } break; case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, op1 }; if (gimple_simplify_225 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } if (integer_zerop (op1)) { { /* #line 3850 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_129 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } } break; } default:; } { /* #line 4035 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_18 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 4048 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_286 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } break; } default:; } } break; default:; } if (integer_onep (op1)) { { /* #line 4162 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4162 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TREE_CODE (TREE_TYPE (captures[0])) == BOOLEAN_TYPE && types_match (type, TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4164, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 4971 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_265 (res_op, seq, valueize, type, captures, PLUS_EXPR, MINUS_EXPR, EQ_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 4971 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_265 (res_op, seq, valueize, type, captures, MINUS_EXPR, PLUS_EXPR, EQ_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_POPCOUNT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (integer_zerop (op1)) { { /* #line 5223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_177 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNT)) return true; } } } break; case CFN_BUILT_IN_POPCOUNTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (integer_zerop (op1)) { { /* #line 5223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_177 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTL)) return true; } } } break; case CFN_BUILT_IN_POPCOUNTLL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (integer_zerop (op1)) { { /* #line 5223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_177 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTLL)) return true; } } } break; case CFN_BUILT_IN_POPCOUNTIMAX: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (integer_zerop (op1)) { { /* #line 5223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_177 (res_op, seq, valueize, type, captures, EQ_EXPR, EQ_EXPR, CFN_BUILT_IN_POPCOUNTIMAX)) return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_NE_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case CEIL_MOD_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_pow2p (o21)) { if (integer_zerop (op1)) { { /* #line 514 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_43 (res_op, seq, valueize, type, captures, NE_EXPR, CEIL_MOD_EXPR)) return true; } } } break; } case FLOOR_MOD_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_pow2p (o21)) { if (integer_zerop (op1)) { { /* #line 514 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_43 (res_op, seq, valueize, type, captures, NE_EXPR, FLOOR_MOD_EXPR)) return true; } } } break; } case ROUND_MOD_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_pow2p (o21)) { if (integer_zerop (op1)) { { /* #line 514 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_43 (res_op, seq, valueize, type, captures, NE_EXPR, ROUND_MOD_EXPR)) return true; } } } break; } case TRUNC_MOD_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_pow2p (o21)) { if (integer_zerop (op1)) { { /* #line 514 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_43 (res_op, seq, valueize, type, captures, NE_EXPR, TRUNC_MOD_EXPR)) return true; } } } break; } case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1430 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_152 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1430 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; if (gimple_simplify_152 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1430 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o50 }; if (gimple_simplify_152 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1430 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o51 }; if (gimple_simplify_152 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MULT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1440 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_49 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } break; } case EXACT_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case EXACT_DIV_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1478 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_158 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } break; } case TRUNC_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 1485 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_319 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } break; } default:; } break; } default:; } break; } case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1547, __FILE__, __LINE__); res_op->set_op (NE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1547, __FILE__, __LINE__); res_op->set_op (NE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o50 }; /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1547, __FILE__, __LINE__); res_op->set_op (NE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, o51 }; /* #line 1544 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1547, __FILE__, __LINE__); res_op->set_op (NE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1560 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; /* #line 1560 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0])) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1563, __FILE__, __LINE__); res_op->set_op (NE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1587 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o51 }; /* #line 1587 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])) || TYPE_OVERFLOW_WRAPS (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1590, __FILE__, __LINE__); res_op->set_op (NE_EXPR, type, 2); res_op->ops[0] = captures[2]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } break; } case POINTER_DIFF_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_DIFF_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1568 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o50 }; if (gimple_simplify_59 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1595 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o51 }; if (gimple_simplify_292 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); switch (TREE_CODE (o50)) { case INTEGER_CST: { switch (TREE_CODE (o51)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o51)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o20 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o20, 0) && types_match (o70, o20))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o50 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } { tree op1_pops[1]; if (gimple_nop_convert (op1, op1_pops, valueize)) { tree o40 = op1_pops[0]; switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); switch (TREE_CODE (o51)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o51)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o20 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o20, 0) && types_match (o70, o20))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o40, o50, o20 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o40, o51, o20 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o40, o50, o20 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o40, o51, o20 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } case POINTER_PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { { /* #line 1625 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o40, o20, o51 }; if (gimple_simplify_246 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1625 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o40, o20, o51 }; if (gimple_simplify_246 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } } } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o30)) { case INTEGER_CST: { switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o50 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o50, 0) && types_match (o70, o50))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o50, o30 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o50 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o50, 0) && types_match (op1, o50))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o50, o30 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o31 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o31, 0) && types_match (o60, o31))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o31, o30 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o31 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o31, 0) && types_match (op1, o31))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o31, o30 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); switch (TREE_CODE (o50)) { case INTEGER_CST: { if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o50 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } break; } default:; } } break; default:; } break; } case MINUS_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case INTEGER_CST: { switch (TREE_CODE (o41)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o41)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } if ((o41 == o20 && ! TREE_SIDE_EFFECTS (o41)) || (operand_equal_p (o41, o20, 0) && types_match (o41, o20))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } { tree op0_pops[1]; if (gimple_logical_inverted_value (op0, op0_pops, valueize)) { tree o20 = op0_pops[0]; if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { if (gimple_truth_valued_p (op1, valueize)) { { /* #line 1359 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_23 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } } } } { tree op0_pops[1]; if (gimple_nop_convert (op0, op0_pops, valueize)) { tree o20 = op0_pops[0]; switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o50 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o50, 0) && types_match (o70, o50))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o30, o50 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o40 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o40, 0) && types_match (o70, o40))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o31, o40 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o40 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o40, 0) && types_match (op1, o40))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o31, o40 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((op1 == o50 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o50, 0) && types_match (op1, o50))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o30, o50 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o31 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o31, 0) && types_match (o60, o31))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o30, o31 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o31, o30 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o31 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o31, 0) && types_match (op1, o31))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o30, o31 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o31, o30 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } case POINTER_PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o40 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o40, 0) && types_match (o70, o40))) { { /* #line 1625 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o40, o31 }; if (gimple_simplify_246 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o40 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o40, 0) && types_match (op1, o40))) { { /* #line 1625 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o40, o31 }; if (gimple_simplify_246 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { { /* #line 1625 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o30, o31 }; if (gimple_simplify_246 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { { /* #line 1625 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o30, o31 }; if (gimple_simplify_246 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } } } if (gimple_truth_valued_p (op0, valueize)) { { tree op1_pops[1]; if (gimple_logical_inverted_value (op1, op1_pops, valueize)) { tree o30 = op1_pops[0]; if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1359 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_23 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } } } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1635 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o31 }; if (gimple_simplify_118 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } { tree op1_pops[1]; if (gimple_nop_convert (op1, op1_pops, valueize)) { tree o30 = op1_pops[0]; switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); switch (TREE_CODE (o41)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o41)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == op0 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, op0, 0) && types_match (o60, op0))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o30, o40, op0 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, op0, 0) && types_match (o50, op0))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o30, o41, op0 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } if ((o41 == op0 && ! TREE_SIDE_EFFECTS (o41)) || (operand_equal_p (o41, op0, 0) && types_match (o41, op0))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o30, o40, op0 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 1616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o30, o41, op0 }; if (gimple_simplify_64 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } case POINTER_PLUS_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, op0, 0) && types_match (o50, op0))) { { /* #line 1625 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o30, op0, o41 }; if (gimple_simplify_246 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 1625 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o30, op0, o41 }; if (gimple_simplify_246 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 1635 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op0, o21 }; if (gimple_simplify_118 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } switch (TREE_CODE (o20)) { case INTEGER_CST: { switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o40 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o40, 0) && types_match (o60, o40))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o40 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o40, 0) && types_match (op1, o40))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } break; } case TRUNC_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_zerop (op1)) { { /* #line 1649 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_90 (res_op, seq, valueize, type, captures, NE_EXPR, GE_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o40)) { case INTEGER_CST: { switch (TREE_CODE (o41)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o41)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == op0 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, op0, 0) && types_match (o60, op0))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o40 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } if ((o41 == op0 && ! TREE_SIDE_EFFECTS (o41)) || (operand_equal_p (o41, op0, 0) && types_match (o41, op0))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o40 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } break; } default:; } } break; default:; } break; } case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o30)) { case INTEGER_CST: { switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, op0, 0) && types_match (o50, op0))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 1659 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; if (gimple_simplify_300 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MIN_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 2297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_309 (res_op, seq, valueize, type, captures, MIN_EXPR, NE_EXPR, GT_EXPR)) return true; } } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 2297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_309 (res_op, seq, valueize, type, captures, MIN_EXPR, NE_EXPR, GT_EXPR)) return true; } } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2304 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_117 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MAX_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 2297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_309 (res_op, seq, valueize, type, captures, MAX_EXPR, NE_EXPR, LT_EXPR)) return true; } } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 2297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_309 (res_op, seq, valueize, type, captures, MAX_EXPR, NE_EXPR, LT_EXPR)) return true; } } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2313 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_311 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } { tree op0_pops[1]; if (gimple_with_possible_nonzero_bits2 (op0, op0_pops, valueize)) { tree o20 = op0_pops[0]; { tree op1_pops[1]; if (gimple_with_certain_nonzero_bits2 (op1, op1_pops, valueize)) { tree o40 = op1_pops[0]; { /* #line 1686 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_184 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } } } } { tree op0_pops[1]; if (gimple_with_certain_nonzero_bits2 (op0, op0_pops, valueize)) { tree o20 = op0_pops[0]; { tree op1_pops[1]; if (gimple_with_possible_nonzero_bits2 (op1, op1_pops, valueize)) { tree o40 = op1_pops[0]; { /* #line 1686 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_184 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } } } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MIN_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 2297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o31 }; if (gimple_simplify_309 (res_op, seq, valueize, type, captures, MIN_EXPR, NE_EXPR, GT_EXPR)) return true; } } if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 2297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; if (gimple_simplify_309 (res_op, seq, valueize, type, captures, MIN_EXPR, NE_EXPR, GT_EXPR)) return true; } } break; } case MAX_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 2297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o31 }; if (gimple_simplify_309 (res_op, seq, valueize, type, captures, MAX_EXPR, NE_EXPR, LT_EXPR)) return true; } } if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 2297 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; if (gimple_simplify_309 (res_op, seq, valueize, type, captures, MAX_EXPR, NE_EXPR, LT_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LSHIFT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (integer_onep (o30)) { if (integer_onep (o21)) { if (integer_zerop (op1)) { { /* #line 2422 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o31 }; if (gimple_simplify_75 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR)) return true; } } } } break; } default:; } } break; default:; } break; } case LSHIFT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2430 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_98 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_zerop (op1)) { { /* #line 3197 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_130 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } case POINTER_DIFF_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_zerop (op1)) { { /* #line 3197 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_55 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } case MULT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { if (integer_zerop (op1)) { { /* #line 3209 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_66 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR)) return true; } } break; } default:; } break; } default:; } } break; default:; } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 3232 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_207 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3253 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; if (gimple_simplify_315 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (op1)) { { /* #line 3261 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_133 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR)) return true; } } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3269 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_317 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } break; } default:; } } break; default:; } { /* #line 3269 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_317 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3299 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_29 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3359 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_195 (res_op, seq, valueize, type, captures, PLUS_EXPR, NE_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3359 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_195 (res_op, seq, valueize, type, captures, MINUS_EXPR, NE_EXPR)) return true; } break; } default:; } break; } default:; } switch (TREE_CODE (o20)) { case REAL_CST: { switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 3375 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_199 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } break; } default:; } break; } default:; } break; } case FLOAT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3531 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_121 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR)) return true; } break; } default:; } } break; case REAL_CST: { { /* #line 3560 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_77 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR)) return true; } break; } default:; } break; } case EXACT_DIV_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 3628 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_146 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } break; } default:; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3724 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_156 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR)) return true; } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (op1)) { { /* #line 3730 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_102 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR)) return true; } } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if (zerop (op1)) { { /* #line 3741 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_213 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3748 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; if (gimple_simplify_10 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } break; } default:; } } break; default:; } { /* #line 3748 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, op1 }; if (gimple_simplify_114 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 3827 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o30, o31, op1 }; if (gimple_simplify_97 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } break; } case BIT_IOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 3827 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_97 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_XOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if (integer_zerop (op1)) { { /* #line 3834 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_272 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 3840 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_274 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 3840 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_274 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTF: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF, NE_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTF, NE_EXPR)) return true; } break; } default:; } } break; case CFN_BUILT_IN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRT: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRT, NE_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRT, NE_EXPR)) return true; } break; } default:; } } break; case CFN_BUILT_IN_SQRTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_SQRTL: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTL, NE_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_SQRTL, NE_EXPR)) return true; } break; } default:; } } break; case CFN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_SQRT: if (gimple_call_num_args (def) == 1) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_39 (res_op, seq, valueize, type, captures, CFN_SQRT, NE_EXPR)) return true; } } break; default:; } } break; case REAL_CST: { { /* #line 3383 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_307 (res_op, seq, valueize, type, captures, CFN_SQRT, NE_EXPR)) return true; } break; } default:; } } break; default:; } } break; case ADDR_EXPR: { switch (TREE_CODE (op1)) { case SSA_NAME: { { /* #line 3811 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_1 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } break; } default:; } break; } default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_XOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 3840 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o31 }; if (gimple_simplify_274 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 3840 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; if (gimple_simplify_274 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_XOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 3845 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o30, o31, op1 }; if (gimple_simplify_40 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; case ADDR_EXPR: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_229 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } break; } default:; } break; } default:; } } break; case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, op1 }; if (gimple_simplify_229 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } break; } default:; } if (integer_zerop (op1)) { { /* #line 3850 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_129 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } break; } case BIT_XOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 3845 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_40 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if (integer_pow2p (o21)) { if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 3859 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_278 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR)) return true; } } } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if (integer_pow2p (o21)) { if (integer_zerop (op1)) { { /* #line 3885 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o30, o21 }; if (gimple_simplify_176 (res_op, seq, valueize, type, captures, NE_EXPR, LT_EXPR)) return true; } } } break; } default:; } } break; default:; } if (integer_pow2p (o21)) { if (integer_zerop (op1)) { { /* #line 3885 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o20, o21 }; if (gimple_simplify_205 (res_op, seq, valueize, type, captures, NE_EXPR, LT_EXPR)) return true; } } } break; } default:; } } break; case ADDR_EXPR: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, o30 }; if (gimple_simplify_225 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } break; } default:; } break; } default:; } } break; case ADDR_EXPR: { { /* #line 3918 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op0, op1 }; if (gimple_simplify_225 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } break; } default:; } if (integer_zerop (op1)) { { /* #line 3850 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_129 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } } break; } default:; } { /* #line 4035 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_18 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 4048 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_286 (res_op, seq, valueize, type, captures, NE_EXPR)) return true; } break; } default:; } break; } default:; } } break; default:; } if (integer_zerop (op1)) { { /* #line 4156 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 4156 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TREE_CODE (TREE_TYPE (captures[0])) == BOOLEAN_TYPE && types_match (type, TREE_TYPE (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4158, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 4971 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_265 (res_op, seq, valueize, type, captures, PLUS_EXPR, MINUS_EXPR, NE_EXPR)) return true; } break; } default:; } break; } default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 4971 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_265 (res_op, seq, valueize, type, captures, MINUS_EXPR, PLUS_EXPR, NE_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_POPCOUNT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (integer_zerop (op1)) { { /* #line 5223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_177 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNT)) return true; } } } break; case CFN_BUILT_IN_POPCOUNTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (integer_zerop (op1)) { { /* #line 5223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_177 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTL)) return true; } } } break; case CFN_BUILT_IN_POPCOUNTLL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (integer_zerop (op1)) { { /* #line 5223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_177 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTLL)) return true; } } } break; case CFN_BUILT_IN_POPCOUNTIMAX: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (integer_zerop (op1)) { { /* #line 5223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_177 (res_op, seq, valueize, type, captures, NE_EXPR, NE_EXPR, CFN_BUILT_IN_POPCOUNTIMAX)) return true; } } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_POWF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 600 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn pows = CFN_BUILT_IN_POWF; { /* #line 600 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ HOST_WIDE_INT n; /* #line 601 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_isinteger (&TREE_REAL_CST (captures[1]), &n) && (n & 1) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 602, __FILE__, __LINE__); res_op->set_op (pows, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 600 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn pows = CFN_BUILT_IN_POWF; { /* #line 600 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ HOST_WIDE_INT n; /* #line 601 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_isinteger (&TREE_REAL_CST (captures[1]), &n) && (n & 1) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 602, __FILE__, __LINE__); res_op->set_op (pows, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNF: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 645 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_81 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWF, CFN_BUILT_IN_COPYSIGNF)) return true; } break; } default:; } } break; case CFN_BUILT_IN_EXPF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4443, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXPF, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP2F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4443, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP2F, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP10F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4443, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP10F, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POW10F: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4443, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW10F, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_SQRTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4661, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWF, type, 2); res_op->ops[0] = captures[0]; { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_CBRTF: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (tree_expr_nonnegative_p (o20)) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4665, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWF, type, 2); res_op->ops[0] = captures[0]; { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = build_real_truncate (type, dconst_third ()); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; case CFN_BUILT_IN_POWF: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if (tree_expr_nonnegative_p (o20)) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4669, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWF, type, 2); res_op->ops[0] = captures[0]; { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; default:; } } break; case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_282 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWF, CFN_BUILT_IN_EXPF, CFN_BUILT_IN_LOGF, CFN_BUILT_IN_EXP2F, CFN_BUILT_IN_LOG2F)) return true; } break; } default:; } if (real_onep (op0)) { { /* #line 4534 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_32 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWF)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 4827 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; { /* #line 4827 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ const REAL_VALUE_TYPE *value = TREE_REAL_CST_PTR (captures[1]); REAL_VALUE_TYPE tmp; /* #line 4833 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_equal (value, &dconst0)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4834, __FILE__, __LINE__); tree tem; tem = build_real (type, dconst1); res_op->set_value (tem); return true; } else { /* #line 4836 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_equal (value, &dconst1)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4837, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } else { /* #line 4839 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_equal (value, &dconstm1)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4840, __FILE__, __LINE__); res_op->set_op (RDIV_EXPR, type, 2); res_op->ops[0] = build_real (type, dconst1); res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 4842 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p () && real_equal (value, &dconsthalf)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4845, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_SQRTF, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 4847 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p () && (tmp = real_value_truncate (TYPE_MODE (type), dconst_third ()), real_equal (value, &tmp))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4851, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_CBRTF, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } } } } break; } default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_POW (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 600 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn pows = CFN_BUILT_IN_POW; { /* #line 600 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ HOST_WIDE_INT n; /* #line 601 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_isinteger (&TREE_REAL_CST (captures[1]), &n) && (n & 1) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 602, __FILE__, __LINE__); res_op->set_op (pows, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 600 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn pows = CFN_BUILT_IN_POW; { /* #line 600 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ HOST_WIDE_INT n; /* #line 601 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_isinteger (&TREE_REAL_CST (captures[1]), &n) && (n & 1) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 602, __FILE__, __LINE__); res_op->set_op (pows, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGN: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 645 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_81 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POW, CFN_BUILT_IN_COPYSIGN)) return true; } break; } default:; } } break; case CFN_BUILT_IN_EXP: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4443, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP2: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4443, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP2, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4443, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP10, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POW10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4443, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW10, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4661, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW, type, 2); res_op->ops[0] = captures[0]; { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_CBRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (tree_expr_nonnegative_p (o20)) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4665, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW, type, 2); res_op->ops[0] = captures[0]; { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = build_real_truncate (type, dconst_third ()); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; case CFN_BUILT_IN_POW: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if (tree_expr_nonnegative_p (o20)) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4669, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW, type, 2); res_op->ops[0] = captures[0]; { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; default:; } } break; case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_282 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POW, CFN_BUILT_IN_EXP, CFN_BUILT_IN_LOG, CFN_BUILT_IN_EXP2, CFN_BUILT_IN_LOG2)) return true; } break; } default:; } if (real_onep (op0)) { { /* #line 4534 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_32 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POW)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 4827 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; { /* #line 4827 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ const REAL_VALUE_TYPE *value = TREE_REAL_CST_PTR (captures[1]); REAL_VALUE_TYPE tmp; /* #line 4833 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_equal (value, &dconst0)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4834, __FILE__, __LINE__); tree tem; tem = build_real (type, dconst1); res_op->set_value (tem); return true; } else { /* #line 4836 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_equal (value, &dconst1)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4837, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } else { /* #line 4839 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_equal (value, &dconstm1)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4840, __FILE__, __LINE__); res_op->set_op (RDIV_EXPR, type, 2); res_op->ops[0] = build_real (type, dconst1); res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 4842 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p () && real_equal (value, &dconsthalf)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4845, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_SQRT, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 4847 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p () && (tmp = real_value_truncate (TYPE_MODE (type), dconst_third ()), real_equal (value, &tmp))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4851, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_CBRT, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } } } } break; } default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_POWL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 600 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn pows = CFN_BUILT_IN_POWL; { /* #line 600 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ HOST_WIDE_INT n; /* #line 601 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_isinteger (&TREE_REAL_CST (captures[1]), &n) && (n & 1) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 602, __FILE__, __LINE__); res_op->set_op (pows, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 600 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn pows = CFN_BUILT_IN_POWL; { /* #line 600 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ HOST_WIDE_INT n; /* #line 601 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_isinteger (&TREE_REAL_CST (captures[1]), &n) && (n & 1) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 602, __FILE__, __LINE__); res_op->set_op (pows, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNL: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 645 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_81 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWL, CFN_BUILT_IN_COPYSIGNL)) return true; } break; } default:; } } break; case CFN_BUILT_IN_EXPL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4443, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXPL, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP2L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4443, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP2L, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_EXP10L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4443, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_EXP10L, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_POW10L: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4443, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POW10L, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_SQRTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4661, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWL, type, 2); res_op->ops[0] = captures[0]; { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_BUILT_IN_CBRTL: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); if (tree_expr_nonnegative_p (o20)) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4665, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWL, type, 2); res_op->ops[0] = captures[0]; { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = build_real_truncate (type, dconst_third ()); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; case CFN_BUILT_IN_POWL: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if (tree_expr_nonnegative_p (o20)) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4669, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWL, type, 2); res_op->ops[0] = captures[0]; { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; default:; } } break; case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_282 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWL, CFN_BUILT_IN_EXPL, CFN_BUILT_IN_LOGL, CFN_BUILT_IN_EXP2L, CFN_BUILT_IN_LOG2L)) return true; } break; } default:; } if (real_onep (op0)) { { /* #line 4534 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_32 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_POWL)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 4827 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; { /* #line 4827 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ const REAL_VALUE_TYPE *value = TREE_REAL_CST_PTR (captures[1]); REAL_VALUE_TYPE tmp; /* #line 4833 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_equal (value, &dconst0)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4834, __FILE__, __LINE__); tree tem; tem = build_real (type, dconst1); res_op->set_value (tem); return true; } else { /* #line 4836 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_equal (value, &dconst1)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4837, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } else { /* #line 4839 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_equal (value, &dconstm1)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4840, __FILE__, __LINE__); res_op->set_op (RDIV_EXPR, type, 2); res_op->ops[0] = build_real (type, dconst1); res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 4842 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p () && real_equal (value, &dconsthalf)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4845, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_SQRTL, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 4847 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p () && (tmp = real_value_truncate (TYPE_MODE (type), dconst_third ()), real_equal (value, &tmp))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4851, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_CBRTL, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } } } } break; } default:; } return false; } static bool gimple_simplify_CFN_POW (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 600 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn pows = CFN_POW; { /* #line 600 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ HOST_WIDE_INT n; /* #line 601 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_isinteger (&TREE_REAL_CST (captures[1]), &n) && (n & 1) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 602, __FILE__, __LINE__); res_op->set_op (pows, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 600 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn pows = CFN_POW; { /* #line 600 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ HOST_WIDE_INT n; /* #line 601 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (real_isinteger (&TREE_REAL_CST (captures[1]), &n) && (n & 1) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 602, __FILE__, __LINE__); res_op->set_op (pows, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_COPYSIGN: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 645 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_81 (res_op, seq, valueize, type, captures, CFN_POW, CFN_COPYSIGN)) return true; } break; } default:; } } break; case CFN_EXP: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4443, __FILE__, __LINE__); res_op->set_op (CFN_EXP, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_EXP2: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4443, __FILE__, __LINE__); res_op->set_op (CFN_EXP2, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_EXP10: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4443, __FILE__, __LINE__); res_op->set_op (CFN_EXP10, type, 1); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } break; case CFN_SQRT: if (gimple_call_num_args (def) == 1) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4661, __FILE__, __LINE__); res_op->set_op (CFN_POW, type, 2); res_op->ops[0] = captures[0]; { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = build_real (type, dconsthalf); gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; case CFN_POW: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); if (tree_expr_nonnegative_p (o20)) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (flag_unsafe_math_optimizations && canonicalize_math_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4669, __FILE__, __LINE__); res_op->set_op (CFN_POW, type, 2); res_op->ops[0] = captures[0]; { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), MULT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; default:; } } break; case REAL_CST: { { /* #line 4248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_282 (res_op, seq, valueize, type, captures, CFN_POW, CFN_EXP, CFN_LOG, CFN_EXP2, CFN_LOG2)) return true; } break; } default:; } if (real_onep (op0)) { { /* #line 4534 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_32 (res_op, seq, valueize, type, captures, CFN_POW)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_POWIF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((wi::to_wide (captures[1]) & 1) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 608, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWIF, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((wi::to_wide (captures[1]) & 1) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 608, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWIF, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNF: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 653 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; /* #line 653 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((wi::to_wide (captures[2]) & 1) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 654, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWIF, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } } break; default:; } if (real_onep (op0)) { { /* #line 4856 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_182 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 4862 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 4862 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::to_wide (captures[1]) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4863, __FILE__, __LINE__); tree tem; tem = build_real (type, dconst1); res_op->set_value (tem); return true; } else { /* #line 4865 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::to_wide (captures[1]) == 1) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4866, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } else { /* #line 4868 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::to_wide (captures[1]) == -1) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4869, __FILE__, __LINE__); res_op->set_op (RDIV_EXPR, type, 2); res_op->ops[0] = build_real (type, dconst1); res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; } default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_POWI (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((wi::to_wide (captures[1]) & 1) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 608, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWI, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((wi::to_wide (captures[1]) & 1) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 608, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWI, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGN: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 653 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; /* #line 653 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((wi::to_wide (captures[2]) & 1) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 654, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWI, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } } break; default:; } if (real_onep (op0)) { { /* #line 4856 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_182 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 4862 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 4862 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::to_wide (captures[1]) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4863, __FILE__, __LINE__); tree tem; tem = build_real (type, dconst1); res_op->set_value (tem); return true; } else { /* #line 4865 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::to_wide (captures[1]) == 1) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4866, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } else { /* #line 4868 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::to_wide (captures[1]) == -1) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4869, __FILE__, __LINE__); res_op->set_op (RDIV_EXPR, type, 2); res_op->ops[0] = build_real (type, dconst1); res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; } default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_POWIL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((wi::to_wide (captures[1]) & 1) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 608, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWIL, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 607 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((wi::to_wide (captures[1]) & 1) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 608, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWIL, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNL: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 653 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; /* #line 653 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if ((wi::to_wide (captures[2]) & 1) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 654, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_POWIL, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } } break; default:; } if (real_onep (op0)) { { /* #line 4856 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_182 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 4862 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 4862 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::to_wide (captures[1]) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4863, __FILE__, __LINE__); tree tem; tem = build_real (type, dconst1); res_op->set_value (tem); return true; } else { /* #line 4865 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::to_wide (captures[1]) == 1) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4866, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } else { /* #line 4868 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::to_wide (captures[1]) == -1) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4869, __FILE__, __LINE__); res_op->set_op (RDIV_EXPR, type, 2); res_op->ops[0] = build_real (type, dconst1); res_op->ops[1] = captures[0]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; } default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_HYPOTF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 613 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn hypots = CFN_BUILT_IN_HYPOTF; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 613, __FILE__, __LINE__); res_op->set_op (hypots, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 613 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn hypots = CFN_BUILT_IN_HYPOTF; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 613, __FILE__, __LINE__); res_op->set_op (hypots, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; const combined_fn hypots = CFN_BUILT_IN_HYPOTF; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 616, __FILE__, __LINE__); res_op->set_op (hypots, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; const combined_fn hypots = CFN_BUILT_IN_HYPOTF; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 616, __FILE__, __LINE__); res_op->set_op (hypots, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNF: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 661 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_7 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_HYPOTF, CFN_BUILT_IN_COPYSIGNF)) return true; } } break; default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNF: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); { /* #line 665 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o30, o31 }; if (gimple_simplify_136 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_HYPOTF, CFN_BUILT_IN_COPYSIGNF)) return true; } } break; default:; } } break; default:; } if (real_zerop (op1)) { { /* #line 4529 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_179 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_HYPOTF)) return true; } } if (real_zerop (op0)) { { /* #line 4529 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_179 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_HYPOTF)) return true; } } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_135 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_HYPOTF)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_HYPOT (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 613 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn hypots = CFN_BUILT_IN_HYPOT; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 613, __FILE__, __LINE__); res_op->set_op (hypots, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 613 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn hypots = CFN_BUILT_IN_HYPOT; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 613, __FILE__, __LINE__); res_op->set_op (hypots, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; const combined_fn hypots = CFN_BUILT_IN_HYPOT; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 616, __FILE__, __LINE__); res_op->set_op (hypots, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; const combined_fn hypots = CFN_BUILT_IN_HYPOT; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 616, __FILE__, __LINE__); res_op->set_op (hypots, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGN: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 661 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_7 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_HYPOT, CFN_BUILT_IN_COPYSIGN)) return true; } } break; default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGN: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); { /* #line 665 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o30, o31 }; if (gimple_simplify_136 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_HYPOT, CFN_BUILT_IN_COPYSIGN)) return true; } } break; default:; } } break; default:; } if (real_zerop (op1)) { { /* #line 4529 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_179 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_HYPOT)) return true; } } if (real_zerop (op0)) { { /* #line 4529 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_179 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_HYPOT)) return true; } } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_135 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_HYPOT)) return true; } } return false; } static bool gimple_simplify_CFN_BUILT_IN_HYPOTL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 613 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn hypots = CFN_BUILT_IN_HYPOTL; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 613, __FILE__, __LINE__); res_op->set_op (hypots, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 613 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn hypots = CFN_BUILT_IN_HYPOTL; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 613, __FILE__, __LINE__); res_op->set_op (hypots, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; const combined_fn hypots = CFN_BUILT_IN_HYPOTL; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 616, __FILE__, __LINE__); res_op->set_op (hypots, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; const combined_fn hypots = CFN_BUILT_IN_HYPOTL; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 616, __FILE__, __LINE__); res_op->set_op (hypots, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNL: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 661 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_7 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_HYPOTL, CFN_BUILT_IN_COPYSIGNL)) return true; } } break; default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_BUILT_IN_COPYSIGNL: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); { /* #line 665 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o30, o31 }; if (gimple_simplify_136 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_HYPOTL, CFN_BUILT_IN_COPYSIGNL)) return true; } } break; default:; } } break; default:; } if (real_zerop (op1)) { { /* #line 4529 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_179 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_HYPOTL)) return true; } } if (real_zerop (op0)) { { /* #line 4529 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_179 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_HYPOTL)) return true; } } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_135 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_HYPOTL)) return true; } } return false; } static bool gimple_simplify_CFN_HYPOT (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 613 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn hypots = CFN_HYPOT; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 613, __FILE__, __LINE__); res_op->set_op (hypots, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 613 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; const combined_fn hypots = CFN_HYPOT; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 613, __FILE__, __LINE__); res_op->set_op (hypots, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; const combined_fn hypots = CFN_HYPOT; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 616, __FILE__, __LINE__); res_op->set_op (hypots, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } case ABS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 616 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; const combined_fn hypots = CFN_HYPOT; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 616, __FILE__, __LINE__); res_op->set_op (hypots, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_COPYSIGN: if (gimple_call_num_args (def) == 2) { tree o20 = gimple_call_arg (def, 0); o20 = do_valueize (valueize, o20); tree o21 = gimple_call_arg (def, 1); o21 = do_valueize (valueize, o21); { /* #line 661 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_7 (res_op, seq, valueize, type, captures, CFN_HYPOT, CFN_COPYSIGN)) return true; } } break; default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_COPYSIGN: if (gimple_call_num_args (def) == 2) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); { /* #line 665 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o30, o31 }; if (gimple_simplify_136 (res_op, seq, valueize, type, captures, CFN_HYPOT, CFN_COPYSIGN)) return true; } } break; default:; } } break; default:; } if (real_zerop (op1)) { { /* #line 4529 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_179 (res_op, seq, valueize, type, captures, CFN_HYPOT)) return true; } } if (real_zerop (op0)) { { /* #line 4529 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_179 (res_op, seq, valueize, type, captures, CFN_HYPOT)) return true; } } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 4569 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_135 (res_op, seq, valueize, type, captures, CFN_HYPOT)) return true; } } return false; } static bool gimple_simplify_LSHIFT_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case RSHIFT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 2344 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 2344 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::ltu_p (wi::to_wide (captures[1]), element_precision (type))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2345, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[2], res; ops1[0] = build_minus_one_cst (type); ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } break; } default:; } } break; default:; } if (integer_onep (op0)) { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o30)) { case INTEGER_CST: { { /* #line 711 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op1, o30, o31 }; /* #line 711 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (type) && wi::eq_p (wi::to_wide (captures[2]), TYPE_PRECISION (type) - 1) && single_use (captures[1])) { /* #line 714 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_UNSIGNED (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 715, __FILE__, __LINE__); res_op->set_op (RSHIFT_EXPR, type, 2); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } res_op->ops[1] = captures[3]; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { { /* #line 716 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree utype = unsigned_type_for (type); gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 718, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); { tree ops1[2], res; { tree ops2[2], res; { tree ops3[1], res; ops3[0] = captures[0]; if (utype != TREE_TYPE (ops3[0]) && !useless_type_conversion_p (utype, TREE_TYPE (ops3[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, utype, ops3[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops3[0]; ops2[0] = res; } ops2[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), RSHIFT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } } break; } default:; } break; } default:; } } break; default:; } } if (integer_zerop (op1)) { { /* #line 2358 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_45 (res_op, seq, valueize, type, captures, LSHIFT_EXPR)) return true; } } if (integer_zerop (op0)) { { /* #line 2361 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_316 (res_op, seq, valueize, type, captures, LSHIFT_EXPR)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case CONSTRUCTOR: { { /* #line 2367 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_109 (res_op, seq, valueize, type, captures, LSHIFT_EXPR)) return true; } break; } default:; } } { { /* #line 2377 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_52 (res_op, seq, valueize, type, captures, LSHIFT_EXPR)) return true; } } break; case VECTOR_CST: { { /* #line 2367 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_302 (res_op, seq, valueize, type, captures, LSHIFT_EXPR)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LSHIFT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2398 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_95 (res_op, seq, valueize, type, captures, LSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2533 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, op1 }; if (gimple_simplify_239 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_XOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2533 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, op1 }; if (gimple_simplify_239 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, LSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_IOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2533 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, op1 }; if (gimple_simplify_239 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, LSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2533 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op0, o20, o21, op1 }; if (gimple_simplify_247 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_XOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2533 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op0, o20, o21, op1 }; if (gimple_simplify_247 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, LSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_IOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2533 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op0, o20, o21, op1 }; if (gimple_simplify_247 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, LSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_BIT_AND_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 733 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_249 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o30 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o30, 0) && types_match (o50, o30))) { { /* #line 733 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o30 }; if (gimple_simplify_249 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 733 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_249 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 733 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_249 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LSHIFT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (integer_onep (o40)) { if (integer_minus_onep (o31)) { { /* #line 738 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op1, o30, o41 }; /* #line 738 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_UNSIGNED (type)) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 739, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[2], res; ops2[0] = build_all_ones_cst (type); ops2[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LSHIFT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (integer_onep (o30)) { if (integer_minus_onep (o21)) { { /* #line 738 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, op0, o20, o31 }; /* #line 738 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_UNSIGNED (type)) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[1]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 739, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[1], res; { tree ops2[2], res; ops2[0] = build_all_ones_cst (type); ops2[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), LSHIFT_EXPR, TREE_TYPE (ops2[0]), ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } gimple_match_op tem_op (res_op->cond.any_else (), BIT_NOT_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } break; } case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 852 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, o21, op1 }; if (gimple_simplify_78 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_IOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 852 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, o21, op1 }; if (gimple_simplify_78 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_XOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 852 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, o21, op1 }; if (gimple_simplify_78 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); switch (TREE_CODE (o41)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o21, o40, o41, op1 }; if (gimple_simplify_321 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_IOR_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); switch (TREE_CODE (o41)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o21, o40, o41, op1 }; if (gimple_simplify_321 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_XOR_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); switch (TREE_CODE (o41)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o21, o40, o41, op1 }; if (gimple_simplify_321 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_197 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } break; } default:; } break; } case EQ_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if (integer_zerop (o21)) { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case EQ_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if (integer_zerop (o51)) { { /* #line 748 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_226 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } } if (integer_all_onesp (o21)) { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case EQ_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if (integer_all_onesp (o51)) { { /* #line 757 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, o50 }; if (gimple_simplify_91 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, EQ_EXPR)) return true; } } break; } default:; } } break; default:; } } break; } case BIT_IOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_XOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { if ((o61 == o21 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o21, 0) && types_match (o61, o21))) { { /* #line 804 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_187 (res_op, seq, valueize, type, captures)) return true; } } } if ((o60 == o21 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o21, 0) && types_match (o60, o21))) { if ((o61 == o20 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o20, 0) && types_match (o61, o20))) { { /* #line 804 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_187 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } case BIT_NOT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_XOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { if ((o61 == o31 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o31, 0) && types_match (o61, o31))) { { /* #line 804 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o31 }; if (gimple_simplify_187 (res_op, seq, valueize, type, captures)) return true; } } } if ((o60 == o31 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o31, 0) && types_match (o60, o31))) { if ((o61 == o30 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o30, 0) && types_match (o61, o30))) { { /* #line 804 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o31, o30 }; if (gimple_simplify_187 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { { /* #line 970 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o20, o31 }; if (gimple_simplify_234 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((op1 == o31 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o31, 0) && types_match (op1, o31))) { { /* #line 970 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o31, o20, o30 }; if (gimple_simplify_234 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } break; } default:; } } { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 836 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 836 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && wi::bit_and_not (get_nonzero_bits (captures[0]), wi::to_wide (captures[1])) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 838, __FILE__, __LINE__); res_op->set_op (BIT_XOR_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 852 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, o21, op1 }; if (gimple_simplify_78 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_IOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 852 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, o21, op1 }; if (gimple_simplify_78 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_XOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 852 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, o21, op1 }; if (gimple_simplify_78 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); switch (TREE_CODE (o41)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o21, o40, o41, op1 }; if (gimple_simplify_321 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_IOR_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); switch (TREE_CODE (o41)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o21, o40, o41, op1 }; if (gimple_simplify_321 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_XOR_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); switch (TREE_CODE (o41)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 863 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o21, o40, o41, op1 }; if (gimple_simplify_321 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 874 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, op1 }; if (gimple_simplify_197 (res_op, seq, valueize, type, captures, MINUS_EXPR)) return true; } break; } default:; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 886 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, op1 }; if (gimple_simplify_113 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_IOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 886 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, op1 }; if (gimple_simplify_113 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_XOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 886 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, op1 }; if (gimple_simplify_113 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } if (integer_zerop (op1)) { { /* #line 920 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 920, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; } } if (integer_all_onesp (op1)) { { /* #line 943 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 943, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 949 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_230 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 955 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 955 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && wi::bit_and_not (get_nonzero_bits (captures[0]), wi::to_wide (captures[1])) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 957, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } break; } default:; } break; } default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 970 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o30, o41 }; if (gimple_simplify_234 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((o41 == op0 && ! TREE_SIDE_EFFECTS (o41)) || (operand_equal_p (o41, op0, 0) && types_match (o41, op0))) { { /* #line 970 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o30, o40 }; if (gimple_simplify_234 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1003 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_201 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1003 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, o20, op1 }; if (gimple_simplify_201 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } } switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { if ((o61 == o21 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o21, 0) && types_match (o61, o21))) { { /* #line 1055 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_260 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } case BIT_XOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { switch (TREE_CODE (o51)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o51)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o20 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o20, 0) && types_match (o70, o20))) { { /* #line 1060 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_262 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } } switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1060 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_262 (res_op, seq, valueize, type, captures)) return true; } } } if ((o60 == o21 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o21, 0) && types_match (o60, o21))) { if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1060 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_262 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (o51)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o51)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o21 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o21, 0) && types_match (o70, o21))) { { /* #line 1060 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_262 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o61)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); if ((o80 == o21 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o21, 0) && types_match (o80, o21))) { { /* #line 1065 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o30, o21, op1 }; if (gimple_simplify_263 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } } switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o21 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o21, 0) && types_match (o70, o21))) { if ((o61 == o30 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o30, 0) && types_match (o61, o30))) { { /* #line 1065 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o30, o21, op1 }; if (gimple_simplify_263 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o40 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o40, 0) && types_match (o60, o40))) { switch (TREE_CODE (o61)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o61)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); if ((o80 == o20 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o20, 0) && types_match (o80, o20))) { { /* #line 1065 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o40, o20, op1 }; if (gimple_simplify_263 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } } switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); if ((o70 == o20 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o20, 0) && types_match (o70, o20))) { if ((o61 == o40 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o40, 0) && types_match (o61, o40))) { { /* #line 1065 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o40, o20, op1 }; if (gimple_simplify_263 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } case BIT_NOT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 1003 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o41, op0 }; if (gimple_simplify_250 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } } if ((o41 == o20 && ! TREE_SIDE_EFFECTS (o41)) || (operand_equal_p (o41, o20, 0) && types_match (o41, o20))) { { /* #line 1003 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o40, op0 }; if (gimple_simplify_250 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { if ((o61 == o31 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o31, 0) && types_match (o61, o31))) { { /* #line 1055 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o31 }; if (gimple_simplify_260 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 1078 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o50 }; if (gimple_simplify_324 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } break; } default:; } } break; default:; } break; } case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 1078 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_324 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } break; } default:; } } break; default:; } break; } case BIT_XOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o40 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o40, 0) && types_match (o60, o40))) { if ((o61 == o20 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o20, 0) && types_match (o61, o20))) { { /* #line 1060 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_262 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { if ((o61 == o21 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o21, 0) && types_match (o61, o21))) { { /* #line 1060 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o21 }; if (gimple_simplify_262 (res_op, seq, valueize, type, captures)) return true; } } } if ((o60 == o21 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o21, 0) && types_match (o60, o21))) { if ((o61 == o30 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o30, 0) && types_match (o61, o30))) { { /* #line 1060 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o21 }; if (gimple_simplify_262 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { if ((o61 == o40 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o40, 0) && types_match (o61, o40))) { { /* #line 1060 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_262 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 1119 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o21 }; if (gimple_simplify_287 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_XOR_EXPR)) return true; } } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 1119 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o21, o20 }; if (gimple_simplify_287 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_XOR_EXPR)) return true; } } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); { /* #line 1078 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o60 }; if (gimple_simplify_324 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } break; } default:; } } break; default:; } break; } case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 1078 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o50 }; if (gimple_simplify_324 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_XOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 1119 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o30, op0 }; if (gimple_simplify_287 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_XOR_EXPR)) return true; } } if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1119 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op1, o31, op0 }; if (gimple_simplify_287 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_XOR_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if (tree_swap_operands_p (o70, o71)) std::swap (o70, o71); if ((o70 == o30 && ! TREE_SIDE_EFFECTS (o70)) || operand_equal_p (o70, o30, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o31, o71, o30 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } } if ((o71 == o30 && ! TREE_SIDE_EFFECTS (o71)) || operand_equal_p (o71, o30, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o31, o70, o30 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } } if ((o70 == o31 && ! TREE_SIDE_EFFECTS (o70)) || operand_equal_p (o70, o31, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o31, o30, o71, o31 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } } if ((o71 == o31 && ! TREE_SIDE_EFFECTS (o71)) || operand_equal_p (o71, o31, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o31, o30, o70, o31 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o31 && ! TREE_SIDE_EFFECTS (o60)) || operand_equal_p (o60, o31, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o30, o31, o31 }; if (gimple_simplify_301 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || operand_equal_p (o60, o30, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o31, o30, o30 }; if (gimple_simplify_301 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } break; } default:; } } break; default:; } if ((op1 == o31 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o31, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o30, o31, o31 }; if (gimple_simplify_301 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o30, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o31, o30, o30 }; if (gimple_simplify_301 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || operand_equal_p (o51, o20, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o50, o51, o20 }; if (gimple_simplify_116 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o20, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o51, o50, o20 }; if (gimple_simplify_116 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); if ((o41 == o20 && ! TREE_SIDE_EFFECTS (o41)) || operand_equal_p (o41, o20, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o40, o41, o20 }; if (gimple_simplify_116 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || operand_equal_p (o40, o20, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o41, o40, o20 }; if (gimple_simplify_116 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case BIT_IOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o20, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o51, o20 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || operand_equal_p (o51, o20, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o50, o20 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o21, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o21, o20, o51, o21 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || operand_equal_p (o51, o21, 0)) { { /* #line 1131 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o21, o20, o50, o21 }; if (gimple_simplify_237 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); if ((o41 == op0 && ! TREE_SIDE_EFFECTS (o41)) || operand_equal_p (o41, op0, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o40, o41, op0 }; if (gimple_simplify_116 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || operand_equal_p (o40, op0, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o41, o40, op0 }; if (gimple_simplify_116 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o21, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o21 }; if (gimple_simplify_301 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || operand_equal_p (o50, o20, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o21, o20, o20 }; if (gimple_simplify_301 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } switch (TREE_CODE (o50)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o50)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o20 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o20, 0) && types_match (o60, o20))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op0, o20, o21, op1, o50, o61 }; if (gimple_simplify_51 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((o61 == o20 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o20, 0) && types_match (o61, o20))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op0, o20, o21, op1, o50, o60 }; if (gimple_simplify_51 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((o60 == o21 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o21, 0) && types_match (o60, o21))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op0, o21, o20, op1, o50, o61 }; if (gimple_simplify_51 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((o61 == o21 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o21, 0) && types_match (o61, o21))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op0, o21, o20, op1, o50, o60 }; if (gimple_simplify_51 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o21, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, o21, o21 }; if (gimple_simplify_301 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || operand_equal_p (op1, o20, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o21, o20, o20 }; if (gimple_simplify_301 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op0, o20, o21, op1, op1, o51 }; if (gimple_simplify_188 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op0, o20, o21, op1, op1, o50 }; if (gimple_simplify_188 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op0, o21, o20, op1, op1, o51 }; if (gimple_simplify_188 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op0, o21, o20, op1, op1, o50 }; if (gimple_simplify_188 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || operand_equal_p (o31, op0, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o30, o31, op0 }; if (gimple_simplify_116 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || operand_equal_p (o30, op0, 0)) { { /* #line 1141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op1, o31, o30, op0 }; if (gimple_simplify_116 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); switch (TREE_CODE (o60)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o60)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if (tree_swap_operands_p (o70, o71)) std::swap (o70, o71); if ((o70 == o30 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o30, 0) && types_match (o70, o30))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, op1, o60, o71 }; if (gimple_simplify_3 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((o71 == o30 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o30, 0) && types_match (o71, o30))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, op1, o60, o70 }; if (gimple_simplify_3 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((o70 == o31 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o31, 0) && types_match (o70, o31))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o31, o30, op1, o60, o71 }; if (gimple_simplify_3 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((o71 == o31 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o31, 0) && types_match (o71, o31))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o31, o30, op1, o60, o70 }; if (gimple_simplify_3 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, op1, op1, o61 }; if (gimple_simplify_132 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((o61 == o30 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o30, 0) && types_match (o61, o30))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, op1, op1, o60 }; if (gimple_simplify_132 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((o60 == o31 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o31, 0) && types_match (o60, o31))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o31, o30, op1, op1, o61 }; if (gimple_simplify_132 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } if ((o61 == o31 && ! TREE_SIDE_EFFECTS (o61)) || (operand_equal_p (o61, o31, 0) && types_match (o61, o31))) { { /* #line 1151 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o31, o30, op1, op1, o60 }; if (gimple_simplify_132 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 1262 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_320 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } break; } default:; } } break; default:; } { /* #line 1262 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_320 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } break; } case BIT_IOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 1289 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_211 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } } if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 1289 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_211 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { { /* #line 1294 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, o21 }; if (gimple_simplify_5 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); if ((op1 == o40 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o40, 0) && types_match (op1, o40))) { { /* #line 1294 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o40, o20 }; if (gimple_simplify_5 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (o21)) { if (CONSTANT_CLASS_P (op1)) { { /* #line 1299 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 1299, __FILE__, __LINE__); res_op->set_op (BIT_IOR_EXPR, type, 2); { tree ops1[2], res; ops1[0] = captures[0]; ops1[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[2]; gimple_match_op tem_op (res_op->cond.any_else (), BIT_AND_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_IOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1289 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o31 }; if (gimple_simplify_211 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } } if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 1289 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; if (gimple_simplify_211 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } } switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 1294 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o31 }; if (gimple_simplify_5 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (o31)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o31)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == op0 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, op0, 0) && types_match (o50, op0))) { { /* #line 1294 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, o30 }; if (gimple_simplify_5 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, BIT_IOR_EXPR)) return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if (CONSTANT_CLASS_P (o21)) { if (CONSTANT_CLASS_P (op1)) { { /* #line 1305 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_212 (res_op, seq, valueize, type, captures, BIT_AND_EXPR)) return true; } } } break; } default:; } } break; default:; } { tree op1_pops[1]; if (gimple_logical_inverted_value (op1, op1_pops, valueize)) { tree o30 = op1_pops[0]; if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 1349 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_128 (res_op, seq, valueize, type, captures)) return true; } } } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 1802 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_289 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LSHIFT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2446 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o30, o40, o31, op1 }; if (gimple_simplify_99 (res_op, seq, valueize, type, captures, LSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2446 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o30, o30, o31, op1 }; if (gimple_simplify_288 (res_op, seq, valueize, type, captures, LSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case RSHIFT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2446 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o30, o40, o31, op1 }; if (gimple_simplify_99 (res_op, seq, valueize, type, captures, RSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2446 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o30, o30, o31, op1 }; if (gimple_simplify_288 (res_op, seq, valueize, type, captures, RSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } { tree op0_pops[1]; if (gimple_logical_inverted_value (op0, op0_pops, valueize)) { tree o20 = op0_pops[0]; if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 1349 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_128 (res_op, seq, valueize, type, captures)) return true; } } } } switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 1802 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_289 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LSHIFT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2446 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op0, o20, o30, o21, op1 }; if (gimple_simplify_110 (res_op, seq, valueize, type, captures, LSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2446 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op0, o20, o20, o21, op1 }; if (gimple_simplify_269 (res_op, seq, valueize, type, captures, LSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case RSHIFT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2446 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op0, o20, o30, o21, op1 }; if (gimple_simplify_110 (res_op, seq, valueize, type, captures, RSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2446 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op0, o20, o20, o21, op1 }; if (gimple_simplify_269 (res_op, seq, valueize, type, captures, RSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case ORDERED_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if ((o21 == o20 && ! TREE_SIDE_EFFECTS (o21)) || (operand_equal_p (o21, o20, 0) && types_match (o21, o20))) { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case ORDERED_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o51 == o50 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o50, 0) && types_match (o51, o50))) { { /* #line 3664 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o50 }; /* #line 3664 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (captures[0], captures[1])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3665, __FILE__, __LINE__); res_op->set_op (ORDERED_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 3671 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op1, o51 }; if (gimple_simplify_67 (res_op, seq, valueize, type, captures)) return true; } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 3671 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op1, o50 }; if (gimple_simplify_67 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case ORDERED_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 3671 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op0, o21 }; if (gimple_simplify_221 (res_op, seq, valueize, type, captures)) return true; } } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3671 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o21, op0, o20 }; if (gimple_simplify_221 (res_op, seq, valueize, type, captures)) return true; } } } break; } default:; } } break; default:; } break; } case LT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case GE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_70 (res_op, seq, valueize, type, captures, LT_EXPR, GE_EXPR)) return true; } } } break; } case GT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_70 (res_op, seq, valueize, type, captures, LT_EXPR, GT_EXPR)) return true; } } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LT_EXPR, MIN_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o20, op1, o51 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, GT_EXPR, MAX_EXPR)) return true; } } break; } case EQ_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_70 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR)) return true; } } } break; } case LT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o51 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LT_EXPR, MIN_EXPR)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o20, op1, o50 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, GT_EXPR, MAX_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case LE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case GT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_70 (res_op, seq, valueize, type, captures, LE_EXPR, GT_EXPR)) return true; } } } break; } case LE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o51 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LE_EXPR, MIN_EXPR)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o20, op1, o50 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, GE_EXPR, MAX_EXPR)) return true; } } break; } case GE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LE_EXPR, MIN_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o20, op1, o51 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, GE_EXPR, MAX_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case NE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case EQ_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_70 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR)) return true; } } } break; } default:; } } break; default:; } break; } case EQ_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case GT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_70 (res_op, seq, valueize, type, captures, EQ_EXPR, GT_EXPR)) return true; } } } break; } case LT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_70 (res_op, seq, valueize, type, captures, LT_EXPR, EQ_EXPR)) return true; } } } break; } case NE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_70 (res_op, seq, valueize, type, captures, NE_EXPR, EQ_EXPR)) return true; } } } break; } default:; } } break; default:; } break; } case GE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_70 (res_op, seq, valueize, type, captures, LT_EXPR, GE_EXPR)) return true; } } } break; } case GE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o51 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, GE_EXPR, MAX_EXPR)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o20, op1, o50 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LE_EXPR, MIN_EXPR)) return true; } } break; } case LE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, GE_EXPR, MAX_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o20, op1, o51 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LE_EXPR, MIN_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case GT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_70 (res_op, seq, valueize, type, captures, LT_EXPR, GT_EXPR)) return true; } } } if ((o51 == o20 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o20, 0) && types_match (o51, o20))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o50 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, GT_EXPR, MAX_EXPR)) return true; } } if ((o50 == o21 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o21, 0) && types_match (o50, o21))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o20, op1, o51 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LT_EXPR, MIN_EXPR)) return true; } } break; } case LE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_70 (res_op, seq, valueize, type, captures, LE_EXPR, GT_EXPR)) return true; } } } break; } case EQ_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 3687 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_70 (res_op, seq, valueize, type, captures, EQ_EXPR, GT_EXPR)) return true; } } } break; } case GT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o21, op1, o51 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, GT_EXPR, MAX_EXPR)) return true; } } if ((o51 == o21 && ! TREE_SIDE_EFFECTS (o51)) || (operand_equal_p (o51, o21, 0) && types_match (o51, o21))) { { /* #line 4950 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o21, o20, op1, o50 }; if (gimple_simplify_142 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, LT_EXPR, MIN_EXPR)) return true; } } break; } default:; } } break; default:; } break; } case MINUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 4917 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o30, o21, o50, op1 }; if (gimple_simplify_125 (res_op, seq, valueize, type, captures, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 4917 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o20, o30, o21, o50, op1 }; if (gimple_simplify_125 (res_op, seq, valueize, type, captures, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_MIN_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MAX_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 2183 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_258 (res_op, seq, valueize, type, captures)) return true; } } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 2183 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_258 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MAX_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 2183 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, op0 }; if (gimple_simplify_258 (res_op, seq, valueize, type, captures)) return true; } } if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 2183 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o31, op0 }; if (gimple_simplify_258 (res_op, seq, valueize, type, captures)) return true; } } break; } case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 2198 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_231 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 2198 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_231 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } { /* #line 2205 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 2205 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (type) && TYPE_MIN_VALUE (type) && operand_equal_p (captures[1], TYPE_MIN_VALUE (type), OEP_ONLY_CONST)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2208, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; } else { /* #line 2209 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (type) && TYPE_MAX_VALUE (type) && operand_equal_p (captures[1], TYPE_MAX_VALUE (type), OEP_ONLY_CONST)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2212, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { switch (TREE_CODE (o31)) { case INTEGER_CST: { { /* #line 2238 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o31 }; /* #line 2238 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))) { /* #line 2239 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_int_cst_sgn (captures[2]) > 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2240, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2241, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; } } } break; } default:; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 2238 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op0, o21 }; /* #line 2238 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))) { /* #line 2239 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_int_cst_sgn (captures[2]) > 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2240, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2241, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; } } } } break; } default:; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), MAX_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } case BIT_NOT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2289 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; if (gimple_simplify_19 (res_op, seq, valueize, type, captures, MIN_EXPR, MAX_EXPR)) return true; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_MAX_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MIN_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 2187 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; if (gimple_simplify_12 (res_op, seq, valueize, type, captures)) return true; } } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 2187 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o21, o20 }; if (gimple_simplify_12 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case MIN_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o31 == op0 && ! TREE_SIDE_EFFECTS (o31)) || (operand_equal_p (o31, op0, 0) && types_match (o31, op0))) { { /* #line 2187 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o30, op0 }; if (gimple_simplify_12 (res_op, seq, valueize, type, captures)) return true; } } if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 2187 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o31, op0 }; if (gimple_simplify_12 (res_op, seq, valueize, type, captures)) return true; } } break; } case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 2191 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_96 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 2191 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; if (gimple_simplify_96 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; default:; } { /* #line 2216 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 2216 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (type) && TYPE_MAX_VALUE (type) && operand_equal_p (captures[1], TYPE_MAX_VALUE (type), OEP_ONLY_CONST)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2219, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; } else { /* #line 2220 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (type) && TYPE_MIN_VALUE (type) && operand_equal_p (captures[1], TYPE_MIN_VALUE (type), OEP_ONLY_CONST)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2223, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { switch (TREE_CODE (o31)) { case INTEGER_CST: { { /* #line 2229 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o31 }; /* #line 2229 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))) { /* #line 2230 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_int_cst_sgn (captures[2]) > 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2231, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2232, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; } default:; } } break; } default:; } } break; default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { { /* #line 2229 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op0, o21 }; /* #line 2229 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[0]))) { /* #line 2230 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_int_cst_sgn (captures[2]) > 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2231, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2232, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } } break; } default:; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), MIN_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } case BIT_NOT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_NOT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2289 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; if (gimple_simplify_19 (res_op, seq, valueize, type, captures, MAX_EXPR, MIN_EXPR)) return true; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMINF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_196 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMAXF, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMIN (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMIN)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMIN)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_196 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMIN)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMAX, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMINL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINL)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINL)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_196 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINL)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMAXL, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMINF16 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF16)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF16)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_196 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF16)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMAXF16, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMINF32 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF32)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF32)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_196 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF32)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMAXF32, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMINF64 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF64)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF64)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_196 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF64)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMAXF64, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMINF128 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF128)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF128)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_196 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF128)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMAXF128, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMINF32X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF32X)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF32X)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_196 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF32X)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMAXF32X, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMINF64X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF64X)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF64X)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_196 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF64X)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMAXF64X, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMINF128X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF128X)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF128X)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_196 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMINF128X)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMAXF128X, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_FMIN (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_FMIN)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_FMIN)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_196 (res_op, seq, valueize, type, captures, CFN_FMIN)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_FMAX, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMAXF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_299 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMINF, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMAX (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAX)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAX)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_299 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAX)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMIN, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMAXL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXL)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXL)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_299 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXL)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMINL, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMAXF16 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF16)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF16)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_299 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF16)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMINF16, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMAXF32 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF32)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF32)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_299 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF32)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMINF32, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMAXF64 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF64)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF64)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_299 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF64)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMINF64, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMAXF128 (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF128)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF128)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_299 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF128)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMINF128, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMAXF32X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF32X)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF32X)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_299 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF32X)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMINF32X, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMAXF64X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF64X)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF64X)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_299 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF64X)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMINF64X, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMAXF128X (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF128X)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF128X)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_299 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAXF128X)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_BUILT_IN_FMINF128X, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_FMAX (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 2179 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_161 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_FMAX)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 2259 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op1, op0 }; if (gimple_simplify_165 (res_op, seq, valueize, type, captures, CFN_FMAX)) return true; } break; } default:; } { /* #line 2267 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_299 (res_op, seq, valueize, type, captures, CFN_FMAX)) return true; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o20, op1, o40 }; /* #line 2279 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (FLOAT_TYPE_P (TREE_TYPE (captures[1])) || (ANY_INTEGRAL_TYPE_P (TREE_TYPE (captures[1])) && TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[1])))) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[2]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2282, __FILE__, __LINE__); res_op->set_op (NEGATE_EXPR, type, 1); { tree ops1[2], res; ops1[0] = captures[1]; ops1[1] = captures[3]; gimple_match_op tem_op (res_op->cond.any_else (), CFN_FMIN, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_LROTATE_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (integer_all_onesp (op0)) { { /* #line 2332 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_46 (res_op, seq, valueize, type, captures, LROTATE_EXPR)) return true; } } if (integer_zerop (op1)) { { /* #line 2358 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_45 (res_op, seq, valueize, type, captures, LROTATE_EXPR)) return true; } } if (integer_zerop (op0)) { { /* #line 2361 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_316 (res_op, seq, valueize, type, captures, LROTATE_EXPR)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case CONSTRUCTOR: { { /* #line 2367 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_109 (res_op, seq, valueize, type, captures, LROTATE_EXPR)) return true; } break; } default:; } } break; case VECTOR_CST: { { /* #line 2367 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_302 (res_op, seq, valueize, type, captures, LROTATE_EXPR)) return true; } break; } case INTEGER_CST: { { /* #line 2390 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2390, __FILE__, __LINE__); res_op->set_op (RROTATE_EXPR, type, 2); res_op->ops[0] = captures[0]; res_op->ops[1] = const_binop (MINUS_EXPR, TREE_TYPE (captures[1]), build_int_cst (TREE_TYPE (captures[1]), element_precision (type)), captures[1]); gimple_resimplify2 (lseq, res_op, valueize); return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LROTATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2398 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_95 (res_op, seq, valueize, type, captures, LROTATE_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_RROTATE_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (integer_all_onesp (op0)) { { /* #line 2332 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_46 (res_op, seq, valueize, type, captures, RROTATE_EXPR)) return true; } } if (integer_zerop (op1)) { { /* #line 2358 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_45 (res_op, seq, valueize, type, captures, RROTATE_EXPR)) return true; } } if (integer_zerop (op0)) { { /* #line 2361 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_316 (res_op, seq, valueize, type, captures, RROTATE_EXPR)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case CONSTRUCTOR: { { /* #line 2367 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_109 (res_op, seq, valueize, type, captures, RROTATE_EXPR)) return true; } break; } default:; } } break; case VECTOR_CST: { { /* #line 2367 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_302 (res_op, seq, valueize, type, captures, RROTATE_EXPR)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case RROTATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2398 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_95 (res_op, seq, valueize, type, captures, RROTATE_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_RSHIFT_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LSHIFT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { if ((op1 == o21 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o21, 0) && types_match (op1, o21))) { { /* #line 2351 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o21 }; /* #line 2351 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_UNSIGNED (type) && (wi::ltu_p (wi::to_wide (captures[1]), element_precision (type)))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2353, __FILE__, __LINE__); res_op->set_op (BIT_AND_EXPR, type, 2); res_op->ops[0] = captures[0]; { tree ops1[2], res; ops1[0] = build_minus_one_cst (type); ops1[1] = captures[1]; gimple_match_op tem_op (res_op->cond.any_else (), RSHIFT_EXPR, TREE_TYPE (ops1[0]), ops1[0], ops1[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } break; } default:; } break; } default:; } } break; default:; } if (integer_all_onesp (op0)) { { /* #line 2337 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 2337 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!TYPE_UNSIGNED (type) && tree_expr_nonnegative_p (captures[1])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2339, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } if (integer_zerop (op1)) { { /* #line 2358 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_45 (res_op, seq, valueize, type, captures, RSHIFT_EXPR)) return true; } } if (integer_zerop (op0)) { { /* #line 2361 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_316 (res_op, seq, valueize, type, captures, RSHIFT_EXPR)) return true; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case CONSTRUCTOR: { { /* #line 2367 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_109 (res_op, seq, valueize, type, captures, RSHIFT_EXPR)) return true; } break; } default:; } } { { /* #line 2377 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_52 (res_op, seq, valueize, type, captures, RSHIFT_EXPR)) return true; } } break; case VECTOR_CST: { { /* #line 2367 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_302 (res_op, seq, valueize, type, captures, RSHIFT_EXPR)) return true; } break; } default:; } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case RSHIFT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2398 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op1 }; if (gimple_simplify_95 (res_op, seq, valueize, type, captures, RSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } CASE_CONVERT: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2533 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, op1 }; if (gimple_simplify_239 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, RSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_XOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2533 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, op1 }; if (gimple_simplify_239 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, RSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_IOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2533 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, op1 }; if (gimple_simplify_239 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, RSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } break; } case BIT_AND_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2533 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op0, o20, o21, op1 }; if (gimple_simplify_247 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, RSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_XOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2533 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op0, o20, o21, op1 }; if (gimple_simplify_247 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, RSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } case BIT_IOR_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case INTEGER_CST: { { /* #line 2533 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op0, o20, o21, op1 }; if (gimple_simplify_247 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, RSHIFT_EXPR)) return true; } break; } default:; } break; } default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_COMPLEX_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case REALPART_EXPR: { tree o20 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o20) == SSA_NAME || is_gimple_min_invariant (o20))) { o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case IMAGPART_EXPR: { tree o40 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o40) == SSA_NAME || is_gimple_min_invariant (o40))) { o40 = do_valueize (valueize, o40); if ((o40 == o20 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, o20, 0) && types_match (o40, o20))) { { /* #line 2813 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { o20 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2813, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_UNLE_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 3239 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_256 (res_op, seq, valueize, type, captures, UNLE_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3531 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_121 (res_op, seq, valueize, type, captures, UNLE_EXPR, LE_EXPR)) return true; } break; } default:; } } break; default:; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3724 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_156 (res_op, seq, valueize, type, captures, UNLE_EXPR, UNGE_EXPR)) return true; } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (op1)) { { /* #line 3730 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_102 (res_op, seq, valueize, type, captures, UNLE_EXPR, UNGE_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 4148 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_47 (res_op, seq, valueize, type, captures, UNLE_EXPR)) return true; } break; } default:; } return false; } static bool gimple_simplify_UNGE_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 3239 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_256 (res_op, seq, valueize, type, captures, UNGE_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3531 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_121 (res_op, seq, valueize, type, captures, UNGE_EXPR, GE_EXPR)) return true; } break; } default:; } } break; default:; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3724 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_156 (res_op, seq, valueize, type, captures, UNGE_EXPR, UNLE_EXPR)) return true; } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (op1)) { { /* #line 3730 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_102 (res_op, seq, valueize, type, captures, UNGE_EXPR, UNLE_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 4148 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_47 (res_op, seq, valueize, type, captures, UNGE_EXPR)) return true; } break; } default:; } return false; } static bool gimple_simplify_UNEQ_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 3239 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_256 (res_op, seq, valueize, type, captures, UNEQ_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3531 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_121 (res_op, seq, valueize, type, captures, UNEQ_EXPR, EQ_EXPR)) return true; } break; } default:; } } break; default:; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3724 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_156 (res_op, seq, valueize, type, captures, UNEQ_EXPR, UNEQ_EXPR)) return true; } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (op1)) { { /* #line 3730 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_102 (res_op, seq, valueize, type, captures, UNEQ_EXPR, UNEQ_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 4148 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_47 (res_op, seq, valueize, type, captures, UNEQ_EXPR)) return true; } break; } default:; } return false; } static bool gimple_simplify_UNLT_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 3243 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_104 (res_op, seq, valueize, type, captures, UNLT_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3531 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_121 (res_op, seq, valueize, type, captures, UNLT_EXPR, LT_EXPR)) return true; } break; } default:; } } break; default:; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3724 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_156 (res_op, seq, valueize, type, captures, UNLT_EXPR, UNGT_EXPR)) return true; } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (op1)) { { /* #line 3730 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_102 (res_op, seq, valueize, type, captures, UNLT_EXPR, UNGT_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 4148 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_47 (res_op, seq, valueize, type, captures, UNLT_EXPR)) return true; } break; } default:; } return false; } static bool gimple_simplify_UNGT_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 3243 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; if (gimple_simplify_104 (res_op, seq, valueize, type, captures, UNGT_EXPR)) return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3531 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_121 (res_op, seq, valueize, type, captures, UNGT_EXPR, GT_EXPR)) return true; } break; } default:; } } break; default:; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3724 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_156 (res_op, seq, valueize, type, captures, UNGT_EXPR, UNLT_EXPR)) return true; } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (op1)) { { /* #line 3730 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_102 (res_op, seq, valueize, type, captures, UNGT_EXPR, UNLT_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 4148 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_47 (res_op, seq, valueize, type, captures, UNGT_EXPR)) return true; } break; } default:; } return false; } static bool gimple_simplify_LTGT_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if ((op1 == op0 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, op0, 0) && types_match (op1, op0))) { { /* #line 3246 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[1] ATTRIBUTE_UNUSED = { op0 }; /* #line 3246 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!flag_trapping_math) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3247, __FILE__, __LINE__); tree tem; tem = constant_boolean_node (false, type); res_op->set_value (tem); return true; } } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3531 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_121 (res_op, seq, valueize, type, captures, LTGT_EXPR, NE_EXPR)) return true; } break; } default:; } } break; default:; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3724 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_156 (res_op, seq, valueize, type, captures, LTGT_EXPR, LTGT_EXPR)) return true; } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (op1)) { { /* #line 3730 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_102 (res_op, seq, valueize, type, captures, LTGT_EXPR, LTGT_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 4148 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_47 (res_op, seq, valueize, type, captures, LTGT_EXPR)) return true; } break; } default:; } return false; } static bool gimple_simplify_UNORDERED_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3531 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_121 (res_op, seq, valueize, type, captures, UNORDERED_EXPR, UNORDERED_EXPR)) return true; } break; } default:; } } break; default:; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3724 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_156 (res_op, seq, valueize, type, captures, UNORDERED_EXPR, UNORDERED_EXPR)) return true; } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (op1)) { { /* #line 3730 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_102 (res_op, seq, valueize, type, captures, UNORDERED_EXPR, UNORDERED_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 4148 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_47 (res_op, seq, valueize, type, captures, UNORDERED_EXPR)) return true; } break; } default:; } return false; } static bool gimple_simplify_ORDERED_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case FLOAT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3531 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, o20, o40 }; if (gimple_simplify_121 (res_op, seq, valueize, type, captures, ORDERED_EXPR, ORDERED_EXPR)) return true; } break; } default:; } } break; default:; } break; } case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 3724 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, o40 }; if (gimple_simplify_156 (res_op, seq, valueize, type, captures, ORDERED_EXPR, ORDERED_EXPR)) return true; } break; } default:; } } break; default:; } if (CONSTANT_CLASS_P (op1)) { { /* #line 3730 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_102 (res_op, seq, valueize, type, captures, ORDERED_EXPR, ORDERED_EXPR)) return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case REAL_CST: { { /* #line 4148 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_47 (res_op, seq, valueize, type, captures, ORDERED_EXPR)) return true; } break; } default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_LDEXPF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (real_zerop (op0)) { { /* #line 4550 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_34 (res_op, seq, valueize, type, captures)) return true; } } if (integer_zerop (op1)) { { /* #line 4554 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_204 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 4558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 4558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!real_isfinite (TREE_REAL_CST_PTR (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4559, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } break; } default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_LDEXP (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (real_zerop (op0)) { { /* #line 4550 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_34 (res_op, seq, valueize, type, captures)) return true; } } if (integer_zerop (op1)) { { /* #line 4554 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_204 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 4558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 4558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!real_isfinite (TREE_REAL_CST_PTR (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4559, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } break; } default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_LDEXPL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (real_zerop (op0)) { { /* #line 4550 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_34 (res_op, seq, valueize, type, captures)) return true; } } if (integer_zerop (op1)) { { /* #line 4554 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_204 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 4558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 4558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!real_isfinite (TREE_REAL_CST_PTR (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4559, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } break; } default:; } return false; } static bool gimple_simplify_CFN_LDEXP (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (real_zerop (op0)) { { /* #line 4550 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_34 (res_op, seq, valueize, type, captures)) return true; } } if (integer_zerop (op1)) { { /* #line 4554 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_204 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 4558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 4558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!real_isfinite (TREE_REAL_CST_PTR (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4559, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } break; } default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_SCALBNF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (real_zerop (op0)) { { /* #line 4550 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_34 (res_op, seq, valueize, type, captures)) return true; } } if (integer_zerop (op1)) { { /* #line 4554 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_204 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 4558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 4558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!real_isfinite (TREE_REAL_CST_PTR (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4559, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } break; } default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_SCALBN (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (real_zerop (op0)) { { /* #line 4550 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_34 (res_op, seq, valueize, type, captures)) return true; } } if (integer_zerop (op1)) { { /* #line 4554 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_204 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 4558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 4558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!real_isfinite (TREE_REAL_CST_PTR (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4559, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } break; } default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_SCALBNL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (real_zerop (op0)) { { /* #line 4550 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_34 (res_op, seq, valueize, type, captures)) return true; } } if (integer_zerop (op1)) { { /* #line 4554 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_204 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 4558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 4558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!real_isfinite (TREE_REAL_CST_PTR (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4559, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } break; } default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_SCALBLNF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (real_zerop (op0)) { { /* #line 4550 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_34 (res_op, seq, valueize, type, captures)) return true; } } if (integer_zerop (op1)) { { /* #line 4554 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_204 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 4558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 4558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!real_isfinite (TREE_REAL_CST_PTR (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4559, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } break; } default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_SCALBLN (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (real_zerop (op0)) { { /* #line 4550 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_34 (res_op, seq, valueize, type, captures)) return true; } } if (integer_zerop (op1)) { { /* #line 4554 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_204 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 4558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 4558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!real_isfinite (TREE_REAL_CST_PTR (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4559, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } break; } default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_SCALBLNL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { if (real_zerop (op0)) { { /* #line 4550 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_34 (res_op, seq, valueize, type, captures)) return true; } } if (integer_zerop (op1)) { { /* #line 4554 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; if (gimple_simplify_204 (res_op, seq, valueize, type, captures)) return true; } } switch (TREE_CODE (op0)) { case REAL_CST: { { /* #line 4558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 4558 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!real_isfinite (TREE_REAL_CST_PTR (captures[0]))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 4559, __FILE__, __LINE__); tree tem; tem = captures[0]; res_op->set_value (tem); return true; } } break; } default:; } return false; } static bool gimple_simplify_TRUTH_ORIF_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LE_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); switch (TREE_CODE (o70)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o70)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); tree o81 = gimple_assign_rhs2 (def); o81 = do_valueize (valueize, o81); if ((o80 == o21 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o21, 0) && types_match (o80, o21))) { if ((o81 == o31 && ! TREE_SIDE_EFFECTS (o81)) || (operand_equal_p (o81, o31, 0) && types_match (o81, o31))) { if ((o71 == o30 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o30, 0) && types_match (o71, o30))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, o21, op1, o70 }; const enum tree_code cmp = LE_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } break; } default:; } } break; default:; } break; } case GE_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if ((o70 == o30 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o30, 0) && types_match (o70, o30))) { switch (TREE_CODE (o71)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o71)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o90 = gimple_assign_rhs1 (def); o90 = do_valueize (valueize, o90); tree o91 = gimple_assign_rhs2 (def); o91 = do_valueize (valueize, o91); if ((o90 == o21 && ! TREE_SIDE_EFFECTS (o90)) || (operand_equal_p (o90, o21, 0) && types_match (o90, o21))) { if ((o91 == o31 && ! TREE_SIDE_EFFECTS (o91)) || (operand_equal_p (o91, o31, 0) && types_match (o91, o31))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, o21, op1, o71 }; const enum tree_code cmp = LE_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } break; } case LT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); switch (TREE_CODE (o70)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o70)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); tree o81 = gimple_assign_rhs2 (def); o81 = do_valueize (valueize, o81); if ((o80 == o21 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o21, 0) && types_match (o80, o21))) { if ((o81 == o31 && ! TREE_SIDE_EFFECTS (o81)) || (operand_equal_p (o81, o31, 0) && types_match (o81, o31))) { if ((o71 == o30 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o30, 0) && types_match (o71, o30))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, o21, op1, o70 }; const enum tree_code cmp = LT_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } break; } default:; } } break; default:; } break; } case GT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if ((o70 == o30 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o30, 0) && types_match (o70, o30))) { switch (TREE_CODE (o71)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o71)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o90 = gimple_assign_rhs1 (def); o90 = do_valueize (valueize, o90); tree o91 = gimple_assign_rhs2 (def); o91 = do_valueize (valueize, o91); if ((o90 == o21 && ! TREE_SIDE_EFFECTS (o90)) || (operand_equal_p (o90, o21, 0) && types_match (o90, o21))) { if ((o91 == o31 && ! TREE_SIDE_EFFECTS (o91)) || (operand_equal_p (o91, o31, 0) && types_match (o91, o31))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, o21, op1, o71 }; const enum tree_code cmp = LT_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } break; } case GE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o41)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LE_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); switch (TREE_CODE (o70)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o70)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); tree o81 = gimple_assign_rhs2 (def); o81 = do_valueize (valueize, o81); if ((o80 == o20 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o20, 0) && types_match (o80, o20))) { if ((o81 == o41 && ! TREE_SIDE_EFFECTS (o81)) || (operand_equal_p (o81, o41, 0) && types_match (o81, o41))) { if ((o71 == o40 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o40, 0) && types_match (o71, o40))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o21, o40, o41, o20, op1, o70 }; const enum tree_code cmp = LE_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } break; } default:; } } break; default:; } break; } case GE_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if ((o70 == o40 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o40, 0) && types_match (o70, o40))) { switch (TREE_CODE (o71)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o71)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o90 = gimple_assign_rhs1 (def); o90 = do_valueize (valueize, o90); tree o91 = gimple_assign_rhs2 (def); o91 = do_valueize (valueize, o91); if ((o90 == o20 && ! TREE_SIDE_EFFECTS (o90)) || (operand_equal_p (o90, o20, 0) && types_match (o90, o20))) { if ((o91 == o41 && ! TREE_SIDE_EFFECTS (o91)) || (operand_equal_p (o91, o41, 0) && types_match (o91, o41))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o21, o40, o41, o20, op1, o71 }; const enum tree_code cmp = LE_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } break; } case GT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o41)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); switch (TREE_CODE (o70)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o70)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); tree o81 = gimple_assign_rhs2 (def); o81 = do_valueize (valueize, o81); if ((o80 == o20 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o20, 0) && types_match (o80, o20))) { if ((o81 == o41 && ! TREE_SIDE_EFFECTS (o81)) || (operand_equal_p (o81, o41, 0) && types_match (o81, o41))) { if ((o71 == o40 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o40, 0) && types_match (o71, o40))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o21, o40, o41, o20, op1, o70 }; const enum tree_code cmp = LT_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } break; } default:; } } break; default:; } break; } case GT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if ((o70 == o40 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o40, 0) && types_match (o70, o40))) { switch (TREE_CODE (o71)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o71)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o90 = gimple_assign_rhs1 (def); o90 = do_valueize (valueize, o90); tree o91 = gimple_assign_rhs2 (def); o91 = do_valueize (valueize, o91); if ((o90 == o20 && ! TREE_SIDE_EFFECTS (o90)) || (operand_equal_p (o90, o20, 0) && types_match (o90, o20))) { if ((o91 == o41 && ! TREE_SIDE_EFFECTS (o91)) || (operand_equal_p (o91, o41, 0) && types_match (o91, o41))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o21, o40, o41, o20, op1, o71 }; const enum tree_code cmp = LT_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_TRUTH_OR_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LE_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); switch (TREE_CODE (o70)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o70)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); tree o81 = gimple_assign_rhs2 (def); o81 = do_valueize (valueize, o81); if ((o80 == o21 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o21, 0) && types_match (o80, o21))) { if ((o81 == o31 && ! TREE_SIDE_EFFECTS (o81)) || (operand_equal_p (o81, o31, 0) && types_match (o81, o31))) { if ((o71 == o30 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o30, 0) && types_match (o71, o30))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, o21, op1, o70 }; const enum tree_code cmp = LE_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } break; } default:; } } break; default:; } break; } case GE_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if ((o70 == o30 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o30, 0) && types_match (o70, o30))) { switch (TREE_CODE (o71)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o71)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o90 = gimple_assign_rhs1 (def); o90 = do_valueize (valueize, o90); tree o91 = gimple_assign_rhs2 (def); o91 = do_valueize (valueize, o91); if ((o90 == o21 && ! TREE_SIDE_EFFECTS (o90)) || (operand_equal_p (o90, o21, 0) && types_match (o90, o21))) { if ((o91 == o31 && ! TREE_SIDE_EFFECTS (o91)) || (operand_equal_p (o91, o31, 0) && types_match (o91, o31))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, o21, op1, o71 }; const enum tree_code cmp = LE_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } break; } case LT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); switch (TREE_CODE (o31)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); switch (TREE_CODE (o70)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o70)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); tree o81 = gimple_assign_rhs2 (def); o81 = do_valueize (valueize, o81); if ((o80 == o21 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o21, 0) && types_match (o80, o21))) { if ((o81 == o31 && ! TREE_SIDE_EFFECTS (o81)) || (operand_equal_p (o81, o31, 0) && types_match (o81, o31))) { if ((o71 == o30 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o30, 0) && types_match (o71, o30))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, o21, op1, o70 }; const enum tree_code cmp = LT_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } break; } default:; } } break; default:; } break; } case GT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if ((o70 == o30 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o30, 0) && types_match (o70, o30))) { switch (TREE_CODE (o71)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o71)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o90 = gimple_assign_rhs1 (def); o90 = do_valueize (valueize, o90); tree o91 = gimple_assign_rhs2 (def); o91 = do_valueize (valueize, o91); if ((o90 == o21 && ! TREE_SIDE_EFFECTS (o90)) || (operand_equal_p (o90, o21, 0) && types_match (o90, o21))) { if ((o91 == o31 && ! TREE_SIDE_EFFECTS (o91)) || (operand_equal_p (o91, o31, 0) && types_match (o91, o31))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o20, o30, o31, o21, op1, o71 }; const enum tree_code cmp = LT_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } break; } case GE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o41)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LE_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); switch (TREE_CODE (o70)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o70)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); tree o81 = gimple_assign_rhs2 (def); o81 = do_valueize (valueize, o81); if ((o80 == o20 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o20, 0) && types_match (o80, o20))) { if ((o81 == o41 && ! TREE_SIDE_EFFECTS (o81)) || (operand_equal_p (o81, o41, 0) && types_match (o81, o41))) { if ((o71 == o40 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o40, 0) && types_match (o71, o40))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o21, o40, o41, o20, op1, o70 }; const enum tree_code cmp = LE_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } break; } default:; } } break; default:; } break; } case GE_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if ((o70 == o40 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o40, 0) && types_match (o70, o40))) { switch (TREE_CODE (o71)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o71)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o90 = gimple_assign_rhs1 (def); o90 = do_valueize (valueize, o90); tree o91 = gimple_assign_rhs2 (def); o91 = do_valueize (valueize, o91); if ((o90 == o20 && ! TREE_SIDE_EFFECTS (o90)) || (operand_equal_p (o90, o20, 0) && types_match (o90, o20))) { if ((o91 == o41 && ! TREE_SIDE_EFFECTS (o91)) || (operand_equal_p (o91, o41, 0) && types_match (o91, o41))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o21, o40, o41, o20, op1, o71 }; const enum tree_code cmp = LE_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } break; } case GT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); switch (TREE_CODE (o21)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o21)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); switch (TREE_CODE (o41)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case LT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); switch (TREE_CODE (o70)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o70)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o80 = gimple_assign_rhs1 (def); o80 = do_valueize (valueize, o80); tree o81 = gimple_assign_rhs2 (def); o81 = do_valueize (valueize, o81); if ((o80 == o20 && ! TREE_SIDE_EFFECTS (o80)) || (operand_equal_p (o80, o20, 0) && types_match (o80, o20))) { if ((o81 == o41 && ! TREE_SIDE_EFFECTS (o81)) || (operand_equal_p (o81, o41, 0) && types_match (o81, o41))) { if ((o71 == o40 && ! TREE_SIDE_EFFECTS (o71)) || (operand_equal_p (o71, o40, 0) && types_match (o71, o40))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o21, o40, o41, o20, op1, o70 }; const enum tree_code cmp = LT_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } } break; } default:; } } break; default:; } break; } case GT_EXPR: { tree o70 = gimple_assign_rhs1 (def); o70 = do_valueize (valueize, o70); tree o71 = gimple_assign_rhs2 (def); o71 = do_valueize (valueize, o71); if ((o70 == o40 && ! TREE_SIDE_EFFECTS (o70)) || (operand_equal_p (o70, o40, 0) && types_match (o70, o40))) { switch (TREE_CODE (o71)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o71)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case POINTER_PLUS_EXPR: { tree o90 = gimple_assign_rhs1 (def); o90 = do_valueize (valueize, o90); tree o91 = gimple_assign_rhs2 (def); o91 = do_valueize (valueize, o91); if ((o90 == o20 && ! TREE_SIDE_EFFECTS (o90)) || (operand_equal_p (o90, o20, 0) && types_match (o90, o20))) { if ((o91 == o41 && ! TREE_SIDE_EFFECTS (o91)) || (operand_equal_p (o91, o41, 0) && types_match (o91, o41))) { { /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, o21, o40, o41, o20, op1, o71 }; const enum tree_code cmp = LT_EXPR; /* #line 5341 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TYPE_OVERFLOW_UNDEFINED (TREE_TYPE (captures[2])) && TYPE_OVERFLOW_WRAPS (sizetype) && TYPE_PRECISION (TREE_TYPE (captures[2])) == TYPE_PRECISION (sizetype)) { { /* #line 5345 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ offset_int off = wi::to_offset (captures[3]) - (cmp == LE_EXPR ? 1 : 0); offset_int rhs = off * 2; /* #line 5348 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::min_precision (rhs, UNSIGNED) <= TYPE_PRECISION (sizetype)) { { /* #line 5352 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ bool swap_p = tree_swap_operands_p (captures[2], captures[4]); tree rhs_tree = wide_int_to_tree (sizetype, rhs); /* #line 5354 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (cmp == LT_EXPR) { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5355, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; ops2[0] = swap_p ? captures[6] : captures[1]; ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (lseq && (!single_use (captures[0]) || !single_use (captures[5]))) lseq = NULL; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5359, __FILE__, __LINE__); res_op->set_op (GT_EXPR, type, 2); { tree ops1[1], res; { tree ops2[2], res; { tree ops3[2], res; ops3[0] = swap_p ? captures[4] : captures[2]; ops3[1] = wide_int_to_tree (sizetype, off); gimple_match_op tem_op (res_op->cond.any_else (), POINTER_PLUS_EXPR, TREE_TYPE (ops3[0]), ops3[0], ops3[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops2[0] = res; } ops2[1] = swap_p ? captures[2] : captures[4]; gimple_match_op tem_op (res_op->cond.any_else (), POINTER_DIFF_EXPR, ssizetype, ops2[0], ops2[1]); gimple_resimplify2 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; ops1[0] = res; } if (sizetype != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (sizetype, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, sizetype, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[0] = res; } res_op->ops[1] = rhs_tree; gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } break; } default:; } } break; default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper code, const tree type, tree op0, tree op1) { switch (code.get_rep()) { case PLUS_EXPR: return gimple_simplify_PLUS_EXPR (res_op, seq, valueize, code, type, op0, op1); case POINTER_PLUS_EXPR: return gimple_simplify_POINTER_PLUS_EXPR (res_op, seq, valueize, code, type, op0, op1); case MINUS_EXPR: return gimple_simplify_MINUS_EXPR (res_op, seq, valueize, code, type, op0, op1); case BIT_IOR_EXPR: return gimple_simplify_BIT_IOR_EXPR (res_op, seq, valueize, code, type, op0, op1); case BIT_XOR_EXPR: return gimple_simplify_BIT_XOR_EXPR (res_op, seq, valueize, code, type, op0, op1); case POINTER_DIFF_EXPR: return gimple_simplify_POINTER_DIFF_EXPR (res_op, seq, valueize, code, type, op0, op1); case MULT_EXPR: return gimple_simplify_MULT_EXPR (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_COPYSIGNF: return gimple_simplify_CFN_BUILT_IN_COPYSIGNF (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_COPYSIGN: return gimple_simplify_CFN_BUILT_IN_COPYSIGN (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_COPYSIGNL: return gimple_simplify_CFN_BUILT_IN_COPYSIGNL (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_COPYSIGNF16: return gimple_simplify_CFN_BUILT_IN_COPYSIGNF16 (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_COPYSIGNF32: return gimple_simplify_CFN_BUILT_IN_COPYSIGNF32 (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_COPYSIGNF64: return gimple_simplify_CFN_BUILT_IN_COPYSIGNF64 (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_COPYSIGNF128: return gimple_simplify_CFN_BUILT_IN_COPYSIGNF128 (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_COPYSIGNF32X: return gimple_simplify_CFN_BUILT_IN_COPYSIGNF32X (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_COPYSIGNF64X: return gimple_simplify_CFN_BUILT_IN_COPYSIGNF64X (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_COPYSIGNF128X: return gimple_simplify_CFN_BUILT_IN_COPYSIGNF128X (res_op, seq, valueize, code, type, op0, op1); case -CFN_COPYSIGN: return gimple_simplify_CFN_COPYSIGN (res_op, seq, valueize, code, type, op0, op1); case TRUNC_DIV_EXPR: return gimple_simplify_TRUNC_DIV_EXPR (res_op, seq, valueize, code, type, op0, op1); case CEIL_DIV_EXPR: return gimple_simplify_CEIL_DIV_EXPR (res_op, seq, valueize, code, type, op0, op1); case FLOOR_DIV_EXPR: return gimple_simplify_FLOOR_DIV_EXPR (res_op, seq, valueize, code, type, op0, op1); case ROUND_DIV_EXPR: return gimple_simplify_ROUND_DIV_EXPR (res_op, seq, valueize, code, type, op0, op1); case EXACT_DIV_EXPR: return gimple_simplify_EXACT_DIV_EXPR (res_op, seq, valueize, code, type, op0, op1); case RDIV_EXPR: return gimple_simplify_RDIV_EXPR (res_op, seq, valueize, code, type, op0, op1); case LT_EXPR: return gimple_simplify_LT_EXPR (res_op, seq, valueize, code, type, op0, op1); case LE_EXPR: return gimple_simplify_LE_EXPR (res_op, seq, valueize, code, type, op0, op1); case GT_EXPR: return gimple_simplify_GT_EXPR (res_op, seq, valueize, code, type, op0, op1); case GE_EXPR: return gimple_simplify_GE_EXPR (res_op, seq, valueize, code, type, op0, op1); case CEIL_MOD_EXPR: return gimple_simplify_CEIL_MOD_EXPR (res_op, seq, valueize, code, type, op0, op1); case FLOOR_MOD_EXPR: return gimple_simplify_FLOOR_MOD_EXPR (res_op, seq, valueize, code, type, op0, op1); case ROUND_MOD_EXPR: return gimple_simplify_ROUND_MOD_EXPR (res_op, seq, valueize, code, type, op0, op1); case TRUNC_MOD_EXPR: return gimple_simplify_TRUNC_MOD_EXPR (res_op, seq, valueize, code, type, op0, op1); case EQ_EXPR: return gimple_simplify_EQ_EXPR (res_op, seq, valueize, code, type, op0, op1); case NE_EXPR: return gimple_simplify_NE_EXPR (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_POWF: return gimple_simplify_CFN_BUILT_IN_POWF (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_POW: return gimple_simplify_CFN_BUILT_IN_POW (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_POWL: return gimple_simplify_CFN_BUILT_IN_POWL (res_op, seq, valueize, code, type, op0, op1); case -CFN_POW: return gimple_simplify_CFN_POW (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_POWIF: return gimple_simplify_CFN_BUILT_IN_POWIF (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_POWI: return gimple_simplify_CFN_BUILT_IN_POWI (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_POWIL: return gimple_simplify_CFN_BUILT_IN_POWIL (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_HYPOTF: return gimple_simplify_CFN_BUILT_IN_HYPOTF (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_HYPOT: return gimple_simplify_CFN_BUILT_IN_HYPOT (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_HYPOTL: return gimple_simplify_CFN_BUILT_IN_HYPOTL (res_op, seq, valueize, code, type, op0, op1); case -CFN_HYPOT: return gimple_simplify_CFN_HYPOT (res_op, seq, valueize, code, type, op0, op1); case LSHIFT_EXPR: return gimple_simplify_LSHIFT_EXPR (res_op, seq, valueize, code, type, op0, op1); case BIT_AND_EXPR: return gimple_simplify_BIT_AND_EXPR (res_op, seq, valueize, code, type, op0, op1); case MIN_EXPR: return gimple_simplify_MIN_EXPR (res_op, seq, valueize, code, type, op0, op1); case MAX_EXPR: return gimple_simplify_MAX_EXPR (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_FMINF: return gimple_simplify_CFN_BUILT_IN_FMINF (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_FMIN: return gimple_simplify_CFN_BUILT_IN_FMIN (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_FMINL: return gimple_simplify_CFN_BUILT_IN_FMINL (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_FMINF16: return gimple_simplify_CFN_BUILT_IN_FMINF16 (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_FMINF32: return gimple_simplify_CFN_BUILT_IN_FMINF32 (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_FMINF64: return gimple_simplify_CFN_BUILT_IN_FMINF64 (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_FMINF128: return gimple_simplify_CFN_BUILT_IN_FMINF128 (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_FMINF32X: return gimple_simplify_CFN_BUILT_IN_FMINF32X (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_FMINF64X: return gimple_simplify_CFN_BUILT_IN_FMINF64X (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_FMINF128X: return gimple_simplify_CFN_BUILT_IN_FMINF128X (res_op, seq, valueize, code, type, op0, op1); case -CFN_FMIN: return gimple_simplify_CFN_FMIN (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_FMAXF: return gimple_simplify_CFN_BUILT_IN_FMAXF (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_FMAX: return gimple_simplify_CFN_BUILT_IN_FMAX (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_FMAXL: return gimple_simplify_CFN_BUILT_IN_FMAXL (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_FMAXF16: return gimple_simplify_CFN_BUILT_IN_FMAXF16 (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_FMAXF32: return gimple_simplify_CFN_BUILT_IN_FMAXF32 (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_FMAXF64: return gimple_simplify_CFN_BUILT_IN_FMAXF64 (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_FMAXF128: return gimple_simplify_CFN_BUILT_IN_FMAXF128 (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_FMAXF32X: return gimple_simplify_CFN_BUILT_IN_FMAXF32X (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_FMAXF64X: return gimple_simplify_CFN_BUILT_IN_FMAXF64X (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_FMAXF128X: return gimple_simplify_CFN_BUILT_IN_FMAXF128X (res_op, seq, valueize, code, type, op0, op1); case -CFN_FMAX: return gimple_simplify_CFN_FMAX (res_op, seq, valueize, code, type, op0, op1); case LROTATE_EXPR: return gimple_simplify_LROTATE_EXPR (res_op, seq, valueize, code, type, op0, op1); case RROTATE_EXPR: return gimple_simplify_RROTATE_EXPR (res_op, seq, valueize, code, type, op0, op1); case RSHIFT_EXPR: return gimple_simplify_RSHIFT_EXPR (res_op, seq, valueize, code, type, op0, op1); case COMPLEX_EXPR: return gimple_simplify_COMPLEX_EXPR (res_op, seq, valueize, code, type, op0, op1); case UNLE_EXPR: return gimple_simplify_UNLE_EXPR (res_op, seq, valueize, code, type, op0, op1); case UNGE_EXPR: return gimple_simplify_UNGE_EXPR (res_op, seq, valueize, code, type, op0, op1); case UNEQ_EXPR: return gimple_simplify_UNEQ_EXPR (res_op, seq, valueize, code, type, op0, op1); case UNLT_EXPR: return gimple_simplify_UNLT_EXPR (res_op, seq, valueize, code, type, op0, op1); case UNGT_EXPR: return gimple_simplify_UNGT_EXPR (res_op, seq, valueize, code, type, op0, op1); case LTGT_EXPR: return gimple_simplify_LTGT_EXPR (res_op, seq, valueize, code, type, op0, op1); case UNORDERED_EXPR: return gimple_simplify_UNORDERED_EXPR (res_op, seq, valueize, code, type, op0, op1); case ORDERED_EXPR: return gimple_simplify_ORDERED_EXPR (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_LDEXPF: return gimple_simplify_CFN_BUILT_IN_LDEXPF (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_LDEXP: return gimple_simplify_CFN_BUILT_IN_LDEXP (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_LDEXPL: return gimple_simplify_CFN_BUILT_IN_LDEXPL (res_op, seq, valueize, code, type, op0, op1); case -CFN_LDEXP: return gimple_simplify_CFN_LDEXP (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_SCALBNF: return gimple_simplify_CFN_BUILT_IN_SCALBNF (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_SCALBN: return gimple_simplify_CFN_BUILT_IN_SCALBN (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_SCALBNL: return gimple_simplify_CFN_BUILT_IN_SCALBNL (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_SCALBLNF: return gimple_simplify_CFN_BUILT_IN_SCALBLNF (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_SCALBLN: return gimple_simplify_CFN_BUILT_IN_SCALBLN (res_op, seq, valueize, code, type, op0, op1); case -CFN_BUILT_IN_SCALBLNL: return gimple_simplify_CFN_BUILT_IN_SCALBLNL (res_op, seq, valueize, code, type, op0, op1); case TRUTH_ORIF_EXPR: return gimple_simplify_TRUTH_ORIF_EXPR (res_op, seq, valueize, code, type, op0, op1); case TRUTH_OR_EXPR: return gimple_simplify_TRUTH_OR_EXPR (res_op, seq, valueize, code, type, op0, op1); default:; } return false; } static bool gimple_simplify_COND_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1, tree op2) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case GT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (real_zerop (o21)) { if (real_onep (op1)) { if (real_minus_onep (op2)) { { /* #line 223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_NANS (type) && !HONOR_SIGNED_ZEROS (type) && types_match (type, TREE_TYPE (captures[0]))) { /* #line 226 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, float_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 227, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNF, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 228 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 229, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGN, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 230 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, long_double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 231, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNL, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } if (real_minus_onep (op1)) { if (real_onep (op2)) { { /* #line 238 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op2 }; /* #line 238 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_NANS (type) && !HONOR_SIGNED_ZEROS (type) && types_match (type, TREE_TYPE (captures[0]))) { /* #line 241 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, float_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 242, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNF, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 243 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 244, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGN, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 245 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, long_double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 246, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNL, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } break; } default:; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o21, o61, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, GT_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } case MINUS_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o21, o61, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, GT_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } break; } default:; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (o51)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o51, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, GT_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (o51)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o51, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, GT_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } break; } case GE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (real_zerop (o21)) { if (real_onep (op1)) { if (real_minus_onep (op2)) { { /* #line 223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_NANS (type) && !HONOR_SIGNED_ZEROS (type) && types_match (type, TREE_TYPE (captures[0]))) { /* #line 226 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, float_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 227, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNF, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 228 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 229, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGN, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 230 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, long_double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 231, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNL, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } if (real_minus_onep (op1)) { if (real_onep (op2)) { { /* #line 238 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op2 }; /* #line 238 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_NANS (type) && !HONOR_SIGNED_ZEROS (type) && types_match (type, TREE_TYPE (captures[0]))) { /* #line 241 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, float_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 242, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNF, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 243 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 244, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGN, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 245 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, long_double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 246, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNL, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } break; } default:; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o21, o61, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, GE_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } case MINUS_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o21, o61, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, GE_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } break; } default:; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (o51)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o51, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, GE_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (o51)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o51, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, GE_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } break; } case LT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (real_zerop (o21)) { if (real_onep (op1)) { if (real_minus_onep (op2)) { { /* #line 223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_NANS (type) && !HONOR_SIGNED_ZEROS (type) && types_match (type, TREE_TYPE (captures[0]))) { /* #line 226 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, float_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 227, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNF, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 228 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 229, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGN, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 230 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, long_double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 231, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNL, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } if (real_minus_onep (op1)) { if (real_onep (op2)) { { /* #line 238 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op2 }; /* #line 238 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_NANS (type) && !HONOR_SIGNED_ZEROS (type) && types_match (type, TREE_TYPE (captures[0]))) { /* #line 241 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, float_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 242, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNF, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 243 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 244, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGN, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 245 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, long_double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 246, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNL, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } break; } default:; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o21, o61, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, LT_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } case MINUS_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o21, o61, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, LT_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } break; } default:; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (o51)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o51, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, LT_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (o51)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o51, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, LT_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } break; } case LE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (real_zerop (o21)) { if (real_onep (op1)) { if (real_minus_onep (op2)) { { /* #line 223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_NANS (type) && !HONOR_SIGNED_ZEROS (type) && types_match (type, TREE_TYPE (captures[0]))) { /* #line 226 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, float_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 227, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNF, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 228 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 229, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGN, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 230 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, long_double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 231, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNL, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } if (real_minus_onep (op1)) { if (real_onep (op2)) { { /* #line 238 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op2 }; /* #line 238 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_NANS (type) && !HONOR_SIGNED_ZEROS (type) && types_match (type, TREE_TYPE (captures[0]))) { /* #line 241 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, float_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 242, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNF, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 243 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 244, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGN, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 245 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, long_double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 246, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNL, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } break; } default:; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o21, o61, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, LE_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } case MINUS_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o21, o61, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, LE_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } break; } default:; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (o51)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o51, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, LE_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (o51)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o51, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, LE_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } break; } case EQ_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } } break; } default:; } break; } default:; } } break; case GT_EXPR: { tree o20 = TREE_OPERAND (op0, 0); if ((TREE_CODE (o20) == SSA_NAME || is_gimple_min_invariant (o20))) { o20 = do_valueize (valueize, o20); tree o21 = TREE_OPERAND (op0, 1); if ((TREE_CODE (o21) == SSA_NAME || is_gimple_min_invariant (o21))) { o21 = do_valueize (valueize, o21); if (real_zerop (o21)) { if (real_onep (op1)) { if (real_minus_onep (op2)) { { /* #line 223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_NANS (type) && !HONOR_SIGNED_ZEROS (type) && types_match (type, TREE_TYPE (captures[0]))) { /* #line 226 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, float_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 227, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNF, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 228 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 229, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGN, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 230 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, long_double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 231, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNL, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } if (real_minus_onep (op1)) { if (real_onep (op2)) { { /* #line 238 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op2 }; /* #line 238 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_NANS (type) && !HONOR_SIGNED_ZEROS (type) && types_match (type, TREE_TYPE (captures[0]))) { /* #line 241 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, float_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 242, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNF, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 243 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 244, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGN, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 245 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, long_double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 246, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNL, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } break; } default:; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o21, o61, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, GT_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } case MINUS_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o21, o61, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, GT_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, GT_EXPR)) return true; } break; } default:; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (o51)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o51, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, GT_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (o51)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o51, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, GT_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } } } break; } case GE_EXPR: { tree o20 = TREE_OPERAND (op0, 0); if ((TREE_CODE (o20) == SSA_NAME || is_gimple_min_invariant (o20))) { o20 = do_valueize (valueize, o20); tree o21 = TREE_OPERAND (op0, 1); if ((TREE_CODE (o21) == SSA_NAME || is_gimple_min_invariant (o21))) { o21 = do_valueize (valueize, o21); if (real_zerop (o21)) { if (real_onep (op1)) { if (real_minus_onep (op2)) { { /* #line 223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_NANS (type) && !HONOR_SIGNED_ZEROS (type) && types_match (type, TREE_TYPE (captures[0]))) { /* #line 226 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, float_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 227, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNF, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 228 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 229, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGN, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 230 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, long_double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 231, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNL, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } if (real_minus_onep (op1)) { if (real_onep (op2)) { { /* #line 238 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op2 }; /* #line 238 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_NANS (type) && !HONOR_SIGNED_ZEROS (type) && types_match (type, TREE_TYPE (captures[0]))) { /* #line 241 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, float_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 242, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNF, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 243 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 244, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGN, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 245 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, long_double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 246, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNL, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } break; } default:; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o21, o61, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, GE_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } case MINUS_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o21, o61, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, GE_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, GE_EXPR)) return true; } break; } default:; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (o51)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o51, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, GE_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (o51)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o51, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, GE_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } } } break; } case LT_EXPR: { tree o20 = TREE_OPERAND (op0, 0); if ((TREE_CODE (o20) == SSA_NAME || is_gimple_min_invariant (o20))) { o20 = do_valueize (valueize, o20); tree o21 = TREE_OPERAND (op0, 1); if ((TREE_CODE (o21) == SSA_NAME || is_gimple_min_invariant (o21))) { o21 = do_valueize (valueize, o21); if (real_zerop (o21)) { if (real_onep (op1)) { if (real_minus_onep (op2)) { { /* #line 223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_NANS (type) && !HONOR_SIGNED_ZEROS (type) && types_match (type, TREE_TYPE (captures[0]))) { /* #line 226 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, float_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 227, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNF, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 228 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 229, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGN, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 230 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, long_double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 231, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNL, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } if (real_minus_onep (op1)) { if (real_onep (op2)) { { /* #line 238 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op2 }; /* #line 238 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_NANS (type) && !HONOR_SIGNED_ZEROS (type) && types_match (type, TREE_TYPE (captures[0]))) { /* #line 241 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, float_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 242, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNF, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 243 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 244, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGN, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 245 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, long_double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 246, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNL, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } break; } default:; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o21, o61, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, LT_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } case MINUS_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o21, o61, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, LT_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, LT_EXPR)) return true; } break; } default:; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (o51)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o51, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, LT_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (o51)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o51, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, LT_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } } } break; } case LE_EXPR: { tree o20 = TREE_OPERAND (op0, 0); if ((TREE_CODE (o20) == SSA_NAME || is_gimple_min_invariant (o20))) { o20 = do_valueize (valueize, o20); tree o21 = TREE_OPERAND (op0, 1); if ((TREE_CODE (o21) == SSA_NAME || is_gimple_min_invariant (o21))) { o21 = do_valueize (valueize, o21); if (real_zerop (o21)) { if (real_onep (op1)) { if (real_minus_onep (op2)) { { /* #line 223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; /* #line 223 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_NANS (type) && !HONOR_SIGNED_ZEROS (type) && types_match (type, TREE_TYPE (captures[0]))) { /* #line 226 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, float_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 227, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNF, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 228 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 229, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGN, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 230 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, long_double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 231, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNL, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), NEGATE_EXPR, TREE_TYPE (ops1[0]), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } if (real_minus_onep (op1)) { if (real_onep (op2)) { { /* #line 238 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op2 }; /* #line 238 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!HONOR_NANS (type) && !HONOR_SIGNED_ZEROS (type) && types_match (type, TREE_TYPE (captures[0]))) { /* #line 241 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, float_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 242, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNF, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 243 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 244, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGN, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } else { /* #line 245 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (types_match (type, long_double_type_node)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 246, __FILE__, __LINE__); res_op->set_op (CFN_BUILT_IN_COPYSIGNL, type, 2); res_op->ops[0] = captures[1]; { tree ops1[1], res; ops1[0] = captures[0]; if (type != TREE_TYPE (ops1[0]) && !useless_type_conversion_p (type, TREE_TYPE (ops1[0]))) { gimple_match_op tem_op (res_op->cond.any_else (), NOP_EXPR, type, ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; } else res = ops1[0]; res_op->ops[1] = res; } gimple_resimplify2 (lseq, res_op, valueize); return true; } } } } } } } } switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } break; } default:; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if (tree_swap_operands_p (o60, o61)) std::swap (o60, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o21, o61, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, LE_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } case MINUS_EXPR: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); tree o61 = gimple_assign_rhs2 (def); o61 = do_valueize (valueize, o61); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (o61)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o30, o21, o61, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, LE_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, LE_EXPR)) return true; } break; } default:; } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (o51)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o51, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, LE_EXPR, PLUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (o51)) { case INTEGER_CST: { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2993 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { o20, o21, o51, op2 }; if (gimple_simplify_159 (res_op, seq, valueize, type, captures, LE_EXPR, MINUS_EXPR)) return true; } break; } default:; } break; } default:; } } break; } default:; } } break; default:; } break; } default:; } } } break; } case INTEGER_CST: { { /* #line 2879 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, op2 }; /* #line 2879 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (integer_zerop (captures[0])) { /* #line 2880 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!VOID_TYPE_P (TREE_TYPE (captures[2])) || VOID_TYPE_P (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2881, __FILE__, __LINE__); tree tem; tem = captures[2]; res_op->set_value (tem); return true; } } else { /* #line 2882 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (!VOID_TYPE_P (TREE_TYPE (captures[1])) || VOID_TYPE_P (type)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2883, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; } } } break; } case EQ_EXPR: { tree o20 = TREE_OPERAND (op0, 0); if ((TREE_CODE (o20) == SSA_NAME || is_gimple_min_invariant (o20))) { o20 = do_valueize (valueize, o20); tree o21 = TREE_OPERAND (op0, 1); if ((TREE_CODE (o21) == SSA_NAME || is_gimple_min_invariant (o21))) { o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o60 = gimple_assign_rhs1 (def); o60 = do_valueize (valueize, o60); if ((o60 == o30 && ! TREE_SIDE_EFFECTS (o60)) || (operand_equal_p (o60, o30, 0) && types_match (o60, o30))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } if ((op1 == o30 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o30, 0) && types_match (op1, o30))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } } break; } default:; } break; } default:; } } break; default:; } switch (TREE_CODE (o21)) { case INTEGER_CST: { switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { CASE_CONVERT: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); if ((o50 == o20 && ! TREE_SIDE_EFFECTS (o50)) || (operand_equal_p (o50, o20, 0) && types_match (o50, o20))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } } break; } default:; } } break; default:; } if ((op1 == o20 && ! TREE_SIDE_EFFECTS (op1)) || (operand_equal_p (op1, o20, 0) && types_match (op1, o20))) { switch (TREE_CODE (op2)) { case INTEGER_CST: { { /* #line 2910 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, o21, op2 }; if (gimple_simplify_126 (res_op, seq, valueize, type, captures, EQ_EXPR)) return true; } break; } default:; } } break; } default:; } } } break; } default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case COND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); tree o32 = gimple_assign_rhs3 (def); o32 = do_valueize (valueize, o32); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 3076 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o31, o32, op2 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3076, __FILE__, __LINE__); res_op->set_op (COND_EXPR, type, 3); res_op->ops[0] = captures[0]; res_op->ops[0] = unshare_expr (res_op->ops[0]); res_op->ops[1] = captures[1]; res_op->ops[2] = captures[3]; gimple_resimplify3 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case COND_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); tree o42 = gimple_assign_rhs3 (def); o42 = do_valueize (valueize, o42); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 3079 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op1, o41, o42 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3079, __FILE__, __LINE__); res_op->set_op (COND_EXPR, type, 3); res_op->ops[0] = captures[0]; res_op->ops[0] = unshare_expr (res_op->ops[0]); res_op->ops[1] = captures[1]; res_op->ops[2] = captures[3]; gimple_resimplify3 (lseq, res_op, valueize); return true; } } { /* #line 3087 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o40, o41, o42 }; /* #line 3087 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (inverse_conditions_p (captures[0], captures[2])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3088, __FILE__, __LINE__); res_op->set_op (COND_EXPR, type, 3); res_op->ops[0] = captures[0]; res_op->ops[0] = unshare_expr (res_op->ops[0]); res_op->ops[1] = captures[1]; res_op->ops[2] = captures[3]; gimple_resimplify3 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case COND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); tree o32 = gimple_assign_rhs3 (def); o32 = do_valueize (valueize, o32); { /* #line 3091 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o30, o31, o32, op2 }; /* #line 3091 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (inverse_conditions_p (captures[0], captures[1])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3092, __FILE__, __LINE__); res_op->set_op (COND_EXPR, type, 3); res_op->ops[0] = captures[0]; res_op->ops[0] = unshare_expr (res_op->ops[0]); res_op->ops[1] = captures[3]; res_op->ops[2] = captures[4]; gimple_resimplify3 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } if ((op2 == op1 && ! TREE_SIDE_EFFECTS (op2)) || (operand_equal_p (op2, op1, 0) && types_match (op2, op1))) { { /* #line 3097 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3097, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if (integer_pow2p (o31)) { if (integer_zerop (o21)) { switch (TREE_CODE (op1)) { case INTEGER_CST: { if (integer_zerop (op2)) { { /* #line 3867 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, op1 }; if (gimple_simplify_103 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } } break; } default:; } } break; default:; } break; } case LT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); if (integer_zerop (o21)) { switch (TREE_CODE (op1)) { case INTEGER_CST: { if (integer_zerop (op2)) { { /* #line 3898 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_72 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } break; } default:; } } break; case NE_EXPR: { tree o20 = TREE_OPERAND (op0, 0); if ((TREE_CODE (o20) == SSA_NAME || is_gimple_min_invariant (o20))) { o20 = do_valueize (valueize, o20); tree o21 = TREE_OPERAND (op0, 1); if ((TREE_CODE (o21) == SSA_NAME || is_gimple_min_invariant (o21))) { o21 = do_valueize (valueize, o21); if (tree_swap_operands_p (o20, o21)) std::swap (o20, o21); switch (TREE_CODE (o20)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o20)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); if (integer_pow2p (o31)) { if (integer_zerop (o21)) { switch (TREE_CODE (op1)) { case INTEGER_CST: { if (integer_zerop (op2)) { { /* #line 3867 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, o31, op1 }; if (gimple_simplify_103 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } } break; } default:; } } break; default:; } } } break; } case LT_EXPR: { tree o20 = TREE_OPERAND (op0, 0); if ((TREE_CODE (o20) == SSA_NAME || is_gimple_min_invariant (o20))) { o20 = do_valueize (valueize, o20); tree o21 = TREE_OPERAND (op0, 1); if ((TREE_CODE (o21) == SSA_NAME || is_gimple_min_invariant (o21))) { o21 = do_valueize (valueize, o21); if (integer_zerop (o21)) { switch (TREE_CODE (op1)) { case INTEGER_CST: { if (integer_zerop (op2)) { { /* #line 3898 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { o20, op1 }; if (gimple_simplify_72 (res_op, seq, valueize, type, captures)) return true; } } break; } default:; } } } } break; } default:; } { tree op0_pops[1]; if (gimple_logical_inverted_value (op0, op0_pops, valueize)) { tree o20 = op0_pops[0]; if (gimple_truth_valued_p (o20, valueize)) { { /* #line 3102 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op1, op2 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3102, __FILE__, __LINE__); res_op->set_op (COND_EXPR, type, 3); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; res_op->ops[2] = captures[1]; gimple_resimplify3 (lseq, res_op, valueize); return true; } } } } return false; } static bool gimple_simplify_VEC_COND_EXPR (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1, tree op2) { switch (TREE_CODE (op0)) { case VECTOR_CST: { { /* #line 2886 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, op2 }; /* #line 2886 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (integer_all_onesp (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2887, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; } else { /* #line 2888 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (integer_zerop (captures[0])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 2889, __FILE__, __LINE__); tree tem; tem = captures[2]; res_op->set_value (tem); return true; } } } break; } default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VEC_COND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); tree o32 = gimple_assign_rhs3 (def); o32 = do_valueize (valueize, o32); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 3076 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, o31, o32, op2 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3076, __FILE__, __LINE__); res_op->set_op (VEC_COND_EXPR, type, 3); res_op->ops[0] = captures[0]; res_op->ops[0] = unshare_expr (res_op->ops[0]); res_op->ops[1] = captures[1]; res_op->ops[2] = captures[3]; gimple_resimplify3 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VEC_COND_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); tree o42 = gimple_assign_rhs3 (def); o42 = do_valueize (valueize, o42); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 3079 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[4] ATTRIBUTE_UNUSED = { op0, op1, o41, o42 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3079, __FILE__, __LINE__); res_op->set_op (VEC_COND_EXPR, type, 3); res_op->ops[0] = captures[0]; res_op->ops[0] = unshare_expr (res_op->ops[0]); res_op->ops[1] = captures[1]; res_op->ops[2] = captures[3]; gimple_resimplify3 (lseq, res_op, valueize); return true; } } { /* #line 3087 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o40, o41, o42 }; /* #line 3087 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (inverse_conditions_p (captures[0], captures[2])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3088, __FILE__, __LINE__); res_op->set_op (VEC_COND_EXPR, type, 3); res_op->ops[0] = captures[0]; res_op->ops[0] = unshare_expr (res_op->ops[0]); res_op->ops[1] = captures[1]; res_op->ops[2] = captures[3]; gimple_resimplify3 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VEC_COND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); tree o32 = gimple_assign_rhs3 (def); o32 = do_valueize (valueize, o32); { /* #line 3091 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o30, o31, o32, op2 }; /* #line 3091 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (inverse_conditions_p (captures[0], captures[1])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3092, __FILE__, __LINE__); res_op->set_op (VEC_COND_EXPR, type, 3); res_op->ops[0] = captures[0]; res_op->ops[0] = unshare_expr (res_op->ops[0]); res_op->ops[1] = captures[3]; res_op->ops[2] = captures[4]; gimple_resimplify3 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } if ((op2 == op1 && ! TREE_SIDE_EFFECTS (op2)) || (operand_equal_p (op2, op1, 0) && types_match (op2, op1))) { { /* #line 3097 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3097, __FILE__, __LINE__); tree tem; tem = captures[1]; res_op->set_value (tem); return true; } } { tree op0_pops[1]; if (gimple_logical_inverted_value (op0, op0_pops, valueize)) { tree o20 = op0_pops[0]; if (gimple_truth_valued_p (o20, valueize)) { { /* #line 3102 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op1, op2 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 3102, __FILE__, __LINE__); res_op->set_op (VEC_COND_EXPR, type, 3); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[2]; res_op->ops[2] = captures[1]; gimple_resimplify3 (lseq, res_op, valueize); return true; } } } } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VIEW_CONVERT_EXPR: { tree o30 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o30) == SSA_NAME || is_gimple_min_invariant (o30))) { o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o30, o40, o41, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, PLUS_EXPR, CFN_COND_ADD)) return true; } break; } case MINUS_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o30, o40, o41, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, MINUS_EXPR, CFN_COND_SUB)) return true; } break; } case MULT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o30, o40, o41, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, MULT_EXPR, CFN_COND_MUL)) return true; } break; } case TRUNC_DIV_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o30, o40, o41, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR, CFN_COND_DIV)) return true; } break; } case TRUNC_MOD_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o30, o40, o41, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, TRUNC_MOD_EXPR, CFN_COND_MOD)) return true; } break; } case RDIV_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o30, o40, o41, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, RDIV_EXPR, CFN_COND_RDIV)) return true; } break; } case MIN_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o30, o40, o41, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, MIN_EXPR, CFN_COND_MIN)) return true; } break; } case MAX_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o30, o40, o41, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, MAX_EXPR, CFN_COND_MAX)) return true; } break; } case BIT_AND_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o30, o40, o41, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, CFN_COND_AND)) return true; } break; } case BIT_IOR_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o30, o40, o41, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, CFN_COND_IOR)) return true; } break; } case BIT_XOR_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o30, o40, o41, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, CFN_COND_XOR)) return true; } break; } default:; } } break; default:; } } break; } case PLUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o30, o31, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, PLUS_EXPR, CFN_COND_ADD)) return true; } break; } case MINUS_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o30, o31, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, MINUS_EXPR, CFN_COND_SUB)) return true; } break; } case MULT_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o30, o31, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, MULT_EXPR, CFN_COND_MUL)) return true; } break; } case TRUNC_DIV_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o30, o31, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR, CFN_COND_DIV)) return true; } break; } case TRUNC_MOD_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o30, o31, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, TRUNC_MOD_EXPR, CFN_COND_MOD)) return true; } break; } case RDIV_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o30, o31, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, RDIV_EXPR, CFN_COND_RDIV)) return true; } break; } case MIN_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o30, o31, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, MIN_EXPR, CFN_COND_MIN)) return true; } break; } case MAX_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o30, o31, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, MAX_EXPR, CFN_COND_MAX)) return true; } break; } case BIT_AND_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o30, o31, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, CFN_COND_AND)) return true; } break; } case BIT_IOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o30, o31, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, CFN_COND_IOR)) return true; } break; } case BIT_XOR_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); tree o31 = gimple_assign_rhs2 (def); o31 = do_valueize (valueize, o31); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); { /* #line 5248 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o30, o31, op2 }; if (gimple_simplify_248 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, CFN_COND_XOR)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VIEW_CONVERT_EXPR: { tree o40 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o40) == SSA_NAME || is_gimple_min_invariant (o40))) { o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case PLUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o40, o50, o51 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, PLUS_EXPR, CFN_COND_ADD)) return true; } break; } case MINUS_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o40, o50, o51 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, MINUS_EXPR, CFN_COND_SUB)) return true; } break; } case MULT_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o40, o50, o51 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, MULT_EXPR, CFN_COND_MUL)) return true; } break; } case TRUNC_DIV_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o40, o50, o51 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR, CFN_COND_DIV)) return true; } break; } case TRUNC_MOD_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o40, o50, o51 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, TRUNC_MOD_EXPR, CFN_COND_MOD)) return true; } break; } case RDIV_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o40, o50, o51 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, RDIV_EXPR, CFN_COND_RDIV)) return true; } break; } case MIN_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o40, o50, o51 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, MIN_EXPR, CFN_COND_MIN)) return true; } break; } case MAX_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o40, o50, o51 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, MAX_EXPR, CFN_COND_MAX)) return true; } break; } case BIT_AND_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o40, o50, o51 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, CFN_COND_AND)) return true; } break; } case BIT_IOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o40, o50, o51 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, CFN_COND_IOR)) return true; } break; } case BIT_XOR_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); tree o51 = gimple_assign_rhs2 (def); o51 = do_valueize (valueize, o51); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, o40, o50, o51 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, CFN_COND_XOR)) return true; } break; } default:; } } break; default:; } } break; } case PLUS_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, op2, o40, o41 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, PLUS_EXPR, CFN_COND_ADD)) return true; } break; } case MINUS_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, op2, o40, o41 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, MINUS_EXPR, CFN_COND_SUB)) return true; } break; } case MULT_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, op2, o40, o41 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, MULT_EXPR, CFN_COND_MUL)) return true; } break; } case TRUNC_DIV_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, op2, o40, o41 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, TRUNC_DIV_EXPR, CFN_COND_DIV)) return true; } break; } case TRUNC_MOD_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, op2, o40, o41 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, TRUNC_MOD_EXPR, CFN_COND_MOD)) return true; } break; } case RDIV_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, op2, o40, o41 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, RDIV_EXPR, CFN_COND_RDIV)) return true; } break; } case MIN_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, op2, o40, o41 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, MIN_EXPR, CFN_COND_MIN)) return true; } break; } case MAX_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, op2, o40, o41 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, MAX_EXPR, CFN_COND_MAX)) return true; } break; } case BIT_AND_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, op2, o40, o41 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, BIT_AND_EXPR, CFN_COND_AND)) return true; } break; } case BIT_IOR_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, op2, o40, o41 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, BIT_IOR_EXPR, CFN_COND_IOR)) return true; } break; } case BIT_XOR_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); tree o41 = gimple_assign_rhs2 (def); o41 = do_valueize (valueize, o41); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5254 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, op1, op2, o40, o41 }; if (gimple_simplify_151 (res_op, seq, valueize, type, captures, BIT_XOR_EXPR, CFN_COND_XOR)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VIEW_CONVERT_EXPR: { tree o30 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o30) == SSA_NAME || is_gimple_min_invariant (o30))) { o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_FMA: if (gimple_call_num_args (def) == 3) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5264 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o30, o40, o41, o42, op2 }; if (gimple_simplify_252 (res_op, seq, valueize, type, captures, CFN_FMA, CFN_COND_FMA)) return true; } } break; case CFN_FMS: if (gimple_call_num_args (def) == 3) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5264 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o30, o40, o41, o42, op2 }; if (gimple_simplify_252 (res_op, seq, valueize, type, captures, CFN_FMS, CFN_COND_FMS)) return true; } } break; case CFN_FNMA: if (gimple_call_num_args (def) == 3) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5264 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o30, o40, o41, o42, op2 }; if (gimple_simplify_252 (res_op, seq, valueize, type, captures, CFN_FNMA, CFN_COND_FNMA)) return true; } } break; case CFN_FNMS: if (gimple_call_num_args (def) == 3) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5264 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o30, o40, o41, o42, op2 }; if (gimple_simplify_252 (res_op, seq, valueize, type, captures, CFN_FNMS, CFN_COND_FNMS)) return true; } } break; default:; } } break; default:; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_FMA: if (gimple_call_num_args (def) == 3) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); tree o32 = gimple_call_arg (def, 2); o32 = do_valueize (valueize, o32); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); { /* #line 5264 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o30, o31, o32, op2 }; if (gimple_simplify_252 (res_op, seq, valueize, type, captures, CFN_FMA, CFN_COND_FMA)) return true; } } break; case CFN_FMS: if (gimple_call_num_args (def) == 3) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); tree o32 = gimple_call_arg (def, 2); o32 = do_valueize (valueize, o32); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); { /* #line 5264 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o30, o31, o32, op2 }; if (gimple_simplify_252 (res_op, seq, valueize, type, captures, CFN_FMS, CFN_COND_FMS)) return true; } } break; case CFN_FNMA: if (gimple_call_num_args (def) == 3) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); tree o32 = gimple_call_arg (def, 2); o32 = do_valueize (valueize, o32); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); { /* #line 5264 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o30, o31, o32, op2 }; if (gimple_simplify_252 (res_op, seq, valueize, type, captures, CFN_FNMA, CFN_COND_FNMA)) return true; } } break; case CFN_FNMS: if (gimple_call_num_args (def) == 3) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); tree o32 = gimple_call_arg (def, 2); o32 = do_valueize (valueize, o32); if (tree_swap_operands_p (o30, o31)) std::swap (o30, o31); { /* #line 5264 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o30, o31, o32, op2 }; if (gimple_simplify_252 (res_op, seq, valueize, type, captures, CFN_FNMS, CFN_COND_FNMS)) return true; } } break; default:; } } break; default:; } switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VIEW_CONVERT_EXPR: { tree o40 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o40) == SSA_NAME || is_gimple_min_invariant (o40))) { o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_FMA: if (gimple_call_num_args (def) == 3) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); tree o52 = gimple_call_arg (def, 2); o52 = do_valueize (valueize, o52); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); { /* #line 5270 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o40, o50, o51, o52 }; if (gimple_simplify_155 (res_op, seq, valueize, type, captures, CFN_FMA, CFN_COND_FMA)) return true; } } break; case CFN_FMS: if (gimple_call_num_args (def) == 3) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); tree o52 = gimple_call_arg (def, 2); o52 = do_valueize (valueize, o52); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); { /* #line 5270 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o40, o50, o51, o52 }; if (gimple_simplify_155 (res_op, seq, valueize, type, captures, CFN_FMS, CFN_COND_FMS)) return true; } } break; case CFN_FNMA: if (gimple_call_num_args (def) == 3) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); tree o52 = gimple_call_arg (def, 2); o52 = do_valueize (valueize, o52); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); { /* #line 5270 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o40, o50, o51, o52 }; if (gimple_simplify_155 (res_op, seq, valueize, type, captures, CFN_FNMA, CFN_COND_FNMA)) return true; } } break; case CFN_FNMS: if (gimple_call_num_args (def) == 3) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); tree o52 = gimple_call_arg (def, 2); o52 = do_valueize (valueize, o52); if (tree_swap_operands_p (o50, o51)) std::swap (o50, o51); { /* #line 5270 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o40, o50, o51, o52 }; if (gimple_simplify_155 (res_op, seq, valueize, type, captures, CFN_FNMS, CFN_COND_FNMS)) return true; } } break; default:; } } break; default:; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_FMA: if (gimple_call_num_args (def) == 3) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5270 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, op2, o40, o41, o42 }; if (gimple_simplify_155 (res_op, seq, valueize, type, captures, CFN_FMA, CFN_COND_FMA)) return true; } } break; case CFN_FMS: if (gimple_call_num_args (def) == 3) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5270 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, op2, o40, o41, o42 }; if (gimple_simplify_155 (res_op, seq, valueize, type, captures, CFN_FMS, CFN_COND_FMS)) return true; } } break; case CFN_FNMA: if (gimple_call_num_args (def) == 3) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5270 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, op2, o40, o41, o42 }; if (gimple_simplify_155 (res_op, seq, valueize, type, captures, CFN_FNMA, CFN_COND_FNMA)) return true; } } break; case CFN_FNMS: if (gimple_call_num_args (def) == 3) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); if (tree_swap_operands_p (o40, o41)) std::swap (o40, o41); { /* #line 5270 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, op2, o40, o41, o42 }; if (gimple_simplify_155 (res_op, seq, valueize, type, captures, CFN_FNMS, CFN_COND_FNMS)) return true; } } break; default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VIEW_CONVERT_EXPR: { tree o30 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o30) == SSA_NAME || is_gimple_min_invariant (o30))) { o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_COND_ADD: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o41, o42, o43, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_ADD)) return true; } } } break; case CFN_COND_SUB: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o41, o42, o43, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_SUB)) return true; } } } break; case CFN_COND_MUL: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o41, o42, o43, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_MUL)) return true; } } } break; case CFN_COND_DIV: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o41, o42, o43, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_DIV)) return true; } } } break; case CFN_COND_MOD: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o41, o42, o43, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_MOD)) return true; } } } break; case CFN_COND_RDIV: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o41, o42, o43, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_RDIV)) return true; } } } break; case CFN_COND_MIN: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o41, o42, o43, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_MIN)) return true; } } } break; case CFN_COND_MAX: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o41, o42, o43, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_MAX)) return true; } } } break; case CFN_COND_AND: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o41, o42, o43, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_AND)) return true; } } } break; case CFN_COND_IOR: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o41, o42, o43, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_IOR)) return true; } } } break; case CFN_COND_XOR: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o41, o42, o43, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_XOR)) return true; } } } break; default:; } } break; default:; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_COND_ADD: if (gimple_call_num_args (def) == 4) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); tree o32 = gimple_call_arg (def, 2); o32 = do_valueize (valueize, o32); tree o33 = gimple_call_arg (def, 3); o33 = do_valueize (valueize, o33); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o31, o32, o33, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_ADD)) return true; } } } break; case CFN_COND_SUB: if (gimple_call_num_args (def) == 4) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); tree o32 = gimple_call_arg (def, 2); o32 = do_valueize (valueize, o32); tree o33 = gimple_call_arg (def, 3); o33 = do_valueize (valueize, o33); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o31, o32, o33, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_SUB)) return true; } } } break; case CFN_COND_MUL: if (gimple_call_num_args (def) == 4) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); tree o32 = gimple_call_arg (def, 2); o32 = do_valueize (valueize, o32); tree o33 = gimple_call_arg (def, 3); o33 = do_valueize (valueize, o33); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o31, o32, o33, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_MUL)) return true; } } } break; case CFN_COND_DIV: if (gimple_call_num_args (def) == 4) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); tree o32 = gimple_call_arg (def, 2); o32 = do_valueize (valueize, o32); tree o33 = gimple_call_arg (def, 3); o33 = do_valueize (valueize, o33); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o31, o32, o33, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_DIV)) return true; } } } break; case CFN_COND_MOD: if (gimple_call_num_args (def) == 4) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); tree o32 = gimple_call_arg (def, 2); o32 = do_valueize (valueize, o32); tree o33 = gimple_call_arg (def, 3); o33 = do_valueize (valueize, o33); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o31, o32, o33, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_MOD)) return true; } } } break; case CFN_COND_RDIV: if (gimple_call_num_args (def) == 4) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); tree o32 = gimple_call_arg (def, 2); o32 = do_valueize (valueize, o32); tree o33 = gimple_call_arg (def, 3); o33 = do_valueize (valueize, o33); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o31, o32, o33, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_RDIV)) return true; } } } break; case CFN_COND_MIN: if (gimple_call_num_args (def) == 4) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); tree o32 = gimple_call_arg (def, 2); o32 = do_valueize (valueize, o32); tree o33 = gimple_call_arg (def, 3); o33 = do_valueize (valueize, o33); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o31, o32, o33, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_MIN)) return true; } } } break; case CFN_COND_MAX: if (gimple_call_num_args (def) == 4) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); tree o32 = gimple_call_arg (def, 2); o32 = do_valueize (valueize, o32); tree o33 = gimple_call_arg (def, 3); o33 = do_valueize (valueize, o33); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o31, o32, o33, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_MAX)) return true; } } } break; case CFN_COND_AND: if (gimple_call_num_args (def) == 4) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); tree o32 = gimple_call_arg (def, 2); o32 = do_valueize (valueize, o32); tree o33 = gimple_call_arg (def, 3); o33 = do_valueize (valueize, o33); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o31, o32, o33, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_AND)) return true; } } } break; case CFN_COND_IOR: if (gimple_call_num_args (def) == 4) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); tree o32 = gimple_call_arg (def, 2); o32 = do_valueize (valueize, o32); tree o33 = gimple_call_arg (def, 3); o33 = do_valueize (valueize, o33); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o31, o32, o33, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_IOR)) return true; } } } break; case CFN_COND_XOR: if (gimple_call_num_args (def) == 4) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); tree o32 = gimple_call_arg (def, 2); o32 = do_valueize (valueize, o32); tree o33 = gimple_call_arg (def, 3); o33 = do_valueize (valueize, o33); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 5282 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { op0, o31, o32, o33, op2 }; if (gimple_simplify_9 (res_op, seq, valueize, type, captures, CFN_COND_XOR)) return true; } } } break; default:; } } break; default:; } switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VIEW_CONVERT_EXPR: { tree o40 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o40) == SSA_NAME || is_gimple_min_invariant (o40))) { o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_COND_ADD: if (gimple_call_num_args (def) == 4) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); tree o52 = gimple_call_arg (def, 2); o52 = do_valueize (valueize, o52); tree o53 = gimple_call_arg (def, 3); o53 = do_valueize (valueize, o53); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o50, o51, o52, o53 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_ADD)) return true; } } break; case CFN_COND_SUB: if (gimple_call_num_args (def) == 4) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); tree o52 = gimple_call_arg (def, 2); o52 = do_valueize (valueize, o52); tree o53 = gimple_call_arg (def, 3); o53 = do_valueize (valueize, o53); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o50, o51, o52, o53 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_SUB)) return true; } } break; case CFN_COND_MUL: if (gimple_call_num_args (def) == 4) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); tree o52 = gimple_call_arg (def, 2); o52 = do_valueize (valueize, o52); tree o53 = gimple_call_arg (def, 3); o53 = do_valueize (valueize, o53); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o50, o51, o52, o53 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_MUL)) return true; } } break; case CFN_COND_DIV: if (gimple_call_num_args (def) == 4) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); tree o52 = gimple_call_arg (def, 2); o52 = do_valueize (valueize, o52); tree o53 = gimple_call_arg (def, 3); o53 = do_valueize (valueize, o53); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o50, o51, o52, o53 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_DIV)) return true; } } break; case CFN_COND_MOD: if (gimple_call_num_args (def) == 4) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); tree o52 = gimple_call_arg (def, 2); o52 = do_valueize (valueize, o52); tree o53 = gimple_call_arg (def, 3); o53 = do_valueize (valueize, o53); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o50, o51, o52, o53 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_MOD)) return true; } } break; case CFN_COND_RDIV: if (gimple_call_num_args (def) == 4) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); tree o52 = gimple_call_arg (def, 2); o52 = do_valueize (valueize, o52); tree o53 = gimple_call_arg (def, 3); o53 = do_valueize (valueize, o53); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o50, o51, o52, o53 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_RDIV)) return true; } } break; case CFN_COND_MIN: if (gimple_call_num_args (def) == 4) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); tree o52 = gimple_call_arg (def, 2); o52 = do_valueize (valueize, o52); tree o53 = gimple_call_arg (def, 3); o53 = do_valueize (valueize, o53); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o50, o51, o52, o53 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_MIN)) return true; } } break; case CFN_COND_MAX: if (gimple_call_num_args (def) == 4) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); tree o52 = gimple_call_arg (def, 2); o52 = do_valueize (valueize, o52); tree o53 = gimple_call_arg (def, 3); o53 = do_valueize (valueize, o53); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o50, o51, o52, o53 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_MAX)) return true; } } break; case CFN_COND_AND: if (gimple_call_num_args (def) == 4) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); tree o52 = gimple_call_arg (def, 2); o52 = do_valueize (valueize, o52); tree o53 = gimple_call_arg (def, 3); o53 = do_valueize (valueize, o53); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o50, o51, o52, o53 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_AND)) return true; } } break; case CFN_COND_IOR: if (gimple_call_num_args (def) == 4) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); tree o52 = gimple_call_arg (def, 2); o52 = do_valueize (valueize, o52); tree o53 = gimple_call_arg (def, 3); o53 = do_valueize (valueize, o53); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o50, o51, o52, o53 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_IOR)) return true; } } break; case CFN_COND_XOR: if (gimple_call_num_args (def) == 4) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); tree o52 = gimple_call_arg (def, 2); o52 = do_valueize (valueize, o52); tree o53 = gimple_call_arg (def, 3); o53 = do_valueize (valueize, o53); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o50, o51, o52, o53 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_XOR)) return true; } } break; default:; } } break; default:; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_COND_ADD: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o40, o41, o42, o43 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_ADD)) return true; } } break; case CFN_COND_SUB: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o40, o41, o42, o43 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_SUB)) return true; } } break; case CFN_COND_MUL: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o40, o41, o42, o43 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_MUL)) return true; } } break; case CFN_COND_DIV: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o40, o41, o42, o43 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_DIV)) return true; } } break; case CFN_COND_MOD: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o40, o41, o42, o43 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_MOD)) return true; } } break; case CFN_COND_RDIV: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o40, o41, o42, o43 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_RDIV)) return true; } } break; case CFN_COND_MIN: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o40, o41, o42, o43 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_MIN)) return true; } } break; case CFN_COND_MAX: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o40, o41, o42, o43 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_MAX)) return true; } } break; case CFN_COND_AND: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o40, o41, o42, o43 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_AND)) return true; } } break; case CFN_COND_IOR: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o40, o41, o42, o43 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_IOR)) return true; } } break; case CFN_COND_XOR: if (gimple_call_num_args (def) == 4) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); { /* #line 5287 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, op1, o40, o41, o42, o43 }; if (gimple_simplify_209 (res_op, seq, valueize, type, captures, CFN_COND_XOR)) return true; } } break; default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VIEW_CONVERT_EXPR: { tree o30 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o30) == SSA_NAME || is_gimple_min_invariant (o30))) { o30 = do_valueize (valueize, o30); switch (TREE_CODE (o30)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o30)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_COND_FMA: if (gimple_call_num_args (def) == 5) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); tree o44 = gimple_call_arg (def, 4); o44 = do_valueize (valueize, o44); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 5296 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o41, o42, o43, o44, op2 }; if (gimple_simplify_259 (res_op, seq, valueize, type, captures, CFN_COND_FMA)) return true; } } } break; case CFN_COND_FMS: if (gimple_call_num_args (def) == 5) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); tree o44 = gimple_call_arg (def, 4); o44 = do_valueize (valueize, o44); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 5296 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o41, o42, o43, o44, op2 }; if (gimple_simplify_259 (res_op, seq, valueize, type, captures, CFN_COND_FMS)) return true; } } } break; case CFN_COND_FNMA: if (gimple_call_num_args (def) == 5) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); tree o44 = gimple_call_arg (def, 4); o44 = do_valueize (valueize, o44); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 5296 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o41, o42, o43, o44, op2 }; if (gimple_simplify_259 (res_op, seq, valueize, type, captures, CFN_COND_FNMA)) return true; } } } break; case CFN_COND_FNMS: if (gimple_call_num_args (def) == 5) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); tree o44 = gimple_call_arg (def, 4); o44 = do_valueize (valueize, o44); if ((o40 == op0 && ! TREE_SIDE_EFFECTS (o40)) || (operand_equal_p (o40, op0, 0) && types_match (o40, op0))) { { /* #line 5296 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o41, o42, o43, o44, op2 }; if (gimple_simplify_259 (res_op, seq, valueize, type, captures, CFN_COND_FNMS)) return true; } } } break; default:; } } break; default:; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_COND_FMA: if (gimple_call_num_args (def) == 5) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); tree o32 = gimple_call_arg (def, 2); o32 = do_valueize (valueize, o32); tree o33 = gimple_call_arg (def, 3); o33 = do_valueize (valueize, o33); tree o34 = gimple_call_arg (def, 4); o34 = do_valueize (valueize, o34); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 5296 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o31, o32, o33, o34, op2 }; if (gimple_simplify_259 (res_op, seq, valueize, type, captures, CFN_COND_FMA)) return true; } } } break; case CFN_COND_FMS: if (gimple_call_num_args (def) == 5) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); tree o32 = gimple_call_arg (def, 2); o32 = do_valueize (valueize, o32); tree o33 = gimple_call_arg (def, 3); o33 = do_valueize (valueize, o33); tree o34 = gimple_call_arg (def, 4); o34 = do_valueize (valueize, o34); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 5296 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o31, o32, o33, o34, op2 }; if (gimple_simplify_259 (res_op, seq, valueize, type, captures, CFN_COND_FMS)) return true; } } } break; case CFN_COND_FNMA: if (gimple_call_num_args (def) == 5) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); tree o32 = gimple_call_arg (def, 2); o32 = do_valueize (valueize, o32); tree o33 = gimple_call_arg (def, 3); o33 = do_valueize (valueize, o33); tree o34 = gimple_call_arg (def, 4); o34 = do_valueize (valueize, o34); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 5296 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o31, o32, o33, o34, op2 }; if (gimple_simplify_259 (res_op, seq, valueize, type, captures, CFN_COND_FNMA)) return true; } } } break; case CFN_COND_FNMS: if (gimple_call_num_args (def) == 5) { tree o30 = gimple_call_arg (def, 0); o30 = do_valueize (valueize, o30); tree o31 = gimple_call_arg (def, 1); o31 = do_valueize (valueize, o31); tree o32 = gimple_call_arg (def, 2); o32 = do_valueize (valueize, o32); tree o33 = gimple_call_arg (def, 3); o33 = do_valueize (valueize, o33); tree o34 = gimple_call_arg (def, 4); o34 = do_valueize (valueize, o34); if ((o30 == op0 && ! TREE_SIDE_EFFECTS (o30)) || (operand_equal_p (o30, op0, 0) && types_match (o30, op0))) { { /* #line 5296 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[6] ATTRIBUTE_UNUSED = { op0, o31, o32, o33, o34, op2 }; if (gimple_simplify_259 (res_op, seq, valueize, type, captures, CFN_COND_FNMS)) return true; } } } break; default:; } } break; default:; } switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case VIEW_CONVERT_EXPR: { tree o40 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o40) == SSA_NAME || is_gimple_min_invariant (o40))) { o40 = do_valueize (valueize, o40); switch (TREE_CODE (o40)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, o40)) { if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_COND_FMA: if (gimple_call_num_args (def) == 5) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); tree o52 = gimple_call_arg (def, 2); o52 = do_valueize (valueize, o52); tree o53 = gimple_call_arg (def, 3); o53 = do_valueize (valueize, o53); tree o54 = gimple_call_arg (def, 4); o54 = do_valueize (valueize, o54); { /* #line 5301 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op1, o50, o51, o52, o53, o54 }; if (gimple_simplify_124 (res_op, seq, valueize, type, captures, CFN_COND_FMA)) return true; } } break; case CFN_COND_FMS: if (gimple_call_num_args (def) == 5) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); tree o52 = gimple_call_arg (def, 2); o52 = do_valueize (valueize, o52); tree o53 = gimple_call_arg (def, 3); o53 = do_valueize (valueize, o53); tree o54 = gimple_call_arg (def, 4); o54 = do_valueize (valueize, o54); { /* #line 5301 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op1, o50, o51, o52, o53, o54 }; if (gimple_simplify_124 (res_op, seq, valueize, type, captures, CFN_COND_FMS)) return true; } } break; case CFN_COND_FNMA: if (gimple_call_num_args (def) == 5) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); tree o52 = gimple_call_arg (def, 2); o52 = do_valueize (valueize, o52); tree o53 = gimple_call_arg (def, 3); o53 = do_valueize (valueize, o53); tree o54 = gimple_call_arg (def, 4); o54 = do_valueize (valueize, o54); { /* #line 5301 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op1, o50, o51, o52, o53, o54 }; if (gimple_simplify_124 (res_op, seq, valueize, type, captures, CFN_COND_FNMA)) return true; } } break; case CFN_COND_FNMS: if (gimple_call_num_args (def) == 5) { tree o50 = gimple_call_arg (def, 0); o50 = do_valueize (valueize, o50); tree o51 = gimple_call_arg (def, 1); o51 = do_valueize (valueize, o51); tree o52 = gimple_call_arg (def, 2); o52 = do_valueize (valueize, o52); tree o53 = gimple_call_arg (def, 3); o53 = do_valueize (valueize, o53); tree o54 = gimple_call_arg (def, 4); o54 = do_valueize (valueize, o54); { /* #line 5301 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op1, o50, o51, o52, o53, o54 }; if (gimple_simplify_124 (res_op, seq, valueize, type, captures, CFN_COND_FNMS)) return true; } } break; default:; } } break; default:; } } break; } default:; } else if (gcall *def = dyn_cast (def_stmt)) switch (gimple_call_combined_fn (def)) { case CFN_COND_FMA: if (gimple_call_num_args (def) == 5) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); tree o44 = gimple_call_arg (def, 4); o44 = do_valueize (valueize, o44); { /* #line 5301 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op1, o40, o41, o42, o43, o44 }; if (gimple_simplify_124 (res_op, seq, valueize, type, captures, CFN_COND_FMA)) return true; } } break; case CFN_COND_FMS: if (gimple_call_num_args (def) == 5) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); tree o44 = gimple_call_arg (def, 4); o44 = do_valueize (valueize, o44); { /* #line 5301 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op1, o40, o41, o42, o43, o44 }; if (gimple_simplify_124 (res_op, seq, valueize, type, captures, CFN_COND_FMS)) return true; } } break; case CFN_COND_FNMA: if (gimple_call_num_args (def) == 5) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); tree o44 = gimple_call_arg (def, 4); o44 = do_valueize (valueize, o44); { /* #line 5301 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op1, o40, o41, o42, o43, o44 }; if (gimple_simplify_124 (res_op, seq, valueize, type, captures, CFN_COND_FNMA)) return true; } } break; case CFN_COND_FNMS: if (gimple_call_num_args (def) == 5) { tree o40 = gimple_call_arg (def, 0); o40 = do_valueize (valueize, o40); tree o41 = gimple_call_arg (def, 1); o41 = do_valueize (valueize, o41); tree o42 = gimple_call_arg (def, 2); o42 = do_valueize (valueize, o42); tree o43 = gimple_call_arg (def, 3); o43 = do_valueize (valueize, o43); tree o44 = gimple_call_arg (def, 4); o44 = do_valueize (valueize, o44); { /* #line 5301 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[7] ATTRIBUTE_UNUSED = { op0, op1, o40, o41, o42, o43, o44 }; if (gimple_simplify_124 (res_op, seq, valueize, type, captures, CFN_COND_FNMS)) return true; } } break; default:; } } break; default:; } return false; } static bool gimple_simplify_BIT_FIELD_REF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1, tree op2) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case BIT_FIELD_REF: { tree o20 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o20) == SSA_NAME || is_gimple_min_invariant (o20))) { o20 = do_valueize (valueize, o20); tree o21 = TREE_OPERAND (gimple_assign_rhs1 (def), 1); if ((TREE_CODE (o21) == SSA_NAME || is_gimple_min_invariant (o21))) { o21 = do_valueize (valueize, o21); tree o22 = TREE_OPERAND (gimple_assign_rhs1 (def), 2); if ((TREE_CODE (o22) == SSA_NAME || is_gimple_min_invariant (o22))) { o22 = do_valueize (valueize, o22); { /* #line 5016 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { o20, o21, o22, op1, op2 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5016, __FILE__, __LINE__); res_op->set_op (BIT_FIELD_REF, type, 3); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[3]; res_op->ops[2] = const_binop (PLUS_EXPR, bitsizetype, captures[2], captures[4]); gimple_resimplify3 (lseq, res_op, valueize); return true; } } } } break; } case VIEW_CONVERT_EXPR: { tree o20 = TREE_OPERAND (gimple_assign_rhs1 (def), 0); if ((TREE_CODE (o20) == SSA_NAME || is_gimple_min_invariant (o20))) { o20 = do_valueize (valueize, o20); { /* #line 5020 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op1, op2 }; gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5020, __FILE__, __LINE__); res_op->set_op (BIT_FIELD_REF, type, 3); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; res_op->ops[2] = captures[2]; gimple_resimplify3 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } if (integer_zerop (op2)) { { /* #line 5024 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[2] ATTRIBUTE_UNUSED = { op0, op1 }; /* #line 5024 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_int_cst_equal (captures[1], TYPE_SIZE (TREE_TYPE (captures[0])))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5025, __FILE__, __LINE__); res_op->set_op (VIEW_CONVERT_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } { /* #line 5030 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, op2 }; /* #line 5030 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (TREE_CODE (TREE_TYPE (captures[0])) == COMPLEX_TYPE && tree_int_cst_equal (captures[1], TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0]))))) { /* #line 5033 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (integer_zerop (captures[2])) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5034, __FILE__, __LINE__); res_op->set_op (VIEW_CONVERT_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), REALPART_EXPR, TREE_TYPE (TREE_TYPE (ops1[0])), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } else { /* #line 5035 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (tree_int_cst_equal (captures[2], TYPE_SIZE (TREE_TYPE (TREE_TYPE (captures[0]))))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5036, __FILE__, __LINE__); res_op->set_op (VIEW_CONVERT_EXPR, type, 1); { tree ops1[1], res; ops1[0] = captures[0]; gimple_match_op tem_op (res_op->cond.any_else (), IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (ops1[0])), ops1[0]); gimple_resimplify1 (lseq, &tem_op, valueize); res = maybe_push_res_to_seq (&tem_op, lseq); if (!res) return false; res_op->ops[0] = res; } gimple_resimplify1 (lseq, res_op, valueize); return true; } } } else { /* #line 5037 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (INTEGRAL_TYPE_P (TREE_TYPE (captures[0])) && INTEGRAL_TYPE_P (type) && (!1 || is_gimple_reg (captures[0])) && ((compare_tree_int (captures[1], TYPE_PRECISION (TREE_TYPE (captures[0]))) == 0 && integer_zerop (captures[2])) || (BYTES_BIG_ENDIAN == WORDS_BIG_ENDIAN && TYPE_PRECISION (TREE_TYPE (captures[0])) % BITS_PER_UNIT == 0 && TYPE_PRECISION (type) % BITS_PER_UNIT == 0 && compare_tree_int (captures[2], (BYTES_BIG_ENDIAN ? (TYPE_PRECISION (TREE_TYPE (captures[0])) - TYPE_PRECISION (type)) : 0)) == 0))) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5054, __FILE__, __LINE__); res_op->set_op (NOP_EXPR, type, 1); res_op->ops[0] = captures[0]; gimple_resimplify1 (lseq, res_op, valueize); return true; } } } switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case CONSTRUCTOR: { { /* #line 5060 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, op2 }; /* #line 5060 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (VECTOR_TYPE_P (TREE_TYPE (captures[0])) && (types_match (type, TREE_TYPE (TREE_TYPE (captures[0]))) || (VECTOR_TYPE_P (type) && types_match (TREE_TYPE (type), TREE_TYPE (TREE_TYPE (captures[0])))))) { { /* #line 5064 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree ctor = (TREE_CODE (captures[0]) == SSA_NAME ? gimple_assign_rhs1 (SSA_NAME_DEF_STMT (captures[0])) : captures[0]); tree eltype = TREE_TYPE (TREE_TYPE (ctor)); unsigned HOST_WIDE_INT width = tree_to_uhwi (TYPE_SIZE (eltype)); unsigned HOST_WIDE_INT n = tree_to_uhwi (captures[1]); unsigned HOST_WIDE_INT idx = tree_to_uhwi (captures[2]); /* #line 5073 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (n != 0 && (idx % width) == 0 && (n % width) == 0 && known_le ((idx + n) / width, TYPE_VECTOR_SUBPARTS (TREE_TYPE (ctor)))) { { /* #line 5078 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ idx = idx / width; n = n / width; poly_uint64 k = 1; if (CONSTRUCTOR_NELTS (ctor) != 0) { tree cons_elem = TREE_TYPE (CONSTRUCTOR_ELT (ctor, 0)->value); if (TREE_CODE (cons_elem) == VECTOR_TYPE) k = TYPE_VECTOR_SUBPARTS (cons_elem); } unsigned HOST_WIDE_INT elt, count, const_k; /* #line 5094 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (multiple_p (idx, k, &elt) && multiple_p (n, k, &count)) { /* #line 5095 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (CONSTRUCTOR_NELTS (ctor) == 0) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5096, __FILE__, __LINE__); tree tem; tem = build_constructor (type, NULL); res_op->set_value (tem); return true; } else { /* #line 5097 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (count == 1) { /* #line 5098 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (elt < CONSTRUCTOR_NELTS (ctor)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5099, __FILE__, __LINE__); res_op->set_op (VIEW_CONVERT_EXPR, type, 1); res_op->ops[0] = CONSTRUCTOR_ELT (ctor, elt)->value; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5100, __FILE__, __LINE__); tree tem; tem = build_zero_cst (type); res_op->set_value (tem); return true; } } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5101, __FILE__, __LINE__); tree tem; vec *vals; vec_alloc (vals, count); for (unsigned i = 0; i < count && elt + i < CONSTRUCTOR_NELTS (ctor); ++i) CONSTRUCTOR_APPEND_ELT (vals, NULL_TREE, CONSTRUCTOR_ELT (ctor, elt + i)->value); tem = build_constructor (type, vals); res_op->set_value (tem); return true; } } } else { /* #line 5111 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (k.is_constant (&const_k) && idx + n <= (idx / const_k + 1) * const_k) { /* #line 5114 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (CONSTRUCTOR_NELTS (ctor) <= idx / const_k) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5115, __FILE__, __LINE__); tree tem; tem = build_zero_cst (type); res_op->set_value (tem); return true; } else { /* #line 5116 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (n == const_k) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5117, __FILE__, __LINE__); res_op->set_op (VIEW_CONVERT_EXPR, type, 1); res_op->ops[0] = CONSTRUCTOR_ELT (ctor, idx / const_k)->value; gimple_resimplify1 (lseq, res_op, valueize); return true; } else { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5118, __FILE__, __LINE__); res_op->set_op (BIT_FIELD_REF, type, 3); res_op->ops[0] = CONSTRUCTOR_ELT (ctor, idx / const_k)->value; res_op->ops[1] = captures[1]; res_op->ops[2] = bitsize_int ((idx % const_k) * width); gimple_resimplify3 (lseq, res_op, valueize); return true; } } } } } } } } } break; } case BIT_INSERT_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); tree o21 = gimple_assign_rhs2 (def); o21 = do_valueize (valueize, o21); tree o22 = gimple_assign_rhs3 (def); o22 = do_valueize (valueize, o22); { /* #line 5126 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[5] ATTRIBUTE_UNUSED = { o20, o21, o22, op1, op2 }; { /* #line 5126 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ unsigned HOST_WIDE_INT isize; if (INTEGRAL_TYPE_P (TREE_TYPE (captures[1]))) isize = TYPE_PRECISION (TREE_TYPE (captures[1])); else isize = tree_to_uhwi (TYPE_SIZE (TREE_TYPE (captures[1]))); /* #line 5135 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::leu_p (wi::to_wide (captures[2]), wi::to_wide (captures[4])) && wi::leu_p (wi::to_wide (captures[4]) + wi::to_wide (captures[3]), wi::to_wide (captures[2]) + isize)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5138, __FILE__, __LINE__); res_op->set_op (BIT_FIELD_REF, type, 3); res_op->ops[0] = captures[1]; res_op->ops[1] = captures[3]; res_op->ops[2] = wide_int_to_tree (bitsizetype, wi::to_wide (captures[4]) - wi::to_wide (captures[2])); gimple_resimplify3 (lseq, res_op, valueize); return true; } else { /* #line 5141 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (wi::geu_p (wi::to_wide (captures[2]), wi::to_wide (captures[4]) + wi::to_wide (captures[3])) || wi::geu_p (wi::to_wide (captures[4]), wi::to_wide (captures[2]) + isize)) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5145, __FILE__, __LINE__); res_op->set_op (BIT_FIELD_REF, type, 3); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[3]; res_op->ops[2] = captures[4]; gimple_resimplify3 (lseq, res_op, valueize); return true; } } } } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMAF (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1, tree op2) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op1, op2 }; if (gimple_simplify_279 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAF)) return true; } switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op1, o50 }; if (gimple_simplify_30 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAF)) return true; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, op0, op2 }; if (gimple_simplify_279 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAF)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o40 }; if (gimple_simplify_111 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAF)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, op0, o50 }; if (gimple_simplify_30 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAF)) return true; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMA (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1, tree op2) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op1, op2 }; if (gimple_simplify_279 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMA)) return true; } switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op1, o50 }; if (gimple_simplify_30 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMA)) return true; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, op0, op2 }; if (gimple_simplify_279 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMA)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o40 }; if (gimple_simplify_111 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMA)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, op0, o50 }; if (gimple_simplify_30 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMA)) return true; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_BUILT_IN_FMAL (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1, tree op2) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op1, op2 }; if (gimple_simplify_279 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAL)) return true; } switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op1, o50 }; if (gimple_simplify_30 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAL)) return true; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, op0, op2 }; if (gimple_simplify_279 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAL)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o40 }; if (gimple_simplify_111 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAL)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, op0, o50 }; if (gimple_simplify_30 (res_op, seq, valueize, type, captures, CFN_BUILT_IN_FMAL)) return true; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_FMA (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1, tree op2) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op1, op2 }; if (gimple_simplify_279 (res_op, seq, valueize, type, captures, CFN_FMA)) return true; } switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op1, o50 }; if (gimple_simplify_30 (res_op, seq, valueize, type, captures, CFN_FMA)) return true; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, op0, op2 }; if (gimple_simplify_279 (res_op, seq, valueize, type, captures, CFN_FMA)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o40 }; if (gimple_simplify_111 (res_op, seq, valueize, type, captures, CFN_FMA)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, op0, o50 }; if (gimple_simplify_30 (res_op, seq, valueize, type, captures, CFN_FMA)) return true; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_FMS (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1, tree op2) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op1, op2 }; if (gimple_simplify_276 (res_op, seq, valueize, type, captures)) return true; } switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op1, o50 }; if (gimple_simplify_27 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, op0, op2 }; if (gimple_simplify_276 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o40 }; /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_after_vectorization_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5168, __FILE__, __LINE__); res_op->set_op (CFN_FMA, type, 3); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; res_op->ops[2] = captures[2]; gimple_resimplify3 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, op0, o50 }; if (gimple_simplify_27 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_FNMA (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1, tree op2) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op1, op2 }; if (gimple_simplify_178 (res_op, seq, valueize, type, captures)) return true; } switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op1, o50 }; if (gimple_simplify_273 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, op0, op2 }; if (gimple_simplify_178 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o40 }; /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_after_vectorization_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5182, __FILE__, __LINE__); res_op->set_op (CFN_FNMS, type, 3); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; res_op->ops[2] = captures[2]; gimple_resimplify3 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, op0, o50 }; if (gimple_simplify_273 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify_CFN_FNMS (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper ARG_UNUSED (code), tree ARG_UNUSED (type) , tree op0, tree op1, tree op2) { switch (TREE_CODE (op0)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op0)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o20 = gimple_assign_rhs1 (def); o20 = do_valueize (valueize, o20); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op1, op2 }; if (gimple_simplify_106 (res_op, seq, valueize, type, captures)) return true; } switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o20, op1, o50 }; if (gimple_simplify_171 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, op0, op2 }; if (gimple_simplify_106 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o40 = gimple_assign_rhs1 (def); o40 = do_valueize (valueize, o40); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { op0, op1, o40 }; /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ if (canonicalize_math_after_vectorization_p ()) { gimple_seq *lseq = seq; if (__builtin_expect (dump_file && (dump_flags & TDF_FOLDING), 0)) fprintf (dump_file, "Applying pattern %s:%d, %s:%d\n", "match.pd", 5196, __FILE__, __LINE__); res_op->set_op (CFN_FNMA, type, 3); res_op->ops[0] = captures[0]; res_op->ops[1] = captures[1]; res_op->ops[2] = captures[2]; gimple_resimplify3 (lseq, res_op, valueize); return true; } } break; } default:; } } break; default:; } switch (TREE_CODE (op1)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op1)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o30 = gimple_assign_rhs1 (def); o30 = do_valueize (valueize, o30); switch (TREE_CODE (op2)) { case SSA_NAME: if (gimple *def_stmt = get_def (valueize, op2)) { if (gassign *def = dyn_cast (def_stmt)) switch (gimple_assign_rhs_code (def)) { case NEGATE_EXPR: { tree o50 = gimple_assign_rhs1 (def); o50 = do_valueize (valueize, o50); { /* #line 5147 "../../../../../../../work-shared/gcc-9.3.0-r0/gcc-9.3.0/gcc/match.pd" */ tree captures[3] ATTRIBUTE_UNUSED = { o30, op0, o50 }; if (gimple_simplify_171 (res_op, seq, valueize, type, captures)) return true; } break; } default:; } } break; default:; } break; } default:; } } break; default:; } return false; } static bool gimple_simplify (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper code, const tree type, tree op0, tree op1, tree op2) { switch (code.get_rep()) { case COND_EXPR: return gimple_simplify_COND_EXPR (res_op, seq, valueize, code, type, op0, op1, op2); case VEC_COND_EXPR: return gimple_simplify_VEC_COND_EXPR (res_op, seq, valueize, code, type, op0, op1, op2); case BIT_FIELD_REF: return gimple_simplify_BIT_FIELD_REF (res_op, seq, valueize, code, type, op0, op1, op2); case -CFN_BUILT_IN_FMAF: return gimple_simplify_CFN_BUILT_IN_FMAF (res_op, seq, valueize, code, type, op0, op1, op2); case -CFN_BUILT_IN_FMA: return gimple_simplify_CFN_BUILT_IN_FMA (res_op, seq, valueize, code, type, op0, op1, op2); case -CFN_BUILT_IN_FMAL: return gimple_simplify_CFN_BUILT_IN_FMAL (res_op, seq, valueize, code, type, op0, op1, op2); case -CFN_FMA: return gimple_simplify_CFN_FMA (res_op, seq, valueize, code, type, op0, op1, op2); case -CFN_FMS: return gimple_simplify_CFN_FMS (res_op, seq, valueize, code, type, op0, op1, op2); case -CFN_FNMA: return gimple_simplify_CFN_FNMA (res_op, seq, valueize, code, type, op0, op1, op2); case -CFN_FNMS: return gimple_simplify_CFN_FNMS (res_op, seq, valueize, code, type, op0, op1, op2); default:; } return false; } static bool gimple_simplify (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper code, const tree type, tree op0, tree op1, tree op2, tree op3) { switch (code.get_rep()) { default:; } return false; } static bool gimple_simplify (gimple_match_op *res_op, gimple_seq *seq, tree (*valueize)(tree) ATTRIBUTE_UNUSED, code_helper code, const tree type, tree op0, tree op1, tree op2, tree op3, tree op4) { switch (code.get_rep()) { default:; } return false; }