(distribute_notes...
(distribute_notes, case REG_UNUSED): Ignore notes when from_insn != i3 only if the notes would remain as REG_UNUSED notes. From-SVN: r7942
This commit is contained in:
parent
0179115349
commit
07d0cbddd4
@ -10342,10 +10342,7 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1)
|
|||||||
switch (REG_NOTE_KIND (note))
|
switch (REG_NOTE_KIND (note))
|
||||||
{
|
{
|
||||||
case REG_UNUSED:
|
case REG_UNUSED:
|
||||||
/* If this note is from any insn other than i3, then we have no
|
/* Any clobbers for i3 may still exist, and so we must process
|
||||||
use for it, and must ignore it.
|
|
||||||
|
|
||||||
Any clobbers for i3 may still exist, and so we must process
|
|
||||||
REG_UNUSED notes from that insn.
|
REG_UNUSED notes from that insn.
|
||||||
|
|
||||||
Any clobbers from i2 or i1 can only exist if they were added by
|
Any clobbers from i2 or i1 can only exist if they were added by
|
||||||
@ -10355,14 +10352,18 @@ distribute_notes (notes, from_insn, i3, i2, elim_i2, elim_i1)
|
|||||||
if it is for the same register as the original i3 dest.
|
if it is for the same register as the original i3 dest.
|
||||||
In that case, we will notice that the register is set in i3,
|
In that case, we will notice that the register is set in i3,
|
||||||
and then add a REG_UNUSED note for the destination of i3, which
|
and then add a REG_UNUSED note for the destination of i3, which
|
||||||
is wrong. */
|
is wrong. However, it is possible to have REG_UNUSED notes from
|
||||||
if (from_insn != i3)
|
i2 or i1 for register which were both used and clobbered, so
|
||||||
break;
|
we keep notes from i2 or i1 if they will turn into REG_DEAD
|
||||||
|
notes. */
|
||||||
|
|
||||||
/* If this register is set or clobbered in I3, put the note there
|
/* If this register is set or clobbered in I3, put the note there
|
||||||
unless there is one already. */
|
unless there is one already. */
|
||||||
else if (reg_set_p (XEXP (note, 0), PATTERN (i3)))
|
if (reg_set_p (XEXP (note, 0), PATTERN (i3)))
|
||||||
{
|
{
|
||||||
|
if (from_insn != i3)
|
||||||
|
break;
|
||||||
|
|
||||||
if (! (GET_CODE (XEXP (note, 0)) == REG
|
if (! (GET_CODE (XEXP (note, 0)) == REG
|
||||||
? find_regno_note (i3, REG_UNUSED, REGNO (XEXP (note, 0)))
|
? find_regno_note (i3, REG_UNUSED, REGNO (XEXP (note, 0)))
|
||||||
: find_reg_note (i3, REG_UNUSED, XEXP (note, 0))))
|
: find_reg_note (i3, REG_UNUSED, XEXP (note, 0))))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user