From 8bcafee35814af6bd664d44fa8246dd7db62d0b6 Mon Sep 17 00:00:00 2001
From: John David Anglin <dave@hiauly1.hia.nrc.ca>
Date: Wed, 25 Aug 1999 07:38:23 +0000
Subject: [PATCH] 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
---
 gcc/ChangeLog |  5 +++++
 gcc/calls.c   | 11 ++++++++++-
 2 files changed, 15 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 9bcbab9e57ae..825b632d1aa1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Wed Aug 25 01:36:11 1999  John David Anglin  <dave@hiauly1.hia.nrc.ca>
+
+	* calls.c (emit_call_1): Use call_pop/call_value_pop for all values
+	of n_popped when call/call_value are not defined.
+
 Wed Aug 25 01:25:14 1999  Jeffrey A Law  (law@cygnus.com)
 
 	* tm.texi: GNU CC -> GCC conversion.
diff --git a/gcc/calls.c b/gcc/calls.c
index b646be8ba821..3276fd9efa88 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;
-- 
GitLab