diff --git a/mlir/include/mlir/Analysis/Dominance.h b/mlir/include/mlir/Analysis/Dominance.h --- a/mlir/include/mlir/Analysis/Dominance.h +++ b/mlir/include/mlir/Analysis/Dominance.h @@ -52,7 +52,7 @@ using super = DominanceInfoBase; /// Return true if the specified block A properly dominates block B. - bool properlyDominates(Block *a, Block *b); + bool properlyDominates(Block *a, Block *b) const; /// A mapping of regions to their base dominator tree. DenseMap> dominanceInfos; @@ -65,28 +65,28 @@ using super::super; /// Return true if operation A properly dominates operation B. - bool properlyDominates(Operation *a, Operation *b); + bool properlyDominates(Operation *a, Operation *b) const; /// Return true if operation A dominates operation B. - bool dominates(Operation *a, Operation *b) { + bool dominates(Operation *a, Operation *b) const { return a == b || properlyDominates(a, b); } /// Return true if value A properly dominates operation B. - bool properlyDominates(Value a, Operation *b); + bool properlyDominates(Value a, Operation *b) const; /// Return true if operation A dominates operation B. - bool dominates(Value a, Operation *b) { + bool dominates(Value a, Operation *b) const { return (Operation *)a.getDefiningOp() == b || properlyDominates(a, b); } /// Return true if the specified block A dominates block B. - bool dominates(Block *a, Block *b) { + bool dominates(Block *a, Block *b) const { return a == b || properlyDominates(a, b); } /// Return true if the specified block A properly dominates block B. - bool properlyDominates(Block *a, Block *b) { + bool properlyDominates(Block *a, Block *b) const { return super::properlyDominates(a, b); } diff --git a/mlir/lib/Analysis/Dominance.cpp b/mlir/lib/Analysis/Dominance.cpp --- a/mlir/lib/Analysis/Dominance.cpp +++ b/mlir/lib/Analysis/Dominance.cpp @@ -139,7 +139,7 @@ /// Return true if the specified block A properly dominates block B. template -bool DominanceInfoBase::properlyDominates(Block *a, Block *b) { +bool DominanceInfoBase::properlyDominates(Block *a, Block *b) const { // A block dominates itself but does not properly dominate itself. if (a == b) return false; @@ -184,7 +184,7 @@ //===----------------------------------------------------------------------===// /// Return true if operation A properly dominates operation B. -bool DominanceInfo::properlyDominates(Operation *a, Operation *b) { +bool DominanceInfo::properlyDominates(Operation *a, Operation *b) const { auto *aBlock = a->getBlock(), *bBlock = b->getBlock(); // If a or b are not within a block, then a does not dominate b. @@ -208,7 +208,7 @@ } /// Return true if value A properly dominates operation B. -bool DominanceInfo::properlyDominates(Value a, Operation *b) { +bool DominanceInfo::properlyDominates(Value a, Operation *b) const { if (auto *aOp = a.getDefiningOp()) { // The values defined by an operation do *not* dominate any nested // operations.