aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRoger Sayle <roger@eyesopen.com>2003-09-23 15:49:53 +0000
committerRoger Sayle <sayle@gcc.gnu.org>2003-09-23 15:49:53 +0000
commit87750fef007105152e570dc153ef04df5445ddc4 (patch)
treeeb45ea4f1abb566078d25b7a306a02cfcafd35a4 /gcc
parentac20c67af10d2f8aadabeb255ff66f31364e9e6d (diff)
downloadgcc-87750fef007105152e570dc153ef04df5445ddc4.zip
gcc-87750fef007105152e570dc153ef04df5445ddc4.tar.gz
gcc-87750fef007105152e570dc153ef04df5445ddc4.tar.bz2
jcf-write.c (generate_bytecode_insns): Optimize binary operations with equal operands without side-effects.
* jcf-write.c (generate_bytecode_insns): Optimize binary operations with equal operands without side-effects. From-SVN: r71684
Diffstat (limited to 'gcc')
-rw-r--r--gcc/java/ChangeLog5
-rw-r--r--gcc/java/jcf-write.c4
2 files changed, 7 insertions, 2 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 7ed9f4b..6f127f3 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,8 @@
+2003-09-23 Roger Sayle <roger@eyesopen.com>
+
+ * jcf-write.c (generate_bytecode_insns): Optimize binary operations
+ with equal operands without side-effects.
+
2003-09-22 Jeff Sturm <jsturm@one-point.com>
* decl.c (java_init_decl_processing): Don't emit otable decls
diff --git a/gcc/java/jcf-write.c b/gcc/java/jcf-write.c
index 82c77b1..aed6eb97 100644
--- a/gcc/java/jcf-write.c
+++ b/gcc/java/jcf-write.c
@@ -2095,10 +2095,10 @@ generate_bytecode_insns (tree exp, int target, struct jcf_partial *state)
tree arg0 = TREE_OPERAND (exp, 0);
tree arg1 = TREE_OPERAND (exp, 1);
jopcode += adjust_typed_op (type, 3);
- if (arg0 == arg1 && TREE_CODE (arg0) == SAVE_EXPR)
+ if (arg0 != NULL_TREE && operand_equal_p (arg0, arg1, 0))
{
/* fold may (e.g) convert 2*x to x+x. */
- generate_bytecode_insns (TREE_OPERAND (arg0, 0), target, state);
+ generate_bytecode_insns (arg0, target, state);
emit_dup (TYPE_PRECISION (TREE_TYPE (arg0)) > 32 ? 2 : 1, 0, state);
}
else