summaryrefslogtreecommitdiff
path: root/lib/Analysis/RegionInfo.cpp
diff options
context:
space:
mode:
authorTobias Grosser <grosser@fim.uni-passau.de>2010-10-13 05:54:13 +0000
committerTobias Grosser <grosser@fim.uni-passau.de>2010-10-13 05:54:13 +0000
commit592316c4198023431799f8e597860b31ea7116c9 (patch)
tree49fe8a5db60f6ce262abe2c38d4bd045b7898fb8 /lib/Analysis/RegionInfo.cpp
parentc69bd733c02a4e0ca25f7a2d6b9b05168720d373 (diff)
downloadllvm-592316c4198023431799f8e597860b31ea7116c9.tar.gz
llvm-592316c4198023431799f8e597860b31ea7116c9.tar.bz2
llvm-592316c4198023431799f8e597860b31ea7116c9.tar.xz
RegionInfo: Update RegionInfo after a BB was split.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@116398 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/RegionInfo.cpp')
-rw-r--r--lib/Analysis/RegionInfo.cpp13
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/Analysis/RegionInfo.cpp b/lib/Analysis/RegionInfo.cpp
index 2576d4ee14..4a0a9a3cce 100644
--- a/lib/Analysis/RegionInfo.cpp
+++ b/lib/Analysis/RegionInfo.cpp
@@ -807,6 +807,19 @@ RegionInfo::getCommonRegion(SmallVectorImpl<BasicBlock*> &BBs) const {
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;
INITIALIZE_PASS_BEGIN(RegionInfo, "regions",
"Detect single entry single exit regions", true, true)