]> gcc.gnu.org Git - gcc.git/commitdiff
loop.c (recombine_givs): Set ix field after sorting.
authorJ"orn Rennecke <amylaar@cygnus.co.uk>
Wed, 18 Aug 1999 22:35:14 +0000 (22:35 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Wed, 18 Aug 1999 22:35:14 +0000 (23:35 +0100)
* loop.c (recombine_givs): Set ix field after sorting.
(recombine_givs): Remove bogus index / giv lockstep looping.

From-SVN: r28757

gcc/ChangeLog
gcc/loop.c

index 7cc2f1c46a931f443cebe807c56d3792bf9ed346..d1ec3f57aecb861eb38d36d3dd23efe7d633dd57 100644 (file)
@@ -1,3 +1,8 @@
+Wed Aug 18 23:31:57 1999  J"orn Rennecke <amylaar@cygnus.co.uk>
+
+       * loop.c (recombine_givs): Set ix field after sorting.
+       (recombine_givs): Remove bogus index / giv lockstep looping.
+
 Wed Aug 18 18:20:40 1999  Bernd Schmidt  <bernds@cygnus.co.uk>
 
        * expmed.c (emit_store_flag): If UNSIGNEDP, call unsigned_condition
index 97461014ea04cd63b9cdb9c28504528328f16c04..9c2ed73d4dfa5d7df2114802f78373a7a2f2dbc1 100644 (file)
@@ -7218,16 +7218,18 @@ recombine_givs (bl, loop_start, loop_end, unroll_p)
       for (p = v->insn; INSN_UID (p) >= max_uid_for_loop; )
        p = PREV_INSN (p);
       stats[i].start_luid = INSN_LUID (p);
-      v->ix = i;
       i++;
     }
 
   qsort (stats, giv_count, sizeof(*stats), cmp_recombine_givs_stats);
 
-  /* Do the actual most-recently-used recombination.  */
+  /* Set up the ix field for each giv in stats to name
+     the corresponding index into stats, and
+     do the actual most-recently-used recombination.  */
   for (last_giv = 0, i = giv_count - 1; i >= 0; i--)
     {
       v = giv_array[stats[i].giv_number];
+      v->ix = i;
       if (v->same)
        {
          struct induction *old_same = v->same;
@@ -7273,8 +7275,9 @@ recombine_givs (bl, loop_start, loop_end, unroll_p)
   ends_need_computing = 0;
   /* For each DEST_REG giv, compute lifetime starts, and try to compute
      lifetime ends from regscan info.  */
-  for (i = 0, v = bl->giv; v; v = v->next_iv)
+  for (i = giv_count - 1; i >= 0; i--)
     {
+      v = giv_array[stats[i].giv_number];
       if (v->ignore)
        continue;
       if (v->giv_type == DEST_ADDR)
@@ -7343,7 +7346,6 @@ recombine_givs (bl, loop_start, loop_end, unroll_p)
                }
            }
        }
-      i++;
     }
 
   /* If the regscan information was unconclusive for one or more DEST_REG
@@ -7367,21 +7369,22 @@ recombine_givs (bl, loop_start, loop_end, unroll_p)
 
   /* Set start_luid back to the last insn that sets the giv.  This allows
      more combinations.  */
-  for (i = 0, v = bl->giv; v; v = v->next_iv)
+  for (i = giv_count - 1; i >= 0; i--)
     {
+      v = giv_array[stats[i].giv_number];
       if (v->ignore)
        continue;
       if (INSN_UID (v->insn) < max_uid_for_loop)
        stats[i].start_luid = INSN_LUID (v->insn);
-      i++;
     }
 
   /* Now adjust lifetime ends by taking combined givs into account.  */
-  for (i = 0, v = bl->giv; v; v = v->next_iv)
+  for (i = giv_count - 1; i >= 0; i--)
     {
       unsigned luid;
       int j;
 
+      v = giv_array[stats[i].giv_number];
       if (v->ignore)
        continue;
       if (v->same && ! v->same->ignore)
@@ -7393,7 +7396,6 @@ recombine_givs (bl, loop_start, loop_end, unroll_p)
              > (unsigned) stats[j].end_luid - stats[j].start_luid)
            stats[j].end_luid = luid;
        }
-      i++;
     }
 
   qsort (stats, giv_count, sizeof(*stats), cmp_recombine_givs_stats);
This page took 0.080718 seconds and 5 git commands to generate.