tree-cfg.c (thread_jumps): Speed up by pretending to have ENTRY_BLOCK_PTR in worklist.
authorKazu Hirata <kazu@cs.umass.edu>
Wed, 27 Oct 2004 18:24:13 +0000 (18:24 +0000)
committerKazu Hirata <kazu@gcc.gnu.org>
Wed, 27 Oct 2004 18:24:13 +0000 (18:24 +0000)
* tree-cfg.c (thread_jumps): Speed up by pretending to have
ENTRY_BLOCK_PTR in worklist.

From-SVN: r89699

gcc/ChangeLog
gcc/tree-cfg.c

index 8f3324be4fb4901e225e8941e75c2ebc665ca30a..fcafd5f75bb476d01cba229665516a1a8a7c57ac 100644 (file)
@@ -1,3 +1,8 @@
+2004-10-27  Kazu Hirata  <kazu@cs.umass.edu>
+
+       * tree-cfg.c (thread_jumps): Speed up by pretending to have
+       ENTRY_BLOCK_PTR in worklist.
+
 2004-10-27  Kazu Hirata  <kazu@cs.umass.edu>
 
        * tree-ssa-dce.c (mark_stmt_if_obviously_necessary)
index a9631249c5e7aad4087d86df7ea3274cded62309..4492daa1e726b940292c99d1a294122df0249746 100644 (file)
@@ -3949,6 +3949,10 @@ thread_jumps (void)
       bb->flags &= ~BB_VISITED;
     }
 
+  /* We pretend to have ENTRY_BLOCK_PTR in WORKLIST.  This way,
+     ENTRY_BLOCK_PTR will never be entered into WORKLIST.  */
+  ENTRY_BLOCK_PTR->flags |= BB_VISITED;
+
   /* 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
@@ -3973,8 +3977,6 @@ thread_jumps (void)
          /* We are not interested in threading jumps from a forwarder
             block.  */
          if (!bb_ann (e->src)->forwardable
-             /* We don't want to visit ENTRY_BLOCK_PTR.  */
-             && e->src->index >= 0
              /* We don't want to put a duplicate into WORKLIST.  */
              && (e->src->flags & BB_VISITED) == 0)
            {
@@ -4014,8 +4016,6 @@ thread_jumps (void)
                  /* We are not interested in threading jumps from a
                     forwarder block.  */
                  if (!bb_ann (f->src)->forwardable
-                     /* We don't want to visit ENTRY_BLOCK_PTR.  */
-                     && f->src->index >= 0
                      /* We don't want to put a duplicate into WORKLIST.  */
                      && (f->src->flags & BB_VISITED) == 0)
                    {
@@ -4028,6 +4028,8 @@ thread_jumps (void)
        }
     }
 
+  ENTRY_BLOCK_PTR->flags &= ~BB_VISITED;
+
   free (worklist);
 
   return retval;