From ea1637e9e59bc8aadbe3636d710aba3d12a43b75 Mon Sep 17 00:00:00 2001 From: "J\"orn Rennecke" Date: Thu, 12 Aug 1999 22:53:28 +0000 Subject: [PATCH] global.c (prune_preferences): Move some invariants out of the inner loop. * global.c (prune_preferences): Move some invariants out of the inner loop. From-SVN: r28691 --- gcc/ChangeLog | 5 +++++ gcc/global.c | 20 +++++++++++--------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6e4f3a7cc8a..bdf2b891d5c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Thu Aug 12 23:51:04 1999 J"orn Rennecke + + * global.c (prune_preferences): Move some invariants out of the + inner loop. + Thu Aug 12 15:30:29 1999 Jesse Perry (jap@unx.dec.com) * configure.in (alpha*-dec-osf*): Add osf5. diff --git a/gcc/global.c b/gcc/global.c index 0c5b050db98..1ac0f24c3f2 100644 --- a/gcc/global.c +++ b/gcc/global.c @@ -864,7 +864,7 @@ prune_preferences () for (i = max_allocno - 1; i >= 0; i--) { - HARD_REG_SET temp; + HARD_REG_SET temp, temp2; allocno = allocno_order[i]; COPY_HARD_REG_SET (temp, hard_reg_conflicts[allocno]); @@ -882,25 +882,27 @@ prune_preferences () AND_COMPL_HARD_REG_SET (hard_reg_copy_preferences[allocno], temp); AND_COMPL_HARD_REG_SET (hard_reg_full_preferences[allocno], temp); - CLEAR_HARD_REG_SET (regs_someone_prefers[allocno]); - /* Merge in the preferences of lower-priority registers (they have already been pruned). If we also prefer some of those registers, don't exclude them unless we are of a smaller size (in which case we want to give the lower-priority allocno the first chance for these registers). */ + CLEAR_HARD_REG_SET (temp); + CLEAR_HARD_REG_SET (temp2); for (j = i + 1; j < max_allocno; j++) if (CONFLICTP (allocno, allocno_order[j]) || CONFLICTP (allocno_order[j], allocno)) { - COPY_HARD_REG_SET (temp, - hard_reg_full_preferences[allocno_order[j]]); if (allocno_size[allocno_order[j]] <= allocno_size[allocno]) - AND_COMPL_HARD_REG_SET (temp, - hard_reg_full_preferences[allocno]); - - IOR_HARD_REG_SET (regs_someone_prefers[allocno], temp); + IOR_HARD_REG_SET (temp, + hard_reg_full_preferences[allocno_order[j]]); + else + IOR_HARD_REG_SET (temp2, + hard_reg_full_preferences[allocno_order[j]]); } + AND_COMPL_HARD_REG_SET (temp, hard_reg_full_preferences[allocno]); + IOR_HARD_REG_SET (temp, temp2); + COPY_HARD_REG_SET (regs_someone_prefers[allocno], temp); } }