On 21/11/23 3:02 pm, Richard Biener wrote:
> 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.
>
Sorry for the inconvenience caused. I forgot to remove the check loop-aux ==
NULL
in the patch that I sent.
My mistake. Sorry for that.
Thanks & Regards
Ajit
> 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
>>