summaryrefslogtreecommitdiff
path: root/gnu/egcs
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/egcs')
-rw-r--r--gnu/egcs/gcc/protector.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/gnu/egcs/gcc/protector.c b/gnu/egcs/gcc/protector.c
index d5713f298e9..e8bf3f97aa5 100644
--- a/gnu/egcs/gcc/protector.c
+++ b/gnu/egcs/gcc/protector.c
@@ -2099,8 +2099,14 @@ push_frame_in_args (parms, push_size, boundary)
/* the operand related to the sweep variable */
if (AUTO_BASEPTR (XEXP (home, 0)) == frame_pointer_rtx)
{
- offset += push_size;
- XEXP (XEXP (home, 0), 1) = gen_rtx_CONST_INT (VOIDmode, offset);
+ if (XEXP (home, 0) == frame_pointer_rtx)
+ XEXP (home, 0) = plus_constant (frame_pointer_rtx,
+ push_size);
+ else {
+ offset += push_size;
+ XEXP (XEXP (home, 0), 1) = gen_rtx_CONST_INT (VOIDmode,
+ offset);
+ }
/* mark */
XEXP (home, 0)->used = 1;