[PATCH] ira: Fix old-reload targets [PR103974]

Vladimir Makarov vmakarov@redhat.com
Wed Jan 12 14:26:12 GMT 2022


On 2022-01-12 03:47, Richard Biener wrote:
> On Tue, Jan 11, 2022 at 7:41 PM Vladimir Makarov via Gcc-patches
> <gcc-patches@gcc.gnu.org> wrote:
>>
>> On 2022-01-11 12:42, Richard Sandiford wrote:
>>> The new IRA heuristics would need more work on old-reload targets,
>>> since flattening needs to be able to undo the cost propagation.
>>> It's doable, but hardly seems worth it.
>> Agree. It is not worth to spend your time for work for reload.
>>> This patch therefore makes all the new calls to
>>> ira_subloop_allocnos_can_differ_p return false if !ira_use_lra_p.
>>> The color_pass code that predated the new function (and that was
>>> the source of ira_subloop_allocnos_can_differ_p) continues to
>>> behave as before.
>>>
>>> It's a hack, but at least it has the advantage that the new parameter
>>> would become obviously unused if reload and (!)ira_use_lra_p were
>>> removed.  The hack should therefore disappear alongside reload.
>> I have a feeling that it will stay for a long time if not forever.
> We indeed seem to have 34 targets w/o LRA by default and only 15 with :/
>
> At some point Eric wrote a nice summary for how to transition targets
> away from CC0, I wonder if there's something similar for transitioning
> a port away from reload to LRA?  In those 34 targets there must be some
> for which that's a relatively easy task?  I suppose it depends on how
> much of the reload target hooks are put to use and how those translate
> to LRA.

First of all the target should be rid of using CC0.  Then theoretically 
:) the target should work with LRA as LRA uses existing reload hooks 
(more accurately a subset of them).

In practice some work should be done for switching to LRA.  I did first 
4 major targets to work with LRA and unfortunately did not find some 
repeating patterns in this work.  The problems for the first targets 
were mostly unique and required a lot of LRA code modifications.  After 
that people did other target switching pretty easily and spent few time 
for this as I remember.

So based on my experience of porting targets to LRA I can not formalize 
this work.  But probably it can be done by examining all LRA targets 
code (mostly looking at machine dependent code related to use 
lra_in_progress_p) or by collecting information what was done from other 
people who did porting to LRA.



More information about the Gcc-patches mailing list