forked from OSchip/llvm-project
RegionInfo: Update RegionInfo after a BB was split.
llvm-svn: 116398
This commit is contained in:
parent
a8677226ab
commit
fe92a9384e
|
@ -638,6 +638,12 @@ public:
|
||||||
return TopLevelRegion;
|
return TopLevelRegion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// @brief Update RegionInfo after a basic block was split.
|
||||||
|
///
|
||||||
|
/// @param NewBB The basic block that was created before OldBB.
|
||||||
|
/// @param OldBB The old basic block.
|
||||||
|
void splitBlock(BasicBlock* NewBB, BasicBlock *OldBB);
|
||||||
|
|
||||||
/// @brief Clear the Node Cache for all Regions.
|
/// @brief Clear the Node Cache for all Regions.
|
||||||
///
|
///
|
||||||
/// @see Region::clearNodeCache()
|
/// @see Region::clearNodeCache()
|
||||||
|
|
|
@ -807,6 +807,19 @@ RegionInfo::getCommonRegion(SmallVectorImpl<BasicBlock*> &BBs) const {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void RegionInfo::splitBlock(BasicBlock* NewBB, BasicBlock *OldBB)
|
||||||
|
{
|
||||||
|
Region *R = getRegionFor(OldBB);
|
||||||
|
setRegionFor(NewBB, R);
|
||||||
|
|
||||||
|
while (R->getEntry() == OldBB && R->getParent()) {
|
||||||
|
R->replaceEntry(NewBB);
|
||||||
|
R = R->getParent();
|
||||||
|
}
|
||||||
|
|
||||||
|
setRegionFor(OldBB, R);
|
||||||
|
}
|
||||||
|
|
||||||
char RegionInfo::ID = 0;
|
char RegionInfo::ID = 0;
|
||||||
INITIALIZE_PASS_BEGIN(RegionInfo, "regions",
|
INITIALIZE_PASS_BEGIN(RegionInfo, "regions",
|
||||||
"Detect single entry single exit regions", true, true)
|
"Detect single entry single exit regions", true, true)
|
||||||
|
|
Loading…
Reference in New Issue