[Mlir-commits] [mlir] [mlir][SCFToOpenMP] Use walk pattern driver (PR #155242)

Mehdi Amini llvmlistbot at llvm.org
Mon Aug 25 07:08:38 PDT 2025


================
@@ -538,15 +538,16 @@ struct ParallelOpLowering : public OpRewritePattern<scf::ParallelOp> {
 
 /// Applies the conversion patterns in the given function.
 static LogicalResult applyPatterns(ModuleOp module, unsigned numThreads) {
-  ConversionTarget target(*module.getContext());
-  target.addIllegalOp<scf::ReduceOp, scf::ReduceReturnOp, scf::ParallelOp>();
-  target.addLegalDialect<omp::OpenMPDialect, LLVM::LLVMDialect,
-                         memref::MemRefDialect>();
-
   RewritePatternSet patterns(module.getContext());
   patterns.add<ParallelOpLowering>(module.getContext(), numThreads);
   FrozenRewritePatternSet frozen(std::move(patterns));
-  return applyPartialConversion(module, target, frozen);
+  walkAndApplyPatterns(module, frozen);
+  auto status = module.walk([](Operation *op) {
+    if (isa<scf::ReduceOp, scf::ReduceReturnOp, scf::ParallelOp>(op))
+      return WalkResult::interrupt();
+    return WalkResult::advance();
+  });
+  return failure(status.wasInterrupted());
----------------
joker-eph wrote:

That below will directly translate this into `signalPassFailure`, which will trigger a silent failure of the compiler. Looks like we're missing on a diagnostic somewhere.

https://github.com/llvm/llvm-project/pull/155242


More information about the Mlir-commits mailing list