[llvm] [CodeGen][NPM] Support CodeGenSCCOrder in pipeline (PR #136818)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Mon May 5 04:02:43 PDT 2025
================
@@ -276,20 +302,47 @@ template <typename DerivedT, typename TargetMachineT> class CodeGenPassBuilder {
MFPM.addPass(std::forward<PassT>(Pass));
} else {
// Add Module Pass
- if (!MFPM.isEmpty()) {
- MPM.addPass(createModuleToFunctionPassAdaptor(
- createFunctionToMachineFunctionPassAdaptor(std::move(MFPM))));
- MFPM = MachineFunctionPassManager();
- }
-
+ flushMFPMToMPM();
MPM.addPass(std::forward<PassT>(Pass));
}
for (auto &C : PB.AfterCallbacks)
C(Name, MFPM);
}
+ /// Setting this will add passes to the CGSCC pass manager.
+ void requireCGSCCOrder() {
+ if (PB.AddInCGSCCOrder)
+ return;
+ flushMFPMToMPM();
+ PB.AddInCGSCCOrder = true;
+ }
+
+ /// Stop adding passes to the CGSCC pass manager.
+ /// Existing passes won't be removed.
+ void stopAddingInCGSCCOrder() {
+ if (!PB.AddInCGSCCOrder)
+ return;
+ flushMFPMToMPM();
+ PB.AddInCGSCCOrder = false;
+ }
+
private:
+ void flushMFPMToMPM() {
+ if (!MFPM.isEmpty()) {
----------------
arsenm wrote:
Early return and reduce indent
https://github.com/llvm/llvm-project/pull/136818
More information about the llvm-commits
mailing list