[flang][NFC] move addPass* template utilities to header (#213288)

Move the addPass* template utilities to the header so external pipelines
can use them.
This commit is contained in:
Scott Manley 2026-07-31 13:30:31 -05:00 committed by GitHub
parent 56b45895fa
commit f8d6aaf8ca
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 18 additions and 23 deletions

View file

@ -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

View file

@ -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(