On Thu, 4 Dec 2025 at 06:16, François Dumont <[email protected]> wrote:
>
>      std::erase and std::erase_if are broken for users directly referencing
>      __gnu_debug::deque in their code that is to say without activating the
>      _GLIBCXX_DEBUG mode. The iterators potentially invalidated by the erase
>      operations are not detected by the __gnu_debug::deque container and so
>      won't be reported as invalidated.
>
>      We need explicit std::erase and std::erase_if implementations for
>      std::__debug::deque which will work also when _GLIBCXX_DEBUG mode is
>      activated.
>
>      libstdc++-v3/ChangeLog:
>
>              * include/debug/deque
> (std::erase_if<>(std::__debug::deque<>&, _Pred): New.
>              (std::erase<>(std::__debug::deque<>&, const _Up&): New.
>              * include/std/deque (std::erase_if(std::deque<>&, _Pred)):
> Remove
>              _GLIBCXX_DEBUG code.
>              * testsuite/23_containers/deque/debug/erase.cc: New test case.
>              *
> testsuite/23_containers/deque/debug/invalidation/erase.cc: New test case.
>
> 23_containers/deque tests run normal and _GLIBCXX_DEBUG under Linux x86_64.
>
> PR https://forge.sourceware.org/gcc/gcc-TEST/pulls/128
>
> Is PR CI state fine as proof of tests ?

The CI for this pull request only built an arm cross compiler, it
didn't run any tests yet. There is a check_gcc CI job which should
run, but it doesn't seem to have started yet.

The https://forge.sourceware.org/gcc/gcc-TEST/actions/runs/94/jobs/0/attempt/1
sanity checks failed, because the check_GNU_style.py script failed.
That should not check libstdc++ sources because we don't use GNU
style, so I've submitted a patch to fix the script.

>
> This is why I did a PR for such a trivial patch. My 10 years old laptop
> is definitely too old to run the full testsuite.

That's what the compile farm is very useful for:
https://gcc.gnu.org/wiki/CompileFarm

Have you at least run the deque tests?
make check RUNTESTFLAGS="conformance.exp=23_containers/deque/*
--target_board=unix\{,-D_GLIBCXX_DEBUG\}"

> Ok to commit ?


OK if the deque tests pass, thanks.

Reply via email to