From c5466b25b4642820236eb73f895488da192cbab0 Mon Sep 17 00:00:00 2001
From: Andrew Haley <aph@redhat.com>
Date: Fri, 24 Sep 2004 13:57:08 +0000
Subject: [PATCH] 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
---
 gcc/java/ChangeLog |  6 ++++++
 gcc/java/parse.y   | 11 ++++++++++-
 2 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index e75ebd052d98..0e2b8b1e353b 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 a66ebd3f07b6..b6cedbfc37b3 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);
-- 
GitLab