summaryrefslogtreecommitdiff
path: root/boost/config/compiler/gcc.hpp
diff options
context:
space:
mode:
authorMyoungJune Park <mj2004.park@samsung.com>2016-11-09 18:20:36 -0800
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>2016-11-09 18:20:36 -0800
commit2212a42dc9bc8e6fea9d1dfaf7d2325c3a82b6ab (patch)
tree692e5f3fa6c597e6219766a393411e5a7b82be83 /boost/config/compiler/gcc.hpp
parent19bc0ae04846b66e010064545c66a1b6f1a042ac (diff)
parentdbcd53541404bc733ffbac7424388791190e1043 (diff)
downloadboost-2212a42dc9bc8e6fea9d1dfaf7d2325c3a82b6ab.tar.gz
boost-2212a42dc9bc8e6fea9d1dfaf7d2325c3a82b6ab.tar.bz2
boost-2212a42dc9bc8e6fea9d1dfaf7d2325c3a82b6ab.zip
Merge "Rebase for boost 1.62.0" into tizen
Diffstat (limited to 'boost/config/compiler/gcc.hpp')
-rw-r--r--boost/config/compiler/gcc.hpp40
1 files changed, 36 insertions, 4 deletions
diff --git a/boost/config/compiler/gcc.hpp b/boost/config/compiler/gcc.hpp
index e91e31e21a..da4ce11762 100644
--- a/boost/config/compiler/gcc.hpp
+++ b/boost/config/compiler/gcc.hpp
@@ -133,16 +133,42 @@
//
// 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
+// We disable this if the compiler is really nvcc with C++03 as it
+// 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
+// https://svn.boost.org/trac/boost/ticket/11852
// Only re-enable this for nvcc if you're absolutely sure
// of the circumstances under which it's supported:
//
-#if defined(__SIZEOF_INT128__) && !defined(__CUDACC__)
+#if defined(__CUDACC__)
+# if defined(BOOST_GCC_CXX11)
+# define BOOST_NVCC_CXX11
+# else
+# define BOOST_NVCC_CXX03
+# endif
+#endif
+
+#if defined(__SIZEOF_INT128__) && !defined(BOOST_NVCC_CXX03)
# define BOOST_HAS_INT128
#endif
+//
+// Recent GCC versions have a __float128 native type, we need to
+// 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 in pre-C++11 mode 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__) && !defined(BOOST_NVCC_CXX03)
+# define BOOST_HAS_FLOAT128
+#endif
// C++0x features in 4.3.n and later
//
@@ -226,6 +252,7 @@
//
#if (BOOST_GCC_VERSION < 40800) || !defined(BOOST_GCC_CXX11)
# define BOOST_NO_CXX11_ALIGNAS
+# define BOOST_NO_CXX11_THREAD_LOCAL
#endif
// C++0x features in 4.8.1 and later
@@ -263,7 +290,12 @@
//
// Unused attribute:
#if __GNUC__ >= 4
-# define BOOST_ATTRIBUTE_UNUSED __attribute__((unused))
+# define BOOST_ATTRIBUTE_UNUSED __attribute__((__unused__))
+#endif
+//
+// __builtin_unreachable:
+#if BOOST_GCC_VERSION >= 40800
+#define BOOST_UNREACHABLE_RETURN(x) __builtin_unreachable();
#endif
#ifndef BOOST_COMPILER