51template<
class SVFGGraph>
67 return v !=
nullptr ?
v->getICFGView() :
nullptr;
75template<
class SVFGGraph>
86 "FSMPTA: cluster-fs / plain-mapping-fs unsupported.");
94 if (
ThreadCallGraph* tcg = SVFUtil::dyn_cast<ThreadCallGraph>(ander->getCallGraph()))
96 tcg->updateCallGraph(ander);
97 tcg->updateJoinEdge(ander);
104 svfg = mtaSVFGBuilder.buildPTROnlySVFG(ander);
static const SlicedICFGView * mtaICFGSliceOf(SVFG *)
static AndersenWaveDiff * createAndersenWaveDiff(SVFIR *_pag)
Create an singleton instance directly instead of invoking llvm pass manager.
void processNode(NodeID nodeId) override
Restrict the solve to the graph's nodes (whole: no restriction).
void initialize() override
Initialise: build the thread-aware SVFG, then solve sparsely on it.
void processNode(NodeID nodeId) override
Handle various constraints.
static const Option< bool > PlainMappingFs
Use an explicitly plain mapping with flow-sensitive (not null).
static const Option< bool > ClusterAnder
Whether to stage Andersen's with Steensgaard and cluster based on that data.
static const Option< bool > ClusterFs
Whether to cluster FS or VFS with the auxiliary Andersen's.
virtual void initialize()
Initialization of a pointer analysis, including building symbol table and SVFIR etc.
llvm::IRBuilder IRBuilder