diff options
author | Kazu Hirata <kazu@cs.umass.edu> | 2004-11-22 22:06:16 +0000 |
---|---|---|
committer | Kazu Hirata <kazu@gcc.gnu.org> | 2004-11-22 22:06:16 +0000 |
commit | e51546f8bf360d3e4f9ec31ebc998a4dede30f94 (patch) | |
tree | 5631d03c9b72d04b8e2de7a6ae285c500d9cb104 /gcc | |
parent | d9d4706fa5e5e9db60e0d6a4ad742928f07042dc (diff) | |
download | gcc-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')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/tree-cfg.c | 12 | ||||
-rw-r--r-- | gcc/tree-ssa.c | 5 |
3 files changed, 16 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c023f37..440e813 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -24,6 +24,11 @@ (cfg_layout_rtl_cfg_hook): Likewise. * tree-cfg.c (tree_cfg_hooks): Likewise. + * 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. + 2004-11-23 Ben Elliston <bje@au.ibm.com> * doc/cfg.texi (Maintaining the CFG): Use @ftable instead of 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 */ }; diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c index 1e2b59d..14a8b90 100644 --- a/gcc/tree-ssa.c +++ b/gcc/tree-ssa.c @@ -53,9 +53,6 @@ Boston, MA 02111-1307, USA. */ void ssa_remove_edge (edge e) { - /* Remove all PHI arguments for E. */ - remove_phi_args (e); - remove_edge (e); } @@ -85,8 +82,6 @@ ssa_redirect_edge (edge e, basic_block dest) node = build_tree_list (dst, src); *last = node; last = &TREE_CHAIN (node); - - remove_phi_arg_num (phi, i); } e = redirect_edge_succ_nodup (e, dest); |