aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_opt.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-04-01 10:31:46 +0100
committergingerBill <bill@gingerbill.org>2021-04-01 10:31:46 +0100
commit491b282615d32ecc323163b586ac77ea384830ac (patch)
tree52a02452d0b2efb8d762617d4a72538deade4296 /src/llvm_backend_opt.cpp
parent54e6c507698bf68b040400783f05686cacaddff1 (diff)
Add extra optimization level pass -opt:2 in `lb_populate_module_pass_manager`
Diffstat (limited to 'src/llvm_backend_opt.cpp')
-rw-r--r--src/llvm_backend_opt.cpp17
1 files changed, 8 insertions, 9 deletions
diff --git a/src/llvm_backend_opt.cpp b/src/llvm_backend_opt.cpp
index cc2610ec5..31b940746 100644
--- a/src/llvm_backend_opt.cpp
+++ b/src/llvm_backend_opt.cpp
@@ -95,15 +95,6 @@ void lb_populate_module_pass_manager(LLVMTargetMachineRef target_machine, LLVMPa
// TODO(bill): Determine which opt definitions should exist in the first place
optimization_level = gb_clamp(optimization_level, 0, 2);
- if (optimization_level >= 2) {
- // NOTE(bill, 2021-03-29: use this causes invalid code generation)
- // LLVMPassManagerBuilderRef pmb = LLVMPassManagerBuilderCreate();
- // LLVMPassManagerBuilderPopulateModulePassManager(pmb, mpm);
- // LLVMPassManagerBuilderPopulateLTOPassManager(pmb, mpm, false, true);
- // LLVMPassManagerBuilderSetOptLevel(pmb, optimization_level);
- // LLVMPassManagerBuilderSetSizeLevel(pmb, optimization_level);
- }
-
LLVMAddAlwaysInlinerPass(mpm);
LLVMAddStripDeadPrototypesPass(mpm);
LLVMAddAnalysisPasses(target_machine, mpm);
@@ -114,6 +105,14 @@ void lb_populate_module_pass_manager(LLVMTargetMachineRef target_machine, LLVMPa
LLVMAddGlobalDCEPass(mpm);
+ if (optimization_level >= 2) {
+ // NOTE(bill, 2021-03-29: use this causes invalid code generation)
+ LLVMPassManagerBuilderRef pmb = LLVMPassManagerBuilderCreate();
+ LLVMPassManagerBuilderPopulateModulePassManager(pmb, mpm);
+ LLVMPassManagerBuilderPopulateLTOPassManager(pmb, mpm, false, true);
+ LLVMPassManagerBuilderSetOptLevel(pmb, optimization_level);
+ // LLVMPassManagerBuilderSetSizeLevel(pmb, optimization_level);
+ }
LLVMAddIPSCCPPass(mpm);
LLVMAddCalledValuePropagationPass(mpm);