From 672987e82f472b1a6805d451963e68dc3935a163 Mon Sep 17 00:00:00 2001 From: Zdenek Dvorak Date: Fri, 27 Apr 2007 01:13:41 +0200 Subject: 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 --- gcc/tree-flow.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'gcc/tree-flow.h') diff --git a/gcc/tree-flow.h b/gcc/tree-flow.h index 4d9b36e..b7f6585 100644 --- a/gcc/tree-flow.h +++ b/gcc/tree-flow.h @@ -778,8 +778,10 @@ extern void start_recording_case_labels (void); extern void end_recording_case_labels (void); extern basic_block move_sese_region_to_fn (struct function *, basic_block, basic_block); +void remove_edge_and_dominated_blocks (edge); /* In tree-cfgcleanup.c */ +extern bitmap cfgcleanup_altered_bbs; extern bool cleanup_tree_cfg (void); extern bool cleanup_tree_cfg_loop (void); -- cgit v1.1