diff --git a/compiler/lib/Conversion/ConcreteToBConcrete/ConcreteToBConcrete.cpp b/compiler/lib/Conversion/ConcreteToBConcrete/ConcreteToBConcrete.cpp index 8ca525063..02a87b0d6 100644 --- a/compiler/lib/Conversion/ConcreteToBConcrete/ConcreteToBConcrete.cpp +++ b/compiler/lib/Conversion/ConcreteToBConcrete/ConcreteToBConcrete.cpp @@ -601,6 +601,17 @@ struct MemrefOpPattern : public mlir::OpRewritePattern { }; }; +template +void insertMemrefOpPatternImpl(mlir::MLIRContext &context, + mlir::RewritePatternSet &patterns, + mlir::ConversionTarget &target) { + patterns.insert>(&context); + target.addDynamicallyLegalOp([&](MemrefOp op) { + ConcreteToBConcreteTypeConverter converter; + return converter.isLegal(op->getResultTypes()); + }); +} + // Add the instantiated MemrefOpPattern rewrite pattern with the `MemrefOp` // to the patterns set and populate the conversion target. template @@ -608,12 +619,8 @@ void insertMemrefOpPattern(mlir::MLIRContext &context, mlir::RewritePatternSet &patterns, mlir::ConversionTarget &target) { (void)std::initializer_list{ - 0, (patterns.insert>(&context), - target.addDynamicallyLegalOp([&](MemrefOp op) { - ConcreteToBConcreteTypeConverter converter; - return converter.isLegal(op->getResultTypes()); - }), - 0)...}; + 0, + (insertMemrefOpPatternImpl(context, patterns, target), 0)...}; } // cc from Loops.cpp