mangle.c (write_discriminator): Use `_0' for discriminator 1, not `_'.
authorJakub Jelinek <jakub@redhat.com>
Fri, 23 Mar 2001 22:12:55 +0000 (23:12 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 23 Mar 2001 22:12:55 +0000 (23:12 +0100)
* 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.

From-SVN: r40795

gcc/cp/ChangeLog
gcc/cp/mangle.c
libiberty/ChangeLog
libiberty/cp-demangle.c

index 2881da6..5f63a67 100644 (file)
@@ -1,5 +1,10 @@
 2001-03-23  Jakub Jelinek  <jakub@redhat.com>
 
+       * mangle.c (write_discriminator): Use `_0' for discriminator 1,
+       not `_'.
+
+2001-03-23  Jakub Jelinek  <jakub@redhat.com>
+
        * decl.c (local_names): Define.
        (push_local_name): New.
        (grok_reference_init): Return init if initializing static reference
index a908640..e2641a7 100644 (file)
@@ -1196,10 +1196,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);
     }
 }
 
index 0e937d2..7a1e826 100644 (file)
@@ -1,3 +1,8 @@
+2001-03-23  Jakub Jelinek  <jakub@redhat.com>
+
+       * cp-demangle.c (demangle_discriminator): `_0' is discriminator #1,
+       `_' not followed by a digit is invalid.
+
 2001-03-22  Jim Blandy  <jimb@redhat.com>
 
        * cp-demangle.c (string_list_delete): Use dyn_string_delete
index b8255b3..8419eef 100644 (file)
@@ -3446,15 +3446,11 @@ demangle_discriminator (dm, suppress_first)
            /* 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, ']'));
     }