diff options
Diffstat (limited to 'var/spack/repos/builtin/packages/llvm/constexpr_longdouble.patch')
-rw-r--r-- | var/spack/repos/builtin/packages/llvm/constexpr_longdouble.patch | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/var/spack/repos/builtin/packages/llvm/constexpr_longdouble.patch b/var/spack/repos/builtin/packages/llvm/constexpr_longdouble.patch index f825b14210..8b90001d63 100644 --- a/var/spack/repos/builtin/packages/llvm/constexpr_longdouble.patch +++ b/var/spack/repos/builtin/packages/llvm/constexpr_longdouble.patch @@ -1,14 +1,27 @@ +From 3bf63cf3b366d3a57cf5cbad4112a6abf6c0c3b1 Mon Sep 17 00:00:00 2001 +From: Marshall Clow <mclow.lists@gmail.com> +Date: Tue, 2 Apr 2019 14:46:36 +0000 +Subject: [PATCH] Special case some duration arithmetic for GCC and PPC because + their long double constant folding is broken. Fixes PR#39696. + +llvm-svn: 357478 +--- + libcxx/include/thread | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/libcxx/include/thread b/libcxx/include/thread +index df06ff70f8e37f22f4108be8e5e79a38052a11dd..400459ae7f32c4d7cd24b2d85c49d789500e432d 100644 --- a/libcxx/include/thread +++ b/libcxx/include/thread -@@ -435,7 +435,12 @@ sleep_for(const chrono::duration<_Rep, _Period>& __d) +@@ -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__)) ++#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 = nanoseconds::max(); -+#else + _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) |