-// Specialize setName to take care of symbol table majik
-void BasicBlock::setName(const std::string &name, SymbolTable *ST) {
- Function *P;
- assert((ST == 0 || (!getParent() || ST == &getParent()->getSymbolTable())) &&
- "Invalid symtab argument!");
- if ((P = getParent()) && hasName()) P->getSymbolTable().remove(this);
- Value::setName(name);
- if (P && hasName()) P->getSymbolTable().insert(this);
+void BasicBlock::removeFromParent() {
+ getParent()->getBasicBlockList().remove(this);
+}
+
+void BasicBlock::eraseFromParent() {
+ getParent()->getBasicBlockList().erase(this);
+}
+
+/// moveBefore - Unlink this basic block from its current function and
+/// insert it into the function that MovePos lives in, right before MovePos.
+void BasicBlock::moveBefore(BasicBlock *MovePos) {
+ MovePos->getParent()->getBasicBlockList().splice(MovePos,
+ getParent()->getBasicBlockList(), this);
+}
+
+/// moveAfter - Unlink this basic block from its current function and
+/// insert it into the function that MovePos lives in, right after MovePos.
+void BasicBlock::moveAfter(BasicBlock *MovePos) {
+ Function::iterator I = MovePos;
+ MovePos->getParent()->getBasicBlockList().splice(++I,
+ getParent()->getBasicBlockList(), this);