aboutsummaryrefslogtreecommitdiff
path: root/gcc/calls.c
diff options
context:
space:
mode:
authorJohn David Anglin <dave@hiauly1.hia.nrc.ca>1999-08-25 07:38:23 +0000
committerJeff Law <law@gcc.gnu.org>1999-08-25 01:38:23 -0600
commit8bcafee35814af6bd664d44fa8246dd7db62d0b6 (patch)
treeee5801f54bd79aa6546e726471ba9037d0df2d23 /gcc/calls.c
parent4adf204e6b4fced663076c660b0895ab7b9fdeec (diff)
downloadgcc-8bcafee35814af6bd664d44fa8246dd7db62d0b6.zip
gcc-8bcafee35814af6bd664d44fa8246dd7db62d0b6.tar.gz
gcc-8bcafee35814af6bd664d44fa8246dd7db62d0b6.tar.bz2
calls.c (emit_call_1): Use call_pop/call_value_pop for all values of n_popped when...
* calls.c (emit_call_1): Use call_pop/call_value_pop for all values of n_popped when call/call_value are not defined. From-SVN: r28846
Diffstat (limited to 'gcc/calls.c')
-rw-r--r--gcc/calls.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/gcc/calls.c b/gcc/calls.c
index b646be8..3276fd9 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;