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.
|
||||
#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
|
||||
// pthread_mutex_destroy as nop for regular mutexes. Additionally, Win32
|
||||
// mutexes have no destroy mechanism.
|
||||
|
|
|
@ -14,8 +14,6 @@
|
|||
|
||||
thread synopsis
|
||||
|
||||
#define __STDCPP_THREADS__ __cplusplus
|
||||
|
||||
namespace std
|
||||
{
|
||||
|
||||
|
@ -107,8 +105,6 @@ void sleep_for(const chrono::duration<Rep, Period>& rel_time);
|
|||
_LIBCPP_PUSH_MACROS
|
||||
#include <__undef_macros>
|
||||
|
||||
#define __STDCPP_THREADS__ __cplusplus
|
||||
|
||||
#ifdef _LIBCPP_HAS_NO_THREADS
|
||||
#error <thread> is not supported on this single threaded system
|
||||
#else // !_LIBCPP_HAS_NO_THREADS
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
// <thread>
|
||||
|
||||
// #define __STDCPP_THREADS__ __cplusplus
|
||||
// #define __STDCPP_THREADS__ 1
|
||||
|
||||
#include <thread>
|
||||
|
||||
|
@ -20,6 +20,8 @@ int main(int, char**)
|
|||
{
|
||||
#ifndef __STDCPP_THREADS__
|
||||
#error __STDCPP_THREADS__ is not defined
|
||||
#elif __STDCPP_THREADS__ != 1
|
||||
#error __STDCPP_THREADS__ has the wrong value
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue