OSDN Git Service

* tree-cfg.c (thread_jumps): Speed up by putting basic blocks
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Oct 2004 17:56:04 +0000 (17:56 +0000)
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Oct 2004 17:56:04 +0000 (17:56 +0000)
into worklist instead of their indexes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@89461 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-cfg.c

index 0c5445f..7a23a2d 100644 (file)
@@ -1,5 +1,10 @@
 2004-10-22  Kazu Hirata  <kazu@cs.umass.edu>
 
+       * tree-cfg.c (thread_jumps): Speed up by putting basic blocks
+       into worklist instead of their indexes.
+
+2004-10-22  Kazu Hirata  <kazu@cs.umass.edu>
+
        * alias.c, basic-block.h, cgraphunit.c, combine.c, domwalk.h,
        final.c, gengtype.c, genpreds.c, ggc-page.c, insn-notes.def,
        lambda-code.c, loop-unroll.c, modulo-sched.c, pointer-set.c,
index d58bb13..0bf7b16 100644 (file)
@@ -3942,7 +3942,7 @@ thread_jumps (void)
 {
   basic_block bb;
   bool retval = false;
-  int *worklist = xmalloc (sizeof (int) * last_basic_block);
+  basic_block *worklist = xmalloc (sizeof (basic_block) * last_basic_block);
   unsigned int size = 0;
 
   FOR_EACH_BB (bb)
@@ -3951,11 +3951,11 @@ thread_jumps (void)
       bb->flags &= ~BB_VISITED;
     }
 
-  /* Initialize WORKLIST by putting the indexes of non-forwarder
-     blocks that immediately precede forwarder blocks because those
-     are the ones that we know we can thread jumps from.  We use
-     BB_VISITED to indicate that whether a given basic block is in
-     WORKLIST or not, thereby avoiding duplicates in WORKLIST.  */
+  /* Initialize WORKLIST by putting non-forwarder blocks that
+     immediately precede forwarder blocks because those are the ones
+     that we know we can thread jumps from.  We use BB_VISITED to
+     indicate whether a given basic block is in WORKLIST or not,
+     thereby avoiding duplicates in WORKLIST.  */
   FOR_EACH_BB (bb)
     {
       edge_iterator ei;
@@ -3981,7 +3981,7 @@ thread_jumps (void)
              && (e->src->flags & BB_VISITED) == 0)
            {
              e->src->flags |= BB_VISITED;
-             worklist[size] = e->src->index;
+             worklist[size] = e->src;
              size++;
            }
        }
@@ -3991,14 +3991,7 @@ thread_jumps (void)
   while (size > 0)
     {
       size--;
-      bb = BASIC_BLOCK (worklist[size]);
-
-      /* Check if BB is NULL because BB may have been deleted.  This
-        could happen if BB is originally a non-forwarder block, later
-        becomes a forwarder block, and it is deleted when a jump is
-        threaded through it.  */
-      if (!bb)
-       continue;
+      bb = worklist[size];
 
       /* BB->INDEX is not longer in WORKLIST, so clear BB_VISITED.  */
       bb->flags &= ~BB_VISITED;
@@ -4029,7 +4022,7 @@ thread_jumps (void)
                      && (f->src->flags & BB_VISITED) == 0)
                    {
                      f->src->flags |= BB_VISITED;
-                     worklist[size] = f->src->index;
+                     worklist[size] = f->src;
                      size++;
                    }
                }