From 636795a6dfc17ead7b22b9f76b0fc47bdb9d357d Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Thu, 18 Aug 2022 23:53:16 -0400 Subject: [PATCH] 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. --- libstdc++-v3/include/bits/basic_string.tcc | 4 ++++ 1 file changed, 4 insertions(+) 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); } -- 2.47.3