mirror of
git://gcc.gnu.org/git/gcc.git
synced 2024-12-17 11:39:27 +08:00
flow.c (find_auto_inc): Don't autoinc eliminable registers.
* flow.c (find_auto_inc): Don't autoinc eliminable registers. If the original source is dead in the incr insn, it's dead now. From-SVN: r33150
This commit is contained in:
parent
b1ba4cc3a8
commit
6e62809688
@ -1,3 +1,8 @@
|
||||
2000-04-14 Richard Henderson <rth@cygnus.com>
|
||||
|
||||
* flow.c (find_auto_inc): Don't autoinc eliminable registers.
|
||||
If the original source is dead in the incr insn, it's dead now.
|
||||
|
||||
Fri Apr 14 07:40:32 2000 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
|
||||
|
||||
* stor-layout.c (layout_decl): Properly compare KNOWN_ALIGN to
|
||||
|
10
gcc/flow.c
10
gcc/flow.c
@ -4309,7 +4309,10 @@ find_auto_inc (pbi, x, insn)
|
||||
? (offset ? PRE_INC : POST_INC)
|
||||
: (offset ? PRE_DEC : POST_DEC));
|
||||
|
||||
if (dead_or_set_p (incr, addr))
|
||||
if (dead_or_set_p (incr, addr)
|
||||
/* Mustn't autoinc an eliminable register. */
|
||||
&& (regno >= FIRST_PSEUDO_REGISTER
|
||||
|| ! TEST_HARD_REG_BIT (elim_reg_set, regno)))
|
||||
{
|
||||
/* This is the simple case. Try to make the auto-inc. If
|
||||
we can't, we are done. Otherwise, we will do any
|
||||
@ -4410,6 +4413,11 @@ find_auto_inc (pbi, x, insn)
|
||||
register. */
|
||||
if (SET_DEST (set) == addr)
|
||||
{
|
||||
/* If the original source was dead, it's dead now. */
|
||||
rtx note = find_reg_note (incr, REG_DEAD, NULL_RTX);
|
||||
if (note && XEXP (note, 0) != addr)
|
||||
SET_REGNO_REG_SET (pbi->new_dead, REGNO (XEXP (note, 0)));
|
||||
|
||||
PUT_CODE (incr, NOTE);
|
||||
NOTE_LINE_NUMBER (incr) = NOTE_INSN_DELETED;
|
||||
NOTE_SOURCE_FILE (incr) = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user