From 5a3a8eb12ea8fa102cfbdbd2429fc119a41f5904 Mon Sep 17 00:00:00 2001
From: Joel Dice <dicej@mailsnare.net>
Date: Tue, 20 Oct 2009 16:01:21 +0000
Subject: [PATCH] re PR java/28474 (mangle_name.c mangles names unecessarily)

2009-10-20  Joel Dice <dicej@mailsnare.net>

        PR java/28474
        * mangle_name.c (append_unicode_mangled_name): Fix mangling
        of names with multiple underscores and "U".
        (unicode_mangling_length): Likewise.

From-SVN: r153021
---
 gcc/java/ChangeLog     |  7 +++++++
 gcc/java/mangle_name.c | 10 ++++++++--
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 6ce9d58b0e03..7815bc8a0508 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,10 @@
+2009-10-20  Joel Dice <dicej@mailsnare.net>
+
+	PR java/28474
+	* mangle_name.c (append_unicode_mangled_name): Fix mangling
+	of names with multiple underscores and "U".
+	(unicode_mangling_length): Likewise.
+
 2009-10-03  Simon Baldwin  <simonb@google.com>
 
 	* config-lang.in (lang_dirs): Remove zlib.
diff --git a/gcc/java/mangle_name.c b/gcc/java/mangle_name.c
index a0e6887a04eb..a75f5cad0907 100644
--- a/gcc/java/mangle_name.c
+++ b/gcc/java/mangle_name.c
@@ -266,7 +266,10 @@ append_unicode_mangled_name (const char *name, int len)
       int ch = UTF8_GET(ptr, limit);
 
       if ((ISALNUM (ch) && ch != 'U') || ch == '$')
-	obstack_1grow (mangle_obstack, ch);
+        {
+	  obstack_1grow (mangle_obstack, ch);
+          uuU = 0;
+        }
       /* Everything else needs encoding */
       else
 	{
@@ -321,7 +324,10 @@ unicode_mangling_length (const char *name, int len)
       if (ch < 0)
 	error ("internal error - invalid Utf8 name");
       if ((ISALNUM (ch) && ch != 'U') || ch == '$')
-	num_chars++;
+	{
+	  num_chars++;
+	  uuU = 0;
+	}
       /* Everything else needs encoding */
       else
 	{
-- 
GitLab