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.
#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;