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

--- Comment #12 from CVS 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:f33a43f9f7eab7482837662821abb7fd02cb4350

commit r11-3653-gf33a43f9f7eab7482837662821abb7fd02cb4350
Author: Mike Crowe <m...@mcrowe.com>
Date:   Mon Oct 5 11:12:38 2020 +0100

    libstdc++: Use correct duration for atomic_futex wait on custom clock [PR
91486]

    As Jonathan Wakely pointed out[1], my change in commit
    f9ddb696a289cc48d24d3d23c0b324cb88de9573 should have been rounding to
    the target clock duration type rather than the input clock duration type
    in __atomic_futex_unsigned::_M_load_when_equal_until just as (e.g.)
    condition_variable does.

    As well as fixing this, let's create a rather contrived test that fails
    with the previous code, but unfortunately only when run on a machine
    with an uptime of over 208.5 days, and even then not always.

    [1] https://gcc.gnu.org/pipermail/libstdc++/2020-September/051004.html

    libstdc++-v3/ChangeLog:

            PR libstdc++/91486
            * include/bits/atomic_futex.h:
            (__atomic_futex_unsigned::_M_load_when_equal_until): Use target
            clock duration type when rounding.
            * testsuite/30_threads/async/async.cc (test_pr91486_wait_for):
            Rename from test_pr91486.
            (float_steady_clock): New class for test.
            (test_pr91486_wait_until): New test.

Reply via email to