|
LLVM 22.0.0git
|
The SCEVCastSinkingRewriter takes a scalar evolution expression, which computes a pointer-typed value, and rewrites the whole expression tree so that all the computations are done on integers, and the only pointer-typed operands in the expression are SCEVUnknown. More...
Static Public Member Functions | |
| static const SCEV * | rewrite (const SCEV *Scev, ScalarEvolution &SE, Type *TargetTy, ConversionFn CreatePtrCast) |
Additional Inherited Members | |
| Protected Attributes inherited from llvm::SCEVRewriteVisitor< SCEVCastSinkingRewriter > | |
| ScalarEvolution & | SE |
| SmallDenseMap< const SCEV *, const SCEV * > | RewriteResults |
The SCEVCastSinkingRewriter takes a scalar evolution expression, which computes a pointer-typed value, and rewrites the whole expression tree so that all the computations are done on integers, and the only pointer-typed operands in the expression are SCEVUnknown.
The CreatePtrCast callback is invoked to create the actual conversion (ptrtoint or ptrtoaddr) at the SCEVUnknown leaves.
Definition at line 1016 of file ScalarEvolution.cpp.
|
inline |
Definition at line 1024 of file ScalarEvolution.cpp.
References llvm::move(), and llvm::SCEVRewriteVisitor< SCEVCastSinkingRewriter >::SE.
Referenced by rewrite().
|
inlinestatic |
Definition at line 1028 of file ScalarEvolution.cpp.
References Rewriter, SCEVCastSinkingRewriter(), and llvm::SCEVRewriteVisitor< SCEVCastSinkingRewriter >::SE.
Referenced by llvm::ScalarEvolution::getLosslessPtrToIntExpr().
Definition at line 1034 of file ScalarEvolution.cpp.
References llvm::SCEV::getType(), llvm::Type::isPointerTy(), and llvm::SCEVRewriteVisitor< SCEVCastSinkingRewriter >::visit().
|
inline |
Definition at line 1043 of file ScalarEvolution.cpp.
References llvm::SmallVectorTemplateCommon< T, typename >::back(), Changed, llvm::SCEVNAryExpr::getNoWrapFlags(), llvm::SCEVNAryExpr::operands(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SCEVRewriteVisitor< SCEVCastSinkingRewriter >::SE, and visit().
|
inline |
Definition at line 1055 of file ScalarEvolution.cpp.
References llvm::SmallVectorTemplateCommon< T, typename >::back(), Changed, llvm::SCEVNAryExpr::getNoWrapFlags(), llvm::SCEVNAryExpr::operands(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SCEVRewriteVisitor< SCEVCastSinkingRewriter >::SE, and visit().
|
inline |
Definition at line 1065 of file ScalarEvolution.cpp.
References assert(), llvm::SCEVUnknown::getType(), llvm::SCEVUnknown::getValue(), llvm::isa(), llvm::Type::isPointerTy(), and llvm::SCEVRewriteVisitor< SCEVCastSinkingRewriter >::SE.