|
Static Value-Flow Analysis
|
Solver Utilize Hybrid Representation of Graph. More...
#include <CFLSolver.h>
Classes | |
| struct | TreeNode |
Public Attributes | |
| Map< NodeID, std::unordered_map< NodeID, TreeNode * > > | indMap |
Solver Utilize Hybrid Representation of Graph.
Hybrid graph representation for transitive relations The implementation is based on Yuxiang Lei, Yulei Sui, Shuo Ding, and Qirun Zhang. Taming Transitive Redundancy for Context-Free Language Reachability. ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications
Definition at line 295 of file CFLSolver.h.
Definition at line 348 of file CFLSolver.h.
|
inlinevirtual |
Destructor.
Definition at line 352 of file CFLSolver.h.
Definition at line 314 of file CFLSolver.cpp.
Definition at line 359 of file CFLSolver.cpp.
| POCRHybridSolver::TreeNode * POCRHybridSolver::addInd_h | ( | NodeID | src, |
| NodeID | dst | ||
| ) |
Get the node dst in tree(src)
Definition at line 332 of file CFLSolver.h.
|
virtual |
Initialize worklist.
add X(i,i) if not exist to E and to worklist
Foreach production X -> epsilon add X(i,i) if not exist to E and to worklist
Foreach production X -> epsilon add X(i,i) if not exist to E and to worklist
Reimplemented from SVF::POCRSolver.
Definition at line 284 of file CFLSolver.cpp.
add v into desc(x) as a child of u
Definition at line 338 of file CFLSolver.h.
Definition at line 326 of file CFLSolver.cpp.
Process CFLEdge.
For each production X -> Y add X(i,j) if not exist to E and to worklist
For each production X -> Y Z Foreach outgoing edge Z(j,k) from node j do add X(i,k) if not exist to E and to worklist
For each production X -> Z Y Foreach incoming edge Z(k,i) to node i do add X(k,j) if not exist to E and to worklist
Reimplemented from SVF::POCRSolver.
Definition at line 216 of file CFLSolver.cpp.
Definition at line 324 of file CFLSolver.h.