165 std::string
dump()
const;
184template <>
struct std::hash<
SVF::AccessPath>
189 std::hash<SVF::AccessPath::IdxOperandPairs> v;
std::vector< IdxOperandPair > IdxOperandPairs
const SVFType * gepPointeeType
u32_t getStructFieldOffset(const SVFVar *idxOperandVar, const SVFStructType *idxOperandType) const
Return byte offset from the beginning of the structure to the field where it is located for struct ty...
bool addOffsetVarAndGepTypePair(const SVFVar *var, const SVFType *gepIterType)
u32_t getElementNum(const SVFType *type) const
Return element number of a type.
bool isConstantOffset() const
Return TRUE if this is a constant location set.
APOffset computeConstantByteOffset() const
std::string dump() const
Dump location set.
bool intersects(const AccessPath &RHS) const
Return TRUE if we share any location in common with RHS.
IdxOperandPairs idxOperandPairs
a vector of actual offset in the form of <SVF Var, iterator type>
const AccessPath & operator=(const AccessPath &rhs)
std::pair< const SVFVar *, const SVFType * > IdxOperandPair
APOffset getConstantStructFldIdx() const
Get methods.
AccessPath operator+(const AccessPath &rhs) const
Overload operators.
const SVFType * gepSrcPointeeType() const
NodeBS computeAllLocations() const
Compute all possible locations according to offset and number-stride pairs.
LSRelation checkRelation(const AccessPath &LHS, const AccessPath &RHS)
Check relations of two location sets.
bool operator==(const AccessPath &rhs) const
APOffset fldIdx
Accumulated Constant Offsets.
const IdxOperandPairs & getIdxOperandPairVec() const
void setFldIdx(APOffset idx)
AccessPath(APOffset o=0, const SVFType *srcTy=nullptr)
Constructor.
bool operator<(const AccessPath &rhs) const
APOffset computeConstantOffset() const
For example,.
AccessPath(const AccessPath &ap)
Copy Constructor.
bool intersects(const SparseBitVector< ElementSize > *RHS) const
llvm::IRBuilder IRBuilder
size_t operator()(const SVF::AccessPath &ap) const