calls.c (emit_call_1): Use call_pop/call_value_pop for all values of n_popped when...
authorJohn David Anglin <dave@hiauly1.hia.nrc.ca>
Wed, 25 Aug 1999 07:38:23 +0000 (07:38 +0000)
committerJeff Law <law@gcc.gnu.org>
Wed, 25 Aug 1999 07:38:23 +0000 (01:38 -0600)
* 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
gcc/calls.c

index 9bcbab9e57ae8cd17c6eba79879bb665950a6436..825b632d1aa131d088f6d97b1e864c936a9a2765 100644 (file)
@@ -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.
index b646be8ba821eb8a87e9942699ee1ed51c9738e2..3276fd9efa88f3263e443e8147f85ddd77d43760 100644 (file)
@@ -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;