|
Static Value-Flow Analysis
|
#include <SVFGBuilder.h>
Public Types | |
| typedef PointerAnalysis::CallSiteSet | CallSiteSet |
| typedef PointerAnalysis::CallEdgeMap | CallEdgeMap |
| typedef PointerAnalysis::FunctionSet | FunctionSet |
| typedef SVFG::SVFGEdgeSetTy | SVFGEdgeSet |
Public Member Functions | |
| SVFGBuilder (bool _SVFGWithIndCall=Options::SVFGWithIndirectCall(), bool _SVFGWithPostOpts=Options::OPTSVFG()) | |
| Constructor. | |
| virtual | ~SVFGBuilder ()=default |
| Destructor. | |
| SVFG * | buildPTROnlySVFG (BVDataPTAImpl *pta) |
| SVFG * | buildFullSVFG (BVDataPTAImpl *pta) |
| SVFG * | getSVFG () const |
| Get SVFG instance. | |
| void | markValidVFEdge (SVFGEdgeSet &edges) |
| Mark feasible VF edge by removing it from set vfEdgesAtIndCallSite. | |
| bool | isSpuriousVFEdgeAtIndCallSite (const SVFGEdge *edge) |
| Return true if this is an VF Edge pre-connected by Andersen's analysis. | |
| virtual std::unique_ptr< MemSSA > | buildMSSA (BVDataPTAImpl *pta, bool ptrOnlyMSSA) |
| Build Memory SSA. | |
Protected Member Functions | |
| virtual std::unique_ptr< MRGenerator > | createMRGenerator (BVDataPTAImpl *pta, bool ptrOnlyMSSA) |
| SVFG * | build (BVDataPTAImpl *pta, VFG::VFGK kind) |
| Create a DDA SVFG. By default actualOut and FormalIN are removed, unless withAOFI is set true. | |
| virtual void | buildSVFG () |
| Can be rewritten by subclasses. | |
| virtual void | releaseMemory () |
| Release global SVFG. | |
Protected Attributes | |
| SVFGEdgeSet | vfEdgesAtIndCallSite |
| SVFG Edges connected at indirect call/ret sites. | |
| std::unique_ptr< SVFG > | svfg |
| bool | SVFGWithIndCall |
| SVFG with precomputed indirect call edges. | |
| bool | SVFGWithPostOpts |
| Build optimised version of SVFG. | |
SVFG Builder
Definition at line 43 of file SVFGBuilder.h.
Definition at line 48 of file SVFGBuilder.h.
Definition at line 47 of file SVFGBuilder.h.
Definition at line 49 of file SVFGBuilder.h.
Definition at line 50 of file SVFGBuilder.h.
|
inlineexplicit |
Constructor.
Definition at line 53 of file SVFGBuilder.h.
|
virtualdefault |
Destructor.
|
protected |
Create a DDA SVFG. By default actualOut and FormalIN are removed, unless withAOFI is set true.
Create DDA SVFG.
Update call graph using pre-analysis results
Definition at line 63 of file SVFGBuilder.cpp.
| SVFG * SVFGBuilder::buildFullSVFG | ( | BVDataPTAImpl * | pta | ) |
Definition at line 48 of file SVFGBuilder.cpp.
|
virtual |
Build Memory SSA.
Definition at line 117 of file SVFGBuilder.cpp.
| SVFG * SVFGBuilder::buildPTROnlySVFG | ( | BVDataPTAImpl * | pta | ) |
Definition at line 42 of file SVFGBuilder.cpp.
|
protectedvirtual |
Can be rewritten by subclasses.
Create SVFG
Reimplemented in SVF::CFLSVFGBuilder, SVF::SaberSVFGBuilder, and SVF::MTASVFGBuilder.
Definition at line 57 of file SVFGBuilder.cpp.
|
protectedvirtual |
Hook supplying the MRGenerator for the MemSSA built above. The default builds the stock generator selected by Options::MemPar(); MTASVFGBuilder overrides this to inject a thread-aware (ThreadMRG) generator. Ownership transfers to the MemSSA constructed in buildMSSA.
Build the stock MRGenerator selected by Options::MemPar(). MTASVFGBuilder overrides this hook to inject a thread-aware (ThreadMRG) generator instead.
Reimplemented in SVF::MTASVFGBuilder.
Definition at line 101 of file SVFGBuilder.cpp.
|
inline |
Return true if this is an VF Edge pre-connected by Andersen's analysis.
Definition at line 77 of file SVFGBuilder.h.
|
inline |
Mark feasible VF edge by removing it from set vfEdgesAtIndCallSite.
Definition at line 71 of file SVFGBuilder.h.
|
protectedvirtual |
|
protected |
Definition at line 101 of file SVFGBuilder.h.
|
protected |
SVFG with precomputed indirect call edges.
Definition at line 103 of file SVFGBuilder.h.
|
protected |
Build optimised version of SVFG.
Definition at line 105 of file SVFGBuilder.h.
|
protected |
SVFG Edges connected at indirect call/ret sites.
Definition at line 100 of file SVFGBuilder.h.