aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.c
diff options
context:
space:
mode:
authorKazu Hirata <kazu@cs.umass.edu>2004-11-22 22:06:16 +0000
committerKazu Hirata <kazu@gcc.gnu.org>2004-11-22 22:06:16 +0000
commite51546f8bf360d3e4f9ec31ebc998a4dede30f94 (patch)
tree5631d03c9b72d04b8e2de7a6ae285c500d9cb104 /gcc/tree-cfg.c
parentd9d4706fa5e5e9db60e0d6a4ad742928f07042dc (diff)
downloadgcc-e51546f8bf360d3e4f9ec31ebc998a4dede30f94.zip
gcc-e51546f8bf360d3e4f9ec31ebc998a4dede30f94.tar.gz
gcc-e51546f8bf360d3e4f9ec31ebc998a4dede30f94.tar.bz2
tree-cfg.c (tree_execute_on_shrinking_pred): New.
* tree-cfg.c (tree_execute_on_shrinking_pred): New. (tree_cfg_hooks): Use it. * tree-ssa.c (ssa_remove_edge): Don't call remove_phi_args. (ssa_redirect_edge): Don't call remove_phi_arg_num. From-SVN: r91036
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r--gcc/tree-cfg.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index f00084a..b7097eb 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -5339,6 +5339,16 @@ tree_purge_all_dead_eh_edges (bitmap blocks)
return changed;
}
+/* This function is called immediately before edge E is removed from
+ the edge vector E->dest->preds. */
+
+static void
+tree_execute_on_shrinking_pred (edge e)
+{
+ if (phi_nodes (e->dest))
+ remove_phi_args (e);
+}
+
struct cfg_hooks tree_cfg_hooks = {
"tree",
tree_verify_flow_info,
@@ -5362,7 +5372,7 @@ struct cfg_hooks tree_cfg_hooks = {
tree_block_ends_with_condjump_p, /* block_ends_with_condjump_p */
tree_flow_call_edges_add, /* flow_call_edges_add */
NULL, /* execute_on_growing_pred */
- NULL, /* execute_on_shrinking_pred */
+ tree_execute_on_shrinking_pred, /* execute_on_shrinking_pred */
};