Special case some duration arithmetic for GCC and PPC because their long double constant folding is broken. Fixes PR#39696.
llvm-svn: 357478
This commit is contained in:
@@ -434,7 +434,12 @@ sleep_for(const chrono::duration<_Rep, _Period>& __d)
|
||||
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<long double> _Max = duration<long double>(ULLONG_MAX/1000000000ULL) ;
|
||||
#else
|
||||
_LIBCPP_CONSTEXPR duration<long double> _Max = nanoseconds::max();
|
||||
#endif
|
||||
nanoseconds __ns;
|
||||
if (__d < _Max)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user