This is the mail archive of the
mailing list for the GCC project.
Re: Indirect memory addresses vs. lra
On 8/9/19 2:14 AM, John Darrington wrote:
> On Thu, Aug 08, 2019 at 01:57:41PM -0600, Jeff Law wrote:
> Yea, it's certainly designed with the more mainstream architectures in
> mind. THe double-indirect case that's being talked about here is well
> out of the mainstream and not a feature of anything LRA has targetted to
> date. So I'm not surprised it's not working.
> My suggestion would be to ignore the double-indirect aspect of the
> architecture right now, get the port working, then come back and try to
> make double-indirect addressing modes work.
> This sounds like sensible advice. 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.
You're going to have to debug what LRA is doing and why. There's really
no short-cuts here. We can't really do it for you. Even if you weren't
using LRA you'd be doing the same process, just on even more difficult
to understand codebase.
> Even if it should turn out not to be related, the message I've been
> receiving in this thread is lra should not be expected to work for
> non "mainstream" backends. So perhaps there is another, yet to be
> discovered, restriction which prevents my backend from ever working?
It's possible. But that's not really any different than reload.
There's certainly various aspects of architectures that reload can't
handle as well -- even on architectures that were mainstream processors
when reload was under active development and maintenance. THere's even
a good chance reload won't handle double-indirect addressing modes well
-- they were far from mainstream and as a result the code which does
purport to handle double-indirect addressing modes hasn't been
used/tested all that much over the last 25+ years.
> On the other hand, given my lack of experience with gcc, it could be
> that lra is working perfectly, and I have simply done something
> incorrectly. But the uncertainty voiced in this thread means that it
> is hard to be sure that I'm not trying to do something which is
> currently unsupported.
My recommendation is to continue with the LRA path.