16 #ifndef LLVM_TRANSFORMS_UTILS_LOOPVERSIONING_H
17 #define LLVM_TRANSFORMS_UTILS_LOOPVERSIONING_H
80 Loop *NonVersionedLoop;
Pass interface - Implemented by all 'passes'.
LoopVersioning(const LoopAccessInfo &LAI, Loop *L, LoopInfo *LI, DominatorTree *DT, const SmallVector< int, 8 > *PtrToPartition=nullptr)
This class consists of common code factored out of the SmallVector class to reduce code duplication b...
Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree...
void versionLoop(Pass *P)
Performs the CFG manipulation part of versioning the loop including the DominatorTree and LoopInfo up...
Loop * getVersionedLoop()
Returns the versioned loop.
Drive the analysis of memory accesses in the loop.
This class emits a version of the loop where run-time checks ensure that may-alias pointers can't ove...
void addPHINodes(const SmallVectorImpl< Instruction * > &DefsUsedOutside)
Adds the necessary PHI nodes for the versioned loops based on the loop-defined values used outside of...
bool needsRuntimeChecks() const
Returns true if we need memchecks to disambiguate may-aliasing accesses.
Loop * getNonVersionedLoop()
Returns the fall-back loop.