This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Patches to fix optimizer bug & C++ exceptions for GCC VAX backend


On 04/01/2016 01:06 PM, Jake Hamby wrote:

My theory is that it has to do with liveness detection and a write
into the stack frame being incorrectly seen as updating a local
variable, but that could be completely wrong. I was hoping that by
cc'ing gcc-patches that somebody more familiar with why some phase of
the optimizer might decide to delete this particular insn that copies
data into the stack (to overwrite the return address, e.g. to move to
EH_RETURN_HANDLER_RTX) immediately before returning.
Dead store elimination is the most likely candidate. It "knows" that stores into the local frame are dead when the function returns and uses that information to eliminate such stores.

You may just need to set the volatile flag on the MEM when you generate it in your backend. For example see config/pa/pa.c::pa_eh_return_handler_rtx.

Jeff


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]