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 ;-) Segher