[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