[flang-commits] [flang] [flang] move addPass* template utilities to header (PR #213288)
via flang-commits
flang-commits at lists.llvm.org
Fri Jul 31 08:22:53 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-flang-fir-hlfir
Author: Scott Manley (rscottmanley)
<details>
<summary>Changes</summary>
Move the addPass* template utilities to the header so external pipelines can use them.
---
Full diff: https://github.com/llvm/llvm-project/pull/213288.diff
2 Files Affected:
- (modified) flang/include/flang/Optimizer/Passes/Pipelines.h (+18-2)
- (modified) flang/lib/Optimizer/Passes/Pipelines.cpp (-21)
``````````diff
diff --git a/flang/include/flang/Optimizer/Passes/Pipelines.h b/flang/include/flang/Optimizer/Passes/Pipelines.h
index e8ead893dd089..c50d41844941e 100644
--- a/flang/include/flang/Optimizer/Passes/Pipelines.h
+++ b/flang/include/flang/Optimizer/Passes/Pipelines.h
@@ -31,6 +31,8 @@
namespace fir {
+class GlobalOp;
+
using PassConstructor = std::unique_ptr<mlir::Pass>();
template <typename F, typename OP>
@@ -61,11 +63,25 @@ void addNestedPassConditionally(mlir::PassManager &pm,
}
template <typename F>
-void addNestedPassToAllTopLevelOperations(mlir::PassManager &pm, F ctor);
+void addNestedPassToAllTopLevelOperations(mlir::PassManager &pm, F ctor) {
+ addNestedPassToOps<F, mlir::func::FuncOp, mlir::omp::DeclareMapperOp,
+ mlir::omp::DeclareReductionOp, mlir::omp::PrivateClauseOp,
+ fir::GlobalOp>(pm, ctor);
+}
template <typename F>
void addNestedPassToAllTopLevelOperationsConditionally(
- mlir::PassManager &pm, llvm::cl::opt<bool> &disabled, F ctor);
+ mlir::PassManager &pm, llvm::cl::opt<bool> &disabled, F ctor) {
+ if (!disabled)
+ addNestedPassToAllTopLevelOperations<F>(pm, ctor);
+}
+
+template <typename F>
+void addPassToGPUModuleOperations(mlir::PassManager &pm, F ctor) {
+ mlir::OpPassManager &nestPM = pm.nest<mlir::gpu::GPUModuleOp>();
+ nestPM.addNestedPass<mlir::func::FuncOp>(ctor());
+ nestPM.addNestedPass<mlir::gpu::GPUFuncOp>(ctor());
+}
/// Add MLIR Canonicalizer pass with region simplification disabled.
/// FIR does not support the promotion of some SSA value to block arguments (or
diff --git a/flang/lib/Optimizer/Passes/Pipelines.cpp b/flang/lib/Optimizer/Passes/Pipelines.cpp
index 500730ee44f44..ba346bfb62111 100644
--- a/flang/lib/Optimizer/Passes/Pipelines.cpp
+++ b/flang/lib/Optimizer/Passes/Pipelines.cpp
@@ -29,27 +29,6 @@ static llvm::cl::opt<bool> disableArgumentFakeUse("disable-argument-fake-use",
namespace fir {
-template <typename F>
-void addNestedPassToAllTopLevelOperations(mlir::PassManager &pm, F ctor) {
- addNestedPassToOps<F, mlir::func::FuncOp, mlir::omp::DeclareMapperOp,
- mlir::omp::DeclareReductionOp, mlir::omp::PrivateClauseOp,
- fir::GlobalOp>(pm, ctor);
-}
-
-template <typename F>
-void addPassToGPUModuleOperations(mlir::PassManager &pm, F ctor) {
- mlir::OpPassManager &nestPM = pm.nest<mlir::gpu::GPUModuleOp>();
- nestPM.addNestedPass<mlir::func::FuncOp>(ctor());
- nestPM.addNestedPass<mlir::gpu::GPUFuncOp>(ctor());
-}
-
-template <typename F>
-void addNestedPassToAllTopLevelOperationsConditionally(
- mlir::PassManager &pm, llvm::cl::opt<bool> &disabled, F ctor) {
- if (!disabled)
- addNestedPassToAllTopLevelOperations<F>(pm, ctor);
-}
-
void addCanonicalizerPassWithoutRegionSimplification(mlir::OpPassManager &pm) {
mlir::GreedyRewriteConfig config;
config.setRegionSimplificationLevel(
``````````
</details>
https://github.com/llvm/llvm-project/pull/213288
More information about the flang-commits
mailing list