[PATCH C++] Fix PR77489 -- mangling of discriminator >= 10

Markus Trippelsdorf markus@trippelsdorf.de
Wed Jan 18 14:33:00 GMT 2017


On 2017.01.18 at 09:11 -0500, Jason Merrill wrote:
> On Wed, Jan 18, 2017 at 3:55 AM, Markus Trippelsdorf
> <markus@trippelsdorf.de> wrote:
> > On 2017.01.17 at 13:26 -0500, Jason Merrill wrote:
> >> On Thu, Jan 12, 2017 at 2:36 AM, Markus Trippelsdorf
> >> <markus@trippelsdorf.de> wrote:
> > +      if (abi_version_at_least (11) && discriminator - 1 >= 10)
> > +       {
> > +         write_char ('_');
> > +         if (abi_warn_or_compat_version_crosses (11))
> > +           G.need_abi_warning = 1;
> 
> This check should be outside the abi_version_at_least block; we want
> to warn if -fabi-version=10 and -Wabi=11.

Ok, thanks.
Is the following OK?

	PR c++/77489
	* mangle.c (write_discriminator): Move abi warning check out of
	if block.

diff --git a/gcc/cp/mangle.c b/gcc/cp/mangle.c
index d1b107cbb1d..6f2e86d43f3 100644
--- a/gcc/cp/mangle.c
+++ b/gcc/cp/mangle.c
@@ -1965,13 +1965,11 @@ write_discriminator (const int discriminator)
   /* If discriminator is zero, don't write anything.  Otherwise...  */
   if (discriminator > 0)
     {
+      if (abi_warn_or_compat_version_crosses (11))
+	G.need_abi_warning = 1;
       write_char ('_');
       if (abi_version_at_least (11) && discriminator - 1 >= 10)
-	{
-	  write_char ('_');
-	  if (abi_warn_or_compat_version_crosses (11))
-	    G.need_abi_warning = 1;
-	}
+	write_char ('_');
       write_unsigned_number (discriminator - 1);
       if (abi_version_at_least (11) && discriminator - 1 >= 10)
 	write_char ('_');
-- 
Markus



More information about the Gcc-patches mailing list