summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/java/ChangeLog4
-rw-r--r--gcc/java/expr.c2
-rw-r--r--gcc/tree-ssa-loop-manip.c31
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. */