From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 4EAA93858C74; Mon, 2 May 2022 19:43:40 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4EAA93858C74 From: "jakub at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug tree-optimization/105329] [12/13 Regression] Bogus restrict warning when assigning 1-char string literal to std::string since r12-3347-g8af8abfbbace49e6 Date: Mon, 02 May 2022 19:43:39 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: tree-optimization X-Bugzilla-Version: 12.0 X-Bugzilla-Keywords: diagnostic, missed-optimization X-Bugzilla-Severity: normal X-Bugzilla-Who: jakub at gcc dot gnu.org X-Bugzilla-Status: NEW X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: 12.0 X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 X-BeenThere: gcc-bugs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-bugs mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 May 2022 19:43:40 -0000 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D105329 --- Comment #16 from Jakub Jelinek --- (In reply to Richard Biener from comment #11) > Maybe >=20 > _GLIBCXX20_CONSTEXPR > basic_string& > assign(const _CharT* __s) > { > __glibcxx_requires_string(__s); > return _M_replace(size_type(0), this->size(), __s, > traits_type::length(__s)); > } >=20 > isn't the most efficient way to assign a string (constant) looking at For string constant sure, but unless we know that __s points to a string literal, we need to do those overlap checks I'm afraid. Or is something like: void g (std::string& s) { s =3D s.c_str() + 16; } invalid if s is before known to contain a string longer than 16 chars?=