Static Value-Flow Analysis
|
#include <Steensgaard.h>
Static Public Member Functions | |
static Steensgaard * | createSteensgaard (SVFIR *_pag) |
Create an singleton instance. | |
static void | releaseSteensgaard () |
static bool | classof (const Steensgaard *) |
Methods for support type inquiry through isa, cast, and dyn_cast: | |
static bool | classof (const AndersenBase *pta) |
static bool | classof (const PointerAnalysis *pta) |
Static Public Member Functions inherited from SVF::AndersenBase | |
static bool | classof (const AndersenBase *) |
Methods for support type inquiry through isa, cast, and dyn_cast: | |
static bool | classof (const PointerAnalysis *pta) |
Static Public Member Functions inherited from SVF::BVDataPTAImpl | |
static bool | classof (const PointerAnalysis *pta) |
Private Attributes | |
NodeToEquivClassMap | nodeToECMap |
NodeToSubsMap | nodeToSubsMap |
Static Private Attributes | |
static Steensgaard * | steens = nullptr |
Additional Inherited Members | |
Public Attributes inherited from SVF::AndersenBase | |
NodeBS | redundantGepNodes |
Public Attributes inherited from SVF::WPASolver< GraphType > | |
u32_t | numOfIteration |
num of iterations during constraint solving | |
Static Public Attributes inherited from SVF::AndersenBase | |
static u32_t | numOfProcessedAddr = 0 |
Statistics. | |
static u32_t | numOfProcessedCopy = 0 |
Number of processed Addr edge. | |
static u32_t | numOfProcessedGep = 0 |
Number of processed Copy edge. | |
static u32_t | numOfProcessedLoad = 0 |
Number of processed Gep edge. | |
static u32_t | numOfProcessedStore = 0 |
Number of processed Load edge. | |
static u32_t | numOfSfrs = 0 |
Number of processed Store edge. | |
static u32_t | numOfFieldExpand = 0 |
static u32_t | numOfSCCDetection = 0 |
static double | timeOfSCCDetection = 0 |
static double | timeOfSCCMerges = 0 |
static double | timeOfCollapse = 0 |
static u32_t | AveragePointsToSetSize = 0 |
static u32_t | MaxPointsToSetSize = 0 |
static double | timeOfProcessCopyGep = 0 |
static double | timeOfProcessLoadStore = 0 |
static double | timeOfUpdateCallGraph = 0 |
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::AndersenBase | |
void | heapAllocatorViaIndCall (const CallICFGNode *cs, NodePairSet &cpySrcNodes) |
Protected Member Functions inherited from SVF::WPASolver< GraphType > | |
WPASolver () | |
Constructor. | |
virtual | ~WPASolver ()=default |
Destructor. | |
SCC * | getSCCDetector () const |
Get SCC detector. | |
const GraphType | graph () |
Get/Set graph methods. | |
void | setGraph (GraphType g) |
virtual NodeStack & | SCCDetect () |
SCC detection. | |
virtual NodeStack & | SCCDetect (NodeSet &candidates) |
virtual void | initWorklist () |
virtual void | processNode (NodeID) |
Following methods are to be implemented in child class, in order to achieve a fully worked PTA. | |
virtual void | collapseFields () |
collapse positive weight cycles of a graph | |
virtual void | propagate (GNODE *v) |
virtual bool | propFromSrcToDst (GEDGE *) |
Propagate information from source to destination node, to be implemented in the child class. | |
NodeID | popFromWorklist () |
Worklist operations. | |
virtual void | pushIntoWorklist (NodeID id) |
bool | isWorklistEmpty () |
bool | isInWorklist (NodeID id) |
GNODE * | Node (NodeID id) |
Get node on the graph. | |
NodeID | Node_Index (GNODE node) |
Get node ID. | |
Protected Member Functions inherited from SVF::BVDataPTAImpl | |
PTDataTy * | getPTDataTy () const |
Get points-to data structure. | |
void | finalize () override |
Finalization of pointer analysis, and normalize points-to information to Bit Vector representation. | |
DiffPTDataTy * | getDiffPTDataTy () const |
DFPTDataTy * | getDFPTDataTy () const |
MutDFPTDataTy * | getMutDFPTDataTy () const |
VersionedPTDataTy * | getVersionedPTDataTy () const |
virtual void | onTheFlyCallGraphSolve (const CallSiteToFunPtrMap &callsites, CallEdgeMap &newEdges) |
On the fly call graph construction. | |
virtual void | onTheFlyThreadCallGraphSolve (const CallSiteToFunPtrMap &callsites, CallEdgeMap &newForkEdges) |
On the fly thread call graph construction respecting forksite. | |
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::AndersenBase | |
ConstraintGraph * | consCG |
Constraint Graph. | |
CallSite2DummyValPN | callsite2DummyValPN |
Protected Attributes inherited from SVF::WPASolver< GraphType > | |
bool | reanalyze |
Reanalyze if any constraint value changed. | |
u32_t | iterationForPrintStat |
print out statistics for i-th iteration | |
GraphType | _graph |
Graph. | |
std::unique_ptr< SCC > | scc |
SCC. | |
WorkList | worklist |
Worklist for resolution. | |
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. | |
Definition at line 20 of file Steensgaard.h.
Definition at line 24 of file Steensgaard.h.
Definition at line 25 of file Steensgaard.h.
|
inline |
Constructor.
Definition at line 28 of file Steensgaard.h.
Add copy edge on constraint graph.
Implements SVF::AndersenBase.
Definition at line 118 of file Steensgaard.h.
Definition at line 112 of file Steensgaard.h.
|
inlinestatic |
Definition at line 60 of file Steensgaard.h.
|
inlinestatic |
Definition at line 64 of file Steensgaard.h.
|
inlinestatic |
Methods for support type inquiry through isa, cast, and dyn_cast:
Definition at line 56 of file Steensgaard.h.
|
inlinestatic |
Create an singleton instance.
Definition at line 31 of file Steensgaard.h.
merge node into equiv class and merge node's pts into ec's pts
Definition at line 95 of file Steensgaard.cpp.
API for equivalence class operations Every constraint node maps to an unique equivalence class EC An equivalence class has a set of sub constraint nodes.
Definition at line 92 of file Steensgaard.h.
Operation of points-to set.
Reimplemented from SVF::BVDataPTAImpl.
Definition at line 71 of file Steensgaard.h.
Definition at line 107 of file Steensgaard.h.
void Steensgaard::processAllAddr | ( | ) |
Process address edges
Definition at line 105 of file Steensgaard.cpp.
|
inlinestatic |
Definition at line 41 of file Steensgaard.h.
Return getEC(id)
Reimplemented from SVF::AndersenBase.
Definition at line 101 of file Steensgaard.h.
Definition at line 82 of file Steensgaard.cpp.
|
overridevirtual |
Steensgaard analysis
foreach o \in pts(p)
Reimplemented from SVF::WPASolver< GraphType >.
Definition at line 42 of file Steensgaard.cpp.
|
inlineoverridevirtual |
Reimplemented from SVF::BVDataPTAImpl.
Definition at line 76 of file Steensgaard.h.
Reimplemented from SVF::BVDataPTAImpl.
Definition at line 82 of file Steensgaard.h.
|
private |
Definition at line 125 of file Steensgaard.h.
|
private |
Definition at line 126 of file Steensgaard.h.
|
staticprivate |
Definition at line 124 of file Steensgaard.h.