diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2019-11-18 12:46:08 +0000 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2019-11-18 12:46:08 +0000 |
commit | ebc464940de77b8e22f99d1e2b1a1a3bf23eb24d (patch) | |
tree | 4d53deb7d80e5c8c96d81c3879c751e5cfdaacde /libgcc | |
parent | 3b39526e0a34a41f916f80bcb45f2e1c64dcf763 (diff) | |
download | gcc-ebc464940de77b8e22f99d1e2b1a1a3bf23eb24d.zip gcc-ebc464940de77b8e22f99d1e2b1a1a3bf23eb24d.tar.gz gcc-ebc464940de77b8e22f99d1e2b1a1a3bf23eb24d.tar.bz2 |
libstdc++: Fix std::jthread bugs
The std::jthread::get_id() function was missing a return statement.
The is_invocable check needs to be done using decayed types, as they'll
be forwarded to std::invoke as rvalues.
Also reduce header dependencies for the <thread> header. We don't need
to include <functional> for std::jthread because <bits/invoke.h> is
already included, which defines std::__invoke. We can also remove
<bits/functexcept.h> which isn't used at all. Finally, when
_GLIBCXX_HAS_GTHREADS is not defined there's no point including any
other headers, since we're not going to define anything in <thread>
anyway.
* include/std/thread: Reduce header dependencies.
(jthread::get_id()): Add missing return.
(jthread::get_stop_token()): Avoid unnecessary stop_source temporary.
(jthread::_S_create): Check is_invocable using decayed types. Add
static assertion.
* testsuite/30_threads/jthread/1.cc: Add dg-require-gthreads.
* testsuite/30_threads/jthread/2.cc: Likewise.
* testsuite/30_threads/jthread/3.cc: New test.
* testsuite/30_threads/jthread/jthread.cc: Add missing directives for
pthread and gthread support. Use VERIFY instead of assert.
From-SVN: r278402
Diffstat (limited to 'libgcc')
0 files changed, 0 insertions, 0 deletions