Static Value-Flow Analysis
|
#include <CFLSVFGBuilder.h>
Public Types | |
typedef Set< const SVFGNode * > | SVFGNodeSet |
typedef Map< NodeID, PointsTo > | NodeToPTSSMap |
typedef FIFOWorkList< NodeID > | WorkList |
Public Types inherited from SVF::SaberSVFGBuilder | |
typedef Set< const SVFGNode * > | SVFGNodeSet |
typedef Map< NodeID, PointsTo > | NodeToPTSSMap |
typedef FIFOWorkList< NodeID > | WorkList |
Public Types inherited from SVF::SVFGBuilder | |
typedef PointerAnalysis::CallSiteSet | CallSiteSet |
typedef PointerAnalysis::CallEdgeMap | CallEdgeMap |
typedef PointerAnalysis::FunctionSet | FunctionSet |
typedef SVFG::SVFGEdgeSetTy | SVFGEdgeSet |
Public Member Functions | |
CFLSVFGBuilder ()=default | |
Constructor. More... | |
virtual | ~CFLSVFGBuilder ()=default |
Destructor. More... | |
Public Member Functions inherited from SVF::SaberSVFGBuilder | |
SaberSVFGBuilder () | |
Constructor. More... | |
virtual | ~SaberSVFGBuilder () |
Destructor. More... | |
bool | isGlobalSVFGNode (const SVFGNode *node) const |
void | addActualParmVFGNode (const PAGNode *pagNode, const CallICFGNode *cs) |
Add ActualParmVFGNode. More... | |
void | setSaberCondAllocator (SaberCondAllocator *allocator) |
Public Member Functions inherited from SVF::SVFGBuilder | |
SVFGBuilder (bool _SVFGWithIndCall=false) | |
Constructor. More... | |
virtual | ~SVFGBuilder ()=default |
Destructor. More... | |
SVFG * | buildPTROnlySVFG (BVDataPTAImpl *pta) |
SVFG * | buildFullSVFG (BVDataPTAImpl *pta) |
SVFG * | getSVFG () const |
Get SVFG instance. More... | |
void | markValidVFEdge (SVFGEdgeSet &edges) |
Mark feasible VF edge by removing it from set vfEdgesAtIndCallSite. More... | |
bool | isSpuriousVFEdgeAtIndCallSite (const SVFGEdge *edge) |
Return true if this is an VF Edge pre-connected by Andersen's analysis. More... | |
virtual std::unique_ptr< MemSSA > | buildMSSA (BVDataPTAImpl *pta, bool ptrOnlyMSSA) |
Build Memory SSA. More... | |
Protected Member Functions | |
virtual void | buildSVFG () |
Re-write create SVFG method. More... | |
virtual void | rmIncomingEdgeForSUStore (BVDataPTAImpl *pta) |
Protected Member Functions inherited from SVF::SaberSVFGBuilder | |
bool | isStrongUpdate (const SVFGNode *node, NodeID &singleton, BVDataPTAImpl *pta) |
Return TRUE if this is a strong update STORE statement. More... | |
void | rmDerefDirSVFGEdges (BVDataPTAImpl *pta) |
virtual void | AddExtActualParmSVFGNodes (PTACallGraph *callgraph) |
Add actual parameter SVFGNode for 1st argument of a deallocation like external function. More... | |
void | collectGlobals (BVDataPTAImpl *pta) |
bool | accessGlobal (BVDataPTAImpl *pta, const PAGNode *pagNode) |
Whether points-to of a PAGNode points-to global variable. More... | |
PointsTo & | CollectPtsChain (BVDataPTAImpl *pta, NodeID id, NodeToPTSSMap &cachedPtsMap) |
Collect objects along points-to chains. More... | |
Protected Member Functions inherited from SVF::SVFGBuilder | |
SVFG * | build (BVDataPTAImpl *pta, VFG::VFGK kind) |
Create a DDA SVFG. By default actualOut and FormalIN are removed, unless withAOFI is set true. More... | |
virtual void | releaseMemory () |
Release global SVFG. More... | |
Additional Inherited Members | |
Protected Attributes inherited from SVF::SaberSVFGBuilder | |
PointsTo | globs |
SVFGNodeSet | globSVFGNodes |
Store all global SVFG nodes. More... | |
SaberCondAllocator * | saberCondAllocator |
Protected Attributes inherited from SVF::SVFGBuilder | |
SVFGEdgeSet | vfEdgesAtIndCallSite |
SVFG Edges connected at indirect call/ret sites. More... | |
std::unique_ptr< SVFG > | svfg |
bool | SVFGWithIndCall |
SVFG with precomputed indirect call edges. More... | |
Definition at line 35 of file CFLSVFGBuilder.h.
typedef Map<NodeID, PointsTo> SVF::CFLSVFGBuilder::NodeToPTSSMap |
Definition at line 39 of file CFLSVFGBuilder.h.
typedef Set<const SVFGNode*> SVF::CFLSVFGBuilder::SVFGNodeSet |
Definition at line 38 of file CFLSVFGBuilder.h.
Definition at line 40 of file CFLSVFGBuilder.h.
|
default |
Constructor.
|
virtualdefault |
Destructor.
|
protectedvirtual |
Re-write create SVFG method.
Reimplemented from SVF::SaberSVFGBuilder.
Definition at line 35 of file CFLSVFGBuilder.cpp.
|
protectedvirtual |
Remove Incoming Edge for strong-update (SU) store instruction Because the SU node does not receive indirect value
Remove Incoming Edge for strong-update (SU) store instruction Because the SU node does not receive indirect value
e.g., L1: *p = O; (singleton) L2: *p = _; (SU here) We should remove the indirect value flow L1 -> L2 Because the points-to set of O from L1 does not pass to that after L2
Reimplemented from SVF::SaberSVFGBuilder.
Definition at line 70 of file CFLSVFGBuilder.cpp.