tree-cfg.c (cleanup_tree_cfg): Don't call delete_unreachable_blosk() after thread_jum...
authorKazu Hirata <kazu@cs.umass.edu>
Tue, 5 Oct 2004 18:53:08 +0000 (18:53 +0000)
committerKazu Hirata <kazu@gcc.gnu.org>
Tue, 5 Oct 2004 18:53:08 +0000 (18:53 +0000)
* tree-cfg.c (cleanup_tree_cfg): Don't call
delete_unreachable_blosk() after thread_jumps().
(thread_jumps): Always remove basic blocks as they become
unreachable.

From-SVN: r88565

gcc/ChangeLog
gcc/tree-cfg.c

index 4dd70086bc54580e64e87b2c8f1cef0f509aeef2..7ef42ea0c2dbe1285f25934748d9d70c7e3b74a4 100644 (file)
@@ -1,3 +1,10 @@
+2004-10-05  Kazu Hirata  <kazu@cs.umass.edu>
+
+       * tree-cfg.c (cleanup_tree_cfg): Don't call
+       delete_unreachable_blosk() after thread_jumps().
+       (thread_jumps): Always remove basic blocks as they become
+       unreachable.
+
 2004-10-05  Kazu Hirata  <kazu@cs.umass.edu>
 
        * tree-cfg.c (cleanup_tree_cfg): Remove variable
index 0c36f3e5d6aee6bdf647cc49eee3b2d90df65188..afeb4de0751428b77cab805c2421d8c438b3cb21 100644 (file)
@@ -723,12 +723,7 @@ cleanup_tree_cfg (void)
      opportunities for itself, so iterate on it until nothing
      changes.  */
   while (thread_jumps ())
-    {
-      /* delete_unreachable_blocks() does its job only when
-        thread_jumps() produces more unreachable blocks.  */
-      delete_unreachable_blocks ();
-      retval = true;
-    }
+    retval = true;
 
 #ifdef ENABLE_CHECKING
   if (retval)
@@ -3969,22 +3964,23 @@ thread_jumps (void)
                }
            }
 
-         /* Update the dominators.  */
-         if (dom_computed[CDI_DOMINATORS] >= DOM_CONS_OK)
+         /* Remove the unreachable blocks (observe that if all blocks
+            were reachable before, only those in the path we threaded
+            over and did not have any predecessor outside of the path
+            become unreachable).  */
+         for (; old_dest != dest; old_dest = tmp)
            {
-             /* Remove the unreachable blocks (observe that if all blocks
-                were reachable before, only those in the path we threaded
-                over and did not have any predecessor outside of the path
-                become unreachable).  */
-             for (; old_dest != dest; old_dest = tmp)
-               {
-                 tmp = EDGE_SUCC (old_dest, 0)->dest;
+             tmp = EDGE_SUCC (old_dest, 0)->dest;
 
-                 if (EDGE_COUNT (old_dest->preds) > 0)
-                   break;
+             if (EDGE_COUNT (old_dest->preds) > 0)
+               break;
 
-                 delete_basic_block (old_dest);
-               }
+             delete_basic_block (old_dest);
+           }
+
+         /* Update the dominators.  */
+         if (dom_computed[CDI_DOMINATORS] >= DOM_CONS_OK)
+           {
              /* If the dominator of the destination was in the path, set its
                 dominator to the start of the redirected edge.  */
              if (get_immediate_dominator (CDI_DOMINATORS, old_dest) == NULL)