aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1998-11-07 00:02:03 +0000
committerJeff Law <law@gcc.gnu.org>1998-11-06 17:02:03 -0700
commit8f5db3c19657340e6ad562e4c6d6551d32956360 (patch)
treed67603a3bd13ec372f33a235666da0c83d989f5c /gcc
parent80df65c95e51ff36d97aa13eed0d0e6a4fa1beee (diff)
downloadgcc-8f5db3c19657340e6ad562e4c6d6551d32956360.zip
gcc-8f5db3c19657340e6ad562e4c6d6551d32956360.tar.gz
gcc-8f5db3c19657340e6ad562e4c6d6551d32956360.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/reload1.c11
2 files changed, 17 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e420927..32e2fe8 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 <rth@cygnus.com>
* alpha.c (add_operand): Simplify the CONST_INT match.
diff --git a/gcc/reload1.c b/gcc/reload1.c
index ce574a1..0d587ae 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;
}
}