16 #ifndef LLVM_TRANSFORMS_UTILS_SIMPLIFYINDVAR_H
17 #define LLVM_TRANSFORMS_UTILS_SIMPLIFYINDVAR_H
30 class ScalarEvolution;
52 assert(
DT &&
"Splitting overflow intrinsics requires a DomTree.");
61 SmallVectorImpl<WeakVH> &
Dead, IVVisitor *V =
nullptr);
66 SmallVectorImpl<WeakVH> &
Dead);
bool ShouldSplitOverflowIntrinsics
const DominatorTree * getDomTree() const
Interface for visiting interesting IV users that are recognized but not simplified by this utility...
This is the base class for all instructions that perform data casts.
bool shouldSplitOverflowInstrinsics() const
Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree...
bool simplifyUsersOfIV(PHINode *CurrIV, ScalarEvolution *SE, LPPassManager *LPM, SmallVectorImpl< WeakVH > &Dead, IVVisitor *V=nullptr)
simplifyUsersOfIV - Simplify instructions that use this induction variable by using ScalarEvolution t...
bool simplifyLoopIVs(Loop *L, ScalarEvolution *SE, LPPassManager *LPM, SmallVectorImpl< WeakVH > &Dead)
SimplifyLoopIVs - Simplify users of induction variables within this loop.
void setSplitOverflowIntrinsics()
virtual void visitCast(CastInst *Cast)=0