aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/pa/pa.c
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1996-02-20 12:22:49 -0700
committerJeff Law <law@gcc.gnu.org>1996-02-20 12:22:49 -0700
commit1144563fbc40c80298e1477c67c0614d1e9a917e (patch)
tree27516760db40e9ec335990a918d83cedd3acd3ef /gcc/config/pa/pa.c
parent97da85b7a061926d4ddf4db2d91a561396a3f150 (diff)
downloadgcc-1144563fbc40c80298e1477c67c0614d1e9a917e.zip
gcc-1144563fbc40c80298e1477c67c0614d1e9a917e.tar.gz
gcc-1144563fbc40c80298e1477c67c0614d1e9a917e.tar.bz2
pa.h (DBX_CONTIN_LENGTH): Define to 4000 characters.
* pa.h (DBX_CONTIN_LENGTH): Define to 4000 characters. * pa.c (hppa_expand_epilogue): Always emit a blockage insn before cutting back the stack. From-SVN: r11327
Diffstat (limited to 'gcc/config/pa/pa.c')
-rw-r--r--gcc/config/pa/pa.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index 5c00d45..2c3e014 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -2475,6 +2475,12 @@ hppa_expand_epilogue ()
gen_rtx (POST_INC, DFmode, tmpreg)));
}
+ /* Emit a blockage insn here to keep these insns from being moved to
+ an earlier spot in the epilogue, or into the main instruction stream.
+
+ This is necessary as we must not cut the stack back before all the
+ restores are finished. */
+ emit_insn (gen_blockage ());
/* No frame pointer, but we have a stack greater than 8k. We restore
%r2 very late in this case. (All other cases are restored as early
as possible.) */
@@ -2499,10 +2505,6 @@ hppa_expand_epilogue ()
pointer is initially set to fp + 64 to avoid a race condition. */
else if (frame_pointer_needed)
{
- /* Emit a blockage insn here to keep these insns from being moved
- to the beginning of the prologue or into the main instruction
- stream, doing so avoids some very obscure problems. */
- emit_insn (gen_blockage ());
set_reg_plus_d (STACK_POINTER_REGNUM, FRAME_POINTER_REGNUM, 64);
emit_insn (gen_pre_ldwm (frame_pointer_rtx,
stack_pointer_rtx,