[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