From f1a0345cf6f425df0b5b49f1a5de97cca2232c03 Mon Sep 17 00:00:00 2001
From: Jakub Jelinek <jakub@redhat.com>
Date: Fri, 23 Mar 2001 23:12:55 +0100
Subject: [PATCH] mangle.c (write_discriminator): Use `_0' for discriminator 1,
 not `_'.

	* 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        | 5 +++++
 gcc/cp/mangle.c         | 5 +----
 libiberty/ChangeLog     | 5 +++++
 libiberty/cp-demangle.c | 8 ++------
 4 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 2881da6ab5ef..5f63a6785cf6 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+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.
diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c
index a908640088ef..e2641a74c6e2 100644
--- a/gcc/cp/mangle.c
+++ b/gcc/cp/mangle.c
@@ -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);
     }
 }
 
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 0e937d2cfb32..7a1e8268551c 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -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
diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c
index b8255b3a26c9..8419eef34259 100644
--- a/libiberty/cp-demangle.c
+++ b/libiberty/cp-demangle.c
@@ -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, ']'));
     }
-- 
GitLab