r242949 - in /trunk/gcc: ChangeLog config/rs600...
segher@gcc.gnu.org
segher@gcc.gnu.org
Tue Nov 29 05:31:00 GMT 2016
Author: segher
Date: Tue Nov 29 05:29:47 2016
New Revision: 242949
URL: https://gcc.gnu.org/viewcvs?rev=242949&root=gcc&view=rev
Log:
rs6000: Make deallocation of a large frame work (PR77687)
If we use ABI_V4 and we have a big stack frame, we end the epilogue
with a "mr 1,11" (or similar) instruction. This instruction however
has no dependencies on the earlier restores from stack (done via r11),
so sched2 can end up reordering the insns, which is bad because we
have no red zone so that you then restore from stack that is already
deallocated.
This fixes it by making that restore depend on the memory accesses.
PR target/77687
* config/rs6000/rs6000.c (rs6000_emit_stack_reset): Emit the
stack_restore_tie insn instead of stack_tie, for the SVR4 and
SPE ABIs.
* config/rs6000/rs6000.md (stack_restore_tie): New define_insn.
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/rs6000/rs6000.c
trunk/gcc/config/rs6000/rs6000.md
More information about the Gcc-cvs
mailing list