30#ifndef SVF_OBJTYPEINFERENCE_H
31#define SVF_OBJTYPEINFERENCE_H
Map< const Value *, ValueSet > ValueToValueSet
ValueToInferSites _valueToInferSites
~ObjTypeInference()=default
Map< const Value *, Set< const CallBase * > > ObjToClsNameSources
LLVMContext & getLLVMCtx()
ValueToValueSet ValueToInferSites
ValueToSources _valueToAllocs
const Type * selectLargestSizedType(Set< const Type * > &objTys)
select the largest (conservative) type from all types
ValueToValueSet ValueToSources
Set< const Value * > & bwfindAllocOfVar(const Value *var)
backward collect all possible allocation sites (stack, static, heap) of var
Set< const Value * > ValueSet
u32_t objTyToNumFields(const Type *objTy)
bool isAlloc(const SVF::Value *val)
is allocation (stack, static, heap)
u32_t getArgPosInCall(const CallBase *callBase, const Value *arg)
Set< const Value * > & bwFindAllocOrClsNameSources(const Value *startValue)
ValueToClassNames _thisPtrClassNames
Set< std::string > & inferThisPtrClsName(const Value *thisPtr)
get or infer the class names of thisptr
void typeSizeDiffTest(const PointerType *oPTy, const Type *iTy, const Value *val)
const Type * fwInferObjType(const Value *var)
forward infer the type of the object pointed by var
Map< const Value *, const Type * > ValueToType
Map< const Value *, Set< std::string > > ValueToClassNames
const IntegerType * int8Type()
int8 type
const Type * ptrType()
pointer type
ObjTypeInference()=default
const Type * inferObjType(const Value *var)
get or infer the type of the object pointed by the value
const Type * defaultType(const Value *val)
default type
ObjToClsNameSources _objToClsNameSources
Set< const CallBase * > & fwFindClsNameSources(const Value *startValue)
forward find class name sources starting from an allocation
std::pair< const Value *, bool > ValueBoolPair
void validateTypeCheck(const CallBase *cs)
validate type inference
ValueToSources _valueToAllocOrClsNameSources
llvm::IntegerType IntegerType
llvm::Value Value
LLVM Basic classes.
llvm::IRBuilder IRBuilder
llvm::PointerType PointerType
llvm::LLVMContext LLVMContext