summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorcrux <crux@138bc75d-0d04-0410-961f-82ee72b054a4>1999-09-16 09:55:48 +0000
committercrux <crux@138bc75d-0d04-0410-961f-82ee72b054a4>1999-09-16 09:55:48 +0000
commite7dde9a81e08577ea6d105bd9633a74c755367c9 (patch)
treeadbe9409b3b98d855e824cd54b8b4424a5ee0c63 /gcc
parentb861fc902615ad92ff33c701dc2838f325467132 (diff)
downloadgcc-e7dde9a81e08577ea6d105bd9633a74c755367c9.tar.gz
Bugfix in order_regs_for_reload
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@29455 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/reload1.c41
2 files changed, 21 insertions, 25 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 40e358e463c..cb20deb9a93 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Thu Sep 16 10:53:36 1999 Bernd Schmidt <bernds@cygnus.co.uk>
+
+ * reload1.c (order_regs_for_reload): Move hard_reg_n_uses
+ computation out of loop over hard regs.
+
Wed Sep 15 21:37:06 1999 Mark Mitchell <mark@codesourcery.com>
* function.c (identify_blocks): Don't shadow a variable in an
diff --git a/gcc/reload1.c b/gcc/reload1.c
index 22533ec66b5..57b43d92cf0 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -4109,44 +4109,35 @@ order_regs_for_reload (chain)
COPY_HARD_REG_SET (bad_spill_regs, bad_spill_regs_global);
- for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
- {
- hard_reg_n_uses[i].regno = i;
- hard_reg_n_uses[i].uses = 0;
- }
-
/* Count number of uses of each hard reg by pseudo regs allocated to it
and then order them by decreasing use. */
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
{
- int j;
+ hard_reg_n_uses[i].regno = i;
+ hard_reg_n_uses[i].uses = 0;
/* Test the various reasons why we can't use a register for
spilling in this insn. */
if (fixed_regs[i]
|| REGNO_REG_SET_P (chain->live_before, i)
|| REGNO_REG_SET_P (chain->live_after, i))
- {
- SET_HARD_REG_BIT (bad_spill_regs, i);
- continue;
- }
+ SET_HARD_REG_BIT (bad_spill_regs, i);
+ }
- /* Now find out which pseudos are allocated to it, and update
- hard_reg_n_uses. */
- CLEAR_REG_SET (pseudos_counted);
+ /* Now compute hard_reg_n_uses. */
+ CLEAR_REG_SET (pseudos_counted);
- EXECUTE_IF_SET_IN_REG_SET
- (chain->live_before, FIRST_PSEUDO_REGISTER, j,
- {
- count_pseudo (hard_reg_n_uses, j);
- });
- EXECUTE_IF_SET_IN_REG_SET
- (chain->live_after, FIRST_PSEUDO_REGISTER, j,
- {
- count_pseudo (hard_reg_n_uses, j);
- });
- }
+ EXECUTE_IF_SET_IN_REG_SET
+ (chain->live_before, FIRST_PSEUDO_REGISTER, i,
+ {
+ count_pseudo (hard_reg_n_uses, i);
+ });
+ EXECUTE_IF_SET_IN_REG_SET
+ (chain->live_after, FIRST_PSEUDO_REGISTER, i,
+ {
+ count_pseudo (hard_reg_n_uses, i);
+ });
FREE_REG_SET (pseudos_counted);