LLVM 24.0.0git
llvm::GVNValueTable Class Reference

This class holds the mapping between values and value numbers. More...

#include "llvm/Transforms/Scalar/GVNValueTable.h"

Classes

struct  Expression

Public Member Functions

LLVM_ABI GVNValueTable ()
LLVM_ABI GVNValueTable (const GVNValueTable &Arg)
LLVM_ABI GVNValueTable (GVNValueTable &&Arg)
LLVM_ABI ~GVNValueTable ()
LLVM_ABI GVNValueTable & operator= (const GVNValueTable &Arg)
LLVM_ABI uint32_t lookupOrAdd (MemoryAccess *MA)
LLVM_ABI uint32_t lookupOrAdd (Value *V)
 lookupOrAdd - Returns the value number for the specified value, assigning it a new number if it did not have one before.
LLVM_ABI uint32_t lookup (Value *V, bool Verify=true) const
 Returns the value number of the specified value.
LLVM_ABI uint32_t lookupOrAddCmp (unsigned Opcode, CmpInst::Predicate Pred, Value *LHS, Value *RHS)
 Returns the value number of the given comparison, assigning it a new number if it did not have one before.
LLVM_ABI uint32_t lookupPtrToInt (Value *Ptr, Type *Ty)
 Returns the value number of ptrtoint Ptr to \Ty.
LLVM_ABI uint32_t phiTranslate (const BasicBlock *BB, const BasicBlock *PhiBlock, uint32_t Num, GVNLeaderMap &LeaderTable)
 Wrap phiTranslateImpl to provide caching functionality.
LLVM_ABI void eraseTranslateCacheEntry (uint32_t Num, const BasicBlock &CurrBlock)
 Erase stale entry from phiTranslate cache so phiTranslate can be computed again.
LLVM_ABI bool exists (Value *V) const
 Returns true if a value number exists for the specified value.
LLVM_ABI void add (Value *V, uint32_t Num)
 add - Insert a value into the table with a specified value number.
LLVM_ABI void clear ()
 Remove all entries from the ValueTable.
LLVM_ABI void erase (Value *V)
 Remove a value from the value numbering.
void setAliasAnalysis (AAResults *A)
AAResults * getAliasAnalysis () const
void setMemDep (MemoryDependenceResults *M, bool MDEnabled=true)
void setMemorySSA (MemorySSA *M, bool MSSAEnabled=false)
void setDomTree (DominatorTree *D)
uint32_t getNextUnusedValueNumber ()
LLVM_ABI void verifyRemoved (const Value *) const
 verifyRemoved - Verify that the value is removed from all internal data structures.

Detailed Description

This class holds the mapping between values and value numbers.

It is used as an efficient mechanism to determine the expression-wise equivalence of two values.

Definition at line 40 of file GVNValueTable.h.

Constructor & Destructor Documentation

◆ GVNValueTable() [1/3]

GVNValueTable::GVNValueTable ( )
default

References LLVM_ABI.

Referenced by GVNValueTable(), GVNValueTable(), and operator=().

◆ GVNValueTable() [2/3]

GVNValueTable::GVNValueTable ( const GVNValueTable & Arg)
default

References GVNValueTable(), and LLVM_ABI.

◆ GVNValueTable() [3/3]

GVNValueTable::GVNValueTable ( GVNValueTable && Arg)
default

References GVNValueTable(), and LLVM_ABI.

◆ ~GVNValueTable()

GVNValueTable::~GVNValueTable ( )
default

References LLVM_ABI.

Member Function Documentation

◆ add()

void GVNValueTable::add ( Value * V,
uint32_t Num )

add - Insert a value into the table with a specified value number.

Definition at line 464 of file GVN.cpp.

References llvm::dyn_cast().

◆ clear()

void GVNValueTable::clear ( )

Remove all entries from the ValueTable.

Definition at line 772 of file GVN.cpp.

