[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