-
Notifications
You must be signed in to change notification settings - Fork 438
A simple driver example of SVF
Yulei Sui edited this page Mar 28, 2020
·
14 revisions
int main(int argc, char ** argv) {
int arg_num = 0;
char **arg_value = new char*[argc];
std::vector<std::string> moduleNameVec;
SVFUtil::processArguments(argc, argv, arg_num, arg_value, moduleNameVec);
cl::ParseCommandLineOptions(arg_num, arg_value,
"Whole Program Points-to Analysis\n");
SVFModule* svfModule = LLVMModuleSet::getLLVMModuleSet()->buildSVFModule(moduleNameVec);
AndersenWaveDiff* ander = AndersenWaveDiff::createAndersenWaveDiff(svfModule);
/// Query aliases
/// aliasQuery(ander,value1,value2);
/// Print points-to information
/// printPts(ander, value1);
/// Program Assignment Graph (PAG)
PAG* pag = ander->getPAG();
/// Call Graph
PTACallGraph callgraph = ander->getPTACallGraph();
/// ICFG
ICFG* icfg = pag->getICFG();
/// Sparse value-flow graph (SVFG)
SVFGBuilder svfBuilder;
SVFG* svfg = svfBuilder.buildFullSVFG(ander);
/// Collect uses of an LLVM Value
/// collectUsesOnVFG(svfg, value);
return 0;
}