https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113109

--- Comment #10 from Hans-Peter Nilsson <hp at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #6)
> So I did a quick audit of the EH_RETURN_HANDLER_RTX

Yeah, me too.

> and most are registers
> rather than a memory location  . And the ones which were memory locations
> used either frame or stack pointer directly which seemed to not to be
> removed.

And those that with an address relative to hard_frame_pointer_rtx, marks the
mem as volatile.

> I had originally was going to record my findings but then I saw the
> volatile for pa risc and deleted what I had wrote up.

Ouch, "never delete what you can't undo".  Sometimes you turn back another 180
degrees from your 180 turn in the middle of the analysis or bug-hunt.  Was it
more than a list of targets and their EH macros and patterns?

The fun thing is that the dse1 pass (the culprit) works before pro/epilogue
expansion, so it sees stores without the matching loads.  That is, for targets
that just define EH_RETURN_HANDLER_RTX (no eh_return pattern or any fancy
extra) and handles EH at epilogue expansion time.

Reply via email to