Skip to content

Conversation

@matthias-springer
Copy link
Member

Collect canonicalization patterns from the region branch ops (instead of populating all canonicalization patterns).

Addresses a comment on a merged PR.

@llvmbot
Copy link
Member

llvmbot commented Jan 19, 2026

@llvm/pr-subscribers-mlir-core

Author: Matthias Springer (matthias-springer)

Changes

Collect canonicalization patterns from the region branch ops (instead of populating all canonicalization patterns).

Addresses a comment on a merged PR.


Full diff: https://github.com/llvm/llvm-project/pull/176712.diff

1 Files Affected:

  • (modified) mlir/lib/Transforms/RemoveDeadValues.cpp (+6-6)
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");

@llvmbot
Copy link
Member

llvmbot commented Jan 19, 2026

@llvm/pr-subscribers-mlir

Author: Matthias Springer (matthias-springer)

Changes

Collect canonicalization patterns from the region branch ops (instead of populating all canonicalization patterns).

Addresses a comment on a merged PR.


Full diff: https://github.com/llvm/llvm-project/pull/176712.diff

1 Files Affected:

  • (modified) mlir/lib/Transforms/RemoveDeadValues.cpp (+6-6)
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");

@matthias-springer matthias-springer merged commit 4a88083 into main Jan 19, 2026
14 checks passed
@matthias-springer matthias-springer deleted the users/matthias-springer/collect_can_patterns branch January 19, 2026 09:30
BStott6 pushed a commit to BStott6/llvm-project that referenced this pull request Jan 22, 2026
…ops (llvm#176712)

Collect canonicalization patterns from the region branch ops (instead of
populating all canonicalization patterns).

Addresses a
[comment](llvm#173505 (comment))
on a merged PR.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

mlir:core MLIR Core Infrastructure mlir

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants