diff --git a/libcxxabi/src/cxa_guard_impl.h b/libcxxabi/src/cxa_guard_impl.h index 32dbb18bd396..d431050ca3a8 100644 --- a/libcxxabi/src/cxa_guard_impl.h +++ b/libcxxabi/src/cxa_guard_impl.h @@ -156,8 +156,6 @@ uint32_t PlatformThreadID() { constexpr uint32_t (*PlatformThreadID)() = nullptr; #endif -constexpr bool PlatformSupportsThreadID() { return +PlatformThreadID != nullptr; } - //===----------------------------------------------------------------------===// // GuardBase //===----------------------------------------------------------------------===// @@ -289,7 +287,7 @@ struct InitByteGlobalMutex : GuardObject> { /// ARM Constructor explicit InitByteFutex(uint32_t* g) - : BaseT(g), init_byte(this->init_byte_address), has_thread_id_support(this->thread_id_address && GetThreadIDArg), + : BaseT(g), init_byte(this->init_byte_address), + has_thread_id_support(this->thread_id_address && GetThreadIDArg != nullptr), thread_id(this->thread_id_address) {} /// Itanium Constructor explicit InitByteFutex(uint64_t* g) - : BaseT(g), init_byte(this->init_byte_address), has_thread_id_support(this->thread_id_address && GetThreadIDArg), + : BaseT(g), init_byte(this->init_byte_address), + has_thread_id_support(this->thread_id_address && GetThreadIDArg != nullptr), thread_id(this->thread_id_address) {} public: diff --git a/libcxxabi/test/guard_test_basic.pass.cpp b/libcxxabi/test/guard_test_basic.pass.cpp index b97aeb226d97..588069bb3759 100644 --- a/libcxxabi/test/guard_test_basic.pass.cpp +++ b/libcxxabi/test/guard_test_basic.pass.cpp @@ -12,9 +12,10 @@ #include "../src/cxa_guard_impl.h" #include -// Disable GCC warning about tautological comparison of a function's address -#if defined(__GNUC__) && !defined(__clang__) -# pragma GCC diagnostic ignored "-Waddress" +#if defined(__clang__) +# pragma clang diagnostic ignored "-Wtautological-pointer-compare" +#elif defined(__GNUC__) +# pragma GCC diagnostic ignored "-Waddress" #endif using namespace __cxxabiv1; @@ -135,7 +136,7 @@ int main(int, char**) { #if (defined(__APPLE__) || defined(__linux__)) && !defined(_LIBCXXABI_HAS_NO_THREADS) assert(PlatformThreadID); #endif - if (PlatformSupportsThreadID()) { + if (PlatformThreadID != nullptr) { assert(PlatformThreadID() != 0); assert(PlatformThreadID() == PlatformThreadID()); }