◆ erase()

void GVNValueTable::erase ( Value * V)

Remove a value from the value numbering.

Definition at line 785 of file GVN.cpp.

References llvm::isa().

◆ eraseTranslateCacheEntry()

void GVNValueTable::eraseTranslateCacheEntry ( uint32_t Num,
const BasicBlock & CurrBlock )

Erase stale entry from phiTranslate cache so phiTranslate can be computed again.

Definition at line 3061 of file GVN.cpp.

References llvm::predecessors().

◆ exists()

bool GVNValueTable::exists ( Value * V) const

Returns true if a value number exists for the specified value.

Definition at line 643 of file GVN.cpp.

◆ getAliasAnalysis()

AAResults * llvm::GVNValueTable::getAliasAnalysis ( ) const
inline

Definition at line 117 of file GVNValueTable.h.

◆ getNextUnusedValueNumber()

uint32_t llvm::GVNValueTable::getNextUnusedValueNumber ( )
inline

Definition at line 127 of file GVNValueTable.h.

◆ lookup()

uint32_t GVNValueTable::lookup ( Value * V,
bool Verify = true ) const

Returns the value number of the specified value.

Fails if the value has not yet been numbered.

Definition at line 743 of file GVN.cpp.

References assert(), and Verify.

◆ lookupOrAdd() [1/2]

◆ lookupOrAdd() [2/2]

uint32_t GVNValueTable::lookupOrAdd ( Value * V)

lookupOrAdd - Returns the value number for the specified value, assigning it a new number if it did not have one before.

Definition at line 655 of file GVN.cpp.

References llvm::cast(), llvm::dyn_cast(), I, and llvm::isa().

◆ lookupOrAddCmp()

uint32_t GVNValueTable::lookupOrAddCmp ( unsigned Opcode,
CmpInst::Predicate Predicate,
Value * LHS,
Value * RHS )

Returns the value number of the given comparison, assigning it a new number if it did not have one before.

Useful when we deduced the result of a comparison, but don't immediately have an instruction realizing that comparison to hand.

Definition at line 756 of file GVN.cpp.

◆ lookupPtrToInt()

uint32_t GVNValueTable::lookupPtrToInt ( Value * Ptr,
Type * Ty )

Returns the value number of ptrtoint Ptr to \Ty.

Definition at line 764 of file GVN.cpp.

References lookupOrAdd().

◆ operator=()

GVNValueTable & GVNValueTable::operator= ( const GVNValueTable & Arg)
default

References GVNValueTable(), LHS, LLVM_ABI, RHS, and Verify.

◆ phiTranslate()

uint32_t GVNValueTable::phiTranslate ( const BasicBlock * BB,
const BasicBlock * PhiBlock,
uint32_t Num,
GVNLeaderMap & LeaderTable )

Wrap phiTranslateImpl to provide caching functionality.

Definition at line 2929 of file GVN.cpp.

◆ setAliasAnalysis()

void llvm::GVNValueTable::setAliasAnalysis ( AAResults * A)
inline

Definition at line 116 of file GVNValueTable.h.

References A().

◆ setDomTree()

void llvm::GVNValueTable::setDomTree ( DominatorTree * D)
inline

Definition at line 126 of file GVNValueTable.h.

References D().

◆ setMemDep()

void llvm::GVNValueTable::setMemDep ( MemoryDependenceResults * M,
bool MDEnabled = true )
inline

Definition at line 118 of file GVNValueTable.h.

◆ setMemorySSA()

void llvm::GVNValueTable::setMemorySSA ( MemorySSA * M,
bool MSSAEnabled = false )
inline

Definition at line 122 of file GVNValueTable.h.

◆ verifyRemoved()

void GVNValueTable::verifyRemoved ( const Value * V) const

verifyRemoved - Verify that the value is removed from all internal data structures.

Definition at line 797 of file GVN.cpp.

References assert().


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