16using namespace SVFUtil;
39 assert(SVFUtil::isa<VersionedFlowSensitive>(
vfspta) &&
"VFSStat::performStat: not given VFSPTA.");
56 if (SVFUtil::isa<ObjVar>(
pagNode))
60 if (nodeSet.insert(
baseId).second)
71 unsigned numOfCopy = 0;
72 unsigned numOfStore = 0;
76 if (SVFUtil::isa<CopySVFGNode>(
svfgNode)) numOfCopy++;
77 else if (SVFUtil::isa<StoreSVFGNode>(
svfgNode)) numOfStore++;
166 for (
const VersionedFlowSensitive::ObjToVersionMap::value_type &
ov :
lov)
const PointsTo & getPts(NodeID id) override
u32_t numOfProcessedLoad
Number of processed Phi node.
u32_t numOfProcessedCopy
Number of processed Addr node.
double gepTime
time of handling gep edges
double indirectPropaTime
time of points-to propagation of top-level pointers
double addrTime
time of handling address edges
double solveTime
time of solve.
u32_t numOfProcessedStore
Number of processed Load node.
double storeTime
time of store edges
double copyTime
time of handling copy edges
u32_t numOfProcessedGep
Number of processed Copy node.
u32_t maxSCCSize
Number of processed mssa node.
double loadTime
time of load edges
u32_t numOfProcessedActualParam
Number of processed Store node.
u32_t numOfProcessedPhi
Number of processed Gep node.
double propagationTime
time of points-to propagation.
u32_t numOfProcessedFormalRet
Number of processed actual param node.
double directPropaTime
time of points-to propagation of address-taken objects
double processTime
time of processNode.
u32_t numOfProcessedAddr
Statistics.
double phiTime
time of phi nodes.
double sccTime
time of SCC detection.
double updateTime
time of strong/weak updates.
u32_t numOfProcessedMSSANode
Number of processed formal ret node.
double updateCallGraphTime
time of updating call graph
iterator begin()
Iterators.
IDToNodeMapTy::const_iterator const_iterator
IDToNodeMapTy::iterator iterator
Node Iterators.
u32_t getValueNodeNum() const
u32_t getObjectNodeNum() const
SymID getId() const
Get the memory object id.
void performStat() override
u32_t getNumOfResolvedIndCallEdge() const
Return number of resolved indirect call edges.
u32_t count() const
Returns number of elements.
u32_t getFieldObjNodeNum() const
bool isValidTopLevelPtr(const SVFVar *node)
const MemObj * getBaseObj(NodeID id) const
u32_t getFieldValNodeNum() const
Node and edge statistics.
virtual void printStat(std::string str="")
VersionedFlowSensitive * vfspta
double _AvgVersionPtsSize
Average points-to set size for address-taken objects.
u32_t _NumSingleVersion
Number of objects which have a single version.
u32_t _NumEmptyVersions
Number of versions with empty points-to sets (actually empty, not never-accessed).
u32_t _NumNonEmptyVersions
Number of versions with non-empty points-to sets (since versioning is over-approximate).
u32_t _TotalPtsSize
Total of points-to set sizes for calculating averages.
double _AvgPtsSize
Average size across all points-to sets.
u32_t _NumVersions
Total number of versions across all objects.
double _AvgTopLvlPtsSize
Average points-to set size for top-level pointers.
u32_t _MaxVersionPtsSize
Max address-taken points-to set size.
u32_t _MaxPtsSize
Largest PTS size.
u32_t _MaxVersions
Most versions for a single object.
u32_t _MaxTopLvlPtsSize
Max points-to set size in top-level pointers.
u32_t _NumUsedVersions
Number of version PTSs actually used (sum of next two fields).
void ptsSizeStat(void)
For all PTS size related statistics not handled by versionStat.
void versionStat(void)
For all version-related statistics.
virtual void performStat()
BVDataPTAImpl::VersionedPTDataTy * vPtD
Points-to DS for working with versions.
LocVersionMap yield
Actual yield map. Yield analogue to consume.
double meldLabelingTime
Time to meld label SVFG.
static VersionedVar atKey(NodeID, Version)
Return key into vPtD for address-taken var of a specific version.
double prelabelingTime
Time to prelabel SVFG.
std::vector< ObjToVersionMap > LocVersionMap
double versionPropTime
Time to propagate versions to versions which rely on them.
Map< NodeID, Version > ObjToVersionMap
u32_t numOfIteration
num of iterations during constraint solving
llvm::IRBuilder IRBuilder