From 4430da7ffcfade5aab8ffc561202e810f2ef5ae6 Mon Sep 17 00:00:00 2001 From: Kazu Hirata Date: Thu, 3 Mar 2005 17:15:36 +0000 Subject: [PATCH] tree-phinodes.c (remove_phi_node): Clean up by factoring out calls to release_ssa_name and release_phi_node. * tree-phinodes.c (remove_phi_node): Clean up by factoring out calls to release_ssa_name and release_phi_node. From-SVN: r95835 --- gcc/ChangeLog | 3 +++ gcc/tree-phinodes.c | 39 +++++++++++++++------------------------ 2 files changed, 18 insertions(+), 24 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 30d0fa4b142a..2f78c4d7a51d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 Andrew Pinski diff --git a/gcc/tree-phinodes.c b/gcc/tree-phinodes.c index 91bff61b1e0b..a849d6ac791b 100644 --- a/gcc/tree-phinodes.c +++ b/gcc/tree-phinodes.c @@ -404,36 +404,27 @@ remove_phi_args (edge e) void remove_phi_node (tree phi, tree prev, basic_block bb) { + tree *loc; + if (prev) { - /* Rewire the list if we are given a PREV pointer. */ - PHI_CHAIN (prev) = 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); - } - else if (phi == phi_nodes (bb)) - { - /* 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); }