[compiler-rt] [scudo] Group type traits into a single header (NFC) (PR #118888)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 9 20:34:06 PST 2024
https://github.com/ChiaHungDuan updated https://github.com/llvm/llvm-project/pull/118888
>From 4b625833ef09b7abab60e21f560c352de1c9febc Mon Sep 17 00:00:00 2001
From: Chia-hung Duan <chiahungduan at google.com>
Date: Thu, 5 Dec 2024 22:11:13 +0000
Subject: [PATCH] [scudo] Group type traits into a single header (NFC)
---
.../lib/scudo/standalone/CMakeLists.txt | 1 +
.../standalone/allocator_config_wrapper.h | 30 +-----------
compiler-rt/lib/scudo/standalone/list.h | 12 +----
.../lib/scudo/standalone/type_traits.h | 47 +++++++++++++++++++
4 files changed, 50 insertions(+), 40 deletions(-)
create mode 100644 compiler-rt/lib/scudo/standalone/type_traits.h
diff --git a/compiler-rt/lib/scudo/standalone/CMakeLists.txt b/compiler-rt/lib/scudo/standalone/CMakeLists.txt
index dc700cec9becbf..3f9ae866a75533 100644
--- a/compiler-rt/lib/scudo/standalone/CMakeLists.txt
+++ b/compiler-rt/lib/scudo/standalone/CMakeLists.txt
@@ -98,6 +98,7 @@ set(SCUDO_HEADERS
tsd_exclusive.h
tsd_shared.h
tsd.h
+ type_traits.h
vector.h
wrappers_c_checks.h
wrappers_c.h
diff --git a/compiler-rt/lib/scudo/standalone/allocator_config_wrapper.h b/compiler-rt/lib/scudo/standalone/allocator_config_wrapper.h
index 5477236ac1f397..ea12a5b1447f69 100644
--- a/compiler-rt/lib/scudo/standalone/allocator_config_wrapper.h
+++ b/compiler-rt/lib/scudo/standalone/allocator_config_wrapper.h
@@ -12,35 +12,7 @@
#include "condition_variable.h"
#include "internal_defs.h"
#include "secondary.h"
-
-namespace {
-
-template <typename T> struct removeConst {
- using type = T;
-};
-template <typename T> struct removeConst<const T> {
- using type = T;
-};
-
-// This is only used for SFINAE when detecting if a type is defined.
-template <typename T> struct voidAdaptor {
- using type = void;
-};
-
-// This is used for detecting the case that defines the flag with wrong type and
-// it'll be viewed as undefined optional flag.
-template <typename L, typename R> struct assertSameType {
- template <typename, typename> struct isSame {
- static constexpr bool value = false;
- };
- template <typename T> struct isSame<T, T> {
- static constexpr bool value = true;
- };
- static_assert(isSame<L, R>::value, "Flag type mismatches");
- using type = R;
-};
-
-} // namespace
+#include "type_traits.h"
namespace scudo {
diff --git a/compiler-rt/lib/scudo/standalone/list.h b/compiler-rt/lib/scudo/standalone/list.h
index c6bd32a8fa3251..5c34cbb049e602 100644
--- a/compiler-rt/lib/scudo/standalone/list.h
+++ b/compiler-rt/lib/scudo/standalone/list.h
@@ -10,17 +10,7 @@
#define SCUDO_LIST_H_
#include "internal_defs.h"
-
-// TODO: Move the helpers to a header.
-namespace {
-template <typename T> struct isPointer {
- static constexpr bool value = false;
-};
-
-template <typename T> struct isPointer<T *> {
- static constexpr bool value = true;
-};
-} // namespace
+#include "type_traits.h"
namespace scudo {
diff --git a/compiler-rt/lib/scudo/standalone/type_traits.h b/compiler-rt/lib/scudo/standalone/type_traits.h
new file mode 100644
index 00000000000000..16ed5a048f82bc
--- /dev/null
+++ b/compiler-rt/lib/scudo/standalone/type_traits.h
@@ -0,0 +1,47 @@
+//===-- type_traits.h -------------------------------------------*- 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 SCUDO_TYPE_TRAITS_H_
+#define SCUDO_TYPE_TRAITS_H_
+
+namespace scudo {
+
+template <typename T> struct removeConst {
+ using type = T;
+};
+template <typename T> struct removeConst<const T> {
+ using type = T;
+};
+
+// This is only used for SFINAE when detecting if a type is defined.
+template <typename T> struct voidAdaptor {
+ using type = void;
+};
+
+template <typename L, typename R> struct assertSameType {
+ template <typename, typename> struct isSame {
+ static constexpr bool value = false;
+ };
+ template <typename T> struct isSame<T, T> {
+ static constexpr bool value = true;
+ };
+ static_assert(isSame<L, R>::value, "Type mismatches");
+ using type = R;
+};
+
+template <typename T> struct isPointer {
+ static constexpr bool value = false;
+};
+
+template <typename T> struct isPointer<T *> {
+ static constexpr bool value = true;
+};
+
+} // namespace scudo
+
+#endif // SCUDO_TYPE_TRAITS_H_
More information about the llvm-commits
mailing list