[libc-commits] [libc] [llvm] [libc] Add `is_constant_evaluated` type_traits (PR #86139)
via libc-commits
libc-commits at lists.llvm.org
Thu Mar 21 08:50:50 PDT 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libc
Author: Guillaume Chatelet (gchatelet)
<details>
<summary>Changes</summary>
This will replace `__builtin_is_constant_evaluated` in math_extras.h.
---
Full diff: https://github.com/llvm/llvm-project/pull/86139.diff
4 Files Affected:
- (modified) libc/src/__support/CPP/CMakeLists.txt (+3-2)
- (modified) libc/src/__support/CPP/type_traits.h (+1)
- (added) libc/src/__support/CPP/type_traits/is_constant_evaluated.h (+21)
- (modified) utils/bazel/llvm-project-overlay/libc/BUILD.bazel (+2-1)
``````````diff
diff --git a/libc/src/__support/CPP/CMakeLists.txt b/libc/src/__support/CPP/CMakeLists.txt
index 6216505eae23a3..f76285be521945 100644
--- a/libc/src/__support/CPP/CMakeLists.txt
+++ b/libc/src/__support/CPP/CMakeLists.txt
@@ -103,23 +103,24 @@ add_header_library(
type_traits
HDRS
type_traits.h
- type_traits/always_false.h
type_traits/add_lvalue_reference.h
type_traits/add_pointer.h
type_traits/add_rvalue_reference.h
+ type_traits/always_false.h
type_traits/bool_constant.h
type_traits/conditional.h
type_traits/decay.h
type_traits/enable_if.h
type_traits/false_type.h
type_traits/integral_constant.h
- type_traits/invoke.h
type_traits/invoke_result.h
+ type_traits/invoke.h
type_traits/is_arithmetic.h
type_traits/is_array.h
type_traits/is_base_of.h
type_traits/is_class.h
type_traits/is_const.h
+ type_traits/is_constant_evaluated.h
type_traits/is_convertible.h
type_traits/is_destructible.h
type_traits/is_enum.h
diff --git a/libc/src/__support/CPP/type_traits.h b/libc/src/__support/CPP/type_traits.h
index 697cf79d6ccc59..1494aeb905e093 100644
--- a/libc/src/__support/CPP/type_traits.h
+++ b/libc/src/__support/CPP/type_traits.h
@@ -25,6 +25,7 @@
#include "src/__support/CPP/type_traits/is_base_of.h"
#include "src/__support/CPP/type_traits/is_class.h"
#include "src/__support/CPP/type_traits/is_const.h"
+#include "src/__support/CPP/type_traits/is_constant_evaluated.h"
#include "src/__support/CPP/type_traits/is_convertible.h"
#include "src/__support/CPP/type_traits/is_destructible.h"
#include "src/__support/CPP/type_traits/is_enum.h"
diff --git a/libc/src/__support/CPP/type_traits/is_constant_evaluated.h b/libc/src/__support/CPP/type_traits/is_constant_evaluated.h
new file mode 100644
index 00000000000000..93cfd07b567f08
--- /dev/null
+++ b/libc/src/__support/CPP/type_traits/is_constant_evaluated.h
@@ -0,0 +1,21 @@
+//===-- is_constant_evaluated type_traits -----------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+#ifndef LLVM_LIBC_SRC___SUPPORT_CPP_TYPE_TRAITS_IS_CONSTANT_EVALUATED_H
+#define LLVM_LIBC_SRC___SUPPORT_CPP_TYPE_TRAITS_IS_CONSTANT_EVALUATED_H
+
+#include "src/__support/macros/attributes.h"
+
+namespace LIBC_NAMESPACE::cpp {
+
+LIBC_INLINE constexpr bool is_constant_evaluated() {
+ return __builtin_is_constant_evaluated();
+}
+
+} // namespace LIBC_NAMESPACE::cpp
+
+#endif // LLVM_LIBC_SRC___SUPPORT_CPP_TYPE_TRAITS_IS_CONSTANT_EVALUATED_H
diff --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
index fe4b8e2de14e66..2e8d475f196eff 100644
--- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
@@ -339,6 +339,7 @@ libc_support_library(
"src/__support/CPP/type_traits/is_base_of.h",
"src/__support/CPP/type_traits/is_class.h",
"src/__support/CPP/type_traits/is_const.h",
+ "src/__support/CPP/type_traits/is_constant_evaluated.h",
"src/__support/CPP/type_traits/is_convertible.h",
"src/__support/CPP/type_traits/is_destructible.h",
"src/__support/CPP/type_traits/is_enum.h",
@@ -743,12 +744,12 @@ libc_support_library(
deps = [
":__support_common",
":__support_cpp_bit",
- ":__support_sign",
":__support_cpp_type_traits",
":__support_libc_assert",
":__support_macros_attributes",
":__support_macros_properties_types",
":__support_math_extras",
+ ":__support_sign",
":__support_uint128",
],
)
``````````
</details>
https://github.com/llvm/llvm-project/pull/86139
More information about the libc-commits
mailing list