aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2024-07-10 13:22:57 +0100
committerGitHub <noreply@github.com>2024-07-10 13:22:57 +0100
commit34c6868e7836cc24cca1c8fed84bfc5af20e8843 (patch)
tree356416949eac66091b1742c612dd6ddc4ad42cb1 /src/llvm_backend.cpp
parent38315f83dad49d89277fc3ba459b6e7c28ff098e (diff)
parent2d8d0dd8515a4598d6e027f28818614c117ae0c4 (diff)
Merge pull request #3895 from laytan/fix-optimization-mode-attribute
remove misleading @(optimization_mode) values and make "none" inhibit optimizations
Diffstat (limited to 'src/llvm_backend.cpp')
-rw-r--r--src/llvm_backend.cpp17
1 files changed, 5 insertions, 12 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index b0df17778..52661dfa7 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -1486,10 +1486,6 @@ gb_internal WORKER_TASK_PROC(lb_llvm_function_pass_per_module) {
lb_populate_function_pass_manager(m, m->function_pass_managers[lbFunctionPassManager_default], false, build_context.optimization_level);
lb_populate_function_pass_manager(m, m->function_pass_managers[lbFunctionPassManager_default_without_memcpy], true, build_context.optimization_level);
lb_populate_function_pass_manager_specific(m, m->function_pass_managers[lbFunctionPassManager_none], -1);
- lb_populate_function_pass_manager_specific(m, m->function_pass_managers[lbFunctionPassManager_minimal], 0);
- lb_populate_function_pass_manager_specific(m, m->function_pass_managers[lbFunctionPassManager_size], 1);
- lb_populate_function_pass_manager_specific(m, m->function_pass_managers[lbFunctionPassManager_speed], 2);
- lb_populate_function_pass_manager_specific(m, m->function_pass_managers[lbFunctionPassManager_aggressive], 3);
for (i32 i = 0; i < lbFunctionPassManager_COUNT; i++) {
LLVMFinalizeFunctionPassManager(m->function_pass_managers[i]);
@@ -1513,15 +1509,12 @@ gb_internal WORKER_TASK_PROC(lb_llvm_function_pass_per_module) {
if (p->entity && p->entity->kind == Entity_Procedure) {
switch (p->entity->Procedure.optimization_mode) {
case ProcedureOptimizationMode_None:
- case ProcedureOptimizationMode_Minimal:
- pass_manager_kind = lbFunctionPassManager_minimal;
+ pass_manager_kind = lbFunctionPassManager_none;
+ GB_ASSERT(lb_proc_has_attribute(p->module, p->value, "optnone"));
+ GB_ASSERT(lb_proc_has_attribute(p->module, p->value, "noinline"));
break;
- case ProcedureOptimizationMode_Size:
- pass_manager_kind = lbFunctionPassManager_size;
- lb_add_attribute_to_proc(p->module, p->value, "optsize");
- break;
- case ProcedureOptimizationMode_Speed:
- pass_manager_kind = lbFunctionPassManager_speed;
+ case ProcedureOptimizationMode_FavorSize:
+ GB_ASSERT(lb_proc_has_attribute(p->module, p->value, "optsize"));
break;
}
}