|
Static Value-Flow Analysis
|
#include <MTASlicer.h>
Public Member Functions | |
| MTASlicerBase (SVFIR *svfIr, AndersenBase *pta, MHP *mhp, LockAnalysis *lockAnalysis, SVFG *vfg=nullptr) | |
| virtual | ~MTASlicerBase () |
Protected Attributes | |
| SVFIR * | svfIr |
| AndersenBase * | pta |
| MHP * | mhp |
| LockAnalysis * | lockAnalysis |
| CallGraph * | callGraph |
| SVFG * | vfg |
| 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 119 of file MTASlicer.h.
| SVF::MTASlicerBase::MTASlicerBase | ( | SVFIR * | svfIr, |
| AndersenBase * | pta, | ||
| MHP * | mhp, | ||
| LockAnalysis * | lockAnalysis, | ||
| SVFG * | vfg = nullptr |
||
| ) |
Definition at line 410 of file MTASlicer.cpp.
|
virtual |
Definition at line 417 of file MTASlicer.cpp.
|
protected |
Definition at line 747 of file MTASlicer.cpp.
|
protected |
Collect common pthread and mutex statements (shared by PTA and MTA slicing).
| vulnerableStatements | Set of vulnerable statements |
Definition at line 700 of file MTASlicer.cpp.
|
protected |
Definition at line 643 of file MTASlicer.cpp.
|
protected |
Definition at line 583 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 507 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 815 of file MTASlicer.cpp.
|
protected |
Definition at line 479 of file MTASlicer.cpp.
|
protected |
Definition at line 423 of file MTASlicer.cpp.
|
protected |
Definition at line 460 of file MTASlicer.cpp.
|
protected |
Perform dual slicing (temporal slicing): filter statements based on control flow and parallel execution. This is shared by both PTA and MTA slicing.
| slicedNodes | Set of statements from statement-level slicing |
Definition at line 781 of file MTASlicer.cpp.
|
protected |
Paper-faithful (ยง4.3) data-dependence slice over the thread-aware SVFG (VFG_pre): seed from the value-flow nodes of the given statements and backward-traverse every value-flow edge – direct (top-level def-use), indirect (address-taken / MemSSA def-use), and thread-aware interference. Returns the kept ICFG nodes. This is the single dependence model used by the FSPTA stage.
Definition at line 576 of file MTASlicer.cpp.
|
protected |
Project the retained VFG nodes (plus the seeds) onto their ICFG nodes.
Definition at line 563 of file MTASlicer.cpp.
|
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 |
Definition at line 128 of file MTASlicer.h.
|
protected |
Definition at line 127 of file MTASlicer.h.
|
protected |
thread-aware VFG_pre (PTA/Single slicers; null for MTA)
Definition at line 132 of file MTASlicer.h.