35#ifndef INCLUDE_MTA_FSMPTA_H_
36#define INCLUDE_MTA_FSMPTA_H_
47class AndersenWaveDiff;
53template<
class SVFGGraph>
96 std::unique_ptr<SCCDetection<SVFGGraph>>
solveSCC;
void cacheRetainedEdge(SVFGEdge *edge)
static NodeBS buildExecutionDependencyClosure(SVFG *graph, AndersenBase *preAnalysis, NodeBS dependencyNodes)
static void enqueueSVFGNode(const SVFGNode *node, NodeBS &retained, std::deque< NodeID > &worklist)
void processNode(NodeID nodeId) override
Handle various constraints.
void finalize() override
Finalize analysis.
void buildRetainedAdjacency()
void updateConnectedNodes(const SVFGEdgeSetTy &edges) override
Update nodes connected during updating call graph.
Map< NodeID, std::vector< SVFGEdge * > > retainedOutEdges
std::unique_ptr< SCCDetection< SVFGGraph > > solveSCC
NodeStack & SCCDetect() override
SCC detection.
static void demandTopLevelPointer(const SVFVar *var, SVFG *graph, NodeBS &demandedVars, NodeBS &retained, std::deque< NodeID > &worklist)
AndersenWaveDiff * preAnalysis
static bool supportsCurrentConfiguration()
GenericGraphTraits< SVFGGraph > SolveGraphTraits
~FSMPTA() override=default
void initialize() override
Initialize analysis.
static void collectNodeInputDependencies(const SVFGNode *node, SVFG *graph, NodeBS &demandedVars, NodeBS &retained, std::deque< NodeID > &worklist)
Set< const SVFGEdge * > retainedEdgeSet
SVFG::SVFGEdgeSetTy SVFGEdgeSetTy
WorkList worklist
Worklist for resolution.
const GraphType graph()
Get/Set graph methods.
std::stack< NodeID > NodeStack
llvm::IRBuilder IRBuilder