Skip to content

Commit 88fbccd

Browse files
committed
Revert "Fix canonicalizer to copy the entire GreedyRewriteConfig instead of selected fields"
This reverts commit e468c60. Flang is broken, investigating...
1 parent 9be8892 commit 88fbccd

File tree

2 files changed

+17
-21
lines changed

2 files changed

+17
-21
lines changed

mlir/include/mlir/IR/OpImplementation.h

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -715,20 +715,18 @@ class AsmParser {
715715
//===--------------------------------------------------------------------===//
716716

717717
/// This class represents a StringSwitch like class that is useful for parsing
718-
/// expected keywords. On construction, unless a non-empty keyword is
719-
/// provided, it invokes `parseKeyword` and processes each of the provided
720-
/// cases statements until a match is hit. The provided `ResultT` must be
721-
/// assignable from `failure()`.
718+
/// expected keywords. On construction, it invokes `parseKeyword` and
719+
/// processes each of the provided cases statements until a match is hit. The
720+
/// provided `ResultT` must be assignable from `failure()`.
722721
template <typename ResultT = ParseResult>
723722
class KeywordSwitch {
724723
public:
725-
KeywordSwitch(AsmParser &parser, StringRef *keyword = nullptr)
724+
KeywordSwitch(AsmParser &parser)
726725
: parser(parser), loc(parser.getCurrentLocation()) {
727-
if (keyword && !keyword->empty())
728-
this->keyword = *keyword;
729-
else if (failed(parser.parseKeywordOrCompletion(&this->keyword)))
726+
if (failed(parser.parseKeywordOrCompletion(&keyword)))
730727
result = failure();
731728
}
729+
732730
/// Case that uses the provided value when true.
733731
KeywordSwitch &Case(StringLiteral str, ResultT value) {
734732
return Case(str, [&](StringRef, SMLoc) { return std::move(value); });

mlir/lib/Transforms/Canonicalizer.cpp

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ struct Canonicalizer : public impl::CanonicalizerBase<Canonicalizer> {
2929
Canonicalizer() = default;
3030
Canonicalizer(const GreedyRewriteConfig &config,
3131
ArrayRef<std::string> disabledPatterns,
32-
ArrayRef<std::string> enabledPatterns)
33-
: config(config) {
32+
ArrayRef<std::string> enabledPatterns) {
3433
this->topDownProcessingEnabled = config.useTopDownTraversal;
3534
this->enableRegionSimplification = config.enableRegionSimplification;
3635
this->maxIterations = config.maxIterations;
@@ -42,31 +41,30 @@ struct Canonicalizer : public impl::CanonicalizerBase<Canonicalizer> {
4241
/// Initialize the canonicalizer by building the set of patterns used during
4342
/// execution.
4443
LogicalResult initialize(MLIRContext *context) override {
45-
// Set the config from possible pass options set in the meantime.
46-
config.useTopDownTraversal = topDownProcessingEnabled;
47-
config.enableRegionSimplification = enableRegionSimplification;
48-
config.maxIterations = maxIterations;
49-
config.maxNumRewrites = maxNumRewrites;
50-
5144
RewritePatternSet owningPatterns(context);
5245
for (auto *dialect : context->getLoadedDialects())
5346
dialect->getCanonicalizationPatterns(owningPatterns);
5447
for (RegisteredOperationName op : context->getRegisteredOperations())
5548
op.getCanonicalizationPatterns(owningPatterns, context);
5649

57-
patterns = std::make_shared<FrozenRewritePatternSet>(
58-
std::move(owningPatterns), disabledPatterns, enabledPatterns);
50+
patterns = FrozenRewritePatternSet(std::move(owningPatterns),
51+
disabledPatterns, enabledPatterns);
5952
return success();
6053
}
6154
void runOnOperation() override {
55+
GreedyRewriteConfig config;
56+
config.useTopDownTraversal = topDownProcessingEnabled;
57+
config.enableRegionSimplification = enableRegionSimplification;
58+
config.maxIterations = maxIterations;
59+
config.maxNumRewrites = maxNumRewrites;
6260
LogicalResult converged =
63-
applyPatternsAndFoldGreedily(getOperation(), *patterns, config);
61+
applyPatternsAndFoldGreedily(getOperation(), patterns, config);
6462
// Canonicalization is best-effort. Non-convergence is not a pass failure.
6563
if (testConvergence && failed(converged))
6664
signalPassFailure();
6765
}
68-
GreedyRewriteConfig config;
69-
std::shared_ptr<const FrozenRewritePatternSet> patterns;
66+
67+
FrozenRewritePatternSet patterns;
7068
};
7169
} // namespace
7270

0 commit comments

Comments
 (0)