On 05/14/2015 01:24 PM, Segher Boessenkool wrote:
On Thu, May 14, 2015 at 12:31:40PM -0600, Jeff Law wrote:
On 05/14/2015 11:36 AM, Segher Boessenkool wrote:
The alternative that allows move to mem is alt 1, but it thinks the operand
doesn't match (it is "B" or "W"), it picks alt 0, loop, everyone unhappy.

"B" should match it seems?

(Why does IRA think r56 should be in memory?  Yeah, good question.)
Independent of that, if a reg-reg move generated by LRA (which is really
a mem->reg or reg->mem) blows up on this target for some reason, then
that needs to be addressed independently of whether or not IRA might
have made a bad choice for which pseudo to spill.

Yes.  It probably is because of the "volatile" I inserted for it
to fail at all, anyway.

Changing constraints ABWef to be define_memory_constraint (instead of
define_constraint) makes this testcase pass.  It also makes the build
pass (it failed before; 90 reloads in libgcc).

Pretty miserable code for those memory accesses, but hey, better
than an ICE ;-)
Makes sense if it wasn't defined as a memory constraint that LRA would be having trouble -- odds are reload would have barf'd at some point too.

The only difference is I'm actually still better at understanding what reload's doing from its dumps than LRA. It's hard to throw away decades of retained knowledge earned the hard way.

James, can you go ahead and make that change to ABWef and enable LRA and commit your changes to the trunk?

Thanks,
jeff

Reply via email to