diff options
author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-08-25 07:38:23 +0000 |
---|---|---|
committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-08-25 07:38:23 +0000 |
commit | ec596f3b63bf2acd41a662c47fc5d1b71d53576c (patch) | |
tree | ee5801f54bd79aa6546e726471ba9037d0df2d23 /gcc/calls.c | |
parent | 6f66aecbeb8f743688b0728a7217a0c2cdab780b (diff) | |
download | gcc-ec596f3b63bf2acd41a662c47fc5d1b71d53576c.tar.gz |
* calls.c (emit_call_1): Use call_pop/call_value_pop for all values
of n_popped when call/call_value are not defined.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28846 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/calls.c')
-rw-r--r-- | gcc/calls.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/gcc/calls.c b/gcc/calls.c index b646be8ba82..3276fd9efa8 100644 --- a/gcc/calls.c +++ b/gcc/calls.c @@ -405,7 +405,16 @@ emit_call_1 (funexp, fndecl, funtype, stack_size, rounded_stack_size, #ifndef ACCUMULATE_OUTGOING_ARGS #if defined (HAVE_call_pop) && defined (HAVE_call_value_pop) - if (HAVE_call_pop && HAVE_call_value_pop && n_popped > 0) +/* If the target has "call" or "call_value" insns, then prefer them + if no arguments are actually popped. If the target does not have + "call" or "call_value" insns, then we must use the popping versions + even if the call has no arguments to pop. */ +#if defined (HAVE_call) && defined (HAVE_call_value) + if (HAVE_call && HAVE_call_value && HAVE_call_pop && HAVE_call_value_pop + && n_popped > 0) +#else + if (HAVE_call_pop && HAVE_call_value_pop) +#endif { rtx n_pop = GEN_INT (n_popped); rtx pat; |