[llvm] [NewPM][CodeGen][WIP] Add callback style CodeGen pass pipeline builder (PR #104725)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 19 01:17:40 PDT 2024


================
@@ -766,6 +932,63 @@ class PassBuilder {
   SmallVector<std::function<void(ModulePassManager &, OptimizationLevel)>, 2>
       PipelineEarlySimplificationEPCallbacks;
 
+  // CodeGen extension point callbacks
+  SmallVector<std::function<void(FunctionPassManager &)>, 2>
+      GCLoweringEPCallbacks;
+  SmallVector<std::function<void(ModulePassManager &)>, 2>
+      ISelPrepareEPCallbacks;
+  SmallVector<
+      std::function<void(MachineFunctionPassManager &, CodeGenOptLevel)>, 2>
+      MachineSSAOptimizationEarlyEPCallbacks;
+  SmallVector<
+      std::function<void(MachineFunctionPassManager &, CodeGenOptLevel)>, 2>
+      MachineSSAOptimizationLastEPCallbacks;
+  SmallVector<
+      std::function<void(MachineFunctionPassManager &, CodeGenOptLevel)>, 2>
+      PreRegAllocEPCallbacks;
+  SmallVector<
+      std::function<void(MachineFunctionPassManager &, CodeGenOptLevel)>, 2>
+      PostRegAllocEPCallbacks;
+  SmallVector<
+      std::function<void(MachineFunctionPassManager &, CodeGenOptLevel)>, 2>
+      PreRegBankSelectEPCallbacks;
+  SmallVector<
+      std::function<void(MachineFunctionPassManager &, CodeGenOptLevel)>, 2>
+      PreGlobalInstructionSelectEPCallbacks;
+  SmallVector<
+      std::function<void(MachineFunctionPassManager &, CodeGenOptLevel)>, 2>
+      PostGlobalInstructionSelectEPCallbacks;
+  SmallVector<
+      std::function<void(MachineFunctionPassManager &, CodeGenOptLevel)>, 2>
+      ILPOptsEPCallbacks;
+  SmallVector<
+      std::function<void(MachineFunctionPassManager &, CodeGenOptLevel)>, 2>
+      MachineLateOptimizationEPCallbacks;
+  SmallVector<
+      std::function<void(MachineFunctionPassManager &, CodeGenOptLevel)>, 2>
+      PreSched2EPCallbacks;
+  SmallVector<
+      std::function<void(MachineFunctionPassManager &, CodeGenOptLevel)>, 2>
+      PostRewriteEPCallbacks;
+  SmallVector<
+      std::function<void(MachineFunctionPassManager &, CodeGenOptLevel)>, 2>
+      PreEmitEPCallbacks;
+  SmallVector<
+      std::function<void(MachineFunctionPassManager &, CodeGenOptLevel)>, 2>
----------------
arsenm wrote:

use a typedef for all of these repeated function types 

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


More information about the llvm-commits mailing list