+// CloneBasicBlock - See comments in Cloning.h
+BasicBlock *CloneBasicBlock(const BasicBlock *BB,
+ std::map<const Value*, Value*> &ValueMap,
+ const char *NameSuffix) {
+ BasicBlock *NewBB = new BasicBlock("");
+ if (BB->hasName()) NewBB->setName(BB->getName()+NameSuffix);
+
+ // Loop over all instructions copying them over...
+ for (BasicBlock::const_iterator II = BB->begin(), IE = BB->end();
+ II != IE; ++II) {
+ Instruction *NewInst = II->clone();
+ if (II->hasName())
+ NewInst->setName(II->getName()+NameSuffix);
+ NewBB->getInstList().push_back(NewInst);
+ ValueMap[II] = NewInst; // Add instruction map to value.
+ }
+ return NewBB;
+}
+