diff options
Diffstat (limited to 'lib/Transforms/Utils/CloneFunction.cpp')
| -rw-r--r-- | lib/Transforms/Utils/CloneFunction.cpp | 7 | 
1 files changed, 3 insertions, 4 deletions
diff --git a/lib/Transforms/Utils/CloneFunction.cpp b/lib/Transforms/Utils/CloneFunction.cpp index 17ad8c5175..4aa1aaa0d2 100644 --- a/lib/Transforms/Utils/CloneFunction.cpp +++ b/lib/Transforms/Utils/CloneFunction.cpp @@ -42,8 +42,8 @@ static inline void RemapInstruction(Instruction *I,  // CloneBasicBlock - See comments in Cloning.h  BasicBlock *llvm::CloneBasicBlock(const BasicBlock *BB,                                    std::map<const Value*, Value*> &ValueMap, -                                  const char *NameSuffix) { -  BasicBlock *NewBB = new BasicBlock(""); +                                  const char *NameSuffix, Function *F) { +  BasicBlock *NewBB = new BasicBlock("", F);    if (BB->hasName()) NewBB->setName(BB->getName()+NameSuffix);    // Loop over all instructions copying them over... @@ -82,8 +82,7 @@ void llvm::CloneFunctionInto(Function *NewFunc, const Function *OldFunc,      const BasicBlock &BB = *BI;      // Create a new basic block and copy instructions into it! -    BasicBlock *CBB = CloneBasicBlock(&BB, ValueMap, NameSuffix); -    NewFunc->getBasicBlockList().push_back(CBB); +    BasicBlock *CBB = CloneBasicBlock(&BB, ValueMap, NameSuffix, NewFunc);      ValueMap[&BB] = CBB;                       // Add basic block mapping.      if (ReturnInst *RI = dyn_cast<ReturnInst>(CBB->getTerminator()))  | 
