[llvm] [AMDGPU] Simplify GetMember...::Get (NFC) (PR #137536)

Kazu Hirata via llvm-commits llvm-commits at lists.llvm.org
Sun Apr 27 12:33:41 PDT 2025


https://github.com/kazutakahirata updated https://github.com/llvm/llvm-project/pull/137536

>From 0359aedd53838e52351fb0066c5af76182a33517 Mon Sep 17 00:00:00 2001
From: Kazu Hirata <kazu at google.com>
Date: Sun, 27 Apr 2025 10:56:44 -0700
Subject: [PATCH 1/2] [AMDGPU] Simplify GetMember...::Get (NFC)

We can use "constexpr if" to combine the two variants of functions.
---
 .../AMDGPU/Utils/AMDKernelCodeTUtils.cpp      | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/llvm/lib/Target/AMDGPU/Utils/AMDKernelCodeTUtils.cpp b/llvm/lib/Target/AMDGPU/Utils/AMDKernelCodeTUtils.cpp
index 8997911aa8ae1..ec6bede1a693d 100644
--- a/llvm/lib/Target/AMDGPU/Utils/AMDKernelCodeTUtils.cpp
+++ b/llvm/lib/Target/AMDGPU/Utils/AMDKernelCodeTUtils.cpp
@@ -72,17 +72,14 @@ using namespace llvm::AMDGPU;
   class GetMember##member {                                                    \
   public:                                                                      \
     static const MCExpr *Phony;                                                \
-    template <typename U, typename std::enable_if_t<IsMCExpr##member::RESULT,  \
-                                                    U> * = nullptr>            \
-    static const MCExpr *&Get(U &C) {                                          \
-      assert(IsMCExpr##member::RESULT &&                                       \
-             "Trying to retrieve member that does not exist.");                \
-      return C.member;                                                         \
-    }                                                                          \
-    template <typename U, typename std::enable_if_t<!IsMCExpr##member::RESULT, \
-                                                    U> * = nullptr>            \
-    static const MCExpr *&Get(U &C) {                                          \
-      return Phony;                                                            \
+    template <typename U> static const MCExpr *&Get(U &C) {                    \
+      if constexpr (IsMCExpr##member::RESULT) {                                \
+        assert(IsMCExpr##member::RESULT &&                                     \
+               "Trying to retrieve member that does not exist.");              \
+        return C.member;                                                       \
+      } else {                                                                 \
+        return Phony;                                                          \
+      }                                                                        \
     }                                                                          \
   };                                                                           \
   const MCExpr *GetMember##member::Phony = nullptr;

>From 5467bd581df6f7088c25bf3d620b05e21d432934 Mon Sep 17 00:00:00 2001
From: Kazu Hirata <kazu at google.com>
Date: Sun, 27 Apr 2025 12:33:26 -0700
Subject: [PATCH 2/2] Address a comment.

---
 llvm/lib/Target/AMDGPU/Utils/AMDKernelCodeTUtils.cpp | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/llvm/lib/Target/AMDGPU/Utils/AMDKernelCodeTUtils.cpp b/llvm/lib/Target/AMDGPU/Utils/AMDKernelCodeTUtils.cpp
index ec6bede1a693d..0f4edd000d495 100644
--- a/llvm/lib/Target/AMDGPU/Utils/AMDKernelCodeTUtils.cpp
+++ b/llvm/lib/Target/AMDGPU/Utils/AMDKernelCodeTUtils.cpp
@@ -73,13 +73,10 @@ using namespace llvm::AMDGPU;
   public:                                                                      \
     static const MCExpr *Phony;                                                \
     template <typename U> static const MCExpr *&Get(U &C) {                    \
-      if constexpr (IsMCExpr##member::RESULT) {                                \
-        assert(IsMCExpr##member::RESULT &&                                     \
-               "Trying to retrieve member that does not exist.");              \
+      if constexpr (IsMCExpr##member::RESULT)                                  \
         return C.member;                                                       \
-      } else {                                                                 \
+      else                                                                     \
         return Phony;                                                          \
-      }                                                                        \
     }                                                                          \
   };                                                                           \
   const MCExpr *GetMember##member::Phony = nullptr;



More information about the llvm-commits mailing list