lambda-code.c (nestify_update_pending_stmts): Remove.
authorKazu Hirata <kazu@cs.umass.edu>
Thu, 28 Oct 2004 13:31:53 +0000 (13:31 +0000)
committerKazu Hirata <kazu@gcc.gnu.org>
Thu, 28 Oct 2004 13:31:53 +0000 (13:31 +0000)
* lambda-code.c (nestify_update_pending_stmts): Remove.
(perfect_nestify): Use flush_pending_stmts instead of
nestify_update_pending_stmts.
* tree-cfg.c (tree_make_forwarder_block): Use
flush_pending_stmts.
* tree-flow.h: Add a prototype for flush_pending_stmts.
* tree-ssa-loop-manip.c (tree_duplicate_loop_to_header_edge):
Use flush_pending_stmts.
(lv_update_pending_stmts): Remove.
(tree_ssa_loop_version): Use flush_pending_stmts instead of
lv_update_pending_stmts.
* tree-ssa.c (flush_pending_stmts): New.

From-SVN: r89757

gcc/ChangeLog
gcc/lambda-code.c
gcc/tree-cfg.c
gcc/tree-flow.h
gcc/tree-ssa-loop-manip.c
gcc/tree-ssa.c

index e4de1de..20b2842 100644 (file)
@@ -1,3 +1,18 @@
+2004-10-28  Kazu Hirata  <kazu@cs.umass.edu>
+
+       * lambda-code.c (nestify_update_pending_stmts): Remove.
+       (perfect_nestify): Use flush_pending_stmts instead of
+       nestify_update_pending_stmts.
+       * tree-cfg.c (tree_make_forwarder_block): Use
+       flush_pending_stmts.
+       * tree-flow.h: Add a prototype for flush_pending_stmts.
+       * tree-ssa-loop-manip.c (tree_duplicate_loop_to_header_edge):
+       Use flush_pending_stmts.
+       (lv_update_pending_stmts): Remove.
+       (tree_ssa_loop_version): Use flush_pending_stmts instead of
+       lv_update_pending_stmts.
+       * tree-ssa.c (flush_pending_stmts): New.
+
 2004-10-28  Ulrich Weigand  <uweigand@de.ibm.com>
 
        PR target/15286
index 4ff4859..38c1fd1 100644 (file)
@@ -2109,31 +2109,6 @@ perfect_nest_p (struct loop *loop)
   return true;
 }
 
-
-/* Add phi args using PENDINT_STMT list.  */
-
-static void
-nestify_update_pending_stmts (edge e)
-{
-  basic_block dest;
-  tree phi, arg, def;
-
-  if (!PENDING_STMT (e))
-    return;
-
-  dest = e->dest;
-
-  for (phi = phi_nodes (dest), arg = PENDING_STMT (e);
-       phi;
-       phi = TREE_CHAIN (phi), arg = TREE_CHAIN (arg))
-    {
-      def = TREE_VALUE (arg);
-      add_phi_arg (&phi, def, e);
-    }
-
-  PENDING_STMT (e) = NULL;
-}
-
 /* Replace the USES of tree X in STMT with tree Y */
 
 static void
@@ -2317,7 +2292,7 @@ perfect_nestify (struct loops *loops,
       add_phi_arg (&phi, def, EDGE_PRED (preheaderbb, 0));
     } 
       
-  nestify_update_pending_stmts (e);
+  flush_pending_stmts (e);
   bodybb = create_empty_bb (EXIT_BLOCK_PTR->prev_bb);
   latchbb = create_empty_bb (EXIT_BLOCK_PTR->prev_bb);
   make_edge (headerbb, bodybb, EDGE_FALLTHRU); 
index 8853ab5..e9f456d 100644 (file)
@@ -3692,12 +3692,7 @@ tree_make_forwarder_block (edge fallthru)
       if (e == fallthru)
        continue;
 
-      for (phi = phi_nodes (bb), var = PENDING_STMT (e);
-          phi;
-          phi = PHI_CHAIN (phi), var = TREE_CHAIN (var))
-       add_phi_arg (&phi, TREE_VALUE (var), e);
-
-      PENDING_STMT (e) = NULL;
+      flush_pending_stmts (e);
     }
 }
 
