From a332112317450457c715675686386ec81214b863 Mon Sep 17 00:00:00 2001 From: Axel Huebl 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 d9dd59dc5..8683dbd1f 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 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 #else #include #endif -#if defined(_GLIBCXX_USE_FLOAT128) && !defined(__STRICT_ANSI__) +#if defined(_GLIBCXX_USE_FLOAT128) && !defined(__STRICT_ANSI__) && !defined(__CUDACC__) # define BOOST_HAS_FLOAT128 #endif