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
const IntegerType * int8Type()
int8 type
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
const Type * ptrType()
pointer type
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
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
std::unordered_map< Key, Value, Hash, KeyEqual, Allocator > Map
llvm::Value Value
LLVM Basic classes.
llvm::PointerType PointerType
std::unordered_set< Key, Hash, KeyEqual, Allocator > Set
llvm::LLVMContext LLVMContext