MCPcopy Create free account
hub / github.com/AliveToolkit/alive2 / optimize_module

Function optimize_module

llvm_util/llvm_optimizer.cpp:12–45  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10namespace llvm_util {
11
12string optimize_module(llvm::Module *M, string_view optArgs) {
13 llvm::LoopAnalysisManager LAM;
14 llvm::FunctionAnalysisManager FAM;
15 llvm::CGSCCAnalysisManager CGAM;
16 llvm::ModuleAnalysisManager MAM;
17 llvm::PassBuilder PB;
18
19 llvm::ModulePassManager MPM;
20
21 PB.registerModuleAnalyses(MAM);
22 PB.registerCGSCCAnalyses(CGAM);
23 PB.registerFunctionAnalyses(FAM);
24 PB.registerLoopAnalyses(LAM);
25 PB.crossRegisterProxies(LAM, FAM, CGAM, MAM);
26
27 if (optArgs == "O3") {
28 MPM = PB.buildPerModuleDefaultPipeline(OptimizationLevel::O3);
29 } else if (optArgs == "O2") {
30 MPM = PB.buildPerModuleDefaultPipeline(OptimizationLevel::O2);
31 } else if (optArgs == "O1") {
32 MPM = PB.buildPerModuleDefaultPipeline(OptimizationLevel::O1);
33 } else if (optArgs == "O0") {
34 MPM = PB.buildPerModuleDefaultPipeline(OptimizationLevel::O0);
35 } else if (optArgs == "Os") {
36 MPM = PB.buildPerModuleDefaultPipeline(OptimizationLevel::Os);
37 } else if (optArgs == "Oz") {
38 MPM = PB.buildPerModuleDefaultPipeline(OptimizationLevel::Oz);
39 } else {
40 if (auto Err = PB.parsePassPipeline(MPM, optArgs))
41 return toString(std::move(Err));
42 }
43 MPM.run(*M, MAM);
44 return {};
45}
46
47}

Callers 2

mainFunction · 0.85
mainFunction · 0.85

Calls 2

toStringFunction · 0.85
runMethod · 0.45

Tested by

no test coverage detected