aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorbjorn Granlund <tege@gnu.org>1992-10-19 22:26:11 +0000
committerTorbjorn Granlund <tege@gnu.org>1992-10-19 22:26:11 +0000
commitd2288d8d4f28b1d8a856924927771dbdef7edf4d (patch)
treea2c108579765e456023865b28e8191684418aecd
parent989d792e2a62fa16b2f0034a07179c7b73bca1f7 (diff)
downloadgcc-d2288d8d4f28b1d8a856924927771dbdef7edf4d.zip
gcc-d2288d8d4f28b1d8a856924927771dbdef7edf4d.tar.gz
gcc-d2288d8d4f28b1d8a856924927771dbdef7edf4d.tar.bz2
(output_epilogue): Restore sp's value if no frame pointer.
From-SVN: r2520
-rw-r--r--gcc/config/arm/arm.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 2beeae7..58908c4 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -918,6 +918,14 @@ output_epilogue (f, frame_size)
}
else
{
+ /* Restore stack pointer if necessary. */
+ if (frame_size)
+ {
+ operands[0] = operands[1] = stack_pointer_rtx;
+ operands[2] = gen_rtx (CONST_INT, VOIDmode, frame_size);
+ output_add_immediate (operands);
+ }
+
if (current_function_pretend_args_size == 0 && regs_ever_live[14])
{
print_multi_reg (f, "ldmfd\tsp!",