diff options
author | Thomas Rodgers <rodgert@twrodgers.com> | 2021-05-17 11:41:26 -0700 |
---|---|---|
committer | Thomas Rodgers <rodgert@twrodgers.com> | 2021-05-17 12:05:06 -0700 |
commit | 346cbaf57828aef190de93271c0eb3f10c9aca61 (patch) | |
tree | 7480a5ab7ce1b1e9bfacc9e277517e8be1f33027 /gcc | |
parent | 58f7c7e098b79c96403c8341823ec3ba1e8b3945 (diff) | |
download | gcc-346cbaf57828aef190de93271c0eb3f10c9aca61.zip gcc-346cbaf57828aef190de93271c0eb3f10c9aca61.tar.gz gcc-346cbaf57828aef190de93271c0eb3f10c9aca61.tar.bz2 |
libstdc++: Fix wrong thread waking on notify [PR100334]
Fixes https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100334
libstdc++-v3/ChangeLog:
* include/bits/atomic_wait.h (__waiter::_M_do_wait_v): loop
until value change observed.
(__waiter_base::_M_laundered): New member.
(__waiter_base::_M_notify): Check _M_laundered to determine
whether to wake one or all.
(__detail::__atomic_compare): Return true if call to
__builtin_memcmp() == 0.
(__waiter_base::_S_do_spin_v): Adjust predicate.
* testsuite/29_atomics/atomic/wait_notify/100334.cc: New
test.
Diffstat (limited to 'gcc')
0 files changed, 0 insertions, 0 deletions