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:757

Templates

SC

Member Variables

protected llvm::ScalarEvolution& SE
protected DenseMap<const llvm::SCEV*, const llvm::SCEV*> RewriteResults

Method Overview

Methods

SCEVRewriteVisitor<SC>(llvm::ScalarEvolution& SE)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:768

Parameters

llvm::ScalarEvolution& SE

const llvm::SCEV* visit(const llvm::SCEV* S)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:770

Parameters

const llvm::SCEV* S

const llvm::SCEV* visitAddExpr(
    const llvm::SCEVAddExpr* Expr)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:810

Parameters

const llvm::SCEVAddExpr* Expr

const llvm::SCEV* visitAddRecExpr(
    const llvm::SCEVAddRecExpr* Expr)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:837

Parameters

const llvm::SCEVAddRecExpr* Expr

const llvm::SCEV* visitConstant(
    const llvm::SCEVConstant* Constant)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:780

Parameters

const llvm::SCEVConstant* Constant

const llvm::SCEV* visitCouldNotCompute(
    const llvm::SCEVCouldNotCompute* Expr)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:901

Parameters

const llvm::SCEVCouldNotCompute* Expr

const llvm::SCEV* visitMulExpr(
    const llvm::SCEVMulExpr* Expr)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:820

Parameters

const llvm::SCEVMulExpr* Expr

const llvm::SCEV* visitPtrToIntExpr(
    const llvm::SCEVPtrToIntExpr* Expr)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:782

Parameters

const llvm::SCEVPtrToIntExpr* Expr

const llvm::SCEV* visitSMaxExpr(
    const llvm::SCEVSMaxExpr* Expr)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:849

Parameters

const llvm::SCEVSMaxExpr* Expr

const llvm::SCEV* visitSMinExpr(
    const llvm::SCEVSMinExpr* Expr)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:869

Parameters

const llvm::SCEVSMinExpr* Expr

const llvm::SCEV* visitSequentialUMinExpr(
    const llvm::SCEVSequentialUMinExpr* Expr)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:889

Parameters

const llvm::SCEVSequentialUMinExpr* Expr

const llvm::SCEV* visitSignExtendExpr(
    const llvm::SCEVSignExtendExpr* Expr)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:803

Parameters

const llvm::SCEVSignExtendExpr* Expr

const llvm::SCEV* visitTruncateExpr(
    const llvm::SCEVTruncateExpr* Expr)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:789

Parameters

const llvm::SCEVTruncateExpr* Expr

const llvm::SCEV* visitUDivExpr(
    const llvm::SCEVUDivExpr* Expr)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:830

Parameters

const llvm::SCEVUDivExpr* Expr

const llvm::SCEV* visitUMaxExpr(
    const llvm::SCEVUMaxExpr* Expr)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:859

Parameters

const llvm::SCEVUMaxExpr* Expr

const llvm::SCEV* visitUMinExpr(
    const llvm::SCEVUMinExpr* Expr)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:879

Parameters

const llvm::SCEVUMinExpr* Expr

const llvm::SCEV* visitUnknown(
    const llvm::SCEVUnknown* Expr)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:899

Parameters

const llvm::SCEVUnknown* Expr

const llvm::SCEV* visitZeroExtendExpr(
    const llvm::SCEVZeroExtendExpr* Expr)

Declared at: llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h:796

Parameters

const llvm::SCEVZeroExtendExpr* Expr