From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com [IPv6:2a00:1450:4864:20::42c]) by sourceware.org (Postfix) with ESMTPS id 83B803858D35; Fri, 10 Dec 2021 09:51:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 83B803858D35 Received: by mail-wr1-x42c.google.com with SMTP id d9so13975698wrw.4; Fri, 10 Dec 2021 01:51:23 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=ls1rVBqopNwqbLPMUY+2QrD7IeX5mN1XAwTamDK3mWU=; b=rhRF0hzPHLHpJ5dqtHuH3Ni2xLrgG42WnB9Z7phhaKoBhnPEN+kv4KVEVYohT9pIW6 6kOqGH+lixtC5EsvbaCzx6ulLmwLCRgbtyHBH4d8DdXiyxcxL5aUoPu83KX/aAJPlXEP BDjK4GmcNd2OadW7LwI09zj0YuYSthPD7vaX4ZNtX2nNdyZHPpeNhBXCleRqtGRP48Fm QmBygDELacp20M359m2YVvUPl3OmDBPftYrNsDWY7+ShcWvZFdLNe2j6syTNRZJeAK1i CIq4G8H7dJglSUKokQaUjqDHmEkls7AlafdG8KaLHms7SiqBYAv6tHd7L4iK1fGnHD1e MhmQ== X-Gm-Message-State: AOAM5321ViEwCGPCO6KPkULlrsAWGeC51X7P81xcK4Q178hPiNn/fGed avN/juMvTMVgouKiSqP73td/0ZhTWwhgaX5hI3Y= X-Google-Smtp-Source: ABdhPJxVQm3lzrOAG74KPE1nkN08iHedGo5RqTFegXkO9A/eH2KX7E3V7FMf2gO4dpZvyw/F2aWPcT7S/IAOCdq47fM= X-Received: by 2002:a5d:6085:: with SMTP id w5mr13130034wrt.122.1639129882477; Fri, 10 Dec 2021 01:51:22 -0800 (PST) MIME-Version: 1.0 References: <20211209232453.1568609-1-jwakely@redhat.com> In-Reply-To: From: Jonathan Wakely Date: Fri, 10 Dec 2021 09:51:11 +0000 Message-ID: Subject: Re: [committed] libstdc++: Disable over-zealous warnings about std::string copies [PR103332] To: Martin Sebor Cc: Jonathan Wakely , "libstdc++" , gcc-patches Content-Type: multipart/mixed; boundary="00000000000062e5f405d2c7aa2d" X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Dec 2021 09:51:25 -0000 --00000000000062e5f405d2c7aa2d Content-Type: text/plain; charset="UTF-8" On Fri, 10 Dec 2021 at 00:39, Martin Sebor via Libstdc++ wrote: > > On 12/9/21 4:24 PM, Jonathan Wakely via Gcc-patches wrote: > > These warnings are triggered by perfectly valid code using std::string. > > They're particularly bad when --enable-fully-dynamic-string is used, > > because even std::string().begin() will give a warning. > > > > Use pragmas to stop the troublesome warnings for copies done by > > std::char_traits. > > I'm still experimenting with some of the approaches we discussed > last week, but based on my findings so far this was going to be > my suggestion at lest for now, until or unless the problem turns > out to affect more code than just std::string. > > That said, I noticed a typo in the patch: > > > > > libstdc++-v3/ChangeLog: > > > > PR libstdc++/103332 > > PR libstdc++/102958 > > PR libstdc++/103483 > > * include/bits/char_traits.h: Suppress stringop and array-bounds > > warnings. > > --- > > libstdc++-v3/include/bits/char_traits.h | 7 +++++++ > > 1 file changed, 7 insertions(+) > > > > diff --git a/libstdc++-v3/include/bits/char_traits.h b/libstdc++-v3/include/bits/char_traits.h > > index da3e0ffffaa..3f7befcf8b2 100644 > > --- a/libstdc++-v3/include/bits/char_traits.h > > +++ b/libstdc++-v3/include/bits/char_traits.h > > @@ -54,6 +54,11 @@ namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) > > { > > _GLIBCXX_BEGIN_NAMESPACE_VERSION > > > > +#pragma GCC diagnostic push > > +#pragma GCC diagnostic ignored "-Wstringop-overflow" > > +#pragma GCC diagnostic ignored "-Wstringop-overread" > > +#pragma GCC diagnostic ignored "-Warray-bounds" > > (Just for reference, as I mentioned in my private mail, at -O1 > the same code also triggers -Wfree-nonheap-object.) > > > + > > /** > > * @brief Mapping from character type to associated types. > > * > > @@ -990,6 +995,8 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION > > } // namespace __detail > > #endif // C++20 > > > > +#pragma GCC diagnostic push > > This should be pop. Oops! thanks, fixed at r12-5888 by the attached patch. Tested x86_64-linux, pushed to trunk. --00000000000062e5f405d2c7aa2d Content-Type: text/plain; charset="US-ASCII"; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kx07l53z0 Y29tbWl0IGRiMTg0YTM0NTNiNmZlODEwZTJkOTc2NWVmOGVkOTAyOGY5NmU5NjgKQXV0aG9yOiBK b25hdGhhbiBXYWtlbHkgPGp3YWtlbHlAcmVkaGF0LmNvbT4KRGF0ZTogICBGcmkgRGVjIDEwIDA5 OjA2OjM3IDIwMjEKCiAgICBsaWJzdGRjKys6IEZpeCBkaWFnbm9zdGljIHByYWdtYSBwdXNoIHRo YXQgc2hvdWxkIGJlIHBvcAogICAgCiAgICBsaWJzdGRjKystdjMvQ2hhbmdlTG9nOgogICAgCiAg ICAgICAgICAgICogaW5jbHVkZS9iaXRzL2NoYXJfdHJhaXRzLmg6IENoYW5nZSBwcmFnbWEgcHVz aCB0byBwb3AuCgpkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9jaGFyX3Ry YWl0cy5oIGIvbGlic3RkYysrLXYzL2luY2x1ZGUvYml0cy9jaGFyX3RyYWl0cy5oCmluZGV4IDNm N2JlZmNmOGIyLi4xMzIzOTU4MDYyMiAxMDA2NDQKLS0tIGEvbGlic3RkYysrLXYzL2luY2x1ZGUv Yml0cy9jaGFyX3RyYWl0cy5oCisrKyBiL2xpYnN0ZGMrKy12My9pbmNsdWRlL2JpdHMvY2hhcl90 cmFpdHMuaApAQCAtOTk1LDcgKzk5NSw3IEBAIF9HTElCQ1hYX0JFR0lOX05BTUVTUEFDRV9WRVJT SU9OCiAgIH0gLy8gbmFtZXNwYWNlIF9fZGV0YWlsCiAjZW5kaWYgLy8gQysrMjAKIAotI3ByYWdt YSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAogCiBfR0xJ QkNYWF9FTkRfTkFNRVNQQUNFX1ZFUlNJT04KIH0gLy8gbmFtZXNwYWNlCg== --00000000000062e5f405d2c7aa2d--