diff options
Diffstat (limited to 'gcc/tree-ssa-loop-manip.c')
-rw-r--r-- | gcc/tree-ssa-loop-manip.c | 31 |
1 files changed, 17 insertions, 14 deletions
diff --git a/gcc/tree-ssa-loop-manip.c b/gcc/tree-ssa-loop-manip.c index a0516c45c4a..7101f30d4e6 100644 --- a/gcc/tree-ssa-loop-manip.c +++ b/gcc/tree-ssa-loop-manip.c @@ -489,7 +489,6 @@ find_uses_to_rename (bitmap changed_bbs, bitmap *use_blocks, bitmap need_phis) void rewrite_into_loop_closed_ssa (bitmap changed_bbs, unsigned update_flag) { - bitmap *loop_exits; bitmap *use_blocks; bitmap names_to_rename; @@ -505,11 +504,6 @@ rewrite_into_loop_closed_ssa (bitmap changed_bbs, unsigned update_flag) names_to_rename = BITMAP_ALLOC (&loop_renamer_obstack); - /* An array of bitmaps where LOOP_EXITS[I] is the set of basic blocks - that are the destination of an edge exiting loop number I. */ - loop_exits = XNEWVEC (bitmap, number_of_loops ()); - get_loops_exits (loop_exits); - /* Uses of names to rename. We don't have to initialize this array, because we know that we will only have entries for the SSA names in NAMES_TO_RENAME. */ @@ -518,17 +512,26 @@ rewrite_into_loop_closed_ssa (bitmap changed_bbs, unsigned update_flag) /* Find the uses outside loops. */ find_uses_to_rename (changed_bbs, use_blocks, names_to_rename); - /* Add the PHI nodes on exits of the loops for the names we need to - rewrite. */ - add_exit_phis (names_to_rename, use_blocks, loop_exits); + if (!bitmap_empty_p (names_to_rename)) + { + /* An array of bitmaps where LOOP_EXITS[I] is the set of basic blocks + that are the destination of an edge exiting loop number I. */ + bitmap *loop_exits = XNEWVEC (bitmap, number_of_loops ()); + get_loops_exits (loop_exits); + + /* Add the PHI nodes on exits of the loops for the names we need to + rewrite. */ + add_exit_phis (names_to_rename, use_blocks, loop_exits); + + free (loop_exits); + + /* Fix up all the names found to be used outside their original + loops. */ + update_ssa (TODO_update_ssa); + } bitmap_obstack_release (&loop_renamer_obstack); free (use_blocks); - free (loop_exits); - - /* Fix up all the names found to be used outside their original - loops. */ - update_ssa (TODO_update_ssa); } /* Check invariants of the loop closed ssa form for the USE in BB. */ |