diff options
author | Zdenek Dvorak <dvorakz@suse.cz> | 2007-02-05 00:47:09 +0100 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2007-02-04 23:47:09 +0000 |
commit | 14fa2cc05762323f22f92cdb1dee039277bc6292 (patch) | |
tree | f496fa9bd8e7472a0092f253d2c670a09063973a /gcc/tree-cfg.c | |
parent | 284893341f2086559700fe966ea86e8e1196f775 (diff) | |
download | gcc-14fa2cc05762323f22f92cdb1dee039277bc6292.zip gcc-14fa2cc05762323f22f92cdb1dee039277bc6292.tar.gz gcc-14fa2cc05762323f22f92cdb1dee039277bc6292.tar.bz2 |
cfgloopmanip.c (loop_delete_branch_edge): Removed.
* cfgloopmanip.c (loop_delete_branch_edge): Removed.
(remove_path): Use can_remove_branch_p and remove_branch instead
of loop_delete_branch_edge.
* tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
(tree_transform_and_unroll_loop): Remove dead branches immediately.
Update profile using scale_dominated_blocks_in_loop.
* cfghooks.c (can_remove_branch_p, remove_branch): New functions.
* cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
(can_remove_branch_p, remove_branch): Declare.
* tree-cfg.c (tree_can_remove_branch_p): New function.
(tree_cfg_hooks): Add tree_can_remove_branch_p.
* cfgrtl.c (rtl_can_remove_branch_p): New function.
(rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.
From-SVN: r121583
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r-- | gcc/tree-cfg.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index e9111d9..6f49205 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -4219,6 +4219,17 @@ tree_redirect_edge_and_branch (edge e, basic_block dest) return e; } +/* Returns true if it is possible to remove edge E by redirecting + it to the destination of the other edge from E->src. */ + +static bool +tree_can_remove_branch_p (edge e) +{ + if (e->flags & EDGE_ABNORMAL) + return false; + + return true; +} /* Simple wrapper, as we can always redirect fallthru edges. */ @@ -5614,6 +5625,7 @@ struct cfg_hooks tree_cfg_hooks = { create_bb, /* create_basic_block */ tree_redirect_edge_and_branch,/* redirect_edge_and_branch */ tree_redirect_edge_and_branch_force,/* redirect_edge_and_branch_force */ + tree_can_remove_branch_p, /* can_remove_branch_p */ remove_bb, /* delete_basic_block */ tree_split_block, /* split_block */ tree_move_block_after, /* move_block_after */ |