diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/reload1.c | 9 |
2 files changed, 13 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2aeb7e9..417319d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Fri Mar 12 12:35:01 1999 Jim Wilson <wilson@cygnus.com> + + * reload1.c (calculate_needs_all_insns): When ignore equivalence + setting insn, clear need_elim, need_reload, and need_operand_change. + Fri Mar 12 07:54:43 1999 Bruce Korb <korb@datadesign.com> * fixinc/fixinc.*: Some changes from the fixincl-branch diff --git a/gcc/reload1.c b/gcc/reload1.c index 9d13325..4402831 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -1387,7 +1387,14 @@ calculate_needs_all_insns (global) if (set && GET_CODE (SET_DEST (set)) == REG && reg_renumber[REGNO (SET_DEST (set))] < 0 && reg_equiv_constant[REGNO (SET_DEST (set))]) - continue; + { + /* Must clear out the shortcuts, in case they were set last + time through. */ + chain->need_elim = 0; + chain->need_reload = 0; + chain->need_operand_change = 0; + continue; + } /* If needed, eliminate any eliminable registers. */ if (num_eliminable || num_eliminable_invariants) |