OSDN Git Service

* tree-phinodes.c (remove_phi_node): Clean up by factoring out
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 3 Mar 2005 17:15:36 +0000 (17:15 +0000)
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 3 Mar 2005 17:15:36 +0000 (17:15 +0000)
calls to release_ssa_name and release_phi_node.

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

gcc/ChangeLog
gcc/tree-phinodes.c

index 30d0fa4..2f78c4d 100644 (file)
@@ -6,6 +6,9 @@
        * cfgexpand.c (construct_exit_block): Use EDGE_PRED instead of
        EDGE_I.
 
+       * tree-phinodes.c (remove_phi_node): Clean up by factoring out
+       calls to release_ssa_name and release_phi_node.
+
 2005-03-03  Roger Sayle  <roger@eyesopen.com>
            Andrew Pinski  <pinskia@physics.uc.edu>
 
index 91bff61..a849d6a 100644 (file)
@@ -404,36 +404,27 @@ remove_phi_args (edge e)
 void
 remove_phi_node (tree phi, tree prev, basic_block bb)
 {
-  if (prev)
-    {
-      /* Rewire the list if we are given a PREV pointer.  */
-      PHI_CHAIN (prev) = PHI_CHAIN (phi);
+  tree *loc;
 
-      /* If we are deleting the PHI node, then we should release the
-        SSA_NAME node so that it can be reused.  */
-      release_ssa_name (PHI_RESULT (phi));
-      release_phi_node (phi);
-    }
-  else if (phi == phi_nodes (bb))
+  if (prev)
     {
-      /* Update the list head if removing the first element.  */
-      bb_ann (bb)->phi_nodes = PHI_CHAIN (phi);
-
-      /* If we are deleting the PHI node, then we should release the
-        SSA_NAME node so that it can be reused.  */
-      release_ssa_name (PHI_RESULT (phi));
-      release_phi_node (phi);
+      loc = &PHI_CHAIN (prev);
     }
   else
     {
-      /* Traverse the list looking for the node to remove.  */
-      tree prev, t;
-      prev = NULL_TREE;
-      for (t = phi_nodes (bb); t && t != phi; t = PHI_CHAIN (t))
-       prev = t;
-      if (t)
-       remove_phi_node (t, prev, bb);
+      for (loc = &(bb_ann (bb)->phi_nodes);
+          *loc != phi;
+          loc = &PHI_CHAIN (*loc))
+       ;
     }
+
+  /* Remove PHI from the chain.  */
+  *loc = PHI_CHAIN (phi);
+
+  /* If we are deleting the PHI node, then we should release the
+     SSA_NAME node so that it can be reused.  */
+  release_ssa_name (PHI_RESULT (phi));
+  release_phi_node (phi);
 }