From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp118.iad3a.emailsrvr.com (smtp118.iad3a.emailsrvr.com [173.203.187.118]) by sourceware.org (Postfix) with ESMTPS id A3A3E3858D1E for ; Wed, 17 Aug 2022 15:11:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A3A3E3858D1E X-Auth-ID: tom@honermann.net Received: by smtp7.relay.iad3a.emailsrvr.com (Authenticated sender: tom-AT-honermann.net) with ESMTPSA id 124EB4EB0 for ; Wed, 17 Aug 2022 11:11:21 -0400 (EDT) Message-ID: Date: Wed, 17 Aug 2022 11:11:21 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 Subject: Re: [PATCH] stdlib: Suppress gcc diagnostic that char8_t is a keyword in C++20 in uchar.h. Content-Language: en-US To: libc-alpha@sourceware.org References: <20220724051143.1893401-1-tom@honermann.net> From: Tom Honermann In-Reply-To: <20220724051143.1893401-1-tom@honermann.net> X-Classification-ID: 78c3c7f0-c87f-4554-bc24-2d7629987766-1-1 X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, HTML_MESSAGE, KAM_SHORT, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Aug 2022 15:11:24 -0000 On 7/24/22 1:11 AM, Tom Honermann via Libc-alpha wrote: > gcc 13 issues the following diagnostic for the uchar.h header when the > -Wc++20-compat option is enabled in C++ modes that do not enable char8_t > as a builtin type (C++17 and earlier by default; subject to _GNU_SOURCE > and the gcc -f[no-]char8_t option). > warning: identifier ‘char8_t’ is a keyword in C++20 [-Wc++20-compat] > This change modifies the uchar.h header to suppress the diagnostic through > the use of '#pragma GCC diagnostic' directives for gcc 10 and later (the > -Wc++20-compat option was added in gcc version 10). Unfortunately, a bug > in gcc currently prevents those directives from having the intended effect > as reported athttps://gcc.gnu.org/PR106423. A patch for that issue has > been submitted and is available in the email thread archive linked below. > https://gcc.gnu.org/pipermail/gcc-patches/2022-July/598736.html The above linked gcc patch has landed for gcc 13; the diagnostic suppression in the patch below (committed for 2.37 and as a post 2.36 update to release/2.36/master ) will become effective with that release. Tom. > --- > wcsmbs/uchar.h | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/wcsmbs/uchar.h b/wcsmbs/uchar.h > index c37e8619a0..5f7139f279 100644 > --- a/wcsmbs/uchar.h > +++ b/wcsmbs/uchar.h > @@ -34,8 +34,16 @@ > /* Declare the C2x char8_t typedef in C2x modes, but only if the C++ > __cpp_char8_t feature test macro is not defined. */ > #if __GLIBC_USE (ISOC2X) && !defined __cpp_char8_t > +#if __GNUC_PREREQ (10, 0) && defined __cplusplus > +/* Suppress the diagnostic regarding char8_t being a keyword in C++20. */ > +# pragma GCC diagnostic push > +# pragma GCC diagnostic ignored "-Wc++20-compat" > +#endif > /* Define the 8-bit character type. */ > typedef unsigned char char8_t; > +#if __GNUC_PREREQ (10, 0) && defined __cplusplus > +# pragma GCC diagnostic pop > +#endif > #endif > > #ifndef __USE_ISOCXX11