diff options
author | kazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-22 22:04:21 +0000 |
---|---|---|
committer | kazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-11-22 22:04:21 +0000 |
commit | 26b12c910165d4ddace8a2a683dd072c0da89bb9 (patch) | |
tree | 712b6c41059aafe8583821534fb80e3194ae272d /gcc/cfg.c | |
parent | 1af6dc83bcc7707a772adb1d76d9484294e388c3 (diff) | |
download | gcc-26b12c910165d4ddace8a2a683dd072c0da89bb9.tar.gz |
* cfg.c (unchecked_make_edge): Call execute_on_growing_pred
after making an edge.
(remove_edge): Call execute_on_shrinking_pred before removing
an edge.
(redirect_edge_succ): Call execute_on_growing_pred and
execute_on_shrinking_pred.
* cfghooks.c (execute_on_growing_pred): New.
(execute_on_shrinking_pred): Likewise.
* cfghooks.h (cfg_hooks): Add execute_on_growing_pred and
execute_on_shrinking_pred.
Add prototypes for execute_on_growing_pred and
execute_on_shrinking_pred.
* cfgrtl.c (rtl_cfg_hooks): Add NULL hooks to
execute_on_growing_pred and execute_on_shrinking_pred.
(cfg_layout_rtl_cfg_hook): Likewise.
* tree-cfg.c (tree_cfg_hooks): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@91035 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfg.c')
-rw-r--r-- | gcc/cfg.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/gcc/cfg.c b/gcc/cfg.c index f7e5a79e0ae..563f5e2a6aa 100644 --- a/gcc/cfg.c +++ b/gcc/cfg.c @@ -277,6 +277,8 @@ unchecked_make_edge (basic_block src, basic_block dst, int flags) e->flags = flags; e->dest_idx = EDGE_COUNT (dst->preds) - 1; + execute_on_growing_pred (e); + return e; } @@ -358,6 +360,8 @@ remove_edge (edge e) bool found = false; edge_iterator ei; + execute_on_shrinking_pred (e); + src = e->src; dest = e->dest; dest_idx = e->dest_idx; @@ -394,6 +398,8 @@ redirect_edge_succ (edge e, basic_block new_succ) basic_block dest = e->dest; unsigned int dest_idx = e->dest_idx; + execute_on_shrinking_pred (e); + VEC_unordered_remove (edge, dest->preds, dest_idx); /* If we removed an edge in the middle of the edge vector, we need @@ -405,6 +411,7 @@ redirect_edge_succ (edge e, basic_block new_succ) VEC_safe_push (edge, new_succ->preds, e); e->dest = new_succ; e->dest_idx = EDGE_COUNT (new_succ->preds) - 1; + execute_on_growing_pred (e); } /* Like previous but avoid possible duplicate edge. */ |