mirror of
https://github.com/odin-lang/Odin.git
synced 2025-12-30 18:02:02 +00:00
Fix type switch debug information on -o:none
This commit is contained in:
@@ -1377,7 +1377,7 @@ gb_internal WORKER_TASK_PROC(lb_llvm_emit_worker_proc) {
|
||||
|
||||
gb_internal void lb_llvm_function_pass_per_function_internal(lbModule *module, lbProcedure *p, lbFunctionPassManagerKind pass_manager_kind = lbFunctionPassManager_default) {
|
||||
LLVMPassManagerRef pass_manager = module->function_pass_managers[pass_manager_kind];
|
||||
lb_run_function_pass_manager(pass_manager, p);
|
||||
lb_run_function_pass_manager(pass_manager, p, pass_manager_kind);
|
||||
}
|
||||
|
||||
gb_internal WORKER_TASK_PROC(lb_llvm_function_pass_per_module) {
|
||||
@@ -1911,7 +1911,7 @@ gb_internal lbProcedure *lb_create_main_procedure(lbModule *m, lbProcedure *star
|
||||
LLVMVerifyFunction(p->value, LLVMAbortProcessAction);
|
||||
}
|
||||
|
||||
lb_run_function_pass_manager(default_function_pass_manager, p);
|
||||
lb_run_function_pass_manager(default_function_pass_manager, p, lbFunctionPassManager_default);
|
||||
return p;
|
||||
}
|
||||
|
||||
|
||||
@@ -370,11 +370,21 @@ gb_internal void lb_run_remove_dead_instruction_pass(lbProcedure *p) {
|
||||
}
|
||||
|
||||
|
||||
gb_internal void lb_run_function_pass_manager(LLVMPassManagerRef fpm, lbProcedure *p) {
|
||||
gb_internal void lb_run_function_pass_manager(LLVMPassManagerRef fpm, lbProcedure *p, lbFunctionPassManagerKind pass_manager_kind) {
|
||||
if (p == nullptr) {
|
||||
return;
|
||||
}
|
||||
LLVMRunFunctionPassManager(fpm, p->value);
|
||||
switch (pass_manager_kind) {
|
||||
case lbFunctionPassManager_none:
|
||||
return;
|
||||
case lbFunctionPassManager_default:
|
||||
case lbFunctionPassManager_default_without_memcpy:
|
||||
if (build_context.optimization_level < 0) {
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
// NOTE(bill): LLVMAddDCEPass doesn't seem to be exported in the official DLL's for LLVM
|
||||
// which means we cannot rely upon it
|
||||
// This is also useful for read the .ll for debug purposes because a lot of instructions
|
||||
|
||||
Reference in New Issue
Block a user