I noticed a write-only bitmap and some odd CFG hooks initializing code. Removed as follows.
Bootstrapped and tested on x86_64-unknown-linux-gnu, applied. Richard. 2012-05-16 Richard Guenther <rguent...@suse.de> * tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard1): Remove set-only bitmap of new names. (slpeel_tree_peel_loop_to_edge): Likewise. Do not set CFG hooks. * tree-flow.h (ssa_names_to_replace): Remove. * tree-into-ssa.c (ssa_names_to_replace): Likewise. Index: gcc/tree-vect-loop-manip.c =================================================================== --- gcc/tree-vect-loop-manip.c (revision 187534) +++ gcc/tree-vect-loop-manip.c (working copy) @@ -489,8 +489,7 @@ LOOP-> loop1 static void slpeel_update_phi_nodes_for_guard1 (edge guard_edge, struct loop *loop, - bool is_new_loop, basic_block *new_exit_bb, - bitmap *defs) + bool is_new_loop, basic_block *new_exit_bb) { gimple orig_phi, new_phi; gimple update_phi, update_phi2; @@ -586,7 +585,6 @@ slpeel_update_phi_nodes_for_guard1 (edge gcc_assert (get_current_def (current_new_name) == NULL_TREE); set_current_def (current_new_name, PHI_RESULT (new_phi)); - bitmap_set_bit (*defs, SSA_NAME_VERSION (current_new_name)); } } @@ -1159,7 +1157,6 @@ slpeel_tree_peel_loop_to_edge (struct lo struct loop *new_loop = NULL, *first_loop, *second_loop; edge skip_e; tree pre_condition = NULL_TREE; - bitmap definitions; basic_block bb_before_second_loop, bb_after_second_loop; basic_block bb_before_first_loop; basic_block bb_between_loops; @@ -1172,12 +1169,6 @@ slpeel_tree_peel_loop_to_edge (struct lo if (!slpeel_can_duplicate_loop_p (loop, e)) return NULL; - /* We have to initialize cfg_hooks. Then, when calling - cfg_hooks->split_edge, the function tree_split_edge - is actually called and, when calling cfg_hooks->duplicate_block, - the function tree_duplicate_bb is called. */ - gimple_register_cfg_hooks (); - /* If the loop has a virtual PHI, but exit bb doesn't, create a virtual PHI in the exit bb and rename all the uses after the loop. This simplifies the *guard[12] routines, which assume loop closed SSA form for all PHIs @@ -1259,7 +1250,6 @@ slpeel_tree_peel_loop_to_edge (struct lo second_loop = loop; } - definitions = ssa_names_to_replace (); slpeel_update_phis_for_duplicate_loop (loop, new_loop, e == exit_e); rename_variables_in_loop (new_loop); @@ -1397,7 +1387,7 @@ slpeel_tree_peel_loop_to_edge (struct lo bb_before_second_loop, bb_before_first_loop); slpeel_update_phi_nodes_for_guard1 (skip_e, first_loop, first_loop == new_loop, - &new_exit_bb, &definitions); + &new_exit_bb); /* 3. Add the guard that controls whether the second loop is executed. @@ -1441,7 +1431,6 @@ slpeel_tree_peel_loop_to_edge (struct lo if (update_first_loop_count) slpeel_make_loop_iterate_ntimes (first_loop, *first_niters); - BITMAP_FREE (definitions); delete_update_ssa (); adjust_vec_debug_stmts (); Index: gcc/tree-flow.h =================================================================== *** gcc/tree-flow.h (revision 187589) --- gcc/tree-flow.h (working copy) *************** tree create_new_def_for (tree, gimple, d *** 576,582 **** bool need_ssa_update_p (struct function *); bool name_mappings_registered_p (void); bool name_registered_for_update_p (tree); - bitmap ssa_names_to_replace (void); void release_ssa_name_after_update_ssa (tree); void compute_global_livein (bitmap, bitmap); void mark_sym_for_renaming (tree); --- 574,579 ---- Index: gcc/tree-into-ssa.c =================================================================== *** gcc/tree-into-ssa.c (revision 187589) --- gcc/tree-into-ssa.c (working copy) *************** name_registered_for_update_p (tree n ATT *** 3053,3078 **** } - /* Return the set of all the SSA names marked to be replaced. */ - - bitmap - ssa_names_to_replace (void) - { - unsigned i = 0; - bitmap ret; - sbitmap_iterator sbi; - - gcc_assert (update_ssa_initialized_fn == NULL - || update_ssa_initialized_fn == cfun); - - ret = BITMAP_ALLOC (NULL); - EXECUTE_IF_SET_IN_SBITMAP (old_ssa_names, 0, i, sbi) - bitmap_set_bit (ret, i); - - return ret; - } - - /* Mark NAME to be released after update_ssa has finished. */ void --- 3053,3058 ----