LLVM
15.0.0git
|
Evaluate the size and offset of an object pointed to by a Value*. More...
#include "llvm/Analysis/MemoryBuiltins.h"
Static Public Member Functions | |
static SizeOffsetEvalType | unknown () |
Evaluate the size and offset of an object pointed to by a Value*.
May create code to compute the result at run-time.
Definition at line 250 of file MemoryBuiltins.h.
ObjectSizeOffsetEvaluator::ObjectSizeOffsetEvaluator | ( | const DataLayout & | DL, |
const TargetLibraryInfo * | TLI, | ||
LLVMContext & | Context, | ||
ObjectSizeOpts | EvalOpts = {} |
||
) |
Definition at line 985 of file MemoryBuiltins.cpp.
References I.
|
inline |
Definition at line 288 of file MemoryBuiltins.h.
References knownOffset(), and knownSize().
Referenced by compute().
|
inline |
Definition at line 292 of file MemoryBuiltins.h.
References knownOffset(), and knownSize().
Referenced by compute(), getBoundsCheckCond(), visitGEPOperator(), visitPHINode(), and visitSelectInst().
SizeOffsetEvalType ObjectSizeOffsetEvaluator::compute | ( | Value * | V | ) |
Definition at line 997 of file MemoryBuiltins.cpp.
References anyKnown(), bothKnown(), llvm::SmallPtrSetImplBase::clear(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::erase(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::find(), llvm::ConstantInt::get(), llvm::UndefValue::get(), llvm::DataLayout::getIndexType(), llvm::Value::getType(), and I.
Referenced by getBoundsCheckCond(), and llvm::lowerObjectSizeCall().
|
inline |
Definition at line 284 of file MemoryBuiltins.h.
Referenced by anyKnown(), and bothKnown().
|
inline |
Definition at line 280 of file MemoryBuiltins.h.
Referenced by anyKnown(), and bothKnown().
|
inlinestatic |
Definition at line 271 of file MemoryBuiltins.h.
Referenced by llvm::lowerObjectSizeCall(), visitAllocaInst(), visitCallBase(), visitExtractElementInst(), visitExtractValueInst(), visitGEPOperator(), visitInstruction(), visitIntToPtrInst(), visitLoadInst(), visitPHINode(), and visitSelectInst().
SizeOffsetEvalType ObjectSizeOffsetEvaluator::visitAllocaInst | ( | AllocaInst & | I | ) |
Definition at line 1078 of file MemoryBuiltins.cpp.
References assert(), llvm::IRBuilderBase::CreateMul(), llvm::IRBuilderBase::CreateZExtOrTrunc(), llvm::ConstantInt::get(), llvm::DataLayout::getIntPtrType(), llvm::Value::getType(), llvm::DataLayout::getTypeAllocSize(), I, and unknown().
SizeOffsetEvalType ObjectSizeOffsetEvaluator::visitCallBase | ( | CallBase & | CB | ) |
Definition at line 1098 of file MemoryBuiltins.cpp.
References AllocFnsTy::AllocTy, llvm::IRBuilderBase::CreateMul(), llvm::IRBuilderBase::CreateZExtOrTrunc(), AllocFnsTy::FstParam, getAllocationSize(), llvm::CallBase::getArgOperand(), AllocFnsTy::SndParam, StrDupLike, and unknown().
SizeOffsetEvalType ObjectSizeOffsetEvaluator::visitExtractElementInst | ( | ExtractElementInst & | I | ) |
Definition at line 1121 of file MemoryBuiltins.cpp.
References unknown().
SizeOffsetEvalType ObjectSizeOffsetEvaluator::visitExtractValueInst | ( | ExtractValueInst & | I | ) |
Definition at line 1126 of file MemoryBuiltins.cpp.
References unknown().
SizeOffsetEvalType ObjectSizeOffsetEvaluator::visitGEPOperator | ( | GEPOperator & | GEP | ) |
Definition at line 1131 of file MemoryBuiltins.cpp.
References bothKnown(), llvm::IRBuilderBase::CreateAdd(), llvm::EmitGEPOffset(), GEP, and unknown().
SizeOffsetEvalType ObjectSizeOffsetEvaluator::visitInstruction | ( | Instruction & | I | ) |
Definition at line 1208 of file MemoryBuiltins.cpp.
References llvm::dbgs(), I, LLVM_DEBUG, and unknown().
SizeOffsetEvalType ObjectSizeOffsetEvaluator::visitIntToPtrInst | ( | IntToPtrInst & | ) |
Definition at line 1141 of file MemoryBuiltins.cpp.
References unknown().
SizeOffsetEvalType ObjectSizeOffsetEvaluator::visitLoadInst | ( | LoadInst & | I | ) |
Definition at line 1146 of file MemoryBuiltins.cpp.
References unknown().
SizeOffsetEvalType ObjectSizeOffsetEvaluator::visitPHINode | ( | PHINode & | PHI | ) |
Definition at line 1150 of file MemoryBuiltins.cpp.
References llvm::PHINode::addIncoming(), bothKnown(), llvm::IRBuilderBase::CreatePHI(), llvm::numbers::e, llvm::Instruction::eraseFromParent(), llvm::UndefValue::get(), llvm::BasicBlock::getFirstInsertionPt(), llvm::PHINode::getIncomingBlock(), llvm::PHINode::getIncomingValue(), llvm::PHINode::getNumIncomingValues(), llvm::PHINode::hasConstantValue(), i, llvm::Value::replaceAllUsesWith(), llvm::IRBuilderBase::SetInsertPoint(), and unknown().
SizeOffsetEvalType ObjectSizeOffsetEvaluator::visitSelectInst | ( | SelectInst & | I | ) |
Definition at line 1192 of file MemoryBuiltins.cpp.
References bothKnown(), llvm::IRBuilderBase::CreateSelect(), I, and unknown().