class LazyValueInfo

Declaration

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

Description

This pass computes, caches, and vends lazy value constraint information.

Declared at: llvm/include/llvm/Analysis/LazyValueInfo.h:31

Method Overview

  • public LazyValueInfo()
  • public LazyValueInfo(llvm::AssumptionCache * AC_, const llvm::DataLayout * DL_, llvm::TargetLibraryInfo * TLI_, llvm::DominatorTree * DT_)
  • public LazyValueInfo(llvm::LazyValueInfo && Arg)
  • public void disableDT()
  • public void enableDT()
  • public void eraseBlock(llvm::BasicBlock * BB)
  • public llvm::Constant * getConstant(llvm::Value * V, llvm::BasicBlock * BB, llvm::Instruction * CxtI = nullptr)
  • public llvm::Constant * getConstantOnEdge(llvm::Value * V, llvm::BasicBlock * FromBB, llvm::BasicBlock * ToBB, llvm::Instruction * CxtI = nullptr)
  • public llvm::ConstantRange getConstantRange(llvm::Value * V, llvm::BasicBlock * BB, llvm::Instruction * CxtI = nullptr)
  • public llvm::ConstantRange getConstantRangeOnEdge(llvm::Value * V, llvm::BasicBlock * FromBB, llvm::BasicBlock * ToBB, llvm::Instruction * CxtI = nullptr)
  • public llvm::LazyValueInfo::Tristate getPredicateAt(unsigned int Pred, llvm::Value * V, llvm::Constant * C, llvm::Instruction * CxtI)
  • public llvm::LazyValueInfo::Tristate getPredicateOnEdge(unsigned int Pred, llvm::Value * V, llvm::Constant * C, llvm::BasicBlock * FromBB, llvm::BasicBlock * ToBB, llvm::Instruction * CxtI = nullptr)
  • public bool invalidate(llvm::Function & F, const llvm::PreservedAnalyses & PA, FunctionAnalysisManager::Invalidator & Inv)
  • public void printLVI(llvm::Function & F, llvm::DominatorTree & DTree, llvm::raw_ostream & OS)
  • public void releaseMemory()
  • public void threadEdge(llvm::BasicBlock * PredBB, llvm::BasicBlock * OldSucc, llvm::BasicBlock * NewSucc)
  • public ~LazyValueInfo()

Methods

LazyValueInfo()

Declared at: llvm/include/llvm/Analysis/LazyValueInfo.h:42

LazyValueInfo(llvm::AssumptionCache* AC_,
              const llvm::DataLayout* DL_,
              llvm::TargetLibraryInfo* TLI_,
              llvm::DominatorTree* DT_)

Declared at: llvm/include/llvm/Analysis/LazyValueInfo.h:43

Parameters

llvm::AssumptionCache* AC_
const llvm::DataLayout* DL_
llvm::TargetLibraryInfo* TLI_
llvm::DominatorTree* DT_

LazyValueInfo(llvm::LazyValueInfo&& Arg)

Declared at: llvm/include/llvm/Analysis/LazyValueInfo.h:46

Parameters

llvm::LazyValueInfo&& Arg

void disableDT()

Description

Disables use of the DominatorTree within LVI.

Declared at: llvm/include/llvm/Analysis/LazyValueInfo.h:116

void enableDT()

Description

Enables use of the DominatorTree within LVI. Does nothing if the class instance was initialized without a DT pointer.

Declared at: llvm/include/llvm/Analysis/LazyValueInfo.h:120

void eraseBlock(llvm::BasicBlock* BB)

Description

Inform the analysis cache that we have erased a block.

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

Parameters

llvm::BasicBlock* BB

llvm::Constant* getConstant(
    llvm::Value* V,
    llvm::BasicBlock* BB,
    llvm::Instruction* CxtI = nullptr)

Description

Determine whether the specified value is known to be a constant at the end of the specified block. Return null if not.

Declared at: llvm/include/llvm/Analysis/LazyValueInfo.h:83

Parameters

llvm::Value* V
llvm::BasicBlock* BB
llvm::Instruction* CxtI = nullptr

llvm::Constant* getConstantOnEdge(
    llvm::Value* V,
    llvm::BasicBlock* FromBB,
    llvm::BasicBlock* ToBB,
    llvm::Instruction* CxtI = nullptr)

Description

Determine whether the specified value is known to be a constant on the specified edge. Return null if not.

Declared at: llvm/include/llvm/Analysis/LazyValueInfo.h:92

Parameters

llvm::Value* V
llvm::BasicBlock* FromBB
llvm::BasicBlock* ToBB
llvm::Instruction* CxtI = nullptr

llvm::ConstantRange getConstantRange(
    llvm::Value* V,
    llvm::BasicBlock* BB,
    llvm::Instruction* CxtI = nullptr)

Description

Return the ConstantRange constraint that is known to hold for the specified value at the end of the specified block. This may only be called on integer-typed Values.

Declared at: llvm/include/llvm/Analysis/LazyValueInfo.h:88

Parameters

llvm::Value* V
llvm::BasicBlock* BB
llvm::Instruction* CxtI = nullptr

llvm::ConstantRange getConstantRangeOnEdge(
    llvm::Value* V,
    llvm::BasicBlock* FromBB,
    llvm::BasicBlock* ToBB,
    llvm::Instruction* CxtI = nullptr)

Description

Return the ConstantRage constraint that is known to hold for the specified value on the specified edge. This may be only be called on integer-typed Values.

Declared at: llvm/include/llvm/Analysis/LazyValueInfo.h:98

Parameters

llvm::Value* V
llvm::BasicBlock* FromBB
llvm::BasicBlock* ToBB
llvm::Instruction* CxtI = nullptr

llvm::LazyValueInfo::Tristate getPredicateAt(
    unsigned int Pred,
    llvm::Value* V,
    llvm::Constant* C,
    llvm::Instruction* CxtI)

Description

Determine whether the specified value comparison with a constant is known to be true or false at the specified instruction (from an assume intrinsic). Pred is a CmpInst predicate.

Declared at: llvm/include/llvm/Analysis/LazyValueInfo.h:78

Parameters

unsigned int Pred
llvm::Value* V
llvm::Constant* C
llvm::Instruction* CxtI

llvm::LazyValueInfo::Tristate getPredicateOnEdge(
    unsigned int Pred,
    llvm::Value* V,
    llvm::Constant* C,
    llvm::BasicBlock* FromBB,
    llvm::BasicBlock* ToBB,
    llvm::Instruction* CxtI = nullptr)

Description

Determine whether the specified value comparison with a constant is known to be true or false on the specified CFG edge. Pred is a CmpInst predicate.

Declared at: llvm/include/llvm/Analysis/LazyValueInfo.h:71

Parameters

unsigned int Pred
llvm::Value* V
llvm::Constant* C
llvm::BasicBlock* FromBB
llvm::BasicBlock* ToBB
llvm::Instruction* CxtI = nullptr

bool invalidate(
    llvm::Function& F,
    const llvm::PreservedAnalyses& PA,
    FunctionAnalysisManager::Invalidator& Inv)

Description

Handle invalidation events in the new pass manager.

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

Parameters

llvm::Function& F
const llvm::PreservedAnalyses& PA
FunctionAnalysisManager::Invalidator& Inv

void printLVI(llvm::Function& F,
              llvm::DominatorTree& DTree,
              llvm::raw_ostream& OS)

Description

Print the \LazyValueInfoAnalysis. We pass in the DTree that is required for identifying which basic blocks we can solve/print for, in the LVIPrinter. The DT is optional in LVI, so we need to pass it here as an argument.

Declared at: llvm/include/llvm/Analysis/LazyValueInfo.h:113

Parameters

llvm::Function& F
llvm::DominatorTree& DTree
llvm::raw_ostream& OS

void releaseMemory()

Declared at: llvm/include/llvm/Analysis/LazyValueInfo.h:123

void threadEdge(llvm::BasicBlock* PredBB,
                llvm::BasicBlock* OldSucc,
                llvm::BasicBlock* NewSucc)

Description

Inform the analysis cache that we have threaded an edge from PredBB to OldSucc to be from PredBB to NewSucc instead.

Declared at: llvm/include/llvm/Analysis/LazyValueInfo.h:104

Parameters

llvm::BasicBlock* PredBB
llvm::BasicBlock* OldSucc
llvm::BasicBlock* NewSucc

~LazyValueInfo()

Declared at: llvm/include/llvm/Analysis/LazyValueInfo.h:41