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)
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 = {})
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)
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)
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)
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)
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)
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)
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)
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)
static bool knownSize(
const llvm::SizeOffsetType& SizeOffset)
Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:205
Parameters
- const llvm::SizeOffsetType& SizeOffset
¶llvm::SizeOffsetType unknown()
llvm::SizeOffsetType unknown()
Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:195
¶llvm::SizeOffsetType visitAllocaInst(
llvm::AllocaInst& I)
llvm::SizeOffsetType visitAllocaInst(
llvm::AllocaInst& I)
Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:219
Parameters
¶llvm::SizeOffsetType visitArgument(
llvm::Argument& A)
llvm::SizeOffsetType visitArgument(
llvm::Argument& A)
Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:220
Parameters
¶llvm::SizeOffsetType visitCallBase(
llvm::CallBase& CB)
llvm::SizeOffsetType visitCallBase(
llvm::CallBase& CB)
Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:221
Parameters
- llvm::CallBase& CB
¶llvm::SizeOffsetType visitConstantPointerNull(
llvm::ConstantPointerNull&)
llvm::SizeOffsetType visitConstantPointerNull(
llvm::ConstantPointerNull&)
Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:222
Parameters
¶llvm::SizeOffsetType visitExtractElementInst(
llvm::ExtractElementInst& I)
llvm::SizeOffsetType visitExtractElementInst(
llvm::ExtractElementInst& I)
Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:223
Parameters
¶llvm::SizeOffsetType visitExtractValueInst(
llvm::ExtractValueInst& I)
llvm::SizeOffsetType visitExtractValueInst(
llvm::ExtractValueInst& I)
Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:224
Parameters
¶llvm::SizeOffsetType visitGlobalAlias(
llvm::GlobalAlias& GA)
llvm::SizeOffsetType visitGlobalAlias(
llvm::GlobalAlias& GA)
Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:225
Parameters
¶llvm::SizeOffsetType visitGlobalVariable(
llvm::GlobalVariable& GV)
llvm::SizeOffsetType visitGlobalVariable(
llvm::GlobalVariable& GV)
Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:226
Parameters
¶llvm::SizeOffsetType visitInstruction(
llvm::Instruction& I)
llvm::SizeOffsetType visitInstruction(
llvm::Instruction& I)
Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:232
Parameters
¶llvm::SizeOffsetType visitIntToPtrInst(
llvm::IntToPtrInst&)
llvm::SizeOffsetType visitIntToPtrInst(
llvm::IntToPtrInst&)
Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:227
Parameters
¶llvm::SizeOffsetType visitLoadInst(
llvm::LoadInst& I)
llvm::SizeOffsetType visitLoadInst(
llvm::LoadInst& I)
Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:228
Parameters
¶llvm::SizeOffsetType visitPHINode(llvm::PHINode&)
llvm::SizeOffsetType visitPHINode(llvm::PHINode&)
Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:229
Parameters
¶llvm::SizeOffsetType visitSelectInst(
llvm::SelectInst& I)
llvm::SizeOffsetType visitSelectInst(
llvm::SelectInst& I)
Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:230
Parameters
¶llvm::SizeOffsetType visitUndefValue(
llvm::UndefValue&)
llvm::SizeOffsetType visitUndefValue(
llvm::UndefValue&)
Declared at: llvm/include/llvm/Analysis/MemoryBuiltins.h:231