summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/llvm/constexpr_longdouble.patch
diff options
context:
space:
mode:
Diffstat (limited to 'var/spack/repos/builtin/packages/llvm/constexpr_longdouble.patch')
-rw-r--r--var/spack/repos/builtin/packages/llvm/constexpr_longdouble.patch21
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)