diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2016-01-13 19:58:01 +0000 |
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2016-01-13 19:58:01 +0000 |
| commit | 050e163ae8b4bb6eb252b59e2f8f36e68ae9239d (patch) | |
| tree | 7376a0c71aad05d327e5b1dcbceb3311a10f9f29 /include/llvm/Transforms/Utils | |
| parent | 8a6c1c25bce0267ee4072bd7b786b921e8a66a35 (diff) | |
Notes
Diffstat (limited to 'include/llvm/Transforms/Utils')
| -rw-r--r-- | include/llvm/Transforms/Utils/Cloning.h | 36 | ||||
| -rw-r--r-- | include/llvm/Transforms/Utils/Local.h | 3 |
2 files changed, 5 insertions, 34 deletions
diff --git a/include/llvm/Transforms/Utils/Cloning.h b/include/llvm/Transforms/Utils/Cloning.h index 92a1d52f1011..4f006f2adeef 100644 --- a/include/llvm/Transforms/Utils/Cloning.h +++ b/include/llvm/Transforms/Utils/Cloning.h @@ -147,42 +147,12 @@ void CloneFunctionInto(Function *NewFunc, const Function *OldFunc, ValueMapTypeRemapper *TypeMapper = nullptr, ValueMaterializer *Materializer = nullptr); -/// A helper class used with CloneAndPruneIntoFromInst to change the default -/// behavior while instructions are being cloned. -class CloningDirector { -public: - /// This enumeration describes the way CloneAndPruneIntoFromInst should - /// proceed after the CloningDirector has examined an instruction. - enum CloningAction { - ///< Continue cloning the instruction (default behavior). - CloneInstruction, - ///< Skip this instruction but continue cloning the current basic block. - SkipInstruction, - ///< Skip this instruction and stop cloning the current basic block. - StopCloningBB, - ///< Don't clone the terminator but clone the current block's successors. - CloneSuccessors - }; - - virtual ~CloningDirector() {} - - /// Subclasses must override this function to customize cloning behavior. - virtual CloningAction handleInstruction(ValueToValueMapTy &VMap, - const Instruction *Inst, - BasicBlock *NewBB) = 0; - - virtual ValueMapTypeRemapper *getTypeRemapper() { return nullptr; } - virtual ValueMaterializer *getValueMaterializer() { return nullptr; } -}; - void CloneAndPruneIntoFromInst(Function *NewFunc, const Function *OldFunc, const Instruction *StartingInst, ValueToValueMapTy &VMap, bool ModuleLevelChanges, - SmallVectorImpl<ReturnInst*> &Returns, - const char *NameSuffix = "", - ClonedCodeInfo *CodeInfo = nullptr, - CloningDirector *Director = nullptr); - + SmallVectorImpl<ReturnInst *> &Returns, + const char *NameSuffix = "", + ClonedCodeInfo *CodeInfo = nullptr); /// CloneAndPruneFunctionInto - This works exactly like CloneFunctionInto, /// except that it does some simple constant prop and DCE on the fly. The diff --git a/include/llvm/Transforms/Utils/Local.h b/include/llvm/Transforms/Utils/Local.h index 81b376f0c212..911c6f14da0b 100644 --- a/include/llvm/Transforms/Utils/Local.h +++ b/include/llvm/Transforms/Utils/Local.h @@ -42,6 +42,7 @@ class TargetLibraryInfo; class TargetTransformInfo; class DIBuilder; class DominatorTree; +class LazyValueInfo; template<typename T> class SmallVectorImpl; @@ -303,7 +304,7 @@ void removeUnwindEdge(BasicBlock *BB); /// \brief Remove all blocks that can not be reached from the function's entry. /// /// Returns true if any basic block was removed. -bool removeUnreachableBlocks(Function &F); +bool removeUnreachableBlocks(Function &F, LazyValueInfo *LVI = nullptr); /// \brief Combine the metadata of two instructions so that K can replace J /// |
