diff options
author | J"orn Rennecke <amylaar@cygnus.co.uk> | 1998-12-13 00:59:38 +0000 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1998-12-12 17:59:38 -0700 |
commit | 213c4983301cafca0f6a45e0d4796fc38d25896f (patch) | |
tree | 6c128ab8626189788357d57002b58c1f70149579 | |
parent | 867cbbbe72ca5023755298073104de13f53625af (diff) | |
download | gcc-213c4983301cafca0f6a45e0d4796fc38d25896f.zip gcc-213c4983301cafca0f6a45e0d4796fc38d25896f.tar.gz gcc-213c4983301cafca0f6a45e0d4796fc38d25896f.tar.bz2 |
rtl.h (recompute_reg_usage): Add second argument.
* rtl.h (recompute_reg_usage): Add second argument.
* flow.c (recompute_reg_usage): Likewise.
* toplev.c (rest_of_compilation): Supply second argument to
recompute_reg_usage.
From-SVN: r24291
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/flow.c | 12 | ||||
-rw-r--r-- | gcc/rtl.h | 2 | ||||
-rw-r--r-- | gcc/toplev.c | 2 |
4 files changed, 16 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fd30aba..977d242 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -4,6 +4,11 @@ Sun Dec 13 00:24:14 1998 J"orn Rennecke <amylaar@cygnus.co.uk> + * rtl.h (recompute_reg_usage): Add second argument. + * flow.c (recompute_reg_usage): Likewise. + * toplev.c (rest_of_compilation): Supply second argument to + recompute_reg_usage. + * reload1.c (compute_use_by_pseudos): Allow reg_renumber[regno] < 0 after reload. @@ -4267,12 +4267,18 @@ count_reg_references (x) register allocators to prioritize pseudos for allocation to hard regs. More accurate reference counts generally lead to better register allocation. + F is the first insn to be scanned. + LOOP_STEP denotes how much loop_depth should be incremented per + loop nesting level in order to increase the ref count more for references + in a loop. + It might be worthwhile to update REG_LIVE_LENGTH, REG_BASIC_BLOCK and possibly other information which is used by the register allocators. */ void -recompute_reg_usage (f) +recompute_reg_usage (f, loop_step) rtx f; + int loop_step; { rtx insn; int i, max_reg; @@ -4295,9 +4301,9 @@ recompute_reg_usage (f) { /* Look for loop boundaries. */ if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_LOOP_END) - loop_depth--; + loop_depth -= loop_step; else if (NOTE_LINE_NUMBER (insn) == NOTE_INSN_LOOP_BEG) - loop_depth++; + loop_depth += loop_step; /* If we have LOOP_DEPTH == 0, there has been a bookkeeping error. Abort now rather than setting register status incorrectly. */ @@ -1394,7 +1394,7 @@ extern void stupid_life_analysis PROTO ((rtx, int, FILE *)); /* In flow.c */ extern void allocate_for_life_analysis PROTO ((void)); -extern void recompute_reg_usage PROTO ((rtx)); +extern void recompute_reg_usage PROTO ((rtx, int)); #ifdef BUFSIZ extern void dump_flow_info PROTO ((FILE *)); #endif diff --git a/gcc/toplev.c b/gcc/toplev.c index 5a1b0a8..6af4c82b 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -3929,7 +3929,7 @@ rest_of_compilation (decl) if (!obey_regdecls) TIMEVAR (local_alloc_time, { - recompute_reg_usage (insns); + recompute_reg_usage (insns, ! optimize_size); regclass (insns, max_reg_num ()); local_alloc (); }); |