From: bernds Date: Fri, 10 Nov 2000 10:44:42 +0000 (+0000) Subject: Fix REG_INC note handling in register renamer. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=47dcd064882525904b9849607675e10fb09fa33b;p=thirdparty%2Fgcc.git Fix REG_INC note handling in register renamer. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@37364 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b8625b7691a3..4ff995ebf111 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-11-09 Bernd Schmidt + + * regrename.c (build_def_use): Mark contents of REG_INC notes as + needing replacement. + 2000-11-09 Jan van Male * c-tree.texi: Fix typos. diff --git a/gcc/regrename.c b/gcc/regrename.c index 5078585647ee..b3aa6c2f32a8 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. */