mangle_name.c (append_unicode_mangled_name): Emit _' or U' outside of the `__U' sequence too.

2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>

	* 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
This commit is contained in:
Alexandre Petit-Bianco 2001-02-09 12:29:08 -08:00 committed by Alexandre Petit-Bianco
parent ce67545628
commit 1e97aa4083
2 changed files with 26 additions and 6 deletions

View File

@ -1,3 +1,10 @@
2001-02-09 Alexandre Petit-Bianco <apbianco@redhat.com>
* 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 <apbianco@redhat.com>
* jvgenmain.c (error): Reversed 2001-02-01 deletion.

View File

@ -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;
}