This is the mail archive of the
gcc-cvs@gcc.gnu.org
mailing list for the GCC project.
r242949 - in /trunk/gcc: ChangeLog config/rs600...
- From: segher at gcc dot gnu dot org
- To: gcc-cvs at gcc dot gnu dot org
- Date: Tue, 29 Nov 2016 05:30:55 -0000
- Subject: r242949 - in /trunk/gcc: ChangeLog config/rs600...
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