[Mlir-commits] [mlir] [mlir][NFC] `remove-dead-values`: Get canonicalization patterns from ops (PR #176712)
Matthias Springer
llvmlistbot at llvm.org
Mon Jan 19 01:07:37 PST 2026
https://github.com/matthias-springer created https://github.com/llvm/llvm-project/pull/176712
Collect canonicalization patterns from the region branch ops (instead of populating all canonicalization patterns).
Addresses a [comment](https://github.com/llvm/llvm-project/pull/173505#discussion_r2675222999) on a merged PR.
>From d9a35ad72259c14e70927cce5a4132f14bf92002 Mon Sep 17 00:00:00 2001
From: Matthias Springer <me at m-sp.org>
Date: Mon, 19 Jan 2026 09:05:08 +0000
Subject: [PATCH] [mlir][Transforms][NFC] `remove-dead-values`: Get
canonicalization patterns from ops
---
mlir/lib/Transforms/RemoveDeadValues.cpp | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/mlir/lib/Transforms/RemoveDeadValues.cpp b/mlir/lib/Transforms/RemoveDeadValues.cpp
index 44b1bcf8e4300..66f369e8a5f65 100644
--- a/mlir/lib/Transforms/RemoveDeadValues.cpp
+++ b/mlir/lib/Transforms/RemoveDeadValues.cpp
@@ -779,13 +779,13 @@ void RemoveDeadValues::runOnOperation() {
module->walk([&](RegionBranchOpInterface regionBranchOp) {
opsToCanonicalize.push_back(regionBranchOp.getOperation());
});
- // TODO: Apply only region branch op canonicalization patterns or find a
- // better API to collect all canonicalization patterns.
+ // Collect all canonicalization patterns for region branch ops.
RewritePatternSet owningPatterns(context);
- for (auto *dialect : context->getLoadedDialects())
- dialect->getCanonicalizationPatterns(owningPatterns);
- for (RegisteredOperationName op : context->getRegisteredOperations())
- op.getCanonicalizationPatterns(owningPatterns, context);
+ DenseSet<RegisteredOperationName> populatedPatterns;
+ for (Operation *op : opsToCanonicalize)
+ if (std::optional<RegisteredOperationName> info = op->getRegisteredInfo())
+ if (populatedPatterns.insert(*info).second)
+ info->getCanonicalizationPatterns(owningPatterns, context);
if (failed(applyOpPatternsGreedily(opsToCanonicalize,
std::move(owningPatterns)))) {
module->emitError("greedy pattern rewrite failed to converge");
More information about the Mlir-commits
mailing list