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)

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

Parameters

llvm::ScalarEvolution& SE

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)

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

Parameters

const llvm::SCEVAddExpr* 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)

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

Parameters

const llvm::SCEVConstant* Constant

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)

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

Parameters

const llvm::SCEVMulExpr* 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)

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

Parameters

const llvm::SCEVSMinExpr* 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)

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

Parameters

const llvm::SCEVTruncateExpr* 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)

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

Parameters

const llvm::SCEVUMaxExpr* 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)

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

Parameters

const llvm::SCEVUnknown* Expr

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

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

Parameters

const llvm::SCEVZeroExtendExpr* Expr