re PR java/16927 (assert statement fails at -O1 and above)
authorAndrew Haley <aph@redhat.com>
Fri, 24 Sep 2004 13:57:08 +0000 (13:57 +0000)
committerAndrew Haley <aph@gcc.gnu.org>
Fri, 24 Sep 2004 13:57:08 +0000 (13:57 +0000)
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

gcc/java/ChangeLog
gcc/java/parse.y

index e75ebd052d98bd211b182ecc73c67c9aac12af23..0e2b8b1e353badb827fa0460b9aebf0d489fdc97 100644 (file)
@@ -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:
index a66ebd3f07b6687bb2c2d9c9b899aee834a92280..b6cedbfc37b37721d41f3e587e7d51907566fd1f 100644 (file)
@@ -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);