aboutsummaryrefslogtreecommitdiff
path: root/gcc/java
diff options
context:
space:
mode:
authorAndrew Haley <aph@redhat.com>2004-09-24 13:57:08 +0000
committerAndrew Haley <aph@gcc.gnu.org>2004-09-24 13:57:08 +0000
commitc5466b25b4642820236eb73f895488da192cbab0 (patch)
treed4a4bf8626f6fcf56bb2b042ba7f3c8664fda6e0 /gcc/java
parent0a41faf0222be325c15f502431641ebf435bbb2a (diff)
downloadgcc-c5466b25b4642820236eb73f895488da192cbab0.zip
gcc-c5466b25b4642820236eb73f895488da192cbab0.tar.gz
gcc-c5466b25b4642820236eb73f895488da192cbab0.tar.bz2
re PR java/16927 (assert statement fails at -O1 and above)
2004-09-23 Andrew Haley <aph@redhat.com> PR java/16927: * parse.y (java_complete_lhs): Call patch_string() on Operand 1 of COND_EXPRs. From-SVN: r88036
Diffstat (limited to 'gcc/java')
-rw-r--r--gcc/java/ChangeLog6
-rw-r--r--gcc/java/parse.y11
2 files changed, 16 insertions, 1 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index e75ebd0..0e2b8b1 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,9 @@
+2004-09-23 Andrew Haley <aph@redhat.com>
+
+ PR java/16927:
+ * parse.y (java_complete_lhs): Call patch_string() on Operand 1 of
+ COND_EXPRs.
+
2004-09-23 Tom Tromey <tromey@redhat.com>
PR java/17329:
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index a66ebd3..b6cedbf 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -11647,7 +11647,16 @@ java_complete_lhs (tree node)
TREE_OPERAND (node, 1) = java_complete_tree (TREE_OPERAND (node, 1));
if (TREE_OPERAND (node, 1) == error_mark_node)
return error_mark_node;
- TREE_OPERAND (node, 2) = java_complete_tree (TREE_OPERAND (node, 2));
+ {
+ /* This is a special case due to build_assertion(). When
+ assertions are disabled we build a COND_EXPR in which
+ Operand 1 is the body of the assertion. If that happens to
+ be a string concatenation we'll need to patch it here. */
+ tree patched = patch_string (TREE_OPERAND (node, 1));
+ if (patched)
+ TREE_OPERAND (node, 1) = patched;
+ }
+ TREE_OPERAND (node, 2) = java_complete_tree (TREE_OPERAND (node, 2));
if (TREE_OPERAND (node, 2) == error_mark_node)
return error_mark_node;
return patch_if_else_statement (node);