tree-flow.h: Remove the prototype for remove_phi_arg.

* tree-flow.h: Remove the prototype for remove_phi_arg.
	Add a prototype for remove_phi_args.
	* tree-phinodes.c (remove_phi_arg): Remove.
	(remove_phi_args): New.
	* tree-ssa.c (ssa_remove_edge): Call remove_phi_args instead
	of remove_phi_arg.

From-SVN: r91034
This commit is contained in:
Kazu Hirata 2004-11-22 22:01:11 +00:00 committed by Kazu Hirata
parent d7889929fd
commit b31997c0dc
4 changed files with 27 additions and 32 deletions

View File

@ -1,3 +1,12 @@
2004-11-22 Kazu Hirata <kazu@cs.umass.edu>
* tree-flow.h: Remove the prototype for remove_phi_arg.
Add a prototype for remove_phi_args.
* tree-phinodes.c (remove_phi_arg): Remove.
(remove_phi_args): New.
* tree-ssa.c (ssa_remove_edge): Call remove_phi_args instead
of remove_phi_arg.
2004-11-23 Ben Elliston <bje@au.ibm.com>
* doc/cfg.texi (Maintaining the CFG): Use @ftable instead of

View File

@ -510,7 +510,7 @@ extern stmt_ann_t create_stmt_ann (tree);
extern tree_ann_t create_tree_ann (tree);
extern tree create_phi_node (tree, basic_block);
extern void add_phi_arg (tree *, tree, edge);
extern void remove_phi_arg (tree, basic_block);
extern void remove_phi_args (edge);
extern void remove_phi_arg_num (tree, int);
extern void remove_phi_node (tree, tree, basic_block);
extern void remove_all_phi_nodes_for (bitmap);

View File

@ -349,29 +349,6 @@ add_phi_arg (tree *phi, tree def, edge e)
PHI_NUM_ARGS (*phi)++;
}
/* Remove a PHI argument from PHI. BLOCK is the predecessor block where
the PHI argument is coming from. */
void
remove_phi_arg (tree phi, basic_block block)
{
int i, num_elem = PHI_NUM_ARGS (phi);
for (i = 0; i < num_elem; i++)
{
basic_block src_bb;
src_bb = PHI_ARG_EDGE (phi, i)->src;
if (src_bb == block)
{
remove_phi_arg_num (phi, i);
return;
}
}
}
/* Remove the Ith argument from PHI's argument list. This routine assumes
ordering of alternatives in the vector is not important and implements
removal by swapping the last alternative with the alternative we want to
@ -400,6 +377,21 @@ remove_phi_arg_num (tree phi, int i)
PHI_NUM_ARGS (phi)--;
}
/* Remove all PHI arguments associated with edge E. */
void
remove_phi_args (edge e)
{
tree phi;
for (phi = phi_nodes (e->dest); phi; phi = PHI_CHAIN (phi))
{
int index = phi_arg_from_edge (phi, e);
if (index >= 0)
remove_phi_arg_num (phi, index);
}
}
/* Remove PHI node PHI from basic block BB. If PREV is non-NULL, it is
used as the node immediately before PHI in the linked list. */

View File

@ -53,14 +53,8 @@ Boston, MA 02111-1307, USA. */
void
ssa_remove_edge (edge e)
{
tree phi, next;
/* Remove the appropriate PHI arguments in E's destination block. */
for (phi = phi_nodes (e->dest); phi; phi = next)
{
next = PHI_CHAIN (phi);
remove_phi_arg (phi, e->src);
}
/* Remove all PHI arguments for E. */
remove_phi_args (e);
remove_edge (e);
}