Commit fabd69e8 by Richard Kenner

(move_deaths): When have a multi-reg hard register, if don't find a

note, then recur for each individual hard register.

From-SVN: r10225
parent 1b4a2731
...@@ -10407,6 +10407,21 @@ move_deaths (x, from_cuid, to_insn, pnotes) ...@@ -10407,6 +10407,21 @@ move_deaths (x, from_cuid, to_insn, pnotes)
gen_rtx (REG, reg_raw_mode[i], i), gen_rtx (REG, reg_raw_mode[i], i),
REG_NOTES (where_dead)); REG_NOTES (where_dead));
} }
/* If we didn't find any note, and we have a multi-reg hard
register, then to be safe we must check for REG_DEAD notes
for each register other than the first. They could have
their own REG_DEAD notes lying around. */
else if (note == 0 && regno < FIRST_PSEUDO_REGISTER
&& HARD_REGNO_NREGS (regno, GET_MODE (x)) > 1)
{
int ourend = regno + HARD_REGNO_NREGS (regno, GET_MODE (x));
int i;
rtx oldnotes = 0;
for (i = regno + 1; i < ourend; i++)
move_deaths (gen_rtx (REG, reg_raw_mode[i], i),
from_cuid, to_insn, &oldnotes);
}
if (note != 0 && GET_MODE (XEXP (note, 0)) == GET_MODE (x)) if (note != 0 && GET_MODE (XEXP (note, 0)) == GET_MODE (x))
{ {
......
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