Index: libcxx/include/thread =================================================================== --- libcxx/include/thread +++ libcxx/include/thread @@ -367,12 +367,10 @@ using namespace chrono; if (__d > duration<_Rep, _Period>::zero()) { -#if defined(_LIBCPP_COMPILER_GCC) && (__powerpc__ || __POWERPC__) - // GCC's long double const folding is incomplete for IBM128 long doubles. - _LIBCPP_CONSTEXPR duration _Max = nanoseconds::max(); -#else - _LIBCPP_CONSTEXPR duration _Max = duration(ULLONG_MAX/1000000000ULL) ; -#endif + // The standard guarantees a 64bit signed integer resolution for nanoseconds, + // so use INT64_MAX / 1e9 as cut-off point. Use a constant to avoid + // and issues with long double folding on PowerPC with GCC. + _LIBCPP_CONSTEXPR duration _Max = duration(9223372036.0L) ; nanoseconds __ns; if (__d < _Max) {