2000-12-18 Bernd Schmidt <bernds@redhat.co.uk>
+ 2000-09-15 Bernd Schmidt <bernds@redhat.co.uk>
+ * optabs.c (emit_libcall_block): If target is a user variable,
+ copy to a temporary first.
+
2000-04-28 Kazu Hirata <kazu@hxi.com>
* h8300.c (function_epilogue): Clean up flags when the last insn
in a function is a barrier.
rtx result;
rtx equiv;
{
+ rtx final_dest = target;
rtx prev, next, first, last, insn;
+ /* If this is a reg with REG_USERVAR_P set, then it could possibly turn
+ into a MEM later. Protect the libcall block from this change. */
+ if (! REG_P (target) || REG_USERVAR_P (target))
+ target = gen_reg_rtx (GET_MODE (target));
+
/* look for any CALL_INSNs in this sequence, and attach a REG_EH_REGION
reg note to indicate that this call cannot throw. (Unless there is
already a REG_EH_REGION note.) */
!= CODE_FOR_nothing)
set_unique_reg_note (last, REG_EQUAL, copy_rtx (equiv));
+ if (final_dest != target)
+ emit_move_insn (final_dest, target);
+
if (prev == 0)
first = get_insns ();
else