65 argc,
argv,
"MTA Analysis",
"[options] <input-bitcode...>");
static std::vector< std::string > parseOptions(int argc, char *argv[], std::string description, std::string callFormat)
ConstraintGraph * getConstraintGraph()
Get constraint graph.
static AndersenWaveDiff * createAndersenWaveDiff(SVFIR *_pag)
Create an singleton instance directly instead of invoking llvm pass manager.
static void releaseAndersenWaveDiff()
void dump(const std::string &filename)
Dump the graph.
void dump(std::string name)
Dump graph into dot file.
void dump(const std::string &file, bool simple=false)
Dump graph into dot file.
void updateCallGraph(CallGraph *callgraph)
update ICFG for indirect calls
static void releaseLLVMModuleSet()
static void buildSVFModule(Module &mod)
virtual bool runOnModule(SVFIR *module)
We start the pass here.
static const Option< bool > DumpMTAGraphs
MTA: dump the pointer-analysis and thread call graphs (ptacg/tcg.dot), Default: false.
static const Option< bool > MTFlowSensitive
MTA: flow-sensitive (FSAM) main analysis; false = Andersen flow-insensitive base, Default: true.
CallGraph * getCallGraph() const
Return call graph.
static void releaseSVFIR()
bool runOnModule(SVFIR *pag, AndersenWaveDiff &preAnalysis)
Run the slicing pipeline with its prepared Andersen pre-analysis.
int main(int argc, char **argv)
llvm::IRBuilder IRBuilder