aboutsummaryrefslogtreecommitdiff
path: root/lib/VMCore/BasicBlock.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-09-26 05:03:22 +0000
committerChris Lattner <sabre@nondot.org>2002-09-26 05:03:22 +0000
commit0a1a874d1f4659f02c0d4fdd6be69f1188bd0625 (patch)
tree76d89005e7fcd3a1e87b7641712fb9b44c464732 /lib/VMCore/BasicBlock.cpp
parent5cf816b09ed320a440d7dfcfac0d695d49947897 (diff)
- Add new ctor to BasicBlock to allow insertion before any BB, not just at
the end of the function. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3934 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore/BasicBlock.cpp')
-rw-r--r--lib/VMCore/BasicBlock.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/VMCore/BasicBlock.cpp b/lib/VMCore/BasicBlock.cpp
index bf7191c659..2f1072dc33 100644
--- a/lib/VMCore/BasicBlock.cpp
+++ b/lib/VMCore/BasicBlock.cpp
@@ -67,6 +67,26 @@ BasicBlock::BasicBlock(const std::string &name, Function *Parent)
Parent->getBasicBlockList().push_back(this);
}
+/// BasicBlock ctor - If the InsertBefore parameter is specified, the basic
+/// block is automatically inserted right before the specified block.
+///
+BasicBlock::BasicBlock(const std::string &Name, BasicBlock *InsertBefore)
+ : Value(Type::LabelTy, Value::BasicBlockVal, Name) {
+ // Initialize the instlist...
+ InstList.setItemParent(this);
+
+ // Make sure that we get added to a function
+ LeakDetector::addGarbageObject(this);
+
+ if (InsertBefore) {
+ assert(InsertBefore->getParent() &&
+ "Cannot insert block before another block that is not embedded into"
+ " a function yet!");
+ InsertBefore->getParent()->getBasicBlockList().insert(InsertBefore, this);
+ }
+}
+
+
BasicBlock::~BasicBlock() {
dropAllReferences();
InstList.clear();