[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