Index: include/__config =================================================================== --- include/__config +++ include/__config @@ -1100,17 +1100,20 @@ // The Apple, glibc, and Bionic implementation of pthreads implements // pthread_mutex_destroy as nop for regular mutexes. Additionally, Win32 // mutexes have no destroy mechanism. -// TODO(EricWF): Enable this optimization on Apple and Bionic platforms after +// TODO(EricWF): Enable this optimization on Bionic platforms after // speaking to their respective stakeholders. -#if (defined(_LIBCPP_HAS_THREAD_API_PTHREAD) && defined(__GLIBC__)) \ +#if (defined(_LIBCPP_HAS_THREAD_API_PTHREAD) \ + && (defined(__GLIBC__) || defined(__APPLE__))) \ || defined(_LIBCPP_HAS_THREAD_API_WIN32) # define _LIBCPP_HAS_TRIVIAL_MUTEX_DESTRUCTION #endif -// Destroying a condvar is a nop on Windows. +// Destroying a condvar is a nop on Windows and with certain pthread +// implementations. // TODO(EricWF): This is potentially true for some pthread implementations // as well. -#if defined(_LIBCPP_HAS_THREAD_API_WIN32) +#if (defined(_LIBCPP_HAS_THREAD_API_PTHREAD) && defined(__APPLE__)) \ + || defined(_LIBCPP_HAS_THREAD_API_WIN32) # define _LIBCPP_HAS_TRIVIAL_CONDVAR_DESTRUCTION #endif