[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