From: Jeffrey A Law Date: Sat, 7 Nov 1998 00:02:03 +0000 (+0000) Subject: reload1.c (reload): If we can not perform a particular elimination when we thought... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8f5db3c19657340e6ad562e4c6d6551d32956360;p=gcc.git reload1.c (reload): If we can not perform a particular elimination when we thought we could earlier... * reload1.c (reload): If we can not perform a particular elimination when we thought we could earlier, then we must always iterate through the loop at least one more time. x86 should bootstrap with -O9 -fomit-frame-pointer again. From-SVN: r23552 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e4209278664..32e2fe80a5d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Sat Nov 7 00:54:55 1998 Jeffrey A Law (law@cygnus.com) + + * reload1.c (reload): If we can not perform a particular elimination + when we thought we could earlier, then we must always iterate through + the loop at least one more time. + Fri Nov 6 19:37:33 1998 Richard Henderson * alpha.c (add_operand): Simplify the CONST_INT match. diff --git a/gcc/reload1.c b/gcc/reload1.c index ce574a15e37..0d587ae4040 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -927,6 +927,17 @@ reload (first, global, dumpfile) { spill_hard_reg (i, dumpfile, 1); did_spill = 1; + + /* Regardless of the state of spills, if we previously had + a register that we thought we could eliminate, but no can + not eliminate, we must run another pass. + + Consider pseudos which have an entry in reg_equiv_* which + reference an eliminable register. We must make another pass + to update reg_equiv_* so that we do not substitute in the + old value from when we thought the elimination could be + performed. */ + something_changed = 1; } }