[Mlir-commits] [mlir] [mlir] Add erase sub-region dominate tree logic in DominanceInfoBase::invalidate method (PR #192469)

lonely eagle llvmlistbot at llvm.org
Thu Apr 16 07:47:31 PDT 2026


https://github.com/linuxlonelyeagle updated https://github.com/llvm/llvm-project/pull/192469

>From c0e7e202afecc8bac390ec88b7dc0791bdda3acc Mon Sep 17 00:00:00 2001
From: linuxlonelyeagle <2020382038 at qq.com>
Date: Thu, 16 Apr 2026 14:39:15 +0000
Subject: [PATCH 1/2] add erase sub region dominate tree logic in
 DominanceInfoBase::invalidate.

---
 mlir/lib/IR/Dominance.cpp | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/mlir/lib/IR/Dominance.cpp b/mlir/lib/IR/Dominance.cpp
index 0e53b431b5d31..f9782a86f07cd 100644
--- a/mlir/lib/IR/Dominance.cpp
+++ b/mlir/lib/IR/Dominance.cpp
@@ -42,10 +42,17 @@ void DominanceInfoBase<IsPostDom>::invalidate() {
 
 template <bool IsPostDom>
 void DominanceInfoBase<IsPostDom>::invalidate(Region *region) {
-  auto it = dominanceInfos.find(region);
-  if (it != dominanceInfos.end()) {
-    delete it->second.getPointer();
-    dominanceInfos.erase(it);
+  SmallVector<Region*> regions = {region};
+  region->walk([&](Operation *op) {
+    for (Region &r : op->getRegions()) 
+      regions.push_back(&r);
+  });
+  for (Region* region : regions) {
+    auto it = dominanceInfos.find(region);
+    if (it != dominanceInfos.end()) {
+      delete it->second.getPointer();
+      dominanceInfos.erase(it);
+    }
   }
 }
 

>From 4e6cdb1b84d9a3faffd46c353e00d27fa95e6ad9 Mon Sep 17 00:00:00 2001
From: linuxlonelyeagle <2020382038 at qq.com>
Date: Thu, 16 Apr 2026 14:47:10 +0000
Subject: [PATCH 2/2] fix clang-format.

---
 mlir/lib/IR/Dominance.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/mlir/lib/IR/Dominance.cpp b/mlir/lib/IR/Dominance.cpp
index f9782a86f07cd..2ef0c35a13536 100644
--- a/mlir/lib/IR/Dominance.cpp
+++ b/mlir/lib/IR/Dominance.cpp
@@ -42,12 +42,12 @@ void DominanceInfoBase<IsPostDom>::invalidate() {
 
 template <bool IsPostDom>
 void DominanceInfoBase<IsPostDom>::invalidate(Region *region) {
-  SmallVector<Region*> regions = {region};
+  SmallVector<Region *> regions = {region};
   region->walk([&](Operation *op) {
-    for (Region &r : op->getRegions()) 
+    for (Region &r : op->getRegions())
       regions.push_back(&r);
   });
-  for (Region* region : regions) {
+  for (Region *region : regions) {
     auto it = dominanceInfos.find(region);
     if (it != dominanceInfos.end()) {
       delete it->second.getPointer();



More information about the Mlir-commits mailing list