@@ -4598,7 +4593,7 @@ tree_duplicate_sese_region (edge entry, edge exit,
   struct loop *loop = entry->dest->loop_father;
   edge exit_copy;
   bitmap definitions;
-  tree phi, var;
+  tree phi;
   basic_block *doms;
   htab_t ssa_name_map = NULL;
   edge redirected;
@@ -4667,11 +4662,7 @@ tree_duplicate_sese_region (edge entry, edge exit,
   /* Redirect the entry and add the phi node arguments.  */
   redirected = redirect_edge_and_branch (entry, entry->dest->rbi->copy);
   gcc_assert (redirected != NULL);
-  for (phi = phi_nodes (entry->dest), var = PENDING_STMT (entry);
-       phi;
-       phi = TREE_CHAIN (phi), var = TREE_CHAIN (var))
-    add_phi_arg (&phi, TREE_VALUE (var), entry);
-  PENDING_STMT (entry) = NULL;
+  flush_pending_stmts (entry);
 
   /* Concerning updating of dominators:  We must recount dominators
      for entry block and its copy.  Anything that is outside of the region, but
index 37cf556..715f843 100644 (file)
@@ -572,6 +572,7 @@ extern void dump_tree_ssa_stats (FILE *);
 extern void debug_tree_ssa_stats (void);
 extern void ssa_remove_edge (edge);
 extern edge ssa_redirect_edge (edge, basic_block);
+extern void flush_pending_stmts (edge e);
 extern bool tree_ssa_useless_type_conversion (tree);
 extern bool tree_ssa_useless_type_conversion_1 (tree, tree);
 extern void verify_ssa (void);
index 1f949a4..6f78757 100644 (file)
@@ -589,7 +589,6 @@ tree_duplicate_loop_to_header_edge (struct loop *loop, edge e,
   unsigned first_new_block;
   basic_block bb;
   unsigned i;
-  tree phi, arg, map, def;
   bitmap definitions;
 
   if (!(loops->state & LOOPS_HAVE_SIMPLE_LATCHES))
@@ -609,17 +608,7 @@ tree_duplicate_loop_to_header_edge (struct loop *loop, edge e,
     return false;
 
   /* Readd the removed phi args for e.  */
-  map = PENDING_STMT (e);
-  PENDING_STMT (e) = NULL;
-
-  for (phi = phi_nodes (e->dest), arg = map;
-       phi;
-       phi = TREE_CHAIN (phi), arg = TREE_CHAIN (arg))
-    {
-      def = TREE_VALUE (arg);
-      add_phi_arg (&phi, def, e);
-    }
-  gcc_assert (arg == NULL);
+  flush_pending_stmts (e);
 
   /* Copy the phi node arguments.  */
   copy_phi_node_args (first_new_block);
@@ -747,31 +736,6 @@ lv_adjust_loop_entry_edge (basic_block first_head,
   return new_head;
 }
 
-/* Add phi args using PENDINT_STMT list.  */
-
-static void
-lv_update_pending_stmts (edge e)
-{
-  basic_block dest;
-  tree phi, arg, def;
-
-  if (!PENDING_STMT (e))
-    return;
-
-  dest = e->dest;
-
-  for (phi = phi_nodes (dest), arg = PENDING_STMT (e);
-       phi;
-       phi = TREE_CHAIN (phi), arg = TREE_CHAIN (arg))
-    {
-      def = TREE_VALUE (arg);
-      add_phi_arg (&phi, def, e);
-    }
-
-  PENDING_STMT (e) = NULL;
-}
-
-
 /* Main entry point for Loop Versioning transformation.
    
 This transformation given a condition and a loop, creates
@@ -832,11 +796,11 @@ tree_ssa_loop_version (struct loops *loops, struct loop * loop,
     nloop->single_exit = find_edge (exit->src->rbi->copy, exit->dest);
 
   /* loopify redirected latch_edge. Update its PENDING_STMTS.  */ 
-  lv_update_pending_stmts (latch_edge);
+  flush_pending_stmts (latch_edge);
 
   /* loopify redirected condition_bb's succ edge. Update its PENDING_STMTS.  */ 
   extract_true_false_edges_from_block (*condition_bb, &true_edge, &false_edge);
-  lv_update_pending_stmts (false_edge);
+  flush_pending_stmts (false_edge);
 
   /* Adjust irreducible flag.  */
   if (irred_flag)
index d9379ba..6fb711a 100644 (file)
@@ -100,6 +100,27 @@ ssa_redirect_edge (edge e, basic_block dest)
   return e;
 }
 
+/* Add PHI arguments queued in PENDINT_STMT list on edge E to edge
+   E->dest.  */
+
+void
+flush_pending_stmts (edge e)
+{
+  tree phi, arg;
+
+  if (!PENDING_STMT (e))
+    return;
+
+  for (phi = phi_nodes (e->dest), arg = PENDING_STMT (e);
+       phi;
+       phi = TREE_CHAIN (phi), arg = TREE_CHAIN (arg))
+    {
+      tree def = TREE_VALUE (arg);
+      add_phi_arg (&phi, def, e);
+    }
+
+  PENDING_STMT (e) = NULL;
+}
 
 /* Return true if SSA_NAME is malformed and mark it visited.