diff options
Diffstat (limited to 'gnu/egcs')
-rw-r--r-- | gnu/egcs/gcc/protector.c | 10 |
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; |