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)

Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:193

Parameters

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()

Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:191

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)

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)

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)

Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:187

Parameters

llvm::GVNPass::Expression& exp

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)

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)

Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:177

Parameters

llvm::Instruction* I

llvm::GVNPass::Expression createExtractvalueExpr(
    llvm::ExtractValueInst* EI)

Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:180

Parameters

llvm::ExtractValueInst* EI

llvm::GVNPass::Expression createGEPExpr(
    llvm::GetElementPtrInst* GEP)

Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:181

Parameters

llvm::GetElementPtrInst* GEP

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)

Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:203

Parameters

uint32_t Num
const llvm::BasicBlock& CurrBlock

bool exists(llvm::Value* V) const

Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:204

Parameters

llvm::Value* V

llvm::AAResults* getAliasAnalysis() const

Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:209

uint32_t getNextUnusedValueNumber()

Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:212

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)

Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:197

Parameters

llvm::Value* V

uint32_t lookupOrAddCall(llvm::CallInst* C)

Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:182

Parameters

llvm::CallInst* C

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)

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)

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)

Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:208

Parameters

llvm::AAResults* A

void setDomTree(llvm::DominatorTree* D)

Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:211

Parameters

llvm::DominatorTree* D

void setMemDep(llvm::MemoryDependenceResults* M)

Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:210

Parameters

llvm::MemoryDependenceResults* M

void verifyRemoved(const llvm::Value*) const

Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:213

Parameters

const llvm::Value*

~ValueTable()

Declared at: llvm/include/llvm/Transforms/Scalar/GVN.h:194