aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/reload1.c15
2 files changed, 8 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 91bb220..a4423d0 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,8 @@
1999-12-14 Bernd Schmidt <bernds@cygnus.co.uk>
+ * reload1.c (reload): Can't avoid select_reload_regs/finish_spills
+ if something changed. Back out that part of yesterday's changes.
+
* loop.c (loop_max_reg): New static variable.
(loop_optimize): Initialize it. Eliminate one unnecessary call to
max_reg_num.
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 4bdcaf8..bedcebb 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -948,18 +948,13 @@ reload (first, global, dumpfile)
}
}
- /* No point in trying to select reload registers if we know we're
- going to re-run everything again. */
- if (! something_changed)
- {
- select_reload_regs (dumpfile);
+ select_reload_regs (dumpfile);
+ if (failure)
+ goto failed;
- if (failure)
- goto failed;
+ if (insns_need_reload != 0 || did_spill)
+ something_changed |= finish_spills (global, dumpfile);
- if (insns_need_reload != 0 || did_spill)
- something_changed |= finish_spills (global, dumpfile);
- }
if (! something_changed)
break;