[PATCH] D11872: [RegionInfo] Verify getRegionFor
Michael Kruse via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 11 08:17:27 PDT 2015
This revision was automatically updated to reflect the committed changes.
Closed by commit rL244611: [RegionInfo] Verify getRegionFor (authored by Meinersbur).
Changed prior to commit:
http://reviews.llvm.org/D11872?vs=31669&id=31819#toc
Repository:
rL LLVM
http://reviews.llvm.org/D11872
Files:
llvm/trunk/include/llvm/Analysis/RegionInfo.h
llvm/trunk/include/llvm/Analysis/RegionInfoImpl.h
Index: llvm/trunk/include/llvm/Analysis/RegionInfoImpl.h
===================================================================
--- llvm/trunk/include/llvm/Analysis/RegionInfoImpl.h
+++ llvm/trunk/include/llvm/Analysis/RegionInfoImpl.h
@@ -544,6 +544,21 @@
}
template <class Tr>
+void RegionInfoBase<Tr>::verifyBBMap(const RegionT *R) const {
+ assert(R && "Re must be non-null");
+ for (auto I = R->element_begin(), E = R->element_end(); I != E; ++I) {
+ if (I->isSubRegion()) {
+ const RegionT *SR = I->template getNodeAs<RegionT>();
+ verifyBBMap(SR);
+ } else {
+ BlockT *BB = I->template getNodeAs<BlockT>();
+ if (getRegionFor(BB) != R)
+ llvm_unreachable("BB map does not match region nesting");
+ }
+ }
+}
+
+template <class Tr>
bool RegionInfoBase<Tr>::isCommonDomFrontier(BlockT *BB, BlockT *entry,
BlockT *exit) const {
for (PredIterTy PI = InvBlockTraits::child_begin(BB),
@@ -788,7 +803,14 @@
template <class Tr>
void RegionInfoBase<Tr>::verifyAnalysis() const {
+ // Do only verify regions if explicitely activated using XDEBUG or
+ // -verify-region-info
+ if (!RegionInfoBase<Tr>::VerifyRegionInfo)
+ return;
+
TopLevelRegion->verifyRegionNest();
+
+ verifyBBMap(TopLevelRegion);
}
// Region pass manager support.
Index: llvm/trunk/include/llvm/Analysis/RegionInfo.h
===================================================================
--- llvm/trunk/include/llvm/Analysis/RegionInfo.h
+++ llvm/trunk/include/llvm/Analysis/RegionInfo.h
@@ -687,6 +687,11 @@
/// Map every BB to the smallest region, that contains BB.
BBtoRegionMap BBtoRegion;
+ // Check whether the entries of BBtoRegion for the BBs of region
+ // SR are correct. Triggers an assertion if not. Calls itself recursively for
+ // subregions.
+ void verifyBBMap(const RegionT *SR) const;
+
// Returns true if BB is in the dominance frontier of
// entry, because it was inherited from exit. In the other case there is an
// edge going from entry to BB without passing exit.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D11872.31819.patch
Type: text/x-patch
Size: 2080 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150811/605c1ec3/attachment.bin>
More information about the llvm-commits
mailing list