From: Jason Merrill Date: Fri, 19 Aug 2022 03:53:16 +0000 (-0400) Subject: libstdc++: avoid bogus -Wrestrict [PR105651] X-Git-Tag: vendors/ARM/release-12.3.rel1~14 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=636795a6dfc17ead7b22b9f76b0fc47bdb9d357d;p=thirdparty%2Fgcc.git libstdc++: avoid bogus -Wrestrict [PR105651] PR tree-optimization/105651 libstdc++-v3/ChangeLog: * include/bits/basic_string.tcc (_M_replace): Add an assert to avoid -Wrestrict false positive. --- diff --git a/libstdc++-v3/include/bits/basic_string.tcc b/libstdc++-v3/include/bits/basic_string.tcc index 0696b96604c1..48fa28e64668 100644 --- a/libstdc++-v3/include/bits/basic_string.tcc +++ b/libstdc++-v3/include/bits/basic_string.tcc @@ -529,6 +529,10 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION { const size_type __nleft = (__p + __len1) - __s; this->_S_move(__p, __s, __nleft); + // Tell the middle-end that the copy can't overlap + // (PR105651). + if (__len2 < __nleft) + __builtin_unreachable(); this->_S_copy(__p + __nleft, __p + __len2, __len2 - __nleft); }