[gcc r14-10272] libstdc++: Fix -Wstringop-overflow warning coming from std::vector [PR109849]
Francois Dumont
fdumont@gcc.gnu.org
Mon Jun 3 19:54:09 GMT 2024
https://gcc.gnu.org/g:955202eb2cdbe2bc74c626bce90ee1eac410ad4f
commit r14-10272-g955202eb2cdbe2bc74c626bce90ee1eac410ad4f
Author: François Dumont <frs.dumont@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
More information about the Libstdc++-cvs
mailing list