rtl.h (recompute_reg_usage): Add second argument.
authorJ"orn Rennecke <amylaar@cygnus.co.uk>
Sun, 13 Dec 1998 00:59:38 +0000 (00:59 +0000)
committerJeff Law <law@gcc.gnu.org>
Sun, 13 Dec 1998 00:59:38 +0000 (17:59 -0700)
* 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

gcc/ChangeLog
gcc/flow.c
gcc/rtl.h
gcc/toplev.c

index fd30ababa6f5a3f33936b7323adcc908c0a053a8..977d242533ac4460595105714ec25db5281ea27f 100644 (file)
@@ -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.
 
index add9d1257e62127c7c45a70d5d9c962180cb386f..0a47c0e013a276068a1c10539fdc98a7147dcc04 100644 (file)
@@ -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.  */
index 95ddbd1617c234b6ee9079b3a6d8e3b4248ab170..e29767fe4815bba3fb471cc78a029740ff0ecef9 100644 (file)
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -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
index 5a1b0a8ea6889c790f8dce4f599cd95b688fb76a..6af4c82b8004c2a84f771ec4dbcf73ecda46b85a 100644 (file)
@@ -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 ();
             });