I saw there are quite a few similar issues reported. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=Wrestrict Maybe it is similar to this one https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105651 Jonny On 11/02/2023 23:38, Jonny Grant wrote: > Hello > > Anyone else seeing an issue when using c++23 ? > gcc (Ubuntu 12.2.0-3ubuntu1) 12.2.0 > > The only change is to use --std=c++23 > > -Wrestrict is enabled by -Wall > > > #include <string> > > typedef struct a_bc > { > std::string a; > std::string b; > } a_t; > > void f() > { > a_t c; > > c.a = " sdfsdf fsdfsdf fdfsfdsdf "; // seems to need this long string to reproduce, down to 8 bytes it didn't > c.b = "E"; > } > > > > > > > > > $ g++ -O3 --std=c++23 -Wall -c -o gcc_err3 src/gcc_err3.cpp > In file included from /usr/include/c++/12/string:40, > from src/gcc_err3.cpp:4: > In static member function ‘static constexpr std::char_traits<char>::char_type* std::char_traits<char>::copy(char_type*, const char_type*, std::size_t)’, > inlined from ‘static constexpr void std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_S_copy(_CharT*, const _CharT*, size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:423:21, > inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Allocator>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::_M_replace(size_type, size_type, const _CharT*, size_type) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.tcc:532:22, > inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::assign(const _CharT*) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:1647:19, > inlined from ‘constexpr std::__cxx11::basic_string<_CharT, _Traits, _Alloc>& std::__cxx11::basic_string<_CharT, _Traits, _Alloc>::operator=(const _CharT*) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]’ at /usr/include/c++/12/bits/basic_string.h:815:28, > inlined from ‘void f(const std::string&, bool, bool)’ at src/gcc_err3.cpp:17:13: > /usr/include/c++/12/bits/char_traits.h:431:56: warning: ‘void* __builtin_memcpy(void*, const void*, long unsigned int)’ accessing 9223372036854775810 or more bytes at offsets -4611686018427387902 and [-4611686018427387903, 4611686018427387904] may overlap up to 9223372036854775813 bytes at offset -3 [-Wrestrict] > 431 | return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n)); > | ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~