[llvm] [Codegen][NewPM] Explicitly Nest Passes in CodegenPassBuilder (PR #169867)

Arthur Eubanks via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 8 10:12:17 PST 2025


================
@@ -630,42 +565,40 @@ Error CodeGenPassBuilder<Derived, TargetMachineT>::buildPipeline(
   bool PrintAsm = TargetPassConfig::willCompleteCodeGenPipeline();
   bool PrintMIR = !PrintAsm && FileType != CodeGenFileType::Null;
 
-  {
-    AddIRPass addIRPass(MPM, derived());
-    addIRPass(RequireAnalysisPass<MachineModuleAnalysis, Module>(),
-              /*Force=*/true);
-    addIRPass(RequireAnalysisPass<ProfileSummaryAnalysis, Module>(),
-              /*Force=*/true);
-    addIRPass(RequireAnalysisPass<CollectorMetadataAnalysis, Module>(),
-              /*Force=*/true);
-    addIRPass(RequireAnalysisPass<RuntimeLibraryAnalysis, Module>(),
-              /*Force=*/true);
-    addISelPasses(addIRPass);
-  }
-
-  AddMachinePass addPass(MPM, derived());
+  addModulePass(RequireAnalysisPass<MachineModuleAnalysis, Module>(), MPM,
+                /*Force=*/true);
+  addModulePass(RequireAnalysisPass<ProfileSummaryAnalysis, Module>(), MPM,
+                /*Force=*/true);
+  addModulePass(RequireAnalysisPass<CollectorMetadataAnalysis, Module>(), MPM,
+                /*Force=*/true);
+  addModulePass(RequireAnalysisPass<RuntimeLibraryAnalysis, Module>(), MPM,
+                /*Force=*/true);
+  addISelPasses(MPM);
+  flushFPMsToMPM(MPM);
 
   if (PrintMIR)
-    addPass(PrintMIRPreparePass(Out), /*Force=*/true);
+    addModulePass(PrintMIRPreparePass(Out), MPM, /*Force=*/true);
 
-  if (auto Err = addCoreISelPasses(addPass))
+  if (auto Err = addCoreISelPasses(MPM))
     return std::move(Err);
 
-  if (auto Err = derived().addMachinePasses(addPass))
+  if (auto Err = derived().addMachinePasses(MPM))
     return std::move(Err);
 
   if (!Opt.DisableVerify)
-    addPass(MachineVerifierPass());
+    addMachineFunctionPass(MachineVerifierPass());
 
   if (PrintAsm) {
     derived().addAsmPrinter(
-        addPass, [this, &Out, DwoOut, FileType](MCContext &Ctx) {
+        MPM, [this, &Out, DwoOut, FileType](MCContext &Ctx) {
           return this->TM.createMCStreamer(Out, DwoOut, FileType, Ctx);
         });
   }
 
   if (PrintMIR)
-    addPass(PrintMIRPass(Out), /*Force=*/true);
+    addMachineFunctionPass(PrintMIRPass(Out), /*Force=*/true);
+
+  flushFPMsToMPM(MPM, true);
----------------
aeubanks wrote:

add `true` param name as comment

https://github.com/llvm/llvm-project/pull/169867


More information about the llvm-commits mailing list