* tree-ssa-loop-manip.c (find_uses_to_rename): Do not scan the
whole function when there is nothing to do.
* tree-ssa-loop.c (pass_vectorize): Remove TODO_update_ssa.
* tree-vectorizer.c (vectorize_loops): Update virtual and
loop-closed SSA once.
* tree-vect-loop.c (vect_transform_loop): Do not update SSA here.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@196770
138bc75d-0d04-0410-961f-
82ee72b054a4
2013-03-18 Richard Biener <rguenther@suse.de>
+ * tree-ssa-loop-manip.c (find_uses_to_rename): Do not scan the
+ whole function when there is nothing to do.
+ * tree-ssa-loop.c (pass_vectorize): Remove TODO_update_ssa.
+ * tree-vectorizer.c (vectorize_loops): Update virtual and
+ loop-closed SSA once.
+ * tree-vect-loop.c (vect_transform_loop): Do not update SSA here.
+
+2013-03-18 Richard Biener <rguenther@suse.de>
+
PR middle-end/56113
* domwalk.c (bb_postorder): New global static.
(cmp_bb_postorder): New function.
unsigned index;
bitmap_iterator bi;
- /* ??? If CHANGED_BBS is empty we rewrite the whole function -- why? */
- if (changed_bbs && !bitmap_empty_p (changed_bbs))
- {
- EXECUTE_IF_SET_IN_BITMAP (changed_bbs, 0, index, bi)
- {
- find_uses_to_rename_bb (BASIC_BLOCK (index), use_blocks, need_phis);
- }
- }
+ if (changed_bbs)
+ EXECUTE_IF_SET_IN_BITMAP (changed_bbs, 0, index, bi)
+ find_uses_to_rename_bb (BASIC_BLOCK (index), use_blocks, need_phis);
else
- {
- FOR_EACH_BB (bb)
- {
- find_uses_to_rename_bb (bb, use_blocks, need_phis);
- }
- }
+ FOR_EACH_BB (bb)
+ find_uses_to_rename_bb (bb, use_blocks, need_phis);
}
/* Rewrites the program into a loop closed ssa form -- i.e. inserts extra
0, /* properties_provided */
0, /* properties_destroyed */
0, /* todo_flags_start */
- TODO_update_ssa
- | TODO_ggc_collect /* todo_flags_finish */
+ TODO_ggc_collect /* todo_flags_finish */
}
};
loop->nb_iterations_estimate = loop->nb_iterations_estimate - double_int_one;
}
- /* The memory tags and pointers in vectorized statements need to
- have their SSA forms updated. FIXME, why can't this be delayed
- until all the loops have been transformed? */
- update_ssa (TODO_update_ssa);
-
if (dump_enabled_p ())
dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, vect_location, "LOOP VECTORIZED.");
if (loop->inner && dump_enabled_p ())
free_stmt_vec_info_vec ();
- return num_vectorized_loops > 0 ? TODO_cleanup_cfg : 0;
+ if (num_vectorized_loops > 0)
+ {
+ /* If we vectorized any loop only virtual SSA form needs to be updated.
+ ??? Also while we try hard to update loop-closed SSA form we fail
+ to properly do this in some corner-cases (see PR56286). */
+ rewrite_into_loop_closed_ssa (NULL, TODO_update_ssa_only_virtuals);
+ return TODO_cleanup_cfg;
+ }
+
+ return 0;
}