OSDN Git Service

* cfganal.c (flow_dfs_compute_reverse_execute): Accept new
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 10 Nov 2004 05:03:10 +0000 (05:03 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 10 Nov 2004 05:03:10 +0000 (05:03 +0000)
        argument holding last unvisited block.  Start search for
        unvisited blocks at LAST_UNVISITED rather than EXIT_BLOCK.
        (connect_infinite_loops_to_exit): Supply last unvisited block
        to flow_dfs_compute_reverse_execute.

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

gcc/ChangeLog
gcc/cfganal.c

index a1f25fe..ecf861b 100644 (file)
@@ -1,3 +1,11 @@
+2004-11-09  Jeff Law  <law@redhat.com>
+
+       * cfganal.c (flow_dfs_compute_reverse_execute): Accept new
+       argument holding last unvisited block.  Start search for
+       unvisited blocks at LAST_UNVISITED rather than EXIT_BLOCK.
+       (connect_infinite_loops_to_exit): Supply last unvisited block
+       to flow_dfs_compute_reverse_execute.
+
 2004-10-22  Aldy Hernandez  <aldyh@redhat.com>
 
        * config/rs6000/rs6000.md (fix_truncdfsi2): Handle e500
index 06c71f6..b98459e 100644 (file)
@@ -50,7 +50,8 @@ typedef struct depth_first_search_dsS *depth_first_search_ds;
 static void flow_dfs_compute_reverse_init (depth_first_search_ds);
 static void flow_dfs_compute_reverse_add_bb (depth_first_search_ds,
                                             basic_block);
-static basic_block flow_dfs_compute_reverse_execute (depth_first_search_ds);
+static basic_block flow_dfs_compute_reverse_execute (depth_first_search_ds,
+                                                    basic_block);
 static void flow_dfs_compute_reverse_finish (depth_first_search_ds);
 static bool flow_active_insn_p (rtx);
 \f
@@ -613,7 +614,7 @@ add_noreturn_fake_exit_edges (void)
 void
 connect_infinite_loops_to_exit (void)
 {
-  basic_block unvisited_block;
+  basic_block unvisited_block = EXIT_BLOCK_PTR;
   struct depth_first_search_dsS dfs_ds;
 
   /* Perform depth-first search in the reverse graph to find nodes
@@ -624,7 +625,8 @@ connect_infinite_loops_to_exit (void)
   /* Repeatedly add fake edges, updating the unreachable nodes.  */
   while (1)
     {
-      unvisited_block = flow_dfs_compute_reverse_execute (&dfs_ds);
+      unvisited_block = flow_dfs_compute_reverse_execute (&dfs_ds,
+                                                         unvisited_block);
       if (!unvisited_block)
        break;
 
@@ -847,7 +849,8 @@ flow_dfs_compute_reverse_add_bb (depth_first_search_ds data, basic_block bb)
    available.  */
 
 static basic_block
-flow_dfs_compute_reverse_execute (depth_first_search_ds data)
+flow_dfs_compute_reverse_execute (depth_first_search_ds data,
+                                 basic_block last_unvisited)
 {
   basic_block bb;
   edge e;
@@ -865,7 +868,7 @@ flow_dfs_compute_reverse_execute (depth_first_search_ds data)
     }
 
   /* Determine if there are unvisited basic blocks.  */
-  FOR_BB_BETWEEN (bb, EXIT_BLOCK_PTR, NULL, prev_bb)
+  FOR_BB_BETWEEN (bb, last_unvisited, NULL, prev_bb)
     if (!TEST_BIT (data->visited_blocks, bb->index - (INVALID_BLOCK + 1)))
       return bb;