This is the mail archive of the
mailing list for the GCC project.
Re: Indirect memory addresses vs. lra
> On Aug 9, 2019, at 10:16 AM, Segher Boessenkool <firstname.lastname@example.org> wrote:
> On Fri, Aug 09, 2019 at 10:14:39AM +0200, John Darrington wrote:
>> On Thu, Aug 08, 2019 at 01:57:41PM -0600, Jeff Law wrote:
>> ... However I wonder if this issue is
>> related to the other major outstanding problem I have, viz: the large
>> number of test failures which report "Unable to find a register to
>> spill" - So far, nobody has been able to explain how to solve that
>> issue and even the people who appear to be more knowlegeable have
>> expressed suprise that it is even happening at all.
> No one is surprised. It is just the funny way that LRA says "whoops I
> am going in circles, there is no progress and there will never be, I'd
> better stop that". Everyone doing new ports / new conversions to LRA
> sees that error all the time.
> The error could be pretty much *anywhere* in your port. You have to
> look at what LRA did, and why, and why that is wrong, and fix that.
I've run into this a number of times. The difficulty is that, for someone who understands the back end and the documented rules but not the internals of LRA, it tends to be hard to figure out what the problem is. And since the causes tend to be obscure and undocumented, I find myself having to relearn the analysis from time to time.
It has been stated that LRA is more dependent on correct back end definitions than Reload is, but unfortunately the precise definition of "correct" can be less than obvious to a back end maintainer.