LLVM  16.0.0git
Public Types | Public Member Functions | Friends | List of all members
llvm::IVUsers Class Reference

#include "llvm/Analysis/IVUsers.h"

Public Types

typedef ilist< IVStrideUse >::iterator iterator
typedef ilist< IVStrideUse >::const_iterator const_iterator

Public Member Functions

 IVUsers (Loop *L, AssumptionCache *AC, LoopInfo *LI, DominatorTree *DT, ScalarEvolution *SE)
 IVUsers (IVUsers &&X)
 IVUsers (const IVUsers &)=delete
IVUsersoperator= (IVUsers &&)=delete
IVUsersoperator= (const IVUsers &)=delete
LoopgetLoop () const
bool AddUsersIfInteresting (Instruction *I)
 AddUsersIfInteresting - Inspect the specified Instruction. More...
IVStrideUseAddUser (Instruction *User, Value *Operand)
const SCEVgetReplacementExpr (const IVStrideUse &IU) const
 getReplacementExpr - Return a SCEV expression which computes the value of the OperandValToReplace of the given IVStrideUse. More...
const SCEVgetExpr (const IVStrideUse &IU) const
 getExpr - Return the expression for the use. More...
const SCEVgetStride (const IVStrideUse &IU, const Loop *L) const
iterator begin ()
iterator end ()
const_iterator begin () const
const_iterator end () const
bool empty () const
bool isIVUserOrOperand (Instruction *Inst) const
void releaseMemory ()
void print (raw_ostream &OS, const Module *=nullptr) const
void dump () const
 dump - This method is used for debugging. More...


class IVStrideUse

Detailed Description

Definition at line 90 of file IVUsers.h.

Member Typedef Documentation

◆ const_iterator

Definition at line 140 of file IVUsers.h.

◆ iterator

Definition at line 139 of file IVUsers.h.

Constructor & Destructor Documentation

◆ IVUsers() [1/3]

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

◆ IVUsers() [2/3]

llvm::IVUsers::IVUsers ( IVUsers &&  X)

Definition at line 110 of file IVUsers.h.

◆ IVUsers() [3/3]

llvm::IVUsers::IVUsers ( const IVUsers )

Member Function Documentation

◆ AddUser()

IVStrideUse & IVUsers::AddUser ( Instruction User,
Value Operand 

Definition at line 246 of file IVUsers.cpp.

References IVStrideUse.

Referenced by AddUsersIfInteresting().

◆ AddUsersIfInteresting()

bool IVUsers::AddUsersIfInteresting ( Instruction I)

AddUsersIfInteresting - Inspect the specified Instruction.

Inspect the specified instruction.

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

Definition at line 136 of file IVUsers.cpp.

References AddUser(), llvm::dbgs(), llvm::denormalizeForPostIncUse(), DL, llvm::LoopInfoBase< BlockT, LoopT >::getLoopFor(), llvm::ScalarEvolution::getSCEV(), llvm::ScalarEvolution::getTypeSizeInBits(), I, llvm::SmallPtrSetImpl< PtrType >::insert(), isInteresting(), llvm::isSafeToSpeculativelyExecute(), llvm::ScalarEvolution::isSCEVable(), IVUseShouldUsePostIncValue(), LLVM_DEBUG, and llvm::normalizeForPostIncUseIf().

Referenced by IVUsers().

◆ begin() [1/2]

iterator llvm::IVUsers::begin ( )

Definition at line 141 of file IVUsers.h.

◆ begin() [2/2]

const_iterator llvm::IVUsers::begin ( ) const

Definition at line 143 of file IVUsers.h.

◆ dump()

LLVM_DUMP_METHOD void IVUsers::dump ( ) const

dump - This method is used for debugging.

Definition at line 292 of file IVUsers.cpp.

References llvm::dbgs(), and print().

◆ empty()

bool llvm::IVUsers::empty ( ) const

Definition at line 145 of file IVUsers.h.

◆ end() [1/2]

iterator llvm::IVUsers::end ( )

Definition at line 142 of file IVUsers.h.

◆ end() [2/2]

const_iterator llvm::IVUsers::end ( ) const

Definition at line 144 of file IVUsers.h.

◆ getExpr()

const SCEV * IVUsers::getExpr ( const IVStrideUse IU) const

getExpr - Return the expression for the use.

Definition at line 336 of file IVUsers.cpp.

References llvm::IVStrideUse::getPostIncLoops(), getReplacementExpr(), and llvm::normalizeForPostIncUse().

Referenced by getStride().

◆ getLoop()

Loop* llvm::IVUsers::getLoop ( ) const

Definition at line 121 of file IVUsers.h.

◆ getReplacementExpr()

const SCEV * IVUsers::getReplacementExpr ( const IVStrideUse IU) const

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

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

Definition at line 331 of file IVUsers.cpp.

References llvm::IVStrideUse::getOperandValToReplace(), and llvm::ScalarEvolution::getSCEV().

Referenced by getExpr(), and print().

◆ getStride()

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

Definition at line 358 of file IVUsers.cpp.

References findAddRecForLoop(), and getExpr().

◆ isIVUserOrOperand()

bool llvm::IVUsers::isIVUserOrOperand ( Instruction Inst) const

Definition at line 147 of file IVUsers.h.

References llvm::SmallPtrSetImpl< PtrType >::count().

◆ operator=() [1/2]

IVUsers& llvm::IVUsers::operator= ( const IVUsers )

◆ operator=() [2/2]

IVUsers& llvm::IVUsers::operator= ( IVUsers &&  )

◆ print()

void IVUsers::print ( raw_ostream OS,
const Module M = nullptr 
) const

◆ releaseMemory()

void IVUsers::releaseMemory ( )

Definition at line 295 of file IVUsers.cpp.

Friends And Related Function Documentation

◆ IVStrideUse

friend class IVStrideUse

Definition at line 91 of file IVUsers.h.

Referenced by AddUser().

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