[llvm] [mlir] [mlir][core] Add an MLIR "pattern catalog" generator (PR #146228)
Mehdi Amini via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 30 02:49:31 PDT 2025
================
@@ -206,14 +206,24 @@ LogicalResult PatternApplicator::matchAndRewrite(
} else {
LLVM_DEBUG(llvm::dbgs() << "Trying to match \""
<< bestPattern->getDebugName() << "\"\n");
-
const auto *pattern =
static_cast<const RewritePattern *>(bestPattern);
- result = pattern->matchAndRewrite(op, rewriter);
+#ifndef NDEBUG
+ OpBuilder::Listener *oldListener = rewriter.getListener();
+ RewriterBase::CatalogingListener *catalogingListener =
+ new RewriterBase::CatalogingListener(oldListener,
+ pattern->getDebugName());
+ rewriter.setListener(catalogingListener);
+#endif
+ result = pattern->matchAndRewrite(op, rewriter);
----------------
joker-eph wrote:
```suggestion
#ifndef NDEBUG
OpBuilder::Listener *oldListener = rewriter.getListener();
auto catalogingListener =
std::make_unique<RewriterBase::CatalogingListener>(oldListener,
pattern->getDebugName());
rewriter.setListener(catalogingListener.get());
llvm::make_scope_exit([&] { rewriter.setListener(oldListener); };
#endif
result = pattern->matchAndRewrite(op, rewriter);
```
Nit: RAII.
https://github.com/llvm/llvm-project/pull/146228
More information about the llvm-commits
mailing list