[llvm] [PassBuilder] Parse machine function analyses inside require/invalidate (PR #96634)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 25 06:18:00 PDT 2024
https://github.com/paperchalice created https://github.com/llvm/llvm-project/pull/96634
Now we have several machine function analyses but forgot to support them in `parseMachinePass`.
>From 8b5151f7ec538c45e3a690ab477ab050155173cb Mon Sep 17 00:00:00 2001
From: PaperChalice <liujunchang97 at outlook.com>
Date: Tue, 25 Jun 2024 17:20:46 +0800
Subject: [PATCH] [PassBuilder] Parse machine function analyses inside
require/invalidate Now we have several machine function analyses, but forget
to support them in `PassBuilder`.
---
llvm/lib/Passes/PassBuilder.cpp | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/llvm/lib/Passes/PassBuilder.cpp b/llvm/lib/Passes/PassBuilder.cpp
index e2f0515f5275e..a87d0b5955b83 100644
--- a/llvm/lib/Passes/PassBuilder.cpp
+++ b/llvm/lib/Passes/PassBuilder.cpp
@@ -1910,6 +1910,18 @@ Error PassBuilder::parseMachinePass(MachineFunctionPassManager &MFPM,
MFPM.addPass(CREATE_PASS(Params.get())); \
return Error::success(); \
}
+#define MACHINE_FUNCTION_ANALYSIS(NAME, CREATE_PASS) \
+ if (Name == "require<" NAME ">") { \
+ MFPM.addPass( \
+ RequireAnalysisPass<std::remove_reference_t<decltype(CREATE_PASS)>, \
+ MachineFunction>()); \
+ return Error::success(); \
+ } \
+ if (Name == "invalidate<" NAME ">") { \
+ MFPM.addPass(InvalidateAnalysisPass< \
+ std::remove_reference_t<decltype(CREATE_PASS)>>()); \
+ return Error::success(); \
+ }
#include "llvm/Passes/MachinePassRegistry.def"
for (auto &C : MachineFunctionPipelineParsingCallbacks)
More information about the llvm-commits
mailing list