From ebe092e201b8946fd985d310a2d002058eabcc6b Mon Sep 17 00:00:00 2001 From: Kazu Hirata 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 \ - static constexpr std::false_type Test(decltype(U::member) *); \ - template static constexpr std::true_type Test(...); \ + using check_member = decltype(std::declval().member); \ \ public: \ static constexpr bool RESULT = \ - std::is_same_v(nullptr)), \ - std::true_type>; \ + llvm::is_detected::value; \ }; \ class IsMCExpr##member { \ template \