class IVUsers

Declaration

class IVUsers { /* full declaration omitted */ };

Declared at: llvm/include/llvm/Analysis/IVUsers.h:90

Member Variables

private llvm::Loop* L
private llvm::AssumptionCache* AC
private llvm::LoopInfo* LI
private llvm::DominatorTree* DT
private llvm::ScalarEvolution* SE
private SmallPtrSet<llvm::Instruction*, 16> Processed
private ilist<llvm::IVStrideUse> IVUses
IVUses - A list of all tracked IV uses of induction variable expressions we are interested in.
private SmallPtrSet<const llvm::Value*, 32> EphValues

Method Overview

  • public llvm::IVStrideUse & AddUser(llvm::Instruction * User, llvm::Value * Operand)
  • public bool AddUsersIfInteresting(llvm::Instruction * I)
  • public IVUsers(llvm::IVUsers && X)
  • public IVUsers(const llvm::IVUsers &)
  • public IVUsers(llvm::Loop * L, llvm::AssumptionCache * AC, llvm::LoopInfo * LI, llvm::DominatorTree * DT, llvm::ScalarEvolution * SE)
  • public llvm::IVUsers::iterator begin()
  • public llvm::IVUsers::const_iterator begin() const
  • public void dump() const
  • public bool empty() const
  • public llvm::IVUsers::iterator end()
  • public llvm::IVUsers::const_iterator end() const
  • public const llvm::SCEV * getExpr(const llvm::IVStrideUse & IU) const
  • public llvm::Loop * getLoop() const
  • public const llvm::SCEV * getReplacementExpr(const llvm::IVStrideUse & IU) const
  • public const llvm::SCEV * getStride(const llvm::IVStrideUse & IU, const llvm::Loop * L) const
  • public bool isIVUserOrOperand(llvm::Instruction * Inst) const
  • public void print(llvm::raw_ostream & OS, const llvm::Module * = nullptr) const
  • public void releaseMemory()

Methods

llvm::IVStrideUse& AddUser(
    llvm::Instruction* User,
    llvm::Value* Operand)

Declared at: llvm/include/llvm/Analysis/IVUsers.h:128

Parameters

llvm::Instruction* User
llvm::Value* Operand

bool AddUsersIfInteresting(llvm::Instruction* I)

Description

AddUsersIfInteresting - Inspect the specified Instruction. If it is a reducible SCEV, recursively add its users to the IVUsesByStride set and return true. Otherwise, return false.

Declared at: llvm/include/llvm/Analysis/IVUsers.h:126

Parameters

llvm::Instruction* I

IVUsers(llvm::IVUsers&& X)

Declared at: llvm/include/llvm/Analysis/IVUsers.h:110

Parameters

llvm::IVUsers&& X

IVUsers(const llvm::IVUsers&)

Declared at: llvm/include/llvm/Analysis/IVUsers.h:117

Parameters

const llvm::IVUsers&

IVUsers(llvm::Loop* L,
        llvm::AssumptionCache* AC,
        llvm::LoopInfo* LI,
        llvm::DominatorTree* DT,
        llvm::ScalarEvolution* SE)

Declared at: llvm/include/llvm/Analysis/IVUsers.h:107

Parameters

llvm::Loop* L
llvm::AssumptionCache* AC
llvm::LoopInfo* LI
llvm::DominatorTree* DT
llvm::ScalarEvolution* SE

llvm::IVUsers::iterator begin()

Declared at: llvm/include/llvm/Analysis/IVUsers.h:141

llvm::IVUsers::const_iterator begin() const

Declared at: llvm/include/llvm/Analysis/IVUsers.h:143

void dump() const

Description

dump - This method is used for debugging.

Declared at: llvm/include/llvm/Analysis/IVUsers.h:156

bool empty() const

Declared at: llvm/include/llvm/Analysis/IVUsers.h:145

llvm::IVUsers::iterator end()

Declared at: llvm/include/llvm/Analysis/IVUsers.h:142

llvm::IVUsers::const_iterator end() const

Declared at: llvm/include/llvm/Analysis/IVUsers.h:144

const llvm::SCEV* getExpr(
    const llvm::IVStrideUse& IU) const

Description

getExpr - Return the expression for the use.

Declared at: llvm/include/llvm/Analysis/IVUsers.h:135

Parameters

const llvm::IVStrideUse& IU

llvm::Loop* getLoop() const

Declared at: llvm/include/llvm/Analysis/IVUsers.h:121

const llvm::SCEV* getReplacementExpr(
    const llvm::IVStrideUse& IU) const

Description

getReplacementExpr - Return a SCEV expression which computes the value of the OperandValToReplace of the given IVStrideUse.

Declared at: llvm/include/llvm/Analysis/IVUsers.h:132

Parameters

const llvm::IVStrideUse& IU

const llvm::SCEV* getStride(
    const llvm::IVStrideUse& IU,
    const llvm::Loop* L) const

Declared at: llvm/include/llvm/Analysis/IVUsers.h:137

Parameters

const llvm::IVStrideUse& IU
const llvm::Loop* L

bool isIVUserOrOperand(
    llvm::Instruction* Inst) const

Declared at: llvm/include/llvm/Analysis/IVUsers.h:147

Parameters

llvm::Instruction* Inst

void print(llvm::raw_ostream& OS,
           const llvm::Module* = nullptr) const

Declared at: llvm/include/llvm/Analysis/IVUsers.h:153

Parameters

llvm::raw_ostream& OS
const llvm::Module* = nullptr

void releaseMemory()

Declared at: llvm/include/llvm/Analysis/IVUsers.h:151