On 09/06/2016 04:14 PM, Segher Boessenkool wrote:
On Tue, Sep 06, 2016 at 03:24:24PM -0600, Jeff Law wrote:
On 08/31/2016 01:08 AM, Eric Botcazou wrote:
DSE should really detect this is happening and not do the wrong thing.
Maybe add an assert somewhere? Much easier to debug, that way.
That sounds fragile, functions are allowed to fiddle with the frame
pointer in
the prologue or epilogue (but of course not in the body). I think that
DSE is
not the only RTL pass which makes this assumption of invariant frame
pointer
in the body, it seems rather fundamental in the RTL middle-end.
That's my recollection as well -- I recall many patches flying by
through the years that assumed the frame pointer was invariant -- but
they were mostly (all?) in things that ran before we add the
prologue/epilogue to the INSN chain.
We could simply check if the frame pointer (or stack pointer) is changed
while RTX_FRAME_RELATED_P is not set? Can that ever happen on "proper"
code?
Worth a try, though I'm not convinced we're setting RTX_FRAME_RELATED_P
correctly, particularly for the legacy targets.
jeff