https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108197
Bug ID: 108197
Summary: -Wstringop-overread emitted on simple boost
small_vector code
Product: gcc
Version: 13.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: steveire at gmail dot com
Target Milestone: ---
```
#include <boost/container/small_vector.hpp>
struct MyThing
{
int d0 = {};
};
void modify(boost::container::small_vector<MyThing, 10> &pp)
{
pp.resize(1);
pp[0].d0 = 3;
}
void foo()
{
boost::container::small_vector<MyThing, 10> pp2;
boost::container::small_vector<MyThing, 10> pp;
pp.resize(1);
pp[0].d0 = 2;
pp2 = std::move(pp);
}
```
gives
```
/opt/compiler-explorer/libs/boost_1_80_0/boost/container/detail/copy_move_algo.hpp:184:19:
warning: 'void* __builtin_memcpy(void*, const void*, long unsigned int)'
reading between 41 and 9223372036854775804 bytes from a region of size 40
[-Wstringop-overread]
184 | std::memmove(dest_raw, beg_raw, sizeof(value_type)*n);
```
https://godbolt.org/z/rs3oj3YoE
Even though modify is never called, it must be in the code to reproduce the
bug.