flow.c (delete_unreachable_blocks): Mark blocks as they are put on to the worklist...
authorRichard Henderson <rth@cygnus.com>
Thu, 4 Mar 1999 15:01:06 +0000 (07:01 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Thu, 4 Mar 1999 15:01:06 +0000 (07:01 -0800)
        * flow.c (delete_unreachable_blocks): Mark blocks as they
        are put on to the worklist, not as they are taken off.

From-SVN: r25584

gcc/ChangeLog
gcc/flow.c

index 59a22f1..0a6bf91 100644 (file)
@@ -1,3 +1,8 @@
+Thu Mar  4 15:00:35 1999  Richard Henderson  <rth@cygnus.com>
+
+       * flow.c (delete_unreachable_blocks): Mark blocks as they
+       are put on to the worklist, not as they are taken off.
+
 Thu Mar  4 00:05:44 1999  Jeffrey A Law  (law@cygnus.com)
 
        * function.c (current_function_has_computed_jump): Remove duplicate
index 4b08eff..4f66156 100644 (file)
@@ -1466,7 +1466,12 @@ delete_unreachable_blocks ()
      support Fortran alternate entry points.  */
 
   for (e = ENTRY_BLOCK_PTR->succ; e ; e = e->succ_next)
-    *tos++ = e->dest;
+    {
+      *tos++ = e->dest;
+
+      /* Mark the block with a handy non-null value.  */
+      e->dest->aux = e;
+    }
       
   /* Iterate: find everything reachable from what we've already seen.  */
 
@@ -1474,12 +1479,12 @@ delete_unreachable_blocks ()
     {
       basic_block b = *--tos;
 
-      /* Mark the block with a handy non-null value.  */
-      b->aux = b;
-
       for (e = b->succ; e ; e = e->succ_next)
        if (!e->dest->aux)
-         *tos++ = e->dest;
+         {
+           *tos++ = e->dest;
+           e->dest->aux = e;
+         }
     }
 
   /* Delete all unreachable basic blocks.  Count down so that we don't