Add Region::isTopLevelRegion().

llvm-svn: 116402
This commit is contained in:
Tobias Grosser 2010-10-13 11:02:44 +00:00
parent dd0821e7ff
commit 4b0986b6c1
2 changed files with 8 additions and 3 deletions

View File

@ -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.
///

View File

@ -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();
}