|
Static Value-Flow Analysis
|
#include <MTASlicer.h>
Public Member Functions | |
| MTASlicerBase (SVFIR *svfir, AndersenBase *pta, MHP *mhp, LockAnalysis *lockAnalysis, SVFG *svfg=nullptr) | |
Static Protected Member Functions | |
| static void | enqueueSVFGNode (const SVFGNode *node, OrderedSet< const SVFGNode * > &visited, std::deque< const SVFGNode * > &worklist) |
Protected Attributes | |
| SVFIR * | svfir |
| AndersenBase * | pta |
| MHP * | mhp |
| LockAnalysis * | lockAnalysis |
| CallGraph * | callGraph |
| SVFG * | svfg |
| thread-aware VFG_pre (PTA/Single slicers; null for MTA) | |
MTASlicerBase - Base class for program slicing.
Holds the shared helper methods and data members used by both concrete slicers (the ILA and FSPTA stages of MultiStageSlicer).
Definition at line 121 of file MTASlicer.h.
| SVF::MTASlicerBase::MTASlicerBase | ( | SVFIR * | svfir, |
| AndersenBase * | pta, | ||
| MHP * | mhp, | ||
| LockAnalysis * | lockAnalysis, | ||
| SVFG * | svfg = nullptr |
||
| ) |
Definition at line 300 of file MTASlicer.cpp.
|
protected |
Add synchronization primitives and the control-flow anchors required by the sliced MHP/lock analyses.
Definition at line 625 of file MTASlicer.cpp.
|
protected |
Collect common pthread and mutex statements (shared by PTA and MTA slicing).
| sourceNodes | Complete ILA source set ([INIT] union [THREAD-VF]) |
Definition at line 595 of file MTASlicer.cpp.
|
protected |
Definition at line 534 of file MTASlicer.cpp.
|
protected |
Definition at line 481 of file MTASlicer.cpp.
|
protected |
The SVFG-node granularity of the data-dependence slice above: the set of VFG nodes reachable backward from the seeds. ThreadVF(VFG'_pre) is exactly the thread-aware edges whose both endpoints lie in this set, so ILA slicing uses it to restrict the [THREAD-VF] sources to surviving edges.
Definition at line 405 of file MTASlicer.cpp.
|
staticprotected |
Definition at line 455 of file MTASlicer.cpp.
|
protected |
Call-dependence expansion (used by MultiStageSlicer): take the kept functions of the given nodes, close upward over the call graph (every transitive caller), then add each kept function's entry/exit nodes and the call/ret nodes of every call site targeting it.
| nodes | Current set of ICFG nodes |
Definition at line 671 of file MTASlicer.cpp.
|
protected |
Definition at line 375 of file MTASlicer.cpp.
|
protected |
Definition at line 308 of file MTASlicer.cpp.
|
protected |
Definition at line 355 of file MTASlicer.cpp.
|
protected |
Project the retained VFG nodes (plus the seeds) onto their ICFG nodes.
Definition at line 464 of file MTASlicer.cpp.
|
protected |
Definition at line 132 of file MTASlicer.h.
|
protected |
Definition at line 131 of file MTASlicer.h.
|
protected |
Definition at line 130 of file MTASlicer.h.
|
protected |
Definition at line 129 of file MTASlicer.h.
|
protected |
thread-aware VFG_pre (PTA/Single slicers; null for MTA)
Definition at line 133 of file MTASlicer.h.
|
protected |
Definition at line 128 of file MTASlicer.h.