Static Value-Flow Analysis
|
#include <PointerAnalysisImpl.h>
Static Public Member Functions | |
static bool | classof (const PointerAnalysis *pta) |
PTDataTy * | ptD |
Points-to data. | |
bool | normalized |
Normalized flag. | |
PtrToBVPtsMap | ptrToBVPtsMap |
Normal points-to representation (without conditions) | |
PtrToNSMap | objToNSRevPtsMap |
Normal points-to representation (without conditions) | |
PtrToCPtsMap | ptrToCPtsMap |
Conditional points-to representation (with conditions) | |
virtual const CPtSet & | getPts (CVar id) |
virtual const Set< CVar > & | getRevPts (CVar nodeId) |
virtual void | clearPts () |
Clear all data. | |
bool | overlap (const CPtSet &cpts1, const CPtSet &cpts2) const |
Whether cpts1 and cpts2 have overlap points-to targets. | |
void | expandFIObjs (const CPtSet &cpts, CPtSet &expandedCpts) |
Expand all fields of an aggregate in all points-to sets. | |
virtual void | dumpCPts () |
Print out conditional pts. | |
virtual PointsTo | getBVPointsTo (const CPtSet &cpts) const |
Given a conditional pts return its bit vector points-to. | |
virtual PointsTo & | getPts (NodeID ptr) |
Given a pointer return its bit vector points-to. | |
virtual const CPtSet & | getCondPointsTo (NodeID ptr) |
Given a pointer return its conditional points-to. | |
virtual NodeSet & | getRevPts (NodeID obj) |
Given an object return all pointers points to this object. | |
virtual AliasResult | alias (const SVFValue *V1, const SVFValue *V2) |
Interface expose to users of our pointer analysis, given Value infos. | |
virtual AliasResult | alias (NodeID node1, NodeID node2) |
Interface expose to users of our pointer analysis, given two pointers. | |
virtual AliasResult | alias (const CVar &var1, const CVar &var2) |
Interface expose to users of our pointer analysis, given conditional variables. | |
virtual AliasResult | alias (const CPtSet &pts1, const CPtSet &pts2) |
Interface expose to users of our pointer analysis, given two conditional points-to sets. | |
bool | containBlackHoleNode (const CPtSet &cpts) |
Test blk node for cpts. | |
bool | containConstantNode (const CPtSet &cpts) |
Test constant node for cpts. | |
virtual bool | isCondCompatible (const Cond &cxt1, const Cond &cxt2, bool singleton) const =0 |
Whether two conditions are compatible (to be implemented by child class) | |
void | dumpTopLevelPtsTo () |
Dump points-to information of top-level pointers. | |
virtual void | finalize () |
Finalization of pointer analysis, and normalize points-to information to Bit Vector representation. | |
virtual bool | unionPts (CVar id, const CPtSet &target) |
virtual bool | unionPts (CVar id, CVar ptd) |
virtual bool | addPts (CVar id, CVar ptd) |
bool | mustAlias (const CVar &var1, const CVar &var2) |
Internal interface to be used for conditional points-to set queries. | |
bool | contains (const CPtSet &cpts1, const CPtSet &cpts2) |
bool | isSameVar (const CVar &var1, const CVar &var2) const |
Whether two pointers/objects are the same one by considering their conditions. | |
virtual void | normalizePointsTo () |
Normalize points-to information to BitVector/conditional representation. | |
Additional Inherited Members | |
Static Public Attributes inherited from SVF::PointerAnalysis | |
static const std::string | aliasTestMayAlias = "MAYALIAS" |
static const std::string | aliasTestMayAliasMangled = "_Z8MAYALIASPvS_" |
static const std::string | aliasTestNoAlias = "NOALIAS" |
static const std::string | aliasTestNoAliasMangled = "_Z7NOALIASPvS_" |
static const std::string | aliasTestPartialAlias = "PARTIALALIAS" |
static const std::string | aliasTestPartialAliasMangled = "_Z12PARTIALALIASPvS_" |
static const std::string | aliasTestMustAlias = "MUSTALIAS" |
static const std::string | aliasTestMustAliasMangled = "_Z9MUSTALIASPvS_" |
static const std::string | aliasTestFailMayAlias = "EXPECTEDFAIL_MAYALIAS" |
static const std::string | aliasTestFailMayAliasMangled = "_Z21EXPECTEDFAIL_MAYALIASPvS_" |
static const std::string | aliasTestFailNoAlias = "EXPECTEDFAIL_NOALIAS" |
static const std::string | aliasTestFailNoAliasMangled = "_Z20EXPECTEDFAIL_NOALIASPvS_" |
Protected Member Functions inherited from SVF::PointerAnalysis | |
const CallSiteToFunPtrMap & | getIndirectCallsites () const |
Return all indirect callsites. | |
NodeID | getFunPtr (const CallICFGNode *cs) const |
Return function pointer PAGNode at a callsite cs. | |
virtual void | validateTests () |
Alias check functions to verify correctness of pointer analysis. | |
virtual void | validateSuccessTests (std::string fun) |
virtual void | validateExpectedFailureTests (std::string fun) |
void | resetObjFieldSensitive () |
Reset all object node as field-sensitive. | |
Protected Attributes inherited from SVF::PointerAnalysis | |
bool | print_stat |
User input flags. | |
bool | alias_validation |
Flag for validating points-to/alias results. | |
u32_t | OnTheFlyIterBudgetForStat |
Flag for iteration budget for on-the-fly statistics. | |
SVFModule * | svfMod |
Module. | |
PTATY | ptaTy |
Pointer analysis Type. | |
PTAImplTy | ptaImplTy |
PTA implementation type. | |
PTAStat * | stat |
Statistics. | |
PTACallGraph * | callgraph |
Call graph used for pointer analysis. | |
CallGraphSCC * | callGraphSCC |
SCC for PTACallGraph. | |
ICFG * | icfg |
Interprocedural control-flow graph. | |
CommonCHGraph * | chgraph |
CHGraph. | |
Static Protected Attributes inherited from SVF::PointerAnalysis | |
static SVFIR * | pag = nullptr |
SVFIR. | |
Pointer analysis implementation which uses conditional points-to map data structure (context/path sensitive analysis)
Definition at line 244 of file PointerAnalysisImpl.h.
typedef CondStdSet<CVar> SVF::CondPTAImpl< Cond >::CPtSet |
Definition at line 249 of file PointerAnalysisImpl.h.
Definition at line 248 of file PointerAnalysisImpl.h.
typedef MutablePTData<CVar, Set<CVar>, CVar, CPtSet> SVF::CondPTAImpl< Cond >::MutPTDataTy |
Definition at line 251 of file PointerAnalysisImpl.h.
Definition at line 250 of file PointerAnalysisImpl.h.
Definition at line 252 of file PointerAnalysisImpl.h.
Definition at line 254 of file PointerAnalysisImpl.h.
map a pointer to its BitVector points-to representation
Definition at line 253 of file PointerAnalysisImpl.h.
|
inline |
map a pointer to its conditional points-to set
Constructor
Definition at line 257 of file PointerAnalysisImpl.h.
|
inlinevirtual |
Definition at line 381 of file PointerAnalysisImpl.h.
|
inlinevirtual |
Interface expose to users of our pointer analysis, given two conditional points-to sets.
Definition at line 519 of file PointerAnalysisImpl.h.
|
inlinevirtual |
Interface expose to users of our pointer analysis, given conditional variables.
Definition at line 514 of file PointerAnalysisImpl.h.
|
inlinevirtual |
Interface expose to users of our pointer analysis, given Value infos.
Implements SVF::PointerAnalysis.
Definition at line 504 of file PointerAnalysisImpl.h.
|
inlinevirtual |
Interface expose to users of our pointer analysis, given two pointers.
Implements SVF::PointerAnalysis.
Definition at line 509 of file PointerAnalysisImpl.h.
|
inlinestatic |
Definition at line 273 of file PointerAnalysisImpl.h.
|
inlinevirtual |
|
inline |
Test blk node for cpts.
Definition at line 537 of file PointerAnalysisImpl.h.
|
inline |
Test constant node for cpts.
Definition at line 547 of file PointerAnalysisImpl.h.
|
inlineprotected |
Definition at line 404 of file PointerAnalysisImpl.h.
|
inline |
Release memory.
Definition at line 279 of file PointerAnalysisImpl.h.
|
inlinevirtual |
Print out conditional pts.
Reimplemented from SVF::PointerAnalysis.
Definition at line 472 of file PointerAnalysisImpl.h.
|
inlinevirtual |
Dump points-to information of top-level pointers.
Reimplemented from SVF::PointerAnalysis.
Definition at line 560 of file PointerAnalysisImpl.h.
|
inline |
Expand all fields of an aggregate in all points-to sets.
Definition at line 343 of file PointerAnalysisImpl.h.
|
inlineprotectedvirtual |
Finalization of pointer analysis, and normalize points-to information to Bit Vector representation.
Reimplemented from SVF::PointerAnalysis.
Reimplemented in SVF::ContextDDA.
Definition at line 363 of file PointerAnalysisImpl.h.
Given a pointer return its conditional points-to.
Definition at line 491 of file PointerAnalysisImpl.h.
|
inline |
Definition at line 291 of file PointerAnalysisImpl.h.
|
inline |
Get points-to data.
Definition at line 286 of file PointerAnalysisImpl.h.
Get points-to and reverse points-to
Definition at line 312 of file PointerAnalysisImpl.h.
|
inlinevirtual |
Given a pointer return its bit vector points-to.
Implements SVF::PointerAnalysis.
Definition at line 485 of file PointerAnalysisImpl.h.
|
inline |
Definition at line 303 of file PointerAnalysisImpl.h.
Definition at line 316 of file PointerAnalysisImpl.h.
|
inlinevirtual |
Given an object return all pointers points to this object.
Implements SVF::PointerAnalysis.
Definition at line 497 of file PointerAnalysisImpl.h.
|
inline |
Definition at line 298 of file PointerAnalysisImpl.h.
|
pure virtual |
Whether two conditions are compatible (to be implemented by child class)
Implemented in SVF::ContextDDA.
|
inlineprotected |
Whether two pointers/objects are the same one by considering their conditions.
we distinguish context sensitive memory allocation here
Definition at line 427 of file PointerAnalysisImpl.h.
Internal interface to be used for conditional points-to set queries.
Definition at line 389 of file PointerAnalysisImpl.h.
|
inlineprotectedvirtual |
Normalize points-to information to BitVector/conditional representation.
Definition at line 439 of file PointerAnalysisImpl.h.
Whether cpts1 and cpts2 have overlap points-to targets.
Definition at line 329 of file PointerAnalysisImpl.h.
|
inlineprotectedvirtual |
Union/add points-to, and add the reverse points-to for node collapse purpose To be noted that adding reverse pts might incur 10% total overhead during solving
Definition at line 371 of file PointerAnalysisImpl.h.
Definition at line 376 of file PointerAnalysisImpl.h.
|
protected |
Normalized flag.
Definition at line 463 of file PointerAnalysisImpl.h.
|
protected |
Normal points-to representation (without conditions)
Definition at line 467 of file PointerAnalysisImpl.h.
|
protected |
Points-to data.
Definition at line 461 of file PointerAnalysisImpl.h.
|
protected |
Normal points-to representation (without conditions)
Definition at line 465 of file PointerAnalysisImpl.h.
|
protected |
Conditional points-to representation (with conditions)
Definition at line 469 of file PointerAnalysisImpl.h.