diff options
author | Zdenek Dvorak <dvorakz@suse.cz> | 2007-04-27 01:13:41 +0200 |
---|---|---|
committer | Zdenek Dvorak <rakdver@gcc.gnu.org> | 2007-04-26 23:13:41 +0000 |
commit | 672987e82f472b1a6805d451963e68dc3935a163 (patch) | |
tree | 8cbde9fc5c7d1dd0444af88b49453261ddc0ee67 /gcc/tree-inline.c | |
parent | 468a823ba9314a5a852f4a62bc042b3a21bec119 (diff) | |
download | gcc-672987e82f472b1a6805d451963e68dc3935a163.zip gcc-672987e82f472b1a6805d451963e68dc3935a163.tar.gz gcc-672987e82f472b1a6805d451963e68dc3935a163.tar.bz2 |
tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
* tree-cfgcleanup.c (cfgcleanup_altered_bbs): New global variable.
(remove_fallthru_edge): Use remove_edge_and_dominated_blocks.
(cleanup_control_expr_graph): Do not invalidate dominance info.
Record altered blocks.
(cleanup_control_flow, cleanup_forwarder_blocks): Removed.
(cleanup_control_flow_bb, split_bbs_on_noreturn_calls,
cleanup_tree_cfg_bb): New functions.
(remove_forwarder_block): Do not maintain the worklist of blocks.
Record altered blocks.
(cleanup_tree_cfg_1): Iterate over cfgcleanup_altered_bbs,
not over whole cfg.
(cleanup_tree_cfg): Do not iterate cleanup_tree_cfg_1. Only call
delete_unreachable_blocks if dominators are not available.
* tree-inline.c (optimize_inline_calls): Free dominance information
earlier.
* tree-flow.h (remove_edge_and_dominated_blocks,
cfgcleanup_altered_bbs): Altered.
* tree-cfg.c (replace_uses_by, tree_merge_blocks): Record altered
blocks.
(get_all_dominated_blocks, remove_edge_and_dominated_blocks): New
functions.
(tree_purge_dead_eh_edges): Use remove_edge_and_dominated_blocks,
do not invalidate dominators.
From-SVN: r124203
Diffstat (limited to 'gcc/tree-inline.c')
-rw-r--r-- | gcc/tree-inline.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c index 77d3864..ba8a71e 100644 --- a/gcc/tree-inline.c +++ b/gcc/tree-inline.c @@ -2804,6 +2804,10 @@ optimize_inline_calls (tree fn) push_gimplify_context (); + /* We make no attempts to keep dominance info up-to-date. */ + free_dominance_info (CDI_DOMINATORS); + free_dominance_info (CDI_POST_DOMINATORS); + /* Reach the trees by walking over the CFG, and note the enclosing basic-blocks in the call edges. */ /* We walk the blocks going forward, because inlined function bodies @@ -2840,9 +2844,6 @@ optimize_inline_calls (tree fn) fold_cond_expr_cond (); if (current_function_has_nonlocal_label) make_nonlocal_label_edges (); - /* We make no attempts to keep dominance info up-to-date. */ - free_dominance_info (CDI_DOMINATORS); - free_dominance_info (CDI_POST_DOMINATORS); /* It would be nice to check SSA/CFG/statement consistency here, but it is not possible yet - the IPA passes might make various functions to not throw and they don't care to proactively update local EH info. This is |