|
Static Value-Flow Analysis
|
#include <MTASlicer.h>
Public Member Functions | |
| MultiStageSlicer (SVFIR *svfir, AndersenBase *pta, MHP *mhp, LockAnalysis *lockAnalysis, SVFG *svfg=nullptr) | |
| OrderedSet< const ICFGNode * > | runILASlicing (const OrderedSet< const SVFStmt * > &vulnerableStatements, const OrderedSet< const ICFGNode * > &threadVFSources={}) |
| ValueFlowSlice | runPTASlicing (const OrderedSet< const SVFStmt * > &vulnerableStatements, SVFG *refinedMainVFG) |
| void | computePreCandidateSlice (const OrderedSet< const SVFStmt * > &vulnerableStatements) |
| const ValueFlowSlice & | getPreCandidateSlice () const |
| Return the pre-candidate slice after computePreCandidateSlice(). | |
Public Member Functions inherited from SVF::MTASlicerBase | |
| MTASlicerBase (SVFIR *svfir, AndersenBase *pta, MHP *mhp, LockAnalysis *lockAnalysis, SVFG *svfg=nullptr) | |
Private Attributes | |
| ValueFlowSlice | preCandidateSlice |
| bool | preCandidateComputed = false |
MultiStageSlicer - the multi-stage (differential) slicer of MSli. The pre-candidate closure scopes ILA queries and the Main-TVF overlay; the final closure is recomputed over that refined main graph. Stage 1 (ILA): runILASlicing – synchronization slicing + function expansion, feeding the sliced MHP/lock. Stage 2 (FSPTA): runPTASlicing – backward data-dependence slice feeding the sliced flow-sensitive solve. Contrast: SingleSlicer below folds everything into ONE unified slice.
Definition at line 201 of file MTASlicer.h.
| SVF::MultiStageSlicer::MultiStageSlicer | ( | SVFIR * | svfir, |
| AndersenBase * | pta, | ||
| MHP * | mhp, | ||
| LockAnalysis * | lockAnalysis, | ||
| SVFG * | svfg = nullptr |
||
| ) |
Definition at line 793 of file MTASlicer.cpp.
| void SVF::MultiStageSlicer::computePreCandidateSlice | ( | const OrderedSet< const SVFStmt * > & | vulnerableStatements | ) |
Compute the pre-candidate slice used to restrict [THREAD-VF] sources and scope construction of the refined main overlay.
Definition at line 858 of file MTASlicer.cpp.
| const ValueFlowSlice & SVF::MultiStageSlicer::getPreCandidateSlice | ( | ) | const |
Return the pre-candidate slice after computePreCandidateSlice().
Definition at line 869 of file MTASlicer.cpp.
| OrderedSet< const ICFGNode * > SVF::MultiStageSlicer::runILASlicing | ( | const OrderedSet< const SVFStmt * > & | vulnerableStatements, |
| const OrderedSet< const ICFGNode * > & | threadVFSources = {} |
||
| ) |
Stage 1: the ILA slice (synchronization + function expansion for the IRView).
| vulnerableStatements | Set of vulnerable statements to start slicing from (the [INIT] rule: pre-analysis race statements). |
| threadVFSources | Extra ILA slicing sources from the [THREAD-VF] rule (MSli 4.2): statements whose MHP/lock-span results are queried during the main-phase thread-aware value-flow construction (endpoints and in-span non-interference witnesses collected while building VFG_pre). |
Definition at line 800 of file MTASlicer.cpp.
| ValueFlowSlice SVF::MultiStageSlicer::runPTASlicing | ( | const OrderedSet< const SVFStmt * > & | vulnerableStatements, |
| SVFG * | refinedMainVFG | ||
| ) |
Stage 2: the FSPTA slice (backward data dependence over the refined main value-flow graph; node set only, no function expansion).
Definition at line 876 of file MTASlicer.cpp.
Definition at line 239 of file MTASlicer.h.
|
private |
Definition at line 238 of file MTASlicer.h.