diff options
Diffstat (limited to 'llvm/lib/Transforms/Utils/CloneFunction.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/CloneFunction.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/llvm/lib/Transforms/Utils/CloneFunction.cpp b/llvm/lib/Transforms/Utils/CloneFunction.cpp index 314c990293c..b61017f37ca 100644 --- a/llvm/lib/Transforms/Utils/CloneFunction.cpp +++ b/llvm/lib/Transforms/Utils/CloneFunction.cpp @@ -325,10 +325,11 @@ void PruningFunctionCloner::CloneBlock(const BasicBlock *BB, // the basic block. if (Value *V = SimplifyInstruction(NewInst, BB->getModule()->getDataLayout())) { - // On the off-chance that this simplifies to an instruction in the old - // function, map it back into the new function. - if (Value *MappedV = VMap.lookup(V)) - V = MappedV; + assert((!isa<Instruction>(V) || + cast<Instruction>(V)->getParent() == nullptr || + cast<Instruction>(V)->getFunction() != OldFunc || + OldFunc == NewFunc) && + "Simplified Instruction should not be in the old function."); if (!NewInst->mayHaveSideEffects()) { VMap[&*II] = V; |