Definition at line 251 of file VersionedFlowSensitive.h.
 
◆ NodeData
◆ detectSCCs()
Determines the strongly connected components of svfg following only edges labelled with object. partOf[n] = scc means nodes n is part of SCC scc. startingNodes contains the nodes to begin the search from. After completion, footprint will contain all edges which object appears on (as reached through the algorithm described above) sorted.
This is not a general SCC detection but specifically for versioning, so edges to delta nodes are skipped as they are prelabelled. Edges to stores are also skipped to as they yield a new version (they cannot be part of an SCC containing more than themselves). Skipped edges still form part of the footprint. 
Definition at line 1110 of file VersionedFlowSensitive.cpp.
 1115{
 1119 
 1121    std::stack<const SVFGNode *> 
stack;
 
 1122 
 1125 
 1127    {
 1129        {
 1131        }
 1132    }
 1133 
 1134    
 1136 
 1138}
u32_t getTotalNodeNum() const
Get total number of node/edge.
 
static void visit(VersionedFlowSensitive *vfs, const NodeID object, std::vector< int > &partOf, std::vector< const IndirectSVFGEdge * > &footprint, std::vector< NodeData > &nodeData, std::stack< const SVFGNode * > &stack, int &index, int ¤tSCC, const SVFGNode *v)
Called by detectSCCs then called recursively.
 
llvm::IRBuilder IRBuilder
 
 
 
 
◆ visit()
Called by detectSCCs then called recursively. 
Definition at line 1140 of file VersionedFlowSensitive.cpp.
 1149{
 1151 
 1155 
 1158 
 1159    for (
const SVFGEdge *e : 
v->getOutEdges())
 
 1160    {
 1163 
 1166 
 1167        
 1168        if (!
ie->getPointsTo().test(
object)) 
continue;
 
 1169 
 1170        
 1171        
 1173 
 1174        
 1175        
 1176        
 1178 
 1180        {
 1183        }
 1185        {
 1187        }
 1188    }
 1189 
 1191    {
 1193        do
 1194        {
 1200        }
 1202 
 1203        
 1205    }
 1206}
NodeID getId() const
Get ID.
 
 
 
 
The documentation for this class was generated from the following files: