diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/java/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/java/expr.c | 2 | ||||
-rw-r--r-- | gcc/tree-ssa-loop-manip.c | 31 |
4 files changed, 27 insertions, 15 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 40767693369..248ee1e2fb2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-04-09 Richard Biener <rguenther@suse.de> + + * tree-ssa-loop-manip.c (rewrite_into_loop_closed_ssa): Avoid + work that is not necessary. + 2013-04-09 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/56854 diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 29db4eb2669..f99a99314c4 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,7 @@ +2013-04-09 Richard Biener <rguenther@suse.de> + + * expr.c (build_java_binop): Pass a type to build_int_cst. + 2013-03-22 Kai Tietz <ktietz@redhat.com> * lang.c (put_decl_node): Don't iterate over end_params_node. diff --git a/gcc/java/expr.c b/gcc/java/expr.c index b71d8a09eba..a434913d475 100644 --- a/gcc/java/expr.c +++ b/gcc/java/expr.c @@ -1531,7 +1531,7 @@ build_java_binop (enum tree_code op, tree type, tree arg1, tree arg2) } case LSHIFT_EXPR: case RSHIFT_EXPR: - mask = build_int_cst (NULL_TREE, + mask = build_int_cst (int_type_node, TYPE_PRECISION (TREE_TYPE (arg1)) - 1); arg2 = fold_build2 (BIT_AND_EXPR, int_type_node, arg2, mask); break; 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. */ |