diff --git a/mlir/lib/Conversion/SCFToOpenMP/SCFToOpenMP.cpp b/mlir/lib/Conversion/SCFToOpenMP/SCFToOpenMP.cpp index 34f372af1e4b5..c4a9fc2e556f1 100644 --- a/mlir/lib/Conversion/SCFToOpenMP/SCFToOpenMP.cpp +++ b/mlir/lib/Conversion/SCFToOpenMP/SCFToOpenMP.cpp @@ -22,7 +22,7 @@ #include "mlir/Dialect/SCF/IR/SCF.h" #include "mlir/IR/SymbolTable.h" #include "mlir/Pass/Pass.h" -#include "mlir/Transforms/DialectConversion.h" +#include "mlir/Transforms/WalkPatternRewriteDriver.h" namespace mlir { #define GEN_PASS_DEF_CONVERTSCFTOOPENMPPASS @@ -538,15 +538,18 @@ struct ParallelOpLowering : public OpRewritePattern { /// Applies the conversion patterns in the given function. static LogicalResult applyPatterns(ModuleOp module, unsigned numThreads) { - ConversionTarget target(*module.getContext()); - target.addIllegalOp(); - target.addLegalDialect(); - RewritePatternSet patterns(module.getContext()); patterns.add(module.getContext(), numThreads); FrozenRewritePatternSet frozen(std::move(patterns)); - return applyPartialConversion(module, target, frozen); + walkAndApplyPatterns(module, frozen); + auto status = module.walk([](Operation *op) { + if (isa(op)) { + op->emitError("unconverted operation found"); + return WalkResult::interrupt(); + } + return WalkResult::advance(); + }); + return failure(status.wasInterrupted()); } /// A pass converting SCF operations to OpenMP operations.