diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/regrename.c | 11 |
2 files changed, 13 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b8625b7..4ff995e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-11-09 Bernd Schmidt <bernds@redhat.co.uk> + + * regrename.c (build_def_use): Mark contents of REG_INC notes as + needing replacement. + 2000-11-09 Jan van Male <jan.vanmale@fenk.wau.nl> * c-tree.texi: Fix typos. diff --git a/gcc/regrename.c b/gcc/regrename.c index 5078585..b3aa6c2 100644 --- a/gcc/regrename.c +++ b/gcc/regrename.c @@ -714,10 +714,15 @@ build_def_use (bb, regs_used) scan_rtx (insn, loc, class, mark_read, type); } - /* Step 4: Close chains for registers that die here. */ + /* Step 4: Close chains for registers that die here. + Also record updates for REG_INC notes. */ for (note = REG_NOTES (insn); note; note = XEXP (note, 1)) - if (REG_NOTE_KIND (note) == REG_DEAD) - scan_rtx (insn, &XEXP (note, 0), NO_REGS, terminate_dead, OP_IN); + { + if (REG_NOTE_KIND (note) == REG_DEAD) + scan_rtx (insn, &XEXP (note, 0), NO_REGS, terminate_dead, OP_IN); + else if (REG_NOTE_KIND (note) == REG_INC) + scan_rtx (insn, &XEXP (note, 0), ALL_REGS, mark_read, OP_INOUT); + } /* Step 4B: If this is a call, any chain live at this point requires a caller-saved reg. */ |