This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

[PATCH] Make 2nd instance discriminated by _0, 3rd by _1, ...


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]