Index: libcxx/include/__config =================================================================== --- libcxx/include/__config +++ libcxx/include/__config @@ -1148,14 +1148,13 @@ #if (!defined(_LIBCPP_HAS_C_ATOMIC_IMP) && \ !defined(_LIBCPP_HAS_GCC_ATOMIC_IMP) && \ - !defined(_LIBCPP_HAS_EXTERNAL_ATOMIC_IMP)) \ - || defined(_LIBCPP_HAS_NO_THREADS) + !defined(_LIBCPP_HAS_EXTERNAL_ATOMIC_IMP)) # define _LIBCPP_HAS_NO_ATOMIC_HEADER #else # ifndef _LIBCPP_ATOMIC_FLAG_TYPE # define _LIBCPP_ATOMIC_FLAG_TYPE bool # endif -# ifdef _LIBCPP_FREESTANDING +# if defined(_LIBCPP_FREESTANDING) || defined(_LIBCPP_HAS_NO_THREADS) # define _LIBCPP_ATOMIC_ONLY_USE_BUILTINS # endif #endif Index: libcxx/include/atomic =================================================================== --- libcxx/include/atomic +++ libcxx/include/atomic @@ -556,9 +556,6 @@ #pragma GCC system_header #endif -#ifdef _LIBCPP_HAS_NO_THREADS -# error is not supported on this single threaded system -#endif #ifdef _LIBCPP_HAS_NO_ATOMIC_HEADER # error is not implemented #endif Index: libcxx/src/memory.cpp =================================================================== --- libcxx/src/memory.cpp +++ libcxx/src/memory.cpp @@ -134,7 +134,7 @@ #endif // _LIBCPP_NO_RTTI -#if !defined(_LIBCPP_HAS_NO_ATOMIC_HEADER) +#if !defined(_LIBCPP_HAS_NO_THREADS) _LIBCPP_SAFE_STATIC static const std::size_t __sp_mut_count = 16; _LIBCPP_SAFE_STATIC static __libcpp_mutex_t mut_back[__sp_mut_count] = @@ -185,7 +185,7 @@ return muts[hash()(p) & (__sp_mut_count-1)]; } -#endif // !defined(_LIBCPP_HAS_NO_ATOMIC_HEADER) +#endif // !defined(_LIBCPP_HAS_NO_THREADS) void declare_reachable(void*)