[llvm] c0b6ddf - [AMDGPU] Simplify "class HasMember##member" with llvm::is_detected (NFC) (#160037)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 22 07:52:54 PDT 2025
Author: Kazu Hirata
Date: 2025-09-22T07:52:50-07:00
New Revision: c0b6ddfe2667307eab699a04c8e23fdc06170e95
URL: https://github.com/llvm/llvm-project/commit/c0b6ddfe2667307eab699a04c8e23fdc06170e95
DIFF: https://github.com/llvm/llvm-project/commit/c0b6ddfe2667307eab699a04c8e23fdc06170e95.diff
LOG: [AMDGPU] Simplify "class HasMember##member" with llvm::is_detected (NFC) (#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.
Added:
Modified:
llvm/lib/Target/AMDGPU/Utils/AMDKernelCodeTUtils.cpp
Removed:
################################################################################
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