[flang-commits] [flang] [flang] Do not use dialect conversion in `DoConcurrentConversionPass` (PR #156169)

Tom Eccles via flang-commits flang-commits at lists.llvm.org
Sat Aug 30 10:24:08 PDT 2025


================
@@ -472,18 +476,25 @@ class DoConcurrentConversionPass
     patterns.insert<DoConcurrentConversion>(
         context, mapTo == flangomp::DoConcurrentMappingKind::DCMK_Device,
         concurrentLoopsToSkip, moduleSymbolTable);
-    mlir::ConversionTarget target(*context);
-    target.addDynamicallyLegalOp<fir::DoConcurrentOp>(
-        [&](fir::DoConcurrentOp op) {
-          return concurrentLoopsToSkip.contains(op);
-        });
-    target.markUnknownOpDynamicallyLegal(
-        [](mlir::Operation *) { return true; });
-
-    if (mlir::failed(
-            mlir::applyFullConversion(module, target, std::move(patterns)))) {
+
+    // TODO: This pass should use "walkAndApplyPatterns", but that driver does
+    // not support pre-order traversals yet.
+    if (mlir::failed(applyPatternsGreedily(module.getOperation(),
+                                           std::move(patterns)))) {
----------------
tblah wrote:

Unfortunately FIR doesn't fully support region simplification. Please could you add
```
mlir::GreedyRewriteConfig config;
// Prevent the pattern driver from merging blocks.
config.setRegionSimplificationLevel(
    mlir::GreedySimplifyRegionLevel::Disabled);

if (mlir::failed(applyPatternsGreedily(module.getOperation(),
                                            std::move(patterns), config))) {
```

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


More information about the flang-commits mailing list