diff options
author | Eric Fiselier <eric@efcs.ca> | 2014-07-17 05:16:18 +0000 |
---|---|---|
committer | Eric Fiselier <eric@efcs.ca> | 2014-07-17 05:16:18 +0000 |
commit | 371aac1adbf23404a1e9472a2d40139c993c84c1 (patch) | |
tree | 587053dfc05a7f49aa3be0cdacaa44b8f160332f /libcxx/include | |
parent | f8adcdc436c100f9103b6e2831819eac6e39a877 (diff) | |
download | bcm5719-llvm-371aac1adbf23404a1e9472a2d40139c993c84c1.tar.gz bcm5719-llvm-371aac1adbf23404a1e9472a2d40139c993c84c1.zip |
Change _LIBCXX_CONSTEXPR_AFTER_CXX11 to check for c++14 constexpr rules
llvm-svn: 213225
Diffstat (limited to 'libcxx/include')
-rw-r--r-- | libcxx/include/__config | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/libcxx/include/__config b/libcxx/include/__config index 687f5c13186..ce235af3d82 100644 --- a/libcxx/include/__config +++ b/libcxx/include/__config @@ -313,6 +313,10 @@ typedef __char32_t char32_t; #define _LIBCPP_HAS_NO_CONSTEXPR #endif +#if !(__has_feature(cxx_relaxed_constexpr)) +#define _LIBCPP_HAS_NO_CXX14_CONSTEXPR +#endif + #if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L #if defined(__FreeBSD__) #define _LIBCPP_HAS_QUICK_EXIT @@ -388,6 +392,9 @@ namespace std { #define _LIBCPP_HAS_NO_CONSTEXPR #endif +// No version of GCC supports relaxed constexpr rules +#define _LIBCPP_HAS_NO_CXX14_CONSTEXPR + #define _NOEXCEPT throw() #define _NOEXCEPT_(x) #define _NOEXCEPT_OR_FALSE(x) false @@ -457,6 +464,7 @@ using namespace _LIBCPP_NAMESPACE __attribute__((__strong__)); #define _LIBCPP_HAS_NO_TEMPLATE_ALIASES #define _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER #define _LIBCPP_HAS_NO_CONSTEXPR +#define _LIBCPP_HAS_NO_CXX14_CONSTEXPR #define _LIBCPP_HAS_NO_UNICODE_CHARS #define _LIBCPP_HAS_NO_DELETED_FUNCTIONS #define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS @@ -648,15 +656,19 @@ template <unsigned> struct __static_assert_check {}; #endif #if _LIBCPP_STD_VER <= 11 -#define _LIBCPP_CONSTEXPR_AFTER_CXX11 #define _LIBCPP_EXPLICIT_AFTER_CXX11 #define _LIBCPP_DEPRECATED_AFTER_CXX11 #else -#define _LIBCPP_CONSTEXPR_AFTER_CXX11 constexpr #define _LIBCPP_EXPLICIT_AFTER_CXX11 explicit #define _LIBCPP_DEPRECATED_AFTER_CXX11 [[deprecated]] #endif +#if _LIBCPP_STD_VER > 11 && !defined(_LIBCPP_HAS_NO_CXX14_CONSTEXPR) +#define _LIBCPP_CONSTEXPR_AFTER_CXX11 constexpr +#else +#define _LIBCPP_CONSTEXPR_AFTER_CXX11 +#endif + #ifndef _LIBCPP_HAS_NO_ASAN extern "C" void __sanitizer_annotate_contiguous_container( const void *, const void *, const void *, const void *); |