mirror of git://gcc.gnu.org/git/gcc.git
libstdc++: Fix missing __to_timeout_timespec for targets using POSIX sleep [PR122293]
The preprocessor condition for defining the new __to_timeout_timespec function templates did not match all the conditions under which it's needed. std::this_thread::sleep_for is defined #if ! defined _GLIBCXX_NO_SLEEP but it relies on __to_timeout_timespec which was only being defined for targets that use nanosleep, or clock_gettime, or use gthreads. For a non-gthreads target that uses POSIX sleep to implement std::this_thread::sleep_for, the build fails with: include/bits/this_thread_sleep.h:71:40: error: '__to_timeout_timespec' is not a member of 'std::chrono' [-Wtemplate-body] 71 | struct timespec __ts = chrono::__to_timeout_timespec(__rtime); | ^~~~~~~~~~~~~~~~~~~~~ Presumably the same would happen for mingw-w64 if configured with --disable-threads (as that would be a non-gthreads target that doesn't use nanosleep or clock_gettime). libstdc++-v3/ChangeLog: PR libstdc++/122293 * include/bits/chrono.h (__to_timeout_timespec): Fix preprocessor condition to match the conditions under which callers of this function are defined. * include/bits/this_thread_sleep.h: Remove unused include.
This commit is contained in:
parent
f81e712120
commit
524bca2e33
|
@ -1515,8 +1515,9 @@ _GLIBCXX_END_INLINE_ABI_NAMESPACE(_V2)
|
|||
} // namespace filesystem
|
||||
#endif // C++17 && HOSTED
|
||||
|
||||
#if defined _GLIBCXX_USE_NANOSLEEP || defined _GLIBCXX_USE_CLOCK_REALTIME \
|
||||
|| defined _GLIBCXX_HAS_GTHREADS
|
||||
#if _GLIBCXX_HOSTED
|
||||
#if ! defined _GLIBCXX_NO_SLEEP || defined _GLIBCXX_HAS_GTHREADS \
|
||||
|| _GLIBCXX_HAVE_LINUX_FUTEX
|
||||
namespace chrono
|
||||
{
|
||||
/// @cond undocumented
|
||||
|
@ -1585,7 +1586,8 @@ namespace chrono
|
|||
|
||||
/// @endcond
|
||||
} // namespace chrono
|
||||
#endif // USE_NANOSLEEP || USE_CLOCK_REALTIME || HAS_GTHREADS
|
||||
#endif // !NO_SLEEP || HAS_GTHREADS || HAVE_LINUX_FUTEX
|
||||
#endif // HOSTED
|
||||
|
||||
_GLIBCXX_END_NAMESPACE_VERSION
|
||||
} // namespace std
|
||||
|
|
|
@ -36,7 +36,6 @@
|
|||
|
||||
#if __cplusplus >= 201103L
|
||||
#include <bits/chrono.h> // std::chrono::*
|
||||
#include <ext/numeric_traits.h> // __int_traits
|
||||
|
||||
#ifdef _GLIBCXX_USE_NANOSLEEP
|
||||
# include <cerrno> // errno, EINTR
|
||||
|
|
Loading…
Reference in New Issue