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, ®_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 >