diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index e75ebd052d98bd211b182ecc73c67c9aac12af23..0e2b8b1e353badb827fa0460b9aebf0d489fdc97 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 a66ebd3f07b6687bb2c2d9c9b899aee834a92280..b6cedbfc37b37721d41f3e587e7d51907566fd1f 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);