class GVNPass::ValueTable
Declaration
class GVNPass::ValueTable { /* full declaration omitted */ };
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.
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:150
Member Variables
- private DenseMap<llvm::Value*, uint32_t> valueNumbering
- private DenseMap<llvm::GVNPass::Expression, uint32_t> expressionNumbering
- private uint32_t nextExprNumber = 0
- private std::vector<Expression> Expressions
- private std::vector<uint32_t> ExprIdx
- private DenseMap<uint32_t, llvm::PHINode*> NumberingPhi
- private llvm::GVNPass::ValueTable::PhiTranslateMap PhiTranslateTable
- private llvm::AAResults* AA = nullptr
- private llvm::MemoryDependenceResults* MD = nullptr
- private llvm::DominatorTree* DT = nullptr
- private uint32_t nextValueNumber = 1
Method Overview
- public ValueTable(llvm::GVNPass::ValueTable && Arg)
- public ValueTable(const llvm::GVNPass::ValueTable & Arg)
- public ValueTable()
- public void add(llvm::Value * V, uint32_t num)
- private bool areAllValsInBB(uint32_t num, const llvm::BasicBlock * BB, llvm::GVNPass & Gvn)
- private bool areCallValsEqual(uint32_t Num, uint32_t NewNum, const llvm::BasicBlock * Pred, const llvm::BasicBlock * PhiBlock, llvm::GVNPass & Gvn)
- private std::pair<uint32_t, bool> assignExpNewValueNum(llvm::GVNPass::Expression & exp)
- public void clear()
- private llvm::GVNPass::Expression createCmpExpr(unsigned int Opcode, CmpInst::Predicate Predicate, llvm::Value * LHS, llvm::Value * RHS)
- private llvm::GVNPass::Expression createExpr(llvm::Instruction * I)
- private llvm::GVNPass::Expression createExtractvalueExpr(llvm::ExtractValueInst * EI)
- private llvm::GVNPass::Expression createGEPExpr(llvm::GetElementPtrInst * GEP)
- public void erase(llvm::Value * v)
- public void eraseTranslateCacheEntry(uint32_t Num, const llvm::BasicBlock & CurrBlock)
- public bool exists(llvm::Value * V) const
- public llvm::AAResults * getAliasAnalysis() const
- public uint32_t getNextUnusedValueNumber()
- public uint32_t lookup(llvm::Value * V, bool Verify = true) const
- public uint32_t lookupOrAdd(llvm::Value * V)
- private uint32_t lookupOrAddCall(llvm::CallInst * C)
- public uint32_t lookupOrAddCmp(unsigned int Opcode, CmpInst::Predicate Pred, llvm::Value * LHS, llvm::Value * RHS)
- public uint32_t phiTranslate(const llvm::BasicBlock * BB, const llvm::BasicBlock * PhiBlock, uint32_t Num, llvm::GVNPass & Gvn)
- private uint32_t phiTranslateImpl(const llvm::BasicBlock * BB, const llvm::BasicBlock * PhiBlock, uint32_t Num, llvm::GVNPass & Gvn)
- public void setAliasAnalysis(llvm::AAResults * A)
- public void setDomTree(llvm::DominatorTree * D)
- public void setMemDep(llvm::MemoryDependenceResults * M)
- public void verifyRemoved(const llvm::Value *) const
- public ~ValueTable()
Methods
¶ValueTable(llvm::GVNPass::ValueTable&& Arg)
ValueTable(llvm::GVNPass::ValueTable&& Arg)
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:193
Parameters
¶ValueTable(const llvm::GVNPass::ValueTable& Arg)
ValueTable(const llvm::GVNPass::ValueTable& Arg)
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:192
Parameters
- const llvm::GVNPass::ValueTable& Arg
¶ValueTable()
ValueTable()
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:191
¶void add(llvm::Value* V, uint32_t num)
void add(llvm::Value* V, uint32_t num)
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:205
Parameters
- llvm::Value* V
- uint32_t num
¶bool areAllValsInBB(uint32_t num,
const llvm::BasicBlock* BB,
llvm::GVNPass& Gvn)
bool areAllValsInBB(uint32_t num,
const llvm::BasicBlock* BB,
llvm::GVNPass& Gvn)
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:188
Parameters
- uint32_t num
- const llvm::BasicBlock* BB
- llvm::GVNPass& Gvn
¶bool areCallValsEqual(
uint32_t Num,
uint32_t NewNum,
const llvm::BasicBlock* Pred,
const llvm::BasicBlock* PhiBlock,
llvm::GVNPass& Gvn)
bool areCallValsEqual(
uint32_t Num,
uint32_t NewNum,
const llvm::BasicBlock* Pred,
const llvm::BasicBlock* PhiBlock,
llvm::GVNPass& Gvn)
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:185
Parameters
- uint32_t Num
- uint32_t NewNum
- const llvm::BasicBlock* Pred
- const llvm::BasicBlock* PhiBlock
- llvm::GVNPass& Gvn
¶std::pair<uint32_t, bool> assignExpNewValueNum(
llvm::GVNPass::Expression& exp)
std::pair<uint32_t, bool> assignExpNewValueNum(
llvm::GVNPass::Expression& exp)
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:187
Parameters
¶void clear()
void clear()
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:206
¶llvm::GVNPass::Expression createCmpExpr(
unsigned int Opcode,
CmpInst::Predicate Predicate,
llvm::Value* LHS,
llvm::Value* RHS)
llvm::GVNPass::Expression createCmpExpr(
unsigned int Opcode,
CmpInst::Predicate Predicate,
llvm::Value* LHS,
llvm::Value* RHS)
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:178
Parameters
- unsigned int Opcode
- CmpInst::Predicate Predicate
- llvm::Value* LHS
- llvm::Value* RHS
¶llvm::GVNPass::Expression createExpr(
llvm::Instruction* I)
llvm::GVNPass::Expression createExpr(
llvm::Instruction* I)
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:177
Parameters
¶llvm::GVNPass::Expression createExtractvalueExpr(
llvm::ExtractValueInst* EI)
llvm::GVNPass::Expression createExtractvalueExpr(
llvm::ExtractValueInst* EI)
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:180
Parameters
¶llvm::GVNPass::Expression createGEPExpr(
llvm::GetElementPtrInst* GEP)
llvm::GVNPass::Expression createGEPExpr(
llvm::GetElementPtrInst* GEP)
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:181
Parameters
¶void erase(llvm::Value* v)
void erase(llvm::Value* v)
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:207
Parameters
- llvm::Value* v
¶void eraseTranslateCacheEntry(
uint32_t Num,
const llvm::BasicBlock& CurrBlock)
void eraseTranslateCacheEntry(
uint32_t Num,
const llvm::BasicBlock& CurrBlock)
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:203
Parameters
- uint32_t Num
- const llvm::BasicBlock& CurrBlock
¶bool exists(llvm::Value* V) const
bool exists(llvm::Value* V) const
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:204
Parameters
- llvm::Value* V
¶llvm::AAResults* getAliasAnalysis() const
llvm::AAResults* getAliasAnalysis() const
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:209
¶uint32_t getNextUnusedValueNumber()
uint32_t getNextUnusedValueNumber()
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:212
¶uint32_t lookup(llvm::Value* V,
bool Verify = true) const
uint32_t lookup(llvm::Value* V,
bool Verify = true) const
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:198
Parameters
- llvm::Value* V
- bool Verify = true
¶uint32_t lookupOrAdd(llvm::Value* V)
uint32_t lookupOrAdd(llvm::Value* V)
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:197
Parameters
- llvm::Value* V
¶uint32_t lookupOrAddCall(llvm::CallInst* C)
uint32_t lookupOrAddCall(llvm::CallInst* C)
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:182
Parameters
¶uint32_t lookupOrAddCmp(unsigned int Opcode,
CmpInst::Predicate Pred,
llvm::Value* LHS,
llvm::Value* RHS)
uint32_t lookupOrAddCmp(unsigned int Opcode,
CmpInst::Predicate Pred,
llvm::Value* LHS,
llvm::Value* RHS)
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:199
Parameters
- unsigned int Opcode
- CmpInst::Predicate Pred
- llvm::Value* LHS
- llvm::Value* RHS
¶uint32_t phiTranslate(
const llvm::BasicBlock* BB,
const llvm::BasicBlock* PhiBlock,
uint32_t Num,
llvm::GVNPass& Gvn)
uint32_t phiTranslate(
const llvm::BasicBlock* BB,
const llvm::BasicBlock* PhiBlock,
uint32_t Num,
llvm::GVNPass& Gvn)
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:201
Parameters
- const llvm::BasicBlock* BB
- const llvm::BasicBlock* PhiBlock
- uint32_t Num
- llvm::GVNPass& Gvn
¶uint32_t phiTranslateImpl(
const llvm::BasicBlock* BB,
const llvm::BasicBlock* PhiBlock,
uint32_t Num,
llvm::GVNPass& Gvn)
uint32_t phiTranslateImpl(
const llvm::BasicBlock* BB,
const llvm::BasicBlock* PhiBlock,
uint32_t Num,
llvm::GVNPass& Gvn)
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:183
Parameters
- const llvm::BasicBlock* BB
- const llvm::BasicBlock* PhiBlock
- uint32_t Num
- llvm::GVNPass& Gvn
¶void setAliasAnalysis(llvm::AAResults* A)
void setAliasAnalysis(llvm::AAResults* A)
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:208
Parameters
¶void setDomTree(llvm::DominatorTree* D)
void setDomTree(llvm::DominatorTree* D)
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:211
Parameters
¶void setMemDep(llvm::MemoryDependenceResults* M)
void setMemDep(llvm::MemoryDependenceResults* M)
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:210
Parameters
¶void verifyRemoved(const llvm::Value*) const
void verifyRemoved(const llvm::Value*) const
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:213
Parameters
- const llvm::Value*
¶~ValueTable()
~ValueTable()
Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:194