On 04/14/2017 11:01 AM, Jeff Law wrote:
On 04/14/2017 10:24 AM, Richard Sandiford wrote:
I think it only does that if the "containing object" that you're
validating is a MEM. If the object you're validating is an insn
(which it always is for regcprop) then normal constrain_operands
does happen.
Hmm, you've of course right!
Adding code to do that to individual MIPS patterns feels like a hack
to me.
The pass should be doing it itself.
Agreed. It's a hack. But it was the best I could see to do at this
stage.
Been looking at it a bit more, and I think the problem is that we're
somehow ending up with a second stack pointer rtx, distinct from
stack_pointer_rtx. And then I remembered that this had been discussed
before, see the tail end of:
https://gcc.gnu.org/ml/gcc-patches/2016-01/msg02362.html
I'd be happier with the mips_stack_address_p change described there,
although it still seems like a hack.
Let me dig a little further. Two stack pointers just sounds
fundamentally wrong.
See maybe_mode_change and cry.
jeff