diff options
author | Kazu Hirata <kazu@cs.umass.edu> | 2004-11-23 05:25:12 +0000 |
---|---|---|
committer | Kazu Hirata <kazu@gcc.gnu.org> | 2004-11-23 05:25:12 +0000 |
commit | a100ac1e28fc8f0c22ceea85eef74b7ac8615daa (patch) | |
tree | f05fee1d28436abb25a6d378abbc0212ca41c4f5 /gcc/tree-cfg.c | |
parent | 82698cdede07649ffc164d761a1d2aa1832b9cc3 (diff) | |
download | gcc-a100ac1e28fc8f0c22ceea85eef74b7ac8615daa.zip gcc-a100ac1e28fc8f0c22ceea85eef74b7ac8615daa.tar.gz gcc-a100ac1e28fc8f0c22ceea85eef74b7ac8615daa.tar.bz2 |
tree-cfg.c (tree_execute_on_growing_pred): New.
* tree-cfg.c (tree_execute_on_growing_pred): New.
(tree_cfg_hooks): Add tree_execute_on_growing_pred.
* tree-flow.h: Add a prototype for
reserve_phi_args_for_new_edge.
* tree-phinodes.c (reserve_phi_args_for_new_edge): New.
(add_phi_arg): Don't resize a PHI array.
From-SVN: r91075
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r-- | gcc/tree-cfg.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index e9c58d4..1f934cb 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -5339,6 +5339,18 @@ tree_purge_all_dead_eh_edges (bitmap blocks) return changed; } +/* This function is called whenever a new edge is created or + redirected. */ + +static void +tree_execute_on_growing_pred (edge e) +{ + basic_block bb = e->dest; + + if (phi_nodes (bb)) + reserve_phi_args_for_new_edge (bb); +} + /* This function is called immediately before edge E is removed from the edge vector E->dest->preds. */ @@ -5371,7 +5383,7 @@ struct cfg_hooks tree_cfg_hooks = { tree_block_ends_with_call_p, /* block_ends_with_call_p */ 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 */ + tree_execute_on_growing_pred, /* execute_on_growing_pred */ tree_execute_on_shrinking_pred, /* execute_on_shrinking_pred */ }; |