]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fix a vax failure
authorBernd Schmidt <bernds@redhat.co.uk>
Fri, 22 Dec 2000 14:55:10 +0000 (14:55 +0000)
committerBernd Schmidt <bernds@gcc.gnu.org>
Fri, 22 Dec 2000 14:55:10 +0000 (14:55 +0000)
From-SVN: r38462

gcc/ChangeLog
gcc/calls.c

index f54aa89f70e3307ef3ba71bf025ccaa8f1f477d3..d19ab0a9d3676c790ba5e08d1039da480d1e3515 100644 (file)
@@ -1,5 +1,8 @@
 2000-12-22  Bernd Schmidt  <bernds@redhat.co.uk>
 
+       * calls.c (emit_call_1): Fall back to call_pop/call_value_pop if no
+       non-popping calls are available.
+
        * flow.c (propagate_block): Use flow_delete_insn instead of
        NOTEifying a dead ADDR_VEC.
 
index d0153a3d1249bbf5d3549aead9df22c51e14d6f1..36a5d154138bd7508c39e4ca6122fa45ae390e7b 100644 (file)
@@ -405,7 +405,15 @@ 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 (HAVE_call_pop && HAVE_call_value_pop
+#if defined (HAVE_call) && defined (HAVE_call_value)
+      && (n_popped > 0 || ! HAVE_call || ! HAVE_call_value)
+#endif
+      )
     {
       rtx n_pop = GEN_INT (n_popped);
       rtx pat;