1313// / can legally use SCF dialect and generate Fortran runtime calls.
1414// ===----------------------------------------------------------------------===//
1515
16- #include " flang/Optimizer/Builder/BoxValue.h"
17- #include " flang/Optimizer/Builder/CUFCommon.h"
1816#include " flang/Optimizer/Builder/FIRBuilder.h"
19- #include " flang/Optimizer/Builder/LowLevelIntrinsics .h"
17+ #include " flang/Optimizer/Builder/Runtime/Inquiry .h"
2018#include " flang/Optimizer/Builder/Todo.h"
2119#include " flang/Optimizer/Dialect/FIROps.h"
22- #include " flang/Optimizer/Dialect/FIRType.h"
23- #include " flang/Optimizer/Dialect/Support/FIRContext.h"
24- #include " flang/Optimizer/HLFIR/HLFIRDialect.h"
2520#include " flang/Optimizer/Transforms/Passes.h"
26- #include " flang/Optimizer/Transforms/Utils.h"
27- #include " flang/Runtime/entry-names.h"
28- #include " flang/Support/Fortran.h"
29- #include " mlir/IR/Matchers.h"
30- #include " mlir/IR/Operation.h"
3121#include " mlir/Pass/Pass.h"
32- #include " mlir/Transforms/DialectConversion.h"
33-
34- #include " flang/Optimizer/Builder/Runtime/Inquiry.h"
22+ #include " mlir/Transforms/GreedyPatternRewriteDriver.h"
3523
3624namespace fir {
3725#define GEN_PASS_DEF_SIMPLIFYFIROPERATIONS
@@ -105,7 +93,7 @@ mlir::LogicalResult IsContiguousBoxCoversion::matchAndRewrite(
10593
10694 // Generate inline implementation.
10795 TODO (loc, " inline IsContiguousBoxOp" );
108- return mlir::success ();
96+ return mlir::failure ();
10997}
11098
11199// / Generate a call to Size runtime function or an inline
@@ -131,20 +119,20 @@ mlir::LogicalResult BoxTotalElementsConversion::matchAndRewrite(
131119
132120 // Generate inline implementation.
133121 TODO (loc, " inline BoxTotalElementsOp" );
134- return mlir::success ();
122+ return mlir::failure ();
135123}
136124
137125void SimplifyFIROperationsPass::runOnOperation () {
138126 mlir::ModuleOp module = getOperation ();
139127 mlir::MLIRContext &context = getContext ();
140- mlir::ConversionTarget target (context);
141- target.addIllegalOp <fir::IsContiguousBoxOp>();
142- target.addIllegalOp <fir::BoxTotalElementsOp>();
143128 mlir::RewritePatternSet patterns (&context);
144129 fir::populateSimplifyFIROperationsPatterns (patterns,
145130 preferInlineImplementation);
131+ mlir::GreedyRewriteConfig config;
132+ config.enableRegionSimplification = mlir::GreedySimplifyRegionLevel::Disabled;
133+
146134 if (mlir::failed (
147- mlir::applyPartialConversion (module , target, std::move (patterns)))) {
135+ mlir::applyPatternsGreedily (module , std::move (patterns), config ))) {
148136 mlir::emitError (module .getLoc (), DEBUG_TYPE " pass failed" );
149137 signalPassFailure ();
150138 }
0 commit comments