class ObjectSizeOffsetVisitor

Declaration

class ObjectSizeOffsetVisitor : public InstVisitor { /* full declaration omitted */ };

Description

Evaluate the size and offset of an object pointed to by a Value* statically. Fails if size or offset are not known at compile time.

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:184

Inherits from: InstVisitor

Member Variables

private const llvm::DataLayout& DL
private const llvm::TargetLibraryInfo* TLI
private llvm::ObjectSizeOpts Options
private unsigned int IntTyBits
private llvm::APInt Zero
private SmallPtrSet<llvm::Instruction*, 8> SeenInsts

Method Overview

  • private bool CheckedZextOrTrunc(llvm::APInt & I)
  • public ObjectSizeOffsetVisitor(const llvm::DataLayout & DL, const llvm::TargetLibraryInfo * TLI, llvm::LLVMContext & Context, llvm::ObjectSizeOpts Options = {})
  • private llvm::APInt align(llvm::APInt Size, llvm::MaybeAlign Align)
  • public static bool bothKnown(const llvm::SizeOffsetType & SizeOffset)
  • private llvm::SizeOffsetType combineSizeOffset(llvm::SizeOffsetType LHS, llvm::SizeOffsetType RHS)
  • public llvm::SizeOffsetType compute(llvm::Value * V)
  • private llvm::SizeOffsetType computeImpl(llvm::Value * V)
  • private llvm::SizeOffsetType findLoadSizeOffset(llvm::LoadInst & LoadFrom, llvm::BasicBlock & BB, BasicBlock::iterator From, SmallDenseMap<llvm::BasicBlock *, llvm::SizeOffsetType, 8> & VisitedBlocks, unsigned int & ScannedInstCount)
  • public static bool knownOffset(const llvm::SizeOffsetType & SizeOffset)
  • public static bool knownSize(const llvm::SizeOffsetType & SizeOffset)
  • private llvm::SizeOffsetType unknown()
  • public llvm::SizeOffsetType visitAllocaInst(llvm::AllocaInst & I)
  • public llvm::SizeOffsetType visitArgument(llvm::Argument & A)
  • public llvm::SizeOffsetType visitCallBase(llvm::CallBase & CB)
  • public llvm::SizeOffsetType visitConstantPointerNull(llvm::ConstantPointerNull &)
  • public llvm::SizeOffsetType visitExtractElementInst(llvm::ExtractElementInst & I)
  • public llvm::SizeOffsetType visitExtractValueInst(llvm::ExtractValueInst & I)
  • public llvm::SizeOffsetType visitGlobalAlias(llvm::GlobalAlias & GA)
  • public llvm::SizeOffsetType visitGlobalVariable(llvm::GlobalVariable & GV)
  • public llvm::SizeOffsetType visitInstruction(llvm::Instruction & I)
  • public llvm::SizeOffsetType visitIntToPtrInst(llvm::IntToPtrInst &)
  • public llvm::SizeOffsetType visitLoadInst(llvm::LoadInst & I)
  • public llvm::SizeOffsetType visitPHINode(llvm::PHINode &)
  • public llvm::SizeOffsetType visitSelectInst(llvm::SelectInst & I)
  • public llvm::SizeOffsetType visitUndefValue(llvm::UndefValue &)

Methods

bool CheckedZextOrTrunc(llvm::APInt& I)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:241

Parameters

llvm::APInt& I

ObjectSizeOffsetVisitor(
    const llvm::DataLayout& DL,
    const llvm::TargetLibraryInfo* TLI,
    llvm::LLVMContext& Context,
    llvm::ObjectSizeOpts Options = {})

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:200

Parameters

const llvm::DataLayout& DL
const llvm::TargetLibraryInfo* TLI
llvm::LLVMContext& Context
llvm::ObjectSizeOpts Options = {}

llvm::APInt align(llvm::APInt Size,
                  llvm::MaybeAlign Align)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:193

Parameters

llvm::APInt Size
llvm::MaybeAlign Align

static bool bothKnown(
    const llvm::SizeOffsetType& SizeOffset)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:213

Parameters

const llvm::SizeOffsetType& SizeOffset

llvm::SizeOffsetType combineSizeOffset(
    llvm::SizeOffsetType LHS,
    llvm::SizeOffsetType RHS)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:239

Parameters

llvm::SizeOffsetType LHS
llvm::SizeOffsetType RHS

llvm::SizeOffsetType compute(llvm::Value* V)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:203

Parameters

llvm::Value* V

llvm::SizeOffsetType computeImpl(llvm::Value* V)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:240

Parameters

llvm::Value* V

llvm::SizeOffsetType findLoadSizeOffset(
    llvm::LoadInst& LoadFrom,
    llvm::BasicBlock& BB,
    BasicBlock::iterator From,
    SmallDenseMap<llvm::BasicBlock*,
                  llvm::SizeOffsetType,
                  8>& VisitedBlocks,
    unsigned int& ScannedInstCount)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:235

Parameters

llvm::LoadInst& LoadFrom
llvm::BasicBlock& BB
BasicBlock::iterator From
SmallDenseMap<llvm::BasicBlock*, llvm::SizeOffsetType, 8>& VisitedBlocks
unsigned int& ScannedInstCount

static bool knownOffset(
    const llvm::SizeOffsetType& SizeOffset)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:209

Parameters

const llvm::SizeOffsetType& SizeOffset

static bool knownSize(
    const llvm::SizeOffsetType& SizeOffset)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:205

Parameters

const llvm::SizeOffsetType& SizeOffset

llvm::SizeOffsetType unknown()

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:195

llvm::SizeOffsetType visitAllocaInst(
    llvm::AllocaInst& I)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:219

Parameters

llvm::AllocaInst& I

llvm::SizeOffsetType visitArgument(
    llvm::Argument& A)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:220

Parameters

llvm::Argument& A

llvm::SizeOffsetType visitCallBase(
    llvm::CallBase& CB)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:221

Parameters

llvm::CallBase& CB

llvm::SizeOffsetType visitConstantPointerNull(
    llvm::ConstantPointerNull&)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:222

Parameters

llvm::ConstantPointerNull&

llvm::SizeOffsetType visitExtractElementInst(
    llvm::ExtractElementInst& I)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:223

Parameters

llvm::ExtractElementInst& I

llvm::SizeOffsetType visitExtractValueInst(
    llvm::ExtractValueInst& I)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:224

Parameters

llvm::ExtractValueInst& I

llvm::SizeOffsetType visitGlobalAlias(
    llvm::GlobalAlias& GA)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:225

Parameters

llvm::GlobalAlias& GA

llvm::SizeOffsetType visitGlobalVariable(
    llvm::GlobalVariable& GV)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:226

Parameters

llvm::GlobalVariable& GV

llvm::SizeOffsetType visitInstruction(
    llvm::Instruction& I)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:232

Parameters

llvm::Instruction& I

llvm::SizeOffsetType visitIntToPtrInst(
    llvm::IntToPtrInst&)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:227

Parameters

llvm::IntToPtrInst&

llvm::SizeOffsetType visitLoadInst(
    llvm::LoadInst& I)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:228

Parameters

llvm::LoadInst& I

llvm::SizeOffsetType visitPHINode(llvm::PHINode&)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:229

Parameters

llvm::PHINode&

llvm::SizeOffsetType visitSelectInst(
    llvm::SelectInst& I)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:230

Parameters

llvm::SelectInst& I

llvm::SizeOffsetType visitUndefValue(
    llvm::UndefValue&)

Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:231

Parameters

llvm::UndefValue&