Skip to content

Commit 5cf9754

Browse files
committed
Use greedy rewriter.
1 parent 55fd283 commit 5cf9754

File tree

2 files changed

+11
-26
lines changed

2 files changed

+11
-26
lines changed

flang/lib/Optimizer/Transforms/SimplifyFIROperations.cpp

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,25 +13,13 @@
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

3624
namespace 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

137125
void 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
}

flang/test/Transforms/simplify-fir-operations.fir

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,8 @@ func.func @test_none(%arg0: !fir.box<none>) -> i16 {
8787
}
8888
// CHECK-LABEL: func.func @test_none(
8989
// CHECK-SAME: %[[VAL_0:[0-9]+|[a-zA-Z$._-][a-zA-Z0-9$._-]*]]: !fir.box<none>) -> i16 {
90-
// CHECK: %[[VAL_1:.*]] = fir.address_of(@{{.*}}) : !fir.ref<!fir.char<1,{{.*}}>>
91-
// CHECK: %[[VAL_2:.*]] = arith.constant {{.*}} : index
9290
// CHECK: %[[VAL_3:.*]] = arith.constant {{.*}} : i32
91+
// CHECK: %[[VAL_1:.*]] = fir.address_of(@{{.*}}) : !fir.ref<!fir.char<1,{{.*}}>>
9392
// CHECK: %[[VAL_4:.*]] = fir.convert %[[VAL_1]] : (!fir.ref<!fir.char<1,{{.*}}>>) -> !fir.ref<i8>
9493
// CHECK: %[[VAL_5:.*]] = fir.call @_FortranASize(%[[VAL_0]], %[[VAL_4]], %[[VAL_3]]) : (!fir.box<none>, !fir.ref<i8>, i32) -> i64
9594
// CHECK: %[[VAL_6:.*]] = fir.convert %[[VAL_5]] : (i64) -> i16
@@ -104,9 +103,8 @@ func.func @test_array(%arg0: !fir.box<!fir.array<?x?xf32>>) -> i32 {
104103
}
105104
// CHECK-LABEL: func.func @test_array(
106105
// CHECK-SAME: %[[VAL_0:[0-9]+|[a-zA-Z$._-][a-zA-Z0-9$._-]*]]: !fir.box<!fir.array<?x?xf32>>) -> i32 {
107-
// CHECK: %[[VAL_1:.*]] = fir.address_of({{.*}}) : !fir.ref<!fir.char<1,{{.*}}>>
108-
// CHECK: %[[VAL_2:.*]] = arith.constant {{.*}} : index
109106
// CHECK: %[[VAL_3:.*]] = arith.constant {{.*}} : i32
107+
// CHECK: %[[VAL_1:.*]] = fir.address_of({{.*}}) : !fir.ref<!fir.char<1,{{.*}}>>
110108
// CHECK: %[[VAL_4:.*]] = fir.convert %[[VAL_0]] : (!fir.box<!fir.array<?x?xf32>>) -> !fir.box<none>
111109
// CHECK: %[[VAL_5:.*]] = fir.convert %[[VAL_1]] : (!fir.ref<!fir.char<1,{{.*}}>>) -> !fir.ref<i8>
112110
// CHECK: %[[VAL_6:.*]] = fir.call @_FortranASize(%[[VAL_4]], %[[VAL_5]], %[[VAL_3]]) : (!fir.box<none>, !fir.ref<i8>, i32) -> i64
@@ -122,9 +120,8 @@ func.func @test_assumed_rank(%arg0: !fir.box<!fir.array<*:f32>>) -> index {
122120
}
123121
// CHECK-LABEL: func.func @test_assumed_rank(
124122
// CHECK-SAME: %[[VAL_0:[0-9]+|[a-zA-Z$._-][a-zA-Z0-9$._-]*]]: !fir.box<!fir.array<*:f32>>) -> index {
125-
// CHECK: %[[VAL_1:.*]] = fir.address_of({{.*}}) : !fir.ref<!fir.char<1,{{.*}}>>
126-
// CHECK: %[[VAL_2:.*]] = arith.constant {{.*}} : index
127123
// CHECK: %[[VAL_3:.*]] = arith.constant {{.*}} : i32
124+
// CHECK: %[[VAL_1:.*]] = fir.address_of({{.*}}) : !fir.ref<!fir.char<1,{{.*}}>>
128125
// CHECK: %[[VAL_4:.*]] = fir.convert %[[VAL_0]] : (!fir.box<!fir.array<*:f32>>) -> !fir.box<none>
129126
// CHECK: %[[VAL_5:.*]] = fir.convert %[[VAL_1]] : (!fir.ref<!fir.char<1,{{.*}}>>) -> !fir.ref<i8>
130127
// CHECK: %[[VAL_6:.*]] = fir.call @_FortranASize(%[[VAL_4]], %[[VAL_5]], %[[VAL_3]]) : (!fir.box<none>, !fir.ref<i8>, i32) -> i64

0 commit comments

Comments
 (0)