Commit 473fa8cc by Jeffrey A. Law Committed by Jeff Law

pa.c (hppa_expand_epilogue): Correctly handle restore of %rp for functions with…

pa.c (hppa_expand_epilogue): Correctly handle restore of %rp for functions with a stack size of exactly...

Tue May  2 01:25:29 1995  Jeffrey A. Law  <law@snake.cs.utah.edu>

	* pa.c (hppa_expand_epilogue): Correctly handle restore of %rp
	for functions with a stack size of exactly 8kbytes and no frame
	pointer.

From-SVN: r9561
parent 509b12e0
...@@ -2439,8 +2439,15 @@ hppa_expand_epilogue () ...@@ -2439,8 +2439,15 @@ hppa_expand_epilogue ()
set_reg_plus_d (STACK_POINTER_REGNUM, set_reg_plus_d (STACK_POINTER_REGNUM,
STACK_POINTER_REGNUM, STACK_POINTER_REGNUM,
- actual_fsize); - actual_fsize);
/* Uses value left over in %r1 by set_reg_plus_d. */
load_reg (2, - (actual_fsize + 20 + ((- actual_fsize) & ~0x7ff)), 1); /* This used to try and be clever by not depending on the value in
%r30 and instead use the value held in %r1 (so that the 2nd insn
which sets %r30 could be put in the delay slot of the return insn).
That won't work since if the stack is exactly 8k set_reg_plus_d
doesn't set %r1, just %r30. */
load_reg (2, - (actual_fsize + 20 + ((- actual_fsize) & ~0x7ff)),
STACK_POINTER_REGNUM);
} }
/* Reset stack pointer (and possibly frame pointer). The stack */ /* Reset stack pointer (and possibly frame pointer). The stack */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment