This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[PATCH] Make 2nd instance discriminated by _0, 3rd by _1, ...
- To: Jason Merrill <jason at redhat dot com>, Alex Samuel <samuel at codesourcery dot com>
- Subject: [PATCH] Make 2nd instance discriminated by _0, 3rd by _1, ...
- From: Jakub Jelinek <jakub at redhat dot com>
- Date: Fri, 16 Mar 2001 19:10:02 +0100
- Cc: gcc-patches at gcc dot gnu dot org
- Reply-To: Jakub Jelinek <jakub at redhat dot com>
Hi!
If Alex agrees, this is patch for the discriminator discrepancy with spec.
2001-03-16 Jakub Jelinek <jakub@redhat.com>
* mangle.c (write_discriminator): Use `_0' for discriminator 1,
not `_'.
* cp-demangle.c (demangle_discriminator): `_0' is discriminator #1,
`_' not followed by a digit is invalid.
--- gcc/cp/mangle.c.jj Fri Mar 16 10:22:47 2001
+++ gcc/cp/mangle.c Fri Mar 16 17:17:04 2001
@@ -1223,10 +1223,7 @@ write_discriminator (discriminator)
if (discriminator > 0)
{
write_char ('_');
- /* The number is omitted for discriminator == 1. Beyond 1, the
- numbering starts at 0. */
- if (discriminator > 1)
- write_unsigned_number (discriminator - 2);
+ write_unsigned_number (discriminator - 1);
}
}
--- libiberty/cp-demangle.c.jj Wed Feb 14 01:40:03 2001
+++ libiberty/cp-demangle.c Fri Mar 16 17:24:26 2001
@@ -3417,15 +3417,11 @@ demangle_discriminator (dm, suppress_fir
/* Write the discriminator. The mangled number is two
less than the discriminator ordinal, counting from
zero. */
- RETURN_IF_ERROR (int_to_dyn_string (discriminator + 2,
+ RETURN_IF_ERROR (int_to_dyn_string (discriminator + 1,
(dyn_string_t) dm->result));
}
else
- {
- if (flag_verbose)
- /* A missing digit correspond to one. */
- RETURN_IF_ERROR (result_add_char (dm, '1'));
- }
+ return STATUS_ERROR;
if (flag_verbose)
RETURN_IF_ERROR (result_add_char (dm, ']'));
}
Jakub