55 lines
2.0 KiB
Diff
55 lines
2.0 KiB
Diff
From a332112317450457c715675686386ec81214b863 Mon Sep 17 00:00:00 2001
|
|
From: Axel Huebl <axel.huebl@plasma.ninja>
|
|
Date: Fri, 18 Dec 2015 10:27:04 +0100
|
|
Subject: [PATCH] Fix Trac 11852: GCC & CUDA __float128
|
|
|
|
Fix trac issue
|
|
https://svn.boost.org/trac/boost/ticket/11852
|
|
|
|
Similar to
|
|
https://svn.boost.org/trac/boost/ticket/8048
|
|
|
|
`__float128` is still unsupported when compiling with nvcc
|
|
(tested with `CUDA 7.5.18`). First noticed with the latest
|
|
release (`1.60.0`) and `GCC 4.8.5` but should affect all
|
|
previous releases depending on used modules.
|
|
|
|
In my case, I triggered it with the components
|
|
`program_options regex filesystem system thread math_tr1`
|
|
enabled .
|
|
---
|
|
include/boost/config/compiler/gcc.hpp | 8 ++++++--
|
|
1 file changed, 6 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp
|
|
index d9dd59d..8683dbd 100644
|
|
--- a/include/boost/config/compiler/gcc.hpp
|
|
+++ b/include/boost/config/compiler/gcc.hpp
|
|
@@ -134,7 +134,7 @@
|
|
// Recent GCC versions have __int128 when in 64-bit mode.
|
|
//
|
|
// We disable this if the compiler is really nvcc as it
|
|
-// doesn't actually support __int128 as of CUDA_VERSION=5000
|
|
+// doesn't actually support __int128 as of CUDA_VERSION=7500
|
|
// even though it defines __SIZEOF_INT128__.
|
|
// See https://svn.boost.org/trac/boost/ticket/8048
|
|
// Only re-enable this for nvcc if you're absolutely sure
|
|
@@ -148,12 +148,16 @@
|
|
// include a std lib header to detect this - not ideal, but we'll
|
|
// be including <cstddef> later anyway when we select the std lib.
|
|
//
|
|
+// Nevertheless, as of CUDA 7.5, using __float128 with the host
|
|
+// compiler is still not supported.
|
|
+// See https://svn.boost.org/trac/boost/ticket/11852
|
|
+//
|
|
#ifdef __cplusplus
|
|
#include <cstddef>
|
|
#else
|
|
#include <stddef.h>
|
|
#endif
|
|
-#if defined(_GLIBCXX_USE_FLOAT128) && !defined(__STRICT_ANSI__)
|
|
+#if defined(_GLIBCXX_USE_FLOAT128) && !defined(__STRICT_ANSI__) && !defined(__CUDACC__)
|
|
# define BOOST_HAS_FLOAT128
|
|
#endif
|
|
|