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 .
This commit is contained in:
Axel Huebl
2015-12-18 10:27:04 +01:00
parent 05d55111e4
commit a332112317

View File

@ -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