On Sat, Dec 13, 2025 at 10:38 AM Andrew Pinski
<[email protected]> wrote:
>
> This disables some match (not the simplify one) patterns
> for non-GIMPLE. All of the saturation related match patterns,
> the clz/popcount related match patterns that are used from forwardprop.
> Also cond_expr_convert_p and bitwise_induction_p match patterns.
>
> These are only used from outside of match and simplify and only the
> gimple form so there is no reason to generate the GENERIC form of
> this.
>
> THis should speed up bootstrap slightly by not generating or compiling
> them. This should (when compiled without LTO) also improve the overall
> size of the built binaries too.
>
> For GCC 17, I am thinking about moving the gimple only simplify and match
> patterns to their own file as match.pd is getting too big to search for
> patterns.
>
> Bootstrapped and tested on x86_64-linux-gnu.

OK.

> gcc/ChangeLog:
>
>         * match.pd: Disable a few match patterns for !GIMPLE.
>
> Signed-off-by: Andrew Pinski <[email protected]>
> ---
>  gcc/match.pd | 5 +++++
>  1 file changed, 5 insertions(+)
>
> diff --git a/gcc/match.pd b/gcc/match.pd
> index bf410a75f5f..a52cef3e626 100644
> --- a/gcc/match.pd
> +++ b/gcc/match.pd
> @@ -3273,6 +3273,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
>         || POINTER_TYPE_P (itype))
>        && wi::eq_p (wi::to_wide (int_cst), wi::max_value (itype))))))
>
> +#if GIMPLE
>  /* Saturation add for unsigned integer.  */
>  (if (INTEGRAL_TYPE_P (type) && TYPE_UNSIGNED (type))
>   (match (usadd_overflow_mask @0 @1)
> @@ -3814,6 +3815,7 @@ DEFINE_INT_AND_FLOAT_ROUND_FN (RINT)
>       }
>       (if (c2_is_max_p)))))
>  )
> +#endif
>
>  /* The boundary condition for case 10: IMM = 1:
>     SAT_U_SUB = X >= IMM ? (X - IMM) : 0.
> @@ -11765,6 +11767,7 @@ and,
>           (vec_perm @2 @5 { op0; })))))))))))
>
>
> +#if GIMPLE
>  /* Match count trailing zeroes for simplify_count_zeroes in forwprop.
>     The canonical form is array[((x & -x) * C) >> SHIFT] where C is a magic
>     constant which when multiplied by a power of 2 contains a unique value
> @@ -11912,6 +11915,8 @@ and,
>   (bit_not
>    (nop_convert1? (bit_xor@0 (convert2? (lshift integer_onep@1 @2)) @3))))
>
> +#endif
> +
>  /* n - (((n > C1) ? n : C1) & -C2) ->  n & C1 for unsigned case.
>     n - (((n > C1) ? n : C1) & -C2) ->  (n <= C1) ? n : (n & C1) for signed 
> case.  */
>  (simplify
> --
> 2.43.0
>

Reply via email to