LLVM 24.0.0git
llvm::SCEVRewriteVisitor< SC > Class Template Reference

This visitor recursively visits a SCEV expression and re-writes it. More...

#include "llvm/Analysis/ScalarEvolutionExpressions.h"

Inheritance diagram for llvm::SCEVRewriteVisitor< SC >:
[legend]

Public Member Functions

 SCEVRewriteVisitor (ScalarEvolution &SE)
const SCEV * visit (const SCEV *S)
const SCEV * visitConstant (const SCEVConstant *Constant)
const SCEV * visitVScale (const SCEVVScale *VScale)
const SCEV * visitPtrToAddrExpr (const SCEVPtrToAddrExpr *Expr)
const SCEV * visitTruncateExpr (const SCEVTruncateExpr *Expr)
const SCEV * visitZeroExtendExpr (const SCEVZeroExtendExpr *Expr)
const SCEV * visitSignExtendExpr (const SCEVSignExtendExpr *Expr)
const SCEV * visitAddExpr (const SCEVAddExpr *Expr)
const SCEV * visitMulExpr (const SCEVMulExpr *Expr)
const SCEV * visitUDivExpr (const SCEVUDivExpr *Expr)
const SCEV * visitAddRecExpr (const SCEVAddRecExpr *Expr)
const SCEV * visitSMaxExpr (const SCEVSMaxExpr *Expr)
const SCEV * visitUMaxExpr (const SCEVUMaxExpr *Expr)
const SCEV * visitSMinExpr (const SCEVSMinExpr *Expr)
const SCEV * visitUMinExpr (const SCEVUMinExpr *Expr)
const SCEV * visitSequentialUMinExpr (const SCEVSequentialUMinExpr *Expr)
const SCEV * visitUnknown (const SCEVUnknown *Expr)
const SCEV * visitCouldNotCompute (const SCEVCouldNotCompute *Expr)
Public Member Functions inherited from llvm::SCEVVisitor< SC, const SCEV * >
const SCEV * visit (const SCEV *S)
const SCEV * visitCouldNotCompute (const SCEVCouldNotCompute *S)

Protected Attributes

ScalarEvolution & SE
SmallDenseMap< const SCEV *, const SCEV *, 16 > RewriteResults

Detailed Description

template<typename SC>
class llvm::SCEVRewriteVisitor< SC >

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.

Definition at line 794 of file ScalarEvolutionExpressions.h.

Constructor & Destructor Documentation

◆ SCEVRewriteVisitor()

template<typename SC>
llvm::SCEVRewriteVisitor< SC >::SCEVRewriteVisitor ( ScalarEvolution & SE)
inline

Definition at line 805 of file ScalarEvolutionExpressions.h.

Member Function Documentation

◆ visit()

◆ visitAddExpr()

template<typename SC>
const SCEV * llvm::SCEVRewriteVisitor< SC >::visitAddExpr ( const SCEVAddExpr * Expr)
inline

Definition at line 847 of file ScalarEvolutionExpressions.h.

◆ visitAddRecExpr()

template<typename SC>
const SCEV * llvm::SCEVRewriteVisitor< SC >::visitAddRecExpr ( const SCEVAddRecExpr * Expr)
inline

Definition at line 874 of file ScalarEvolutionExpressions.h.

◆ visitConstant()

template<typename SC>
const SCEV * llvm::SCEVRewriteVisitor< SC >::visitConstant ( const SCEVConstant * Constant)
inline

Definition at line 817 of file ScalarEvolutionExpressions.h.

◆ visitCouldNotCompute()

template<typename SC>
const SCEV * llvm::SCEVRewriteVisitor< SC >::visitCouldNotCompute ( const SCEVCouldNotCompute * Expr)
inline

Definition at line 938 of file ScalarEvolutionExpressions.h.

◆ visitMulExpr()

template<typename SC>
const SCEV * llvm::SCEVRewriteVisitor< SC >::visitMulExpr ( const SCEVMulExpr * Expr)
inline

Definition at line 857 of file ScalarEvolutionExpressions.h.

◆ visitPtrToAddrExpr()

template<typename SC>
const SCEV * llvm::SCEVRewriteVisitor< SC >::visitPtrToAddrExpr ( const SCEVPtrToAddrExpr * Expr)
inline

◆ visitSequentialUMinExpr()

template<typename SC>
const SCEV * llvm::SCEVRewriteVisitor< SC >::visitSequentialUMinExpr ( const SCEVSequentialUMinExpr * Expr)
inline

Definition at line 926 of file ScalarEvolutionExpressions.h.

◆ visitSignExtendExpr()

template<typename SC>
const SCEV * llvm::SCEVRewriteVisitor< SC >::visitSignExtendExpr ( const SCEVSignExtendExpr * Expr)
inline

◆ visitSMaxExpr()

template<typename SC>
const SCEV * llvm::SCEVRewriteVisitor< SC >::visitSMaxExpr ( const SCEVSMaxExpr * Expr)
inline

Definition at line 886 of file ScalarEvolutionExpressions.h.

◆ visitSMinExpr()

template<typename SC>
const SCEV * llvm::SCEVRewriteVisitor< SC >::visitSMinExpr ( const SCEVSMinExpr * Expr)
inline

◆ visitTruncateExpr()

template<typename SC>
const SCEV * llvm::SCEVRewriteVisitor< SC >::visitTruncateExpr ( const SCEVTruncateExpr * Expr)
inline

Definition at line 826 of file ScalarEvolutionExpressions.h.

◆ visitUDivExpr()

template<typename SC>
const SCEV * llvm::SCEVRewriteVisitor< SC >::visitUDivExpr ( const SCEVUDivExpr * Expr)
inline

Definition at line 867 of file ScalarEvolutionExpressions.h.

◆ visitUMaxExpr()

template<typename SC>
const SCEV * llvm::SCEVRewriteVisitor< SC >::visitUMaxExpr ( const SCEVUMaxExpr * Expr)
inline

Definition at line 896 of file ScalarEvolutionExpressions.h.

◆ visitUMinExpr()

template<typename SC>
const SCEV * llvm::SCEVRewriteVisitor< SC >::visitUMinExpr ( const SCEVUMinExpr * Expr)
inline

◆ visitUnknown()

template<typename SC>
const SCEV * llvm::SCEVRewriteVisitor< SC >::visitUnknown ( const SCEVUnknown * Expr)
inline

Definition at line 936 of file ScalarEvolutionExpressions.h.

◆ visitVScale()

template<typename SC>
const SCEV * llvm::SCEVRewriteVisitor< SC >::visitVScale ( const SCEVVScale * VScale)
inline

Definition at line 819 of file ScalarEvolutionExpressions.h.

◆ visitZeroExtendExpr()

template<typename SC>
const SCEV * llvm::SCEVRewriteVisitor< SC >::visitZeroExtendExpr ( const SCEVZeroExtendExpr * Expr)
inline

Member Data Documentation

◆ RewriteResults

template<typename SC>
SmallDenseMap<const SCEV *, const SCEV *, 16> llvm::SCEVRewriteVisitor< SC >::RewriteResults
protected

Definition at line 802 of file ScalarEvolutionExpressions.h.

◆ SE

template<typename SC>
ScalarEvolution& llvm::SCEVRewriteVisitor< SC >::SE
protected

Definition at line 796 of file ScalarEvolutionExpressions.h.


The documentation for this class was generated from the following file: