diff options
author | Easwaran Raman <eraman@google.com> | 2016-03-08 00:36:35 +0000 |
---|---|---|
committer | Easwaran Raman <eraman@google.com> | 2016-03-08 00:36:35 +0000 |
commit | b1bd398ceb5bead0251ec0f40ba5db0177e4a2df (patch) | |
tree | 36a26cbce3ac57801dcb3271ff7bfb1b7ebef5d8 /llvm/lib/Transforms/Utils/CloneFunction.cpp | |
parent | 33023662cbaebfda5005f0ac7c3a99554d18b2cc (diff) | |
download | llvm-b1bd398ceb5bead0251ec0f40ba5db0177e4a2df.zip llvm-b1bd398ceb5bead0251ec0f40ba5db0177e4a2df.tar.gz llvm-b1bd398ceb5bead0251ec0f40ba5db0177e4a2df.tar.bz2 |
Revert revisions 262636, 262643, 262679, and 262682.
llvm-svn: 262883
Diffstat (limited to 'llvm/lib/Transforms/Utils/CloneFunction.cpp')
-rw-r--r-- | llvm/lib/Transforms/Utils/CloneFunction.cpp | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/llvm/lib/Transforms/Utils/CloneFunction.cpp b/llvm/lib/Transforms/Utils/CloneFunction.cpp index ac0867a..05b0a17 100644 --- a/llvm/lib/Transforms/Utils/CloneFunction.cpp +++ b/llvm/lib/Transforms/Utils/CloneFunction.cpp @@ -277,10 +277,9 @@ namespace { /// The specified block is found to be reachable, clone it and /// anything that it can reach. - void CloneBlock(const BasicBlock *BB, + void CloneBlock(const BasicBlock *BB, BasicBlock::const_iterator StartingInst, - std::vector<const BasicBlock *> &ToClone, - BlockCloningFunctor Ftor = nullptr); + std::vector<const BasicBlock*> &ToClone); }; } @@ -288,8 +287,7 @@ namespace { /// anything that it can reach. void PruningFunctionCloner::CloneBlock(const BasicBlock *BB, BasicBlock::const_iterator StartingInst, - std::vector<const BasicBlock *> &ToClone, - BlockCloningFunctor Ftor) { + std::vector<const BasicBlock*> &ToClone){ WeakVH &BBEntry = VMap[BB]; // Have we already cloned this block? @@ -426,19 +424,18 @@ void PruningFunctionCloner::CloneBlock(const BasicBlock *BB, CodeInfo->ContainsDynamicAllocas |= hasStaticAllocas && BB != &BB->getParent()->front(); } - // Call Ftor to tell BB has been cloned to NewBB - if (Ftor) - Ftor(BB, NewBB); } /// This works like CloneAndPruneFunctionInto, except that it does not clone the /// entire function. Instead it starts at an instruction provided by the caller /// and copies (and prunes) only the code reachable from that instruction. -void llvm::CloneAndPruneIntoFromInst( - Function *NewFunc, const Function *OldFunc, const Instruction *StartingInst, - ValueToValueMapTy &VMap, bool ModuleLevelChanges, - SmallVectorImpl<ReturnInst *> &Returns, const char *NameSuffix, - ClonedCodeInfo *CodeInfo, BlockCloningFunctor Ftor) { +void llvm::CloneAndPruneIntoFromInst(Function *NewFunc, const Function *OldFunc, + const Instruction *StartingInst, + ValueToValueMapTy &VMap, + bool ModuleLevelChanges, + SmallVectorImpl<ReturnInst *> &Returns, + const char *NameSuffix, + ClonedCodeInfo *CodeInfo) { assert(NameSuffix && "NameSuffix cannot be null!"); ValueMapTypeRemapper *TypeMapper = nullptr; @@ -464,11 +461,11 @@ void llvm::CloneAndPruneIntoFromInst( // Clone the entry block, and anything recursively reachable from it. std::vector<const BasicBlock*> CloneWorklist; - PFC.CloneBlock(StartingBB, StartingInst->getIterator(), CloneWorklist, Ftor); + PFC.CloneBlock(StartingBB, StartingInst->getIterator(), CloneWorklist); while (!CloneWorklist.empty()) { const BasicBlock *BB = CloneWorklist.back(); CloneWorklist.pop_back(); - PFC.CloneBlock(BB, BB->begin(), CloneWorklist, Ftor); + PFC.CloneBlock(BB, BB->begin(), CloneWorklist); } // Loop over all of the basic blocks in the old function. If the block was @@ -670,14 +667,15 @@ void llvm::CloneAndPruneIntoFromInst( /// constant arguments cause a significant amount of code in the callee to be /// dead. Since this doesn't produce an exact copy of the input, it can't be /// used for things like CloneFunction or CloneModule. -void llvm::CloneAndPruneFunctionInto( - Function *NewFunc, const Function *OldFunc, ValueToValueMapTy &VMap, - bool ModuleLevelChanges, SmallVectorImpl<ReturnInst *> &Returns, - const char *NameSuffix, ClonedCodeInfo *CodeInfo, Instruction *TheCall, - BlockCloningFunctor Ftor) { +void llvm::CloneAndPruneFunctionInto(Function *NewFunc, const Function *OldFunc, + ValueToValueMapTy &VMap, + bool ModuleLevelChanges, + SmallVectorImpl<ReturnInst*> &Returns, + const char *NameSuffix, + ClonedCodeInfo *CodeInfo, + Instruction *TheCall) { CloneAndPruneIntoFromInst(NewFunc, OldFunc, &OldFunc->front().front(), VMap, - ModuleLevelChanges, Returns, NameSuffix, CodeInfo, - Ftor); + ModuleLevelChanges, Returns, NameSuffix, CodeInfo); } /// \brief Remaps instructions in \p Blocks using the mapping in \p VMap. |