OSDN Git Service

* tree-cfg.c (thread_jumps): Speed up by keeping a pointer to
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 8 Nov 2004 22:41:40 +0000 (22:41 +0000)
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 8 Nov 2004 22:41:40 +0000 (22:41 +0000)
the last used element in the worklist.

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

gcc/ChangeLog
gcc/tree-cfg.c

index ed764d2..c373c83 100644 (file)
@@ -1,5 +1,10 @@
 2004-11-08  Kazu Hirata  <kazu@cs.umass.edu>
 
+       * tree-cfg.c (thread_jumps): Speed up by keeping a pointer to
+       the last used element in the worklist.
+
+2004-11-08  Kazu Hirata  <kazu@cs.umass.edu>
+
        * tree-inline.c (remap_save_expr): Make it static.
        * tree-inline.h: Remove the corresponding prototype.
 
index 0e6b55d..8dfaffb 100644 (file)
@@ -3934,7 +3934,7 @@ thread_jumps (void)
   basic_block bb;
   bool retval = false;
   basic_block *worklist = xmalloc (sizeof (basic_block) * last_basic_block);
-  unsigned int size = 0;
+  basic_block *current = worklist;
 
   FOR_EACH_BB (bb)
     {
@@ -3974,17 +3974,15 @@ thread_jumps (void)
              && !bb_ann (e->src)->forwardable)
            {
              e->src->flags |= BB_VISITED;
-             worklist[size] = e->src;
-             size++;
+             *current++ = e->src;
            }
        }
     }
 
   /* Now let's drain WORKLIST.  */
-  while (size > 0)
+  while (worklist != current)
     {
-      size--;
-      bb = worklist[size];
+      bb = *--current;
 
       /* BB is no longer in WORKLIST, so clear BB_VISITED.  */
       bb->flags &= ~BB_VISITED;
@@ -4013,8 +4011,7 @@ thread_jumps (void)
                      && !bb_ann (f->src)->forwardable)
                    {
                      f->src->flags |= BB_VISITED;
-                     worklist[size] = f->src;
-                     size++;
+                     *current++ = f->src;
                    }
                }
            }