[llvm] [AMDGPU] Simplify "class HasMember##member" with llvm::is_detected (NFC) (PR #160037)
Kazu Hirata via llvm-commits
llvm-commits at lists.llvm.org
Sun Sep 21 23:55:40 PDT 2025
https://github.com/kazutakahirata created https://github.com/llvm/llvm-project/pull/160037
"class HasMember##member" detects a specific member with a complex
SFINAE logic involving multiple inheritance. This patch simplifies
that by switching to llvm::is_detected.
>From ebe092e201b8946fd985d310a2d002058eabcc6b Mon Sep 17 00:00:00 2001
From: Kazu Hirata <kazu at google.com>
Date: Sun, 21 Sep 2025 13:22:26 -0700
Subject: [PATCH] [AMDGPU] Simplify "class HasMember##member" with
llvm::is_detected (NFC)
"class HasMember##member" detects a specific member with a complex
SFINAE logic involving multiple inheritance. This patch simplifies
that by switching to llvm::is_detected.
---
llvm/lib/Target/AMDGPU/Utils/AMDKernelCodeTUtils.cpp | 12 ++----------
1 file changed, 2 insertions(+), 10 deletions(-)
diff --git a/llvm/lib/Target/AMDGPU/Utils/AMDKernelCodeTUtils.cpp b/llvm/lib/Target/AMDGPU/Utils/AMDKernelCodeTUtils.cpp
index b0ed1e5e5c52b..24251e12d57dc 100644
--- a/llvm/lib/Target/AMDGPU/Utils/AMDKernelCodeTUtils.cpp
+++ b/llvm/lib/Target/AMDGPU/Utils/AMDKernelCodeTUtils.cpp
@@ -40,20 +40,12 @@ using namespace llvm::AMDGPU;
// returns.
#define GEN_HAS_MEMBER(member) \
class HasMember##member { \
- private: \
- struct KnownWithMember { \
- int member; \
- }; \
- class AmbiguousDerived : public AMDGPUMCKernelCodeT, \
- public KnownWithMember {}; \
template <typename U> \
- static constexpr std::false_type Test(decltype(U::member) *); \
- template <typename U> static constexpr std::true_type Test(...); \
+ using check_member = decltype(std::declval<U>().member); \
\
public: \
static constexpr bool RESULT = \
- std::is_same_v<decltype(Test<AmbiguousDerived>(nullptr)), \
- std::true_type>; \
+ llvm::is_detected<check_member, AMDGPUMCKernelCodeT>::value; \
}; \
class IsMCExpr##member { \
template <typename U> \
More information about the llvm-commits
mailing list