@@ -33,16 +33,16 @@ namespace fir {
3333
3434using PassConstructor = std::unique_ptr<mlir::Pass>();
3535
36- template <typename OP>
37- void addNestedPassToOps (mlir::PassManager &pm, PassConstructor ctor) {
36+ template <typename F, typename OP>
37+ void addNestedPassToOps (mlir::PassManager &pm, F ctor) {
3838 pm.addNestedPass <OP>(ctor ());
3939}
4040
41- template <typename OP, typename ... OPS,
41+ template <typename F, typename OP, typename ... OPS,
4242 typename = std::enable_if_t <sizeof ...(OPS) != 0 >>
43- void addNestedPassToOps (mlir::PassManager &pm, PassConstructor ctor) {
44- addNestedPassToOps<OP>(pm, ctor);
45- addNestedPassToOps<OPS...>(pm, ctor);
43+ void addNestedPassToOps (mlir::PassManager &pm, F ctor) {
44+ addNestedPassToOps<F, OP>(pm, ctor);
45+ addNestedPassToOps<F, OPS...>(pm, ctor);
4646}
4747
4848// / Generic for adding a pass to the pass manager if it is not disabled.
@@ -60,11 +60,12 @@ void addNestedPassConditionally(mlir::PassManager &pm,
6060 pm.addNestedPass <OP>(ctor ());
6161}
6262
63- void addNestedPassToAllTopLevelOperations (mlir::PassManager &pm,
64- PassConstructor ctor);
63+ template < typename F>
64+ void addNestedPassToAllTopLevelOperations (mlir::PassManager &pm, F ctor);
6565
66+ template <typename F>
6667void addNestedPassToAllTopLevelOperationsConditionally (
67- mlir::PassManager &pm, llvm::cl::opt<bool > &disabled, PassConstructor ctor);
68+ mlir::PassManager &pm, llvm::cl::opt<bool > &disabled, F ctor);
6869
6970// / Add MLIR Canonicalizer pass with region simplification disabled.
7071// / FIR does not support the promotion of some SSA value to block arguments (or
0 commit comments