Merge pull request #1794 from mollstam/fix/optnone-procs

Emit LLVM IR to never optimize/inline procs when building debug and -o:minimal
This commit is contained in:
gingerBill
2022-05-18 10:27:16 +01:00
committed by GitHub
+9 -4
View File
@@ -139,6 +139,10 @@ lbProcedure *lb_create_procedure(lbModule *m, Entity *entity, bool ignore_body)
lb_add_attribute_to_proc(m, p->value, "noredzone"); lb_add_attribute_to_proc(m, p->value, "noredzone");
} }
if (build_context.optimization_level == 0 && build_context.ODIN_DEBUG) {
lb_add_attribute_to_proc(m, p->value, "noinline");
lb_add_attribute_to_proc(m, p->value, "optnone");
} else {
switch (p->inlining) { switch (p->inlining) {
case ProcInlining_inline: case ProcInlining_inline:
lb_add_attribute_to_proc(m, p->value, "alwaysinline"); lb_add_attribute_to_proc(m, p->value, "alwaysinline");
@@ -148,10 +152,6 @@ lbProcedure *lb_create_procedure(lbModule *m, Entity *entity, bool ignore_body)
break; break;
} }
if (entity->flags & EntityFlag_Cold) {
lb_add_attribute_to_proc(m, p->value, "cold");
}
switch (entity->Procedure.optimization_mode) { switch (entity->Procedure.optimization_mode) {
case ProcedureOptimizationMode_None: case ProcedureOptimizationMode_None:
lb_add_attribute_to_proc(m, p->value, "optnone"); lb_add_attribute_to_proc(m, p->value, "optnone");
@@ -167,6 +167,11 @@ lbProcedure *lb_create_procedure(lbModule *m, Entity *entity, bool ignore_body)
lb_add_attribute_to_proc(m, p->value, "optsize"); lb_add_attribute_to_proc(m, p->value, "optsize");
break; break;
} }
}
if (entity->flags & EntityFlag_Cold) {
lb_add_attribute_to_proc(m, p->value, "cold");
}
lbValue proc_value = {p->value, p->type}; lbValue proc_value = {p->value, p->type};
lb_add_entity(m, entity, proc_value); lb_add_entity(m, entity, proc_value);