libcxx: Define __STDCPP_THREADS__ to 1, not to __cplusplus.
[cpp.predefined]p2: __STDCPP_THREADS__ Defined, and has the value integer literal 1, if and only if a program can have more than one thread of execution . Also define it only if it's not defined already, since it's supposed to be defined by the compiler. Also move it from thread to __config (which requires setting it only if _LIBCPP_HAS_NO_THREADS is not defined). Part of PR33230. The intent is to eventually make the compiler define this instead. llvm-svn: 367316
This commit is contained in:
parent
9ad716ed39
commit
9aae539d4c
|
@ -1097,6 +1097,14 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container(
|
||||||
_LIBCPP_HAS_NO_THREADS is defined.
|
_LIBCPP_HAS_NO_THREADS is defined.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__STDCPP_THREADS__) && defined(_LIBCPP_HAS_NO_THREADS)
|
||||||
|
#error _LIBCPP_HAS_NO_THREADS cannot be set when __STDCPP_THREADS__ is set.
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(_LIBCPP_HAS_NO_THREADS) && !defined(__STDCPP_THREADS__)
|
||||||
|
#define __STDCPP_THREADS__ 1
|
||||||
|
#endif
|
||||||
|
|
||||||
// The glibc and Bionic implementation of pthreads implements
|
// The glibc and Bionic implementation of pthreads implements
|
||||||
// pthread_mutex_destroy as nop for regular mutexes. Additionally, Win32
|
// pthread_mutex_destroy as nop for regular mutexes. Additionally, Win32
|
||||||
// mutexes have no destroy mechanism.
|
// mutexes have no destroy mechanism.
|
||||||
|
|
|
@ -14,8 +14,6 @@
|
||||||
|
|
||||||
thread synopsis
|
thread synopsis
|
||||||
|
|
||||||
#define __STDCPP_THREADS__ __cplusplus
|
|
||||||
|
|
||||||
namespace std
|
namespace std
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -107,8 +105,6 @@ void sleep_for(const chrono::duration<Rep, Period>& rel_time);
|
||||||
_LIBCPP_PUSH_MACROS
|
_LIBCPP_PUSH_MACROS
|
||||||
#include <__undef_macros>
|
#include <__undef_macros>
|
||||||
|
|
||||||
#define __STDCPP_THREADS__ __cplusplus
|
|
||||||
|
|
||||||
#ifdef _LIBCPP_HAS_NO_THREADS
|
#ifdef _LIBCPP_HAS_NO_THREADS
|
||||||
#error <thread> is not supported on this single threaded system
|
#error <thread> is not supported on this single threaded system
|
||||||
#else // !_LIBCPP_HAS_NO_THREADS
|
#else // !_LIBCPP_HAS_NO_THREADS
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
// <thread>
|
// <thread>
|
||||||
|
|
||||||
// #define __STDCPP_THREADS__ __cplusplus
|
// #define __STDCPP_THREADS__ 1
|
||||||
|
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
|
||||||
|
@ -20,6 +20,8 @@ int main(int, char**)
|
||||||
{
|
{
|
||||||
#ifndef __STDCPP_THREADS__
|
#ifndef __STDCPP_THREADS__
|
||||||
#error __STDCPP_THREADS__ is not defined
|
#error __STDCPP_THREADS__ is not defined
|
||||||
|
#elif __STDCPP_THREADS__ != 1
|
||||||
|
#error __STDCPP_THREADS__ has the wrong value
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue