https://gcc.gnu.org/g:955202eb2cdbe2bc74c626bce90ee1eac410ad4f
commit r14-10272-g955202eb2cdbe2bc74c626bce90ee1eac410ad4f Author: François Dumont <frs.dum...@gmail.com> Date: Sat Jun 1 22:17:19 2024 +0200 libstdc++: Fix -Wstringop-overflow warning coming from std::vector [PR109849] libstdc++-v3/ChangeLog: PR libstdc++/109849 * include/bits/vector.tcc (std::vector<>::_M_range_insert(iterator, _FwdIt, _FwdIt, forward_iterator_tag))[__cplusplus < 201103L]: Add __builtin_unreachable expression to tell the compiler that the allocated buffer is large enough to receive current elements plus the elements of the range to insert. (cherry picked from commit 0426be454448f8cfb9db21f4f669426afb7b57c8) Diff: --- libstdc++-v3/include/bits/vector.tcc | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libstdc++-v3/include/bits/vector.tcc b/libstdc++-v3/include/bits/vector.tcc index 25df060beee..42352aa63ca 100644 --- a/libstdc++-v3/include/bits/vector.tcc +++ b/libstdc++-v3/include/bits/vector.tcc @@ -1005,6 +1005,11 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER const size_type __len = _M_check_len(__n, "vector::_M_range_insert"); +#if __cplusplus < 201103LL + if (__len < (__n + (__old_start - __old_finish))) + __builtin_unreachable(); +#endif + pointer __new_start(this->_M_allocate(__len)); pointer __new_finish(__new_start); __try