[libcxx-commits] [libcxx] r367316 - libcxx: Define __STDCPP_THREADS__ to 1, not to __cplusplus.

Nico Weber via libcxx-commits libcxx-commits at lists.llvm.org
Tue Jul 30 16:21:15 PDT 2019


Forgot to add "Differential Revision: https://reviews.llvm.org/D65370",
sigh.

On Tue, Jul 30, 2019 at 10:31 AM Nico Weber via libcxx-commits <
libcxx-commits at lists.llvm.org> wrote:

> Author: nico
> Date: Tue Jul 30 07:32:47 2019
> New Revision: 367316
>
> URL: http://llvm.org/viewvc/llvm-project?rev=367316&view=rev
> Log:
> 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.
>
> Modified:
>     libcxx/trunk/include/__config
>     libcxx/trunk/include/thread
>     libcxx/trunk/test/std/thread/macro.pass.cpp
>
> Modified: libcxx/trunk/include/__config
> URL:
> http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/__config?rev=367316&r1=367315&r2=367316&view=diff
>
> ==============================================================================
> --- libcxx/trunk/include/__config (original)
> +++ libcxx/trunk/include/__config Tue Jul 30 07:32:47 2019
> @@ -1097,6 +1097,14 @@ _LIBCPP_FUNC_VIS extern "C" void __sanit
>         _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.
>
> Modified: libcxx/trunk/include/thread
> URL:
> http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/thread?rev=367316&r1=367315&r2=367316&view=diff
>
> ==============================================================================
> --- libcxx/trunk/include/thread (original)
> +++ libcxx/trunk/include/thread Tue Jul 30 07:32:47 2019
> @@ -14,8 +14,6 @@
>
>      thread synopsis
>
> -#define __STDCPP_THREADS__ __cplusplus
> -
>  namespace std
>  {
>
> @@ -107,8 +105,6 @@ void sleep_for(const chrono::duration<Re
>  _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
>
> Modified: libcxx/trunk/test/std/thread/macro.pass.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/libcxx/trunk/test/std/thread/macro.pass.cpp?rev=367316&r1=367315&r2=367316&view=diff
>
> ==============================================================================
> --- libcxx/trunk/test/std/thread/macro.pass.cpp (original)
> +++ libcxx/trunk/test/std/thread/macro.pass.cpp Tue Jul 30 07:32:47 2019
> @@ -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;
>
>
> _______________________________________________
> libcxx-commits mailing list
> libcxx-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/libcxx-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/libcxx-commits/attachments/20190730/ac7c65c1/attachment.html>


More information about the libcxx-commits mailing list