From 3f9439d71f45a5eb2d699fb5b6d819143031b5db Mon Sep 17 00:00:00 2001 From: rakdver Date: Sun, 3 Jun 2007 19:10:44 +0000 Subject: * cfgloopmanip.c (remove_path, loopify, duplicate_loop_to_header_edge): Change dom_bbs to vector. Add argument to iterate_fix_dominators call. * loop-unroll.c (unroll_loop_runtime_iterations): Ditto. * tree-cfg.c (tree_duplicate_sese_region): Change doms to vector. Add argument to iterate_fix_dominators call. (remove_edge_and_dominated_blocks): Pass vector to bbs_to_fix_dom. * gcse.c (hoist_code): Change domby to vector. * cfghooks.c (make_forwarder_block): Change doms_to_fix to vector. Add argument to iterate_fix_dominators call. * loop-doloop.c (doloop_modify): Changed recount_dominator to recompute_dominator. * lambda-code.c (perfect_nestify): Ditto. * cfgloopanal.c: Include graphds.h. (struct edge, struct vertex, struct graph, dump_graph, new_graph, add_edge, dfs, for_each_edge, free_graph): Moved to graphds.c. (mark_irreducible_loops): Use graphds_scc. Remove argument from add_edge call. * graphds.c: New file. * graphds.h: New file. * dominance.c: Include vecprim.h, pointer-set.h and graphds.h. (get_dominated_by, get_dominated_by_region): Change return type to vector. (verify_dominators): Recompute all dominators and compare the results. (recount_dominator): Renamed to ... (recompute_dominator): ... this. Do not check that the block is dominated by entry. (iterate_fix_dominators): Reimplemented. (prune_bbs_to_update_dominators, root_of_dom_tree, determine_dominators_for_sons): New functions. * et-forest.c (et_root): New function. * et-forest.h (et_root): Declare. * Makefile.in (graphds.o): Add. (cfgloopanal.o): Add graphds.h dependency. (dominance.o): Add graphds.h, vecprim.h and pointer-set.h dependency. * basic-block.h (get_dominated_by, get_dominated_by_region, iterate_fix_dominators): Declaration changed. (recount_dominator): Renamed to ... (recompute_dominator): ... this. * tree-ssa-threadupdate.c (thread_block): Free dominance info. (thread_through_all_blocks): Do not free dominance info. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125297 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/tree-cfg.c | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'gcc/tree-cfg.c') diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 7bd4496cf83..6dc0d3e4203 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -4336,11 +4336,11 @@ tree_duplicate_sese_region (edge entry, edge exit, basic_block *region, unsigned n_region, basic_block *region_copy) { - unsigned i, n_doms; + unsigned i; bool free_region_copy = false, copying_header = false; struct loop *loop = entry->dest->loop_father; edge exit_copy; - basic_block *doms; + VEC (basic_block, heap) *doms; edge redirected; int total_freq = 0, entry_freq = 0; gcov_type total_count = 0, entry_count = 0; @@ -4392,10 +4392,10 @@ tree_duplicate_sese_region (edge entry, edge exit, /* Record blocks outside the region that are dominated by something inside. */ - doms = XNEWVEC (basic_block, n_basic_blocks); + doms = NULL; initialize_original_copy_tables (); - n_doms = get_dominated_by_region (CDI_DOMINATORS, region, n_region, doms); + doms = get_dominated_by_region (CDI_DOMINATORS, region, n_region); if (entry->dest->count) { @@ -4451,8 +4451,8 @@ tree_duplicate_sese_region (edge entry, edge exit, region, but was dominated by something inside needs recounting as well. */ set_immediate_dominator (CDI_DOMINATORS, entry->dest, entry->src); - doms[n_doms++] = get_bb_original (entry->dest); - iterate_fix_dominators (CDI_DOMINATORS, doms, n_doms); + VEC_safe_push (basic_block, heap, doms, get_bb_original (entry->dest)); + iterate_fix_dominators (CDI_DOMINATORS, doms, false); free (doms); /* Add the other PHI node arguments. */ @@ -5476,9 +5476,7 @@ remove_edge_and_dominated_blocks (edge e) VEC_safe_push (basic_block, heap, bbs_to_fix_dom, dbb); } - iterate_fix_dominators (CDI_DOMINATORS, - VEC_address (basic_block, bbs_to_fix_dom), - VEC_length (basic_block, bbs_to_fix_dom)); + iterate_fix_dominators (CDI_DOMINATORS, bbs_to_fix_dom, true); BITMAP_FREE (df); BITMAP_FREE (df_idom); -- cgit v1.2.1