summaryrefslogtreecommitdiff
path: root/gcc/local-alloc.c
diff options
context:
space:
mode:
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1998-12-07 22:38:24 +0000
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>1998-12-07 22:38:24 +0000
commita1e9470d25d95b4bb5ae255e7e7697dc5bbfe841 (patch)
tree67ea70a71f5deccf9a008f1f761972d95862648a /gcc/local-alloc.c
parentf75dc4dee9e1f11883c3912527220c4043d0e688 (diff)
downloadgcc-a1e9470d25d95b4bb5ae255e7e7697dc5bbfe841.tar.gz
* local-alloc.c (block_alloc): Slightly retune heuristic to widen
qty lifetimes. Actually check in the local-alloc patch that goes along with this ChangeLog entry... git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@24171 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/local-alloc.c')
-rw-r--r--gcc/local-alloc.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/local-alloc.c b/gcc/local-alloc.c
index f112713b284..f7d12d2e1e0 100644
--- a/gcc/local-alloc.c
+++ b/gcc/local-alloc.c
@@ -1414,8 +1414,8 @@ block_alloc (b)
discourage the register allocator from creating false
dependencies.
- The adjustment by the value +-3 indicates precisely that
- this qty conflicts with qtys in the instructions immediately
+ The adjustment value is choosen to indicate that this qty
+ conflicts with all the qtys in the instructions immediately
before and after the lifetime of this qty.
Experiments have shown that higher values tend to hurt
@@ -1423,8 +1423,9 @@ block_alloc (b)
If allocation using the extended lifetime fails we will try
again with the qty's unadjusted lifetime. */
- int fake_birth = MAX (0, qty_birth[q] - 3);
- int fake_death = MIN (insn_number * 2 + 1, qty_death[q] + 3);
+ int fake_birth = MAX (0, qty_birth[q] - 2 + qty_birth[q] % 2);
+ int fake_death = MIN (insn_number * 2 + 1,
+ qty_death[q] + 2 - qty_death[q] % 2);
#endif
if (N_REG_CLASSES > 1)