class SCEVRewriteVisitor
Declaration
template <typename SC>
class SCEVRewriteVisitor { /* full declaration omitted */ };
Description
This visitor recursively visits a SCEV expression and re-writes it. The result from each visit is cached, so it will return the same SCEV for the same input.
Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:649
Templates
- SC
Member Variables
- protected llvm::ScalarEvolution& SE
- protected DenseMap<const llvm::SCEV*, const llvm::SCEV*> RewriteResults
Method Overview
- public SCEVRewriteVisitor<SC>(llvm::ScalarEvolution & SE)
- public const llvm::SCEV * visit(const llvm::SCEV * S)
- public const llvm::SCEV * visitAddExpr(const llvm::SCEVAddExpr * Expr)
- public const llvm::SCEV * visitAddRecExpr(const llvm::SCEVAddRecExpr * Expr)
- public const llvm::SCEV * visitConstant(const llvm::SCEVConstant * Constant)
- public const llvm::SCEV * visitCouldNotCompute(const llvm::SCEVCouldNotCompute * Expr)
- public const llvm::SCEV * visitMulExpr(const llvm::SCEVMulExpr * Expr)
- public const llvm::SCEV * visitSMaxExpr(const llvm::SCEVSMaxExpr * Expr)
- public const llvm::SCEV * visitSMinExpr(const llvm::SCEVSMinExpr * Expr)
- public const llvm::SCEV * visitSignExtendExpr(const llvm::SCEVSignExtendExpr * Expr)
- public const llvm::SCEV * visitTruncateExpr(const llvm::SCEVTruncateExpr * Expr)
- public const llvm::SCEV * visitUDivExpr(const llvm::SCEVUDivExpr * Expr)
- public const llvm::SCEV * visitUMaxExpr(const llvm::SCEVUMaxExpr * Expr)
- public const llvm::SCEV * visitUMinExpr(const llvm::SCEVUMinExpr * Expr)
- public const llvm::SCEV * visitUnknown(const llvm::SCEVUnknown * Expr)
- public const llvm::SCEV * visitZeroExtendExpr(const llvm::SCEVZeroExtendExpr * Expr)
Methods
¶SCEVRewriteVisitor<SC>(llvm::ScalarEvolution& SE)
SCEVRewriteVisitor<SC>(llvm::ScalarEvolution& SE)
Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:660
Parameters
¶const llvm::SCEV* visit(const llvm::SCEV* S)
const llvm::SCEV* visit(const llvm::SCEV* S)
Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:662
Parameters
- const llvm::SCEV* S
¶const llvm::SCEV* visitAddExpr(
const llvm::SCEVAddExpr* Expr)
const llvm::SCEV* visitAddExpr(
const llvm::SCEVAddExpr* Expr)
Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:697
Parameters
- const llvm::SCEVAddExpr* Expr
¶const llvm::SCEV* visitAddRecExpr(
const llvm::SCEVAddRecExpr* Expr)
const llvm::SCEV* visitAddRecExpr(
const llvm::SCEVAddRecExpr* Expr)
Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:724
Parameters
- const llvm::SCEVAddRecExpr* Expr
¶const llvm::SCEV* visitConstant(
const llvm::SCEVConstant* Constant)
const llvm::SCEV* visitConstant(
const llvm::SCEVConstant* Constant)
Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:672
Parameters
- const llvm::SCEVConstant* Constant
¶const llvm::SCEV* visitCouldNotCompute(
const llvm::SCEVCouldNotCompute* Expr)
const llvm::SCEV* visitCouldNotCompute(
const llvm::SCEVCouldNotCompute* Expr)
Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:780
Parameters
- const llvm::SCEVCouldNotCompute* Expr
¶const llvm::SCEV* visitMulExpr(
const llvm::SCEVMulExpr* Expr)
const llvm::SCEV* visitMulExpr(
const llvm::SCEVMulExpr* Expr)
Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:707
Parameters
- const llvm::SCEVMulExpr* Expr
¶const llvm::SCEV* visitSMaxExpr(
const llvm::SCEVSMaxExpr* Expr)
const llvm::SCEV* visitSMaxExpr(
const llvm::SCEVSMaxExpr* Expr)
Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:736
Parameters
- const llvm::SCEVSMaxExpr* Expr
¶const llvm::SCEV* visitSMinExpr(
const llvm::SCEVSMinExpr* Expr)
const llvm::SCEV* visitSMinExpr(
const llvm::SCEVSMinExpr* Expr)
Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:756
Parameters
- const llvm::SCEVSMinExpr* Expr
¶const llvm::SCEV* visitSignExtendExpr(
const llvm::SCEVSignExtendExpr* Expr)
const llvm::SCEV* visitSignExtendExpr(
const llvm::SCEVSignExtendExpr* Expr)
Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:690
Parameters
- const llvm::SCEVSignExtendExpr* Expr
¶const llvm::SCEV* visitTruncateExpr(
const llvm::SCEVTruncateExpr* Expr)
const llvm::SCEV* visitTruncateExpr(
const llvm::SCEVTruncateExpr* Expr)
Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:676
Parameters
- const llvm::SCEVTruncateExpr* Expr
¶const llvm::SCEV* visitUDivExpr(
const llvm::SCEVUDivExpr* Expr)
const llvm::SCEV* visitUDivExpr(
const llvm::SCEVUDivExpr* Expr)
Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:717
Parameters
- const llvm::SCEVUDivExpr* Expr
¶const llvm::SCEV* visitUMaxExpr(
const llvm::SCEVUMaxExpr* Expr)
const llvm::SCEV* visitUMaxExpr(
const llvm::SCEVUMaxExpr* Expr)
Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:746
Parameters
- const llvm::SCEVUMaxExpr* Expr
¶const llvm::SCEV* visitUMinExpr(
const llvm::SCEVUMinExpr* Expr)
const llvm::SCEV* visitUMinExpr(
const llvm::SCEVUMinExpr* Expr)
Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:766
Parameters
- const llvm::SCEVUMinExpr* Expr
¶const llvm::SCEV* visitUnknown(
const llvm::SCEVUnknown* Expr)
const llvm::SCEV* visitUnknown(
const llvm::SCEVUnknown* Expr)
Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:776
Parameters
- const llvm::SCEVUnknown* Expr
¶const llvm::SCEV* visitZeroExtendExpr(
const llvm::SCEVZeroExtendExpr* Expr)
const llvm::SCEV* visitZeroExtendExpr(
const llvm::SCEVZeroExtendExpr* Expr)
Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:683
Parameters
- const llvm::SCEVZeroExtendExpr* Expr