X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FAnalysis%2FRegionInfo.cpp;h=6725cfd28fabbcff550aee75f182793840331a47;hb=c0362d5c6e0066c741bce056a65d8b4c026de19f;hp=4a0a9a3ccecdcab72165cbff207737ad43f0d28e;hpb=592316c4198023431799f8e597860b31ea7116c9;p=oota-llvm.git diff --git a/lib/Analysis/RegionInfo.cpp b/lib/Analysis/RegionInfo.cpp index 4a0a9a3ccec..6725cfd28fa 100644 --- a/lib/Analysis/RegionInfo.cpp +++ b/lib/Analysis/RegionInfo.cpp @@ -45,7 +45,7 @@ STATISTIC(numSimpleRegions, "The # of simple regions"); /// PrintStyle - Print region in difference ways. enum PrintStyle { PrintNone, PrintBB, PrintRN }; -cl::opt printStyle("print-region-style", cl::Hidden, +static cl::opt printStyle("print-region-style", cl::Hidden, cl::desc("style of printing regions"), cl::values( clEnumValN(PrintNone, "none", "print no details"), @@ -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; @@ -444,7 +443,7 @@ void Region::dump() const { void Region::clearNodeCache() { // Free the cached nodes. for (BBNodeMapT::iterator I = BBNodeMap.begin(), - IE = BBNodeMap.end(); I != IE; ++IE) + IE = BBNodeMap.end(); I != IE; ++I) delete I->second; BBNodeMap.clear(); @@ -663,6 +662,7 @@ void RegionInfo::releaseMemory() { } RegionInfo::RegionInfo() : FunctionPass(ID) { + initializeRegionInfoPass(*PassRegistry::getPassRegistry()); TopLevelRegion = 0; } @@ -810,9 +810,10 @@ RegionInfo::getCommonRegion(SmallVectorImpl &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(); }