On Mon, 3 Jun 2024 at 18:46, François Dumont <frs.dum...@gmail.com> wrote:
>
>
> On 03/06/2024 18:20, Jonathan Wakely wrote:
> > On Mon, 3 Jun 2024 at 05:56, François Dumont <frs.dum...@gmail.com> wrote:
> >> I hadn't try to make my patch as limited as possible to fix the problem,
> >> indeed.
> >>
> >>       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)): Add __builtin_unreachable
> >> expression to tell
> >>               the compiler that the allocated buffer is large enough to
> >> receive current
> >>               elements plus the range to insert.
> >>
> >> Tested under Linux x64, ok to commit ?
> > Does the !__builtin_constant_p(__len) in this version do anything?
> >
> > If it's a constant, then the compiler can already provide it's in
> > range, so the __builtin_unreachable() is redundant, but doesn't do any
> > harm.
> >
> Yes, it prevents some constexpr test failure because
> __builtin_unreachable is not a constexpr (at least not for some C++
> Standard versions).
>
> But it wasn't a nice way to avoid this regression. Here is another
> proposal that activate the __builtin_unreachable only for pre-c++11
> modes. C++03 had no problem neither but I haven't found any occurrence
> of __cplusplus checks against the C++03 version so I prefer not to add any.
>
>      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 < 2011103L]: 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.
>
> Ok to commit ?


OK for trunk and gcc-14, thanks.

Reply via email to