diff options
-rw-r--r-- | gcc/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/reload1.c | 15 |
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; |