On Tue, Nov 21, 2023 at 9:30 AM Ajit Agarwal <aagar...@linux.ibm.com> wrote:
>
> Hello All:
>
> This patch marked LOOP_DATA->live as the livein at the loop header basic
> block. This is because Livein at each basic block is live in at the loop 
> header.

The current code does the same, you now have fewer regs live.  In fact
your patch removes all of the settings since when
loop->aux == NULL there's no LOOP_DATA (loop), so you never do anything.

It appears that you do not fully grasp the changes done by your
patches - you need to improve
in this regard and either provide better explanations or stop sending these kind
of patches.

I will stop looking at your patches now, it appears to be a waste of
my precious time.

Peter - please work with Ajit here.

Thanks,
Richard.


> Bootstrapped and regtested on powerpc64-linux-gnu.
>
> SPEC CPU 2017 benchmarks score is better than trunk wit this
> change for INT and FP benchmarks.
>
> THanks & Regards
> Ajit
>
>
> rtl-optimization: Modify loop live data with livein of loop header
>
> Livein at each basic block is live in at the loop header.
> Marked LOOP_DATA->live as the livein at the loop header basic
> block.
>
> 2023-11-21  Ajit Kumar Agarwal  <aagar...@linux.ibm.com>
>
> gcc/ChangeLog:
>
>         * loop-invariant.cc (calculate_loop_reg_pressure): Mark
>         LOOP_DATA->live as the livein at the loop header basic block.
> ---
>  gcc/loop-invariant.cc | 11 ++++++-----
>  1 file changed, 6 insertions(+), 5 deletions(-)
>
> diff --git a/gcc/loop-invariant.cc b/gcc/loop-invariant.cc
> index a9b156682bc..c15e6168d5d 100644
> --- a/gcc/loop-invariant.cc
> +++ b/gcc/loop-invariant.cc
> @@ -2169,17 +2169,18 @@ calculate_loop_reg_pressure (void)
>        }
>    ira_setup_eliminable_regset ();
>    bitmap_initialize (&curr_regs_live, &reg_obstack);
> +
> +  /* Livein (loop_hdr) is live at each of the loop basic blocks.  */
> +  for (auto loop : loops_list (cfun, 0))
> +    if (loop->aux == NULL)
> +      bitmap_ior_into (&LOOP_DATA (loop)->regs_live, DF_LR_IN 
> (loop->header));
> +
>    FOR_EACH_BB_FN (bb, cfun)
>      {
>        curr_loop = bb->loop_father;
>        if (curr_loop == current_loops->tree_root)
>         continue;
>
> -      for (class loop *loop = curr_loop;
> -          loop != current_loops->tree_root;
> -          loop = loop_outer (loop))
> -       bitmap_ior_into (&LOOP_DATA (loop)->regs_live, DF_LR_IN (bb));
> -
>        bitmap_copy (&curr_regs_live, DF_LR_IN (bb));
>        for (i = 0; i < ira_pressure_classes_num; i++)
>         curr_reg_pressure[ira_pressure_classes[i]] = 0;
> --
> 2.39.3
>

Reply via email to