diff options
author | Tobias Grosser <grosser@fim.uni-passau.de> | 2010-10-13 11:02:44 +0000 |
---|---|---|
committer | Tobias Grosser <grosser@fim.uni-passau.de> | 2010-10-13 11:02:44 +0000 |
commit | b227930cd6850e4c47358e671dbe2cdacb430def (patch) | |
tree | 7bdda5b853ae63af2f8ac7bb946582f344e785ca | |
parent | ede42b0a22fdb57eb70d0d8c780dc5d3283397c0 (diff) | |
download | external_llvm-b227930cd6850e4c47358e671dbe2cdacb430def.zip external_llvm-b227930cd6850e4c47358e671dbe2cdacb430def.tar.gz external_llvm-b227930cd6850e4c47358e671dbe2cdacb430def.tar.bz2 |
Add Region::isTopLevelRegion().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116402 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/Analysis/RegionInfo.h | 5 | ||||
-rw-r--r-- | lib/Analysis/RegionInfo.cpp | 6 |
2 files changed, 8 insertions, 3 deletions
diff --git a/include/llvm/Analysis/RegionInfo.h b/include/llvm/Analysis/RegionInfo.h index 4e7d303..b6ac1b3 100644 --- a/include/llvm/Analysis/RegionInfo.h +++ b/include/llvm/Analysis/RegionInfo.h @@ -292,6 +292,11 @@ public: /// @return The depth of the region. unsigned getDepth() const; + /// @brief Check if a Region is the TopLevel region. + /// + /// The toplevel region represents the whole function. + bool isTopLevelRegion() const { return exit == NULL; }; + /// @brief Return a new (non canonical) region, that is obtained by joining /// this region with its predecessors. /// diff --git a/lib/Analysis/RegionInfo.cpp b/lib/Analysis/RegionInfo.cpp index 9d84f55..d26135c 100644 --- a/lib/Analysis/RegionInfo.cpp +++ b/lib/Analysis/RegionInfo.cpp @@ -140,8 +140,7 @@ bool Region::isSimple() const { BasicBlock *entry = getEntry(), *exit = getExit(); - // TopLevelRegion - if (!exit) + if (isTopLevelRegion()) return false; for (pred_iterator PI = pred_begin(entry), PE = pred_end(entry); PI != PE; @@ -810,9 +809,10 @@ RegionInfo::getCommonRegion(SmallVectorImpl<BasicBlock*> &BBs) const { void RegionInfo::splitBlock(BasicBlock* NewBB, BasicBlock *OldBB) { Region *R = getRegionFor(OldBB); + setRegionFor(NewBB, R); - while (R->getEntry() == OldBB && R->getParent()) { + while (R->getEntry() == OldBB && !R->isTopLevelRegion()) { R->replaceEntry(NewBB); R = R->getParent(); } |