LLVM  3.7.0
Classes | Namespaces | Functions
Cloning.h File Reference
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/Twine.h"
#include "llvm/IR/ValueHandle.h"
#include "llvm/IR/ValueMap.h"
#include "llvm/Transforms/Utils/ValueMapper.h"
Include dependency graph for Cloning.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  llvm::ClonedCodeInfo
 ClonedCodeInfo - This struct can be used to capture information about code being cloned, while it is being cloned. More...
 
class  llvm::CloningDirector
 A helper class used with CloneAndPruneIntoFromInst to change the default behavior while instructions are being cloned. More...
 
class  llvm::InlineFunctionInfo
 InlineFunctionInfo - This class captures the data input to the InlineFunction call, and records the auxiliary results produced by it. More...
 

Namespaces

 llvm
 Compute iterated dominance frontiers using a linear time algorithm.
 

Functions

Modulellvm::CloneModule (const Module *M)
 CloneModule - Return an exact copy of the specified module. More...
 
Modulellvm::CloneModule (const Module *M, ValueToValueMapTy &VMap)
 
BasicBlockllvm::CloneBasicBlock (const BasicBlock *BB, ValueToValueMapTy &VMap, const Twine &NameSuffix="", Function *F=nullptr, ClonedCodeInfo *CodeInfo=nullptr)
 CloneBasicBlock - Return a copy of the specified basic block, but without embedding the block into a particular function. More...
 
Functionllvm::CloneFunction (const Function *F, ValueToValueMapTy &VMap, bool ModuleLevelChanges, ClonedCodeInfo *CodeInfo=nullptr)
 CloneFunction - Return a copy of the specified function, but without embedding the function into another module. More...
 
void llvm::CloneFunctionInto (Function *NewFunc, const Function *OldFunc, ValueToValueMapTy &VMap, bool ModuleLevelChanges, SmallVectorImpl< ReturnInst * > &Returns, const char *NameSuffix="", ClonedCodeInfo *CodeInfo=nullptr, ValueMapTypeRemapper *TypeMapper=nullptr, ValueMaterializer *Materializer=nullptr)
 Clone OldFunc into NewFunc, transforming the old arguments into references to VMap values. More...
 
void llvm::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)
 This works like CloneAndPruneFunctionInto, except that it does not clone the entire function. More...
 
void llvm::CloneAndPruneFunctionInto (Function *NewFunc, const Function *OldFunc, ValueToValueMapTy &VMap, bool ModuleLevelChanges, SmallVectorImpl< ReturnInst * > &Returns, const char *NameSuffix="", ClonedCodeInfo *CodeInfo=nullptr, Instruction *TheCall=nullptr)
 CloneAndPruneFunctionInto - This works exactly like CloneFunctionInto, except that it does some simple constant prop and DCE on the fly. More...
 
bool llvm::InlineFunction (CallInst *C, InlineFunctionInfo &IFI, bool InsertLifetime=true)
 InlineFunction - This function inlines the called function into the basic block of the caller. More...
 
bool llvm::InlineFunction (InvokeInst *II, InlineFunctionInfo &IFI, bool InsertLifetime=true)
 
bool llvm::InlineFunction (CallSite CS, InlineFunctionInfo &IFI, bool InsertLifetime=true)
 This function inlines the called function into the basic block of the caller. More...
 
Loopllvm::cloneLoopWithPreheader (BasicBlock *Before, BasicBlock *LoopDomBB, Loop *OrigLoop, ValueToValueMapTy &VMap, const Twine &NameSuffix, LoopInfo *LI, DominatorTree *DT, SmallVectorImpl< BasicBlock * > &Blocks)
 Clones a loop OrigLoop. More...
 
void llvm::remapInstructionsInBlocks (const SmallVectorImpl< BasicBlock * > &Blocks, ValueToValueMapTy &VMap)
 Remaps instructions in Blocks using the mapping in VMap. More...