[llvm] [NFC][LLVM] Eliminate duplicate code in INITIALIZE_PASS macros (PR #134457)
Rahul Joshi via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 4 15:12:46 PDT 2025
https://github.com/jurahul created https://github.com/llvm/llvm-project/pull/134457
- Refactor INITIALIZE_PASS and INITIALIZE_PASS_WITH_OPTIONS macros to eliminate some code duplication.
>From 489079b8e656c3f5d2b10c47cce5ec20dcca115f Mon Sep 17 00:00:00 2001
From: Rahul Joshi <rjoshi at nvidia.com>
Date: Fri, 4 Apr 2025 15:10:42 -0700
Subject: [PATCH] [NFC][LLVM] Eliminate duplicate code in INITIALIZE_PASS
macros
- Refactor INITIALIZE_PASS and INITIALIZE_PASS_WITH_OPTIONS macros
to eliminate some code duplication.
---
llvm/include/llvm/PassSupport.h | 25 +++++++------------------
1 file changed, 7 insertions(+), 18 deletions(-)
diff --git a/llvm/include/llvm/PassSupport.h b/llvm/include/llvm/PassSupport.h
index d3ba32f22efe1..57210b2488b53 100644
--- a/llvm/include/llvm/PassSupport.h
+++ b/llvm/include/llvm/PassSupport.h
@@ -35,20 +35,6 @@ namespace llvm {
class Pass;
-#define INITIALIZE_PASS(passName, arg, name, cfg, analysis) \
- static void *initialize##passName##PassOnce(PassRegistry &Registry) { \
- PassInfo *PI = new PassInfo( \
- name, arg, &passName::ID, \
- PassInfo::NormalCtor_t(callDefaultCtor<passName>), cfg, analysis); \
- Registry.registerPass(*PI, true); \
- return PI; \
- } \
- static llvm::once_flag Initialize##passName##PassFlag; \
- void llvm::initialize##passName##Pass(PassRegistry &Registry) { \
- llvm::call_once(Initialize##passName##PassFlag, \
- initialize##passName##PassOnce, std::ref(Registry)); \
- }
-
#define INITIALIZE_PASS_BEGIN(passName, arg, name, cfg, analysis) \
static void *initialize##passName##PassOnce(PassRegistry &Registry) {
@@ -67,15 +53,18 @@ class Pass;
initialize##passName##PassOnce, std::ref(Registry)); \
}
-#define INITIALIZE_PASS_WITH_OPTIONS(PassName, Arg, Name, Cfg, Analysis) \
- INITIALIZE_PASS_BEGIN(PassName, Arg, Name, Cfg, Analysis) \
- PassName::registerOptions(); \
- INITIALIZE_PASS_END(PassName, Arg, Name, Cfg, Analysis)
+#define INITIALIZE_PASS(passName, arg, name, cfg, analysis) \
+ INITIALIZE_PASS_BEGIN(passName, arg, name, cfg, analysis) \
+ INITIALIZE_PASS_END(passName, arg, name, cfg, analysis)
#define INITIALIZE_PASS_WITH_OPTIONS_BEGIN(PassName, Arg, Name, Cfg, Analysis) \
INITIALIZE_PASS_BEGIN(PassName, Arg, Name, Cfg, Analysis) \
PassName::registerOptions();
+#define INITIALIZE_PASS_WITH_OPTIONS(PassName, Arg, Name, Cfg, Analysis) \
+ INITIALIZE_PASS_WITH_OPTIONS_BEGIN(PassName, Arg, Name, Cfg, Analysis) \
+ INITIALIZE_PASS_END(PassName, Arg, Name, Cfg, Analysis)
+
template <
class PassName,
std::enable_if_t<std::is_default_constructible<PassName>{}, bool> = true>
More information about the llvm-commits
mailing list