Update REG_DEAD notes

From-SVN: r151720
This commit is contained in:
Christian Bruel 2009-09-15 15:15:51 +02:00
parent 384ed84dc0
commit af94453d35

View File

@ -376,11 +376,26 @@ do_replace (struct du_chain *chain, int reg)
INSN_VAR_LOCATION_LOC (chain->insn) = gen_rtx_UNKNOWN_VAR_LOC ();
else
{
rtx note;
*chain->loc = gen_raw_REG (GET_MODE (*chain->loc), reg);
if (regno >= FIRST_PSEUDO_REGISTER)
ORIGINAL_REGNO (*chain->loc) = regno;
REG_ATTRS (*chain->loc) = attr;
REG_POINTER (*chain->loc) = reg_ptr;
for (note = REG_NOTES (chain->insn); note; note = XEXP (note, 1))
{
if (REG_NOTE_KIND (note) == REG_DEAD
|| REG_NOTE_KIND (note) == REG_UNUSED)
{
rtx reg = XEXP (note, 0);
gcc_assert (HARD_REGISTER_P (reg));
if (REGNO (reg) == base_regno)
XEXP (note, 0) = *chain->loc;
}
}
}
df_insn_rescan (chain->insn);