Andrew Pinski <quic_apin...@quicinc.com> writes:
> r15-6789-ge7f98d9603808b added a new RTL pass for hardreg PRE for the hard 
> register
> of FPM_REGNUM, this pass could get expensive if you have a large number of 
> basic blocks
> and the hard register was never alive so it does nothing in the end.
> In the aarch64 case, FPM_REGNUM is only used for FP8 related code so it has a 
> high probability
> of not being used. So skipping the pass for that register can improve both 
> compile time and memory
> usage.
>
> Build and tested for aarch64-linux-gnu.
>
>       PR middle-end/PR121095
> gcc/ChangeLog:
>
>       * gcse.cc (execute_hardreg_pre): Skip if the hardreg is never alive.
>
> Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com>
> ---
>  gcc/gcse.cc | 9 ++++++++-
>  1 file changed, 8 insertions(+), 1 deletion(-)
>
> diff --git a/gcc/gcse.cc b/gcc/gcse.cc
> index 96aae0e1718..6eddffcdba8 100644
> --- a/gcc/gcse.cc
> +++ b/gcc/gcse.cc
> @@ -4238,8 +4238,15 @@ execute_hardreg_pre (void)
>      {
>        int changed;
>        current_hardreg_regno = regnos[i];
> +      if (!df_regs_ever_live_p (current_hardreg_regno))
> +     {
> +       if (dump_file)
> +         fprintf (dump_file, "Skipping hardreg PRE for regno %d never 
> alive\n",

How about: "Skipping hardreg PRE for regno %d, which is never live\n"

OK with that change, thanks.

Richard

> +                 current_hardreg_regno);
> +       continue;
> +     }
>        if (dump_file)
> -     fprintf(dump_file, "Entering hardreg PRE for regno %d\n",
> +     fprintf (dump_file, "Entering hardreg PRE for regno %d\n",
>               current_hardreg_regno);
>        delete_unreachable_blocks ();
>        df_analyze ();

Reply via email to