From: Alexandre Petit-Bianco Date: Fri, 9 Feb 2001 20:29:08 +0000 (-0800) Subject: mangle_name.c (append_unicode_mangled_name): Emit `_' or `U' outside of the `__U... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1e97aa4083fc908cc500a1f53340dfa7b80a68f3;p=gcc.git mangle_name.c (append_unicode_mangled_name): Emit `_' or `U' outside of the `__U' sequence too. 2001-02-09 Alexandre Petit-Bianco * mangle_name.c (append_unicode_mangled_name): Emit `_' or `U' outside of the `__U' sequence too. (unicode_mangling_length): Count `_' or `U' outside of the `__U' sequence too. (http://gcc.gnu.org/ml/gcc-patches/2001-02/msg00532.html) From-SVN: r39570 --- diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 955cc5b0c02..8070ba7153c 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,10 @@ +2001-02-09 Alexandre Petit-Bianco + + * mangle_name (append_unicode_mangled_name): Emit `_' or `U' + outside of the `__U' sequence too. + (unicode_mangling_length): Count `_' or `U' outside of the `__U' + sequence too. + 2001-02-09 Alexandre Petit-Bianco * jvgenmain.c (error): Reversed 2001-02-01 deletion. diff --git a/gcc/java/mangle_name.c b/gcc/java/mangle_name.c index b074f1ed212..101dee7c7c2 100644 --- a/gcc/java/mangle_name.c +++ b/gcc/java/mangle_name.c @@ -113,6 +113,13 @@ append_unicode_mangled_name (name, len) uuU = 0; obstack_grow (mangle_obstack, "U_", 2); } + /* Otherwise, just reset uuU and emit the character we + have. */ + else + { + uuU = 0; + obstack_1grow (mangle_obstack, ch); + } continue; } sprintf (buf, "__U%x_", ch); @@ -156,19 +163,25 @@ unicode_mangling_length (name, len) if (ch == '_' || ch == 'U') { + /* It's always at least one character. */ + num_chars++; + /* Prepare to recognize __U */ if (ch == '_' && (uuU < 3)) - { - num_chars++; - uuU++; - } - /* We recognize __U that we wish to encode __U_ */ + uuU++; + + /* We recognize __U that we wish to encode __U_, we + count one more character. */ else if (ch == 'U' && (uuU == 2)) { - num_chars += 2; + num_chars++; need_escapes = 1; uuU = 0; } + /* Otherwise, just reset uuU */ + else + uuU = 0; + continue; }