diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 2001-12-15 23:00:00 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2001-12-15 18:00:00 -0500 |
commit | f79a65c0870717e4f66fcc204b434aed182d4316 (patch) | |
tree | b14ba91649818f4412dce925a0216bc09c169979 /gcc/calls.c | |
parent | b0287a9034ba44e3a3dae9728a765ab1e03e5450 (diff) | |
download | gcc-f79a65c0870717e4f66fcc204b434aed182d4316.zip gcc-f79a65c0870717e4f66fcc204b434aed182d4316.tar.gz gcc-f79a65c0870717e4f66fcc204b434aed182d4316.tar.bz2 |
calls.c (emit_call_1): If ECF_SP_DEPRESSED, pretend have adjusted for rounded_stack_size.
* calls.c (emit_call_1): If ECF_SP_DEPRESSED, pretend have adjusted
for rounded_stack_size.
From-SVN: r48049
Diffstat (limited to 'gcc/calls.c')
-rw-r--r-- | gcc/calls.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/gcc/calls.c b/gcc/calls.c index c7f5d99..6a22820 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -646,9 +646,12 @@ emit_call_1 (funexp, fndecl, funtype, stack_size, rounded_stack_size, If returning from the subroutine does pop the args, indicate that the stack pointer will be changed. */ - if (rounded_stack_size != 0 && ! (ecf_flags & ECF_SP_DEPRESSED)) + if (rounded_stack_size != 0) { - if (flag_defer_pop && inhibit_defer_pop == 0 + if (ecf_flags & ECF_SP_DEPRESSED) + /* Just pretend we did the pop. */ + stack_pointer_delta -= rounded_stack_size; + else if (flag_defer_pop && inhibit_defer_pop == 0 && ! (ecf_flags & (ECF_CONST | ECF_PURE))) pending_stack_adjust += rounded_stack_size; else |