Commit 07edd4c5 by Hans-Peter Nilsson Committed by Jeff Law

optabs.c (emit_libcall_block): Remove spurious REG_EQUAL notes from the insn…

optabs.c (emit_libcall_block): Remove spurious REG_EQUAL notes from the insn where REG_RETVAL is added.

        * optabs.c (emit_libcall_block): Remove spurious REG_EQUAL notes
        from the insn where REG_RETVAL is added.
        (emit_no_conflict_block): Ditto.

From-SVN: r32935
parent 98dc7b59
Wed Apr 5 12:35:18 2000 Hans-Peter Nilsson <hp@axis.com>
* optabs.c (emit_libcall_block): Remove spurious REG_EQUAL notes
from the insn where REG_RETVAL is added.
(emit_no_conflict_block): Ditto.
Wed Apr 5 18:03:31 2000 Toshiyasu Morita (toshi.morita@sega.com) Wed Apr 5 18:03:31 2000 Toshiyasu Morita (toshi.morita@sega.com)
J"orn Rennecke <amylaar@cygnus.co.uk> J"orn Rennecke <amylaar@cygnus.co.uk>
......
...@@ -2699,7 +2699,16 @@ emit_no_conflict_block (insns, target, op0, op1, equiv) ...@@ -2699,7 +2699,16 @@ emit_no_conflict_block (insns, target, op0, op1, equiv)
set_unique_reg_note (last, REG_EQUAL, equiv); set_unique_reg_note (last, REG_EQUAL, equiv);
} }
else else
last = get_last_insn (); {
last = get_last_insn ();
/* Remove any existing REG_EQUAL note from "last", or else it will
be mistaken for a note referring to the full contents of the
alleged libcall value when found together with the REG_RETVAL
note added below. An existing note can come from an insn
expansion at "last". */
remove_note (last, find_reg_note (last, REG_EQUAL, NULL_RTX));
}
if (prev == 0) if (prev == 0)
first = get_insns (); first = get_insns ();
...@@ -2810,6 +2819,15 @@ emit_libcall_block (insns, target, result, equiv) ...@@ -2810,6 +2819,15 @@ emit_libcall_block (insns, target, result, equiv)
if (mov_optab->handlers[(int) GET_MODE (target)].insn_code if (mov_optab->handlers[(int) GET_MODE (target)].insn_code
!= CODE_FOR_nothing) != CODE_FOR_nothing)
set_unique_reg_note (last, REG_EQUAL, copy_rtx (equiv)); set_unique_reg_note (last, REG_EQUAL, copy_rtx (equiv));
else
{
/* Remove any existing REG_EQUAL note from "last", or else it will
be mistaken for a note referring to the full contents of the
libcall value when found together with the REG_RETVAL note added
below. An existing note can come from an insn expansion at
"last". */
remove_note (last, find_reg_note (last, REG_EQUAL, NULL_RTX));
}
if (prev == 0) if (prev == 0)
first = get_insns (); first = get_insns ();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment