summaryrefslogtreecommitdiffstats
path: root/libcxx/include
diff options
context:
space:
mode:
Diffstat (limited to 'libcxx/include')
-rw-r--r--libcxx/include/__config4
-rw-r--r--libcxx/include/type_traits7
-rw-r--r--libcxx/include/version4
3 files changed, 14 insertions, 1 deletions
diff --git a/libcxx/include/__config b/libcxx/include/__config
index ead522520e8..0488093aa05 100644
--- a/libcxx/include/__config
+++ b/libcxx/include/__config
@@ -1257,6 +1257,10 @@ _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container(
#define _LIBCPP_HAS_NO_BUILTIN_ADDRESSOF
#endif
+#if !__has_builtin(__builtin_is_constant_evaluated) && _GNUC_VER < 900
+#define _LIBCPP_HAS_NO_BUILTIN_IS_CONSTANT_EVALUATED
+#endif
+
#if !defined(_LIBCPP_HAS_NO_OFF_T_FUNCTIONS)
# if defined(_LIBCPP_MSVCRT) || defined(_NEWLIB_VERSION)
# define _LIBCPP_HAS_NO_OFF_T_FUNCTIONS
diff --git a/libcxx/include/type_traits b/libcxx/include/type_traits
index 43faf275cff..65716295233 100644
--- a/libcxx/include/type_traits
+++ b/libcxx/include/type_traits
@@ -4876,6 +4876,13 @@ enum class endian
};
#endif
+#if _LIBCPP_STD_VER > 17 && !defined(_LIBCPP_HAS_NO_BUILTIN_IS_CONSTANT_EVALUATED)
+_LIBCPP_INLINE_VISIBILITY
+inline constexpr bool is_constant_evaluated() noexcept {
+ return __builtin_is_constant_evaluated();
+}
+#endif
+
_LIBCPP_END_NAMESPACE_STD
#if _LIBCPP_STD_VER > 14
diff --git a/libcxx/include/version b/libcxx/include/version
index 1037ee5df40..948f64512c9 100644
--- a/libcxx/include/version
+++ b/libcxx/include/version
@@ -222,7 +222,9 @@ __cpp_lib_void_t 201411L <type_traits>
// # define __cpp_lib_destroying_delete 201806L
# define __cpp_lib_erase_if 201811L
// # define __cpp_lib_generic_unordered_lookup 201811L
-// # define __cpp_lib_is_constant_evaluated 201811L
+# if !defined(_LIBCPP_HAS_NO_BUILTIN_IS_CONSTANT_EVALUATED)
+# define __cpp_lib_is_constant_evaluated 201811L
+# endif
// # define __cpp_lib_list_remove_return_type 201806L
// # define __cpp_lib_ranges 201811L
// # define __cpp_lib_three_way_comparison 201711L
OpenPOWER on IntegriCloud