From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtp68.iad3b.emailsrvr.com (smtp68.iad3b.emailsrvr.com [146.20.161.68]) by sourceware.org (Postfix) with ESMTPS id 7404638582B9 for ; Mon, 1 Aug 2022 16:24:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 7404638582B9 X-Auth-ID: tom@honermann.net Received: by smtp9.relay.iad3b.emailsrvr.com (Authenticated sender: tom-AT-honermann.net) with ESMTPSA id C9B3B2011D; Mon, 1 Aug 2022 12:24:44 -0400 (EDT) Message-ID: <6b5b4d3c-b38e-f319-fdf5-dbeaf43ede9f@honermann.net> Date: Mon, 1 Aug 2022 12:24:44 -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: Adhemerval Zanella Netto , Florian Weimer , Tom Honermann via Libc-alpha References: <20220724051143.1893401-1-tom@honermann.net> <87fsipsgpn.fsf@oldenburg.str.redhat.com> <8a30983b-a69b-c8a2-df4d-04690e22bf21@linaro.org> <8ad1265f-04e3-3e1f-a7b4-7927b47d1e36@linaro.org> <37b8a0bd-a577-3ddd-9c72-93aea01f6e7d@honermann.net> From: Tom Honermann In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Classification-ID: 3872f87c-6c8b-4e7f-94ea-143a840bce85-1-1 X-Spam-Status: No, score=-10.6 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, NICE_REPLY_A, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org 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: Mon, 01 Aug 2022 16:24:47 -0000 On 8/1/22 11:48 AM, Adhemerval Zanella Netto wrote: > > On 01/08/22 12:27, Tom Honermann wrote: >> On 8/1/22 9:38 AM, Adhemerval Zanella Netto wrote: >>> On 29/07/22 15:22, Tom Honermann wrote: >>>> On 7/25/22 8:34 AM, Adhemerval Zanella Netto via Libc-alpha wrote: >>>>> On 25/07/22 06:07, Florian Weimer wrote: >>>>>> * Tom Honermann via Libc-alpha: >>>>>> >>>>>>> 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 at https://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 >>>>>>> --- >>>>>>>    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 >>>>>> Patch looks okay to me.  The warning was introduced in GCC 10. >>>>>> >>>>>> This needs RM approval at this point, I think. >>>>>> >>>>>> Thanks, >>>>>> Florian >>>>>> >>>>> This is ok for 2.36, thanks. >>>> Thanks. Please commit on my behalf; I don't have commit access. >>>> >>>> Tom. >>>> >>> Ack, done. >> Thank you! Should this (and H.J. Lu's "missing test-c8rtomb/test-mbrtoc8 dependency" patch) be merged for 2.36? Both appear to have been approved for 2.36 but I don't see them on the release/2.36/master branch at the moment. > I think I did it [1]. Looks, good, thank you! Tom. > > [1] https://sourceware.org/git/?p=glibc.git;a=shortlog;h=refs/heads/release/2.36/master