https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98749

--- Comment #5 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Jonathan Wakely <r...@gcc.gnu.org>:

https://gcc.gnu.org/g:3e9fff1b7f9a31e6bc635880b09cbc32f8be353d

commit r16-999-g3e9fff1b7f9a31e6bc635880b09cbc32f8be353d
Author: Jonathan Wakely <jwak...@redhat.com>
Date:   Wed Jan 15 09:05:28 2025 +0000

    libstdc++: Rewrite std::counting_semaphore base class [PR118494]

    Remove __platform_semaphore. Replace __atomic_semaphore with
    __semaphore_base<bool> and change its counter to be ptrdiff_t when the
    count doesn't fit in __platform_wait_t (PR 118494).

    Make the std::counting_semaphore constructor constexpr to support
    constant initialization (PR 110854).

    Add precondition checks to the constructor and release member functions
    (PR 98749).

    libstdc++-v3/ChangeLog:

            PR libstdc++/118494
            PR libstdc++/110854
            PR libstdc++/98749
            * acinclude.m4 (GLIBCXX_CHECK_GTHREADS): Remove checks for
            sem_timedwait. Do not define _GLIBCXX_HAVE_POSIX_SEMAPHORE.
            * config.h.in: Regenerate.
            * configure: Regenerate.
            * include/bits/semaphore_base.h (__platform_semaphore): Remove.
            (__atomic_semaphore): Replace with __semaphore_base<bool> and
            make type of _M_count depend on template parameter. Fix _S_max
            constant to use correct type.
            (__semaphore_base::_M_try_acquire): Qualify to avoid ADL.
            (__semaphore_base::_M_release): Return old value. Remove FIXME
            comment.
            (__semaphore_impl): Replace typedef with alias template.
            * include/bits/version.def (semaphore): Do not depend on
            _GLIBCXX_HAVE_POSIX_SEMAPHORE.
            * include/bits/version.h: Regenerate.
            * include/std/semaphore (semaphore): Adjust type of _M_sem
            member. Add constexpr to constructor. Add assertions to
            (semaphore::semaphore(ptrdiff_t)): Add constexpr. Add assertion
            for precondition.
            (semaphore::release): Add assertion using value returned from
            _M_release.
            * testsuite/30_threads/semaphore/100806.cc: Increase template
            argument for std::counting_semaphore, so constructor
            precondition is met.
            * testsuite/30_threads/semaphore/cons.cc: New test.
            * testsuite/30_threads/semaphore/try_acquire_posix.cc: Remove.
            * testsuite/30_threads/semaphore/platform_try_acquire_for.cc:
            Removed.

Reply via email to