MCPcopy Create free account
hub / github.com/Samsung/UTopia / solve

Method solve

lib/indcallsolver/IndCallSolverMgr.cpp:19–46  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

17using namespace llvm;
18
19void IndCallSolverMgr::solve(Module &M) {
20 ModulePassManager MPM;
21 ModuleAnalysisManager MAM;
22 PassBuilder PB;
23 PB.registerModuleAnalyses(MAM);
24 // add customized CVP pass
25 MPM.addPass(CustomCVPPass());
26 MPM.run(M, MAM);
27
28 LLVMWalker Walker;
29 GlobalInitializerSolverHandler GISHandler;
30 TBAASimpleSolverHandler TSSHandler;
31 TestTypeVirtSolverHandler TTVSHandler;
32 TBAAVirtSolverHandler TVSHandler;
33 Walker.addHandler(&GISHandler);
34 Walker.addHandler(&TTVSHandler);
35 Walker.addHandler(&TSSHandler);
36 Walker.addHandler(&TVSHandler);
37 Walker.walk(M);
38 TTVSHandler.collect(M);
39 Solvers.emplace_back(
40 std::make_unique<TestTypeVirtSolver>(std::move(TTVSHandler)));
41 Solvers.emplace_back(
42 std::make_unique<TBAASimpleSolver>(std::move(TSSHandler)));
43 Solvers.emplace_back(
44 std::make_unique<GlobalInitializerSolver>(std::move(GISHandler)));
45 Solvers.emplace_back(std::make_unique<TBAAVirtSolver>(std::move(TVSHandler)));
46}
47
48const Function *IndCallSolverMgr::getCalledFunction(const CallBase &CB) const {
49 auto Result = getCalledFunctions(CB);

Callers 1

getCalledFunctionsMethod · 0.45

Calls 5

CustomCVPPassClass · 0.85
addHandlerMethod · 0.80
walkMethod · 0.80
collectMethod · 0.80
runMethod · 0.45

Tested by

no test coverage detected