From 8fb9db3deb931e46404a0c832fd914feb94e211f Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 8 Sep 2022 17:18:54 +0100 Subject: [PATCH 1/2] Revert build.bat --- build.bat | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/build.bat b/build.bat index e08bfc04b..06bc6c823 100644 --- a/build.bat +++ b/build.bat @@ -72,12 +72,10 @@ del *.ilk > NUL 2> NUL cl %compiler_settings% "src\main.cpp" "src\libtommath.cpp" /link %linker_settings% -OUT:%exe_name% if %errorlevel% neq 0 goto end_of_build -rem call build_vendor.bat -rem if %errorlevel% neq 0 goto end_of_build +call build_vendor.bat +if %errorlevel% neq 0 goto end_of_build -odin run examples/demo -vet -strict-style -rem odin check examples/all -rem odin run examples/bug +if %release_mode% EQU 0 odin run examples/demo del *.obj > NUL 2> NUL From 3fae8b49db54e2be6a61453cf3f5bbd452c58662 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Thu, 8 Sep 2022 17:27:13 +0100 Subject: [PATCH 2/2] Fix pointer cast of constant procedure values --- src/llvm_backend_const.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/llvm_backend_const.cpp b/src/llvm_backend_const.cpp index 5826dbaec..6a3b14471 100644 --- a/src/llvm_backend_const.cpp +++ b/src/llvm_backend_const.cpp @@ -381,12 +381,17 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value, bool allow_loc } if (value.kind == ExactValue_Procedure) { + lbValue res = {}; Ast *expr = unparen_expr(value.value_procedure); if (expr->kind == Ast_ProcLit) { - return lb_generate_anonymous_proc_lit(m, str_lit("_proclit"), expr); + res = lb_generate_anonymous_proc_lit(m, str_lit("_proclit"), expr); + + } else { + Entity *e = entity_from_expr(expr); + res = lb_find_procedure_value_from_entity(m, e); } - Entity *e = entity_from_expr(expr); - return lb_find_procedure_value_from_entity(m, e); + res.value = LLVMConstPointerCast(res.value, lb_type(m, res.type)); + return res; } bool is_local = allow_local && m->curr_procedure != nullptr; @@ -1141,13 +1146,7 @@ lbValue lb_const_value(lbModule *m, Type *type, ExactValue value, bool allow_loc } break; case ExactValue_Procedure: - { - Ast *expr = value.value_procedure; - GB_ASSERT(expr != nullptr); - if (expr->kind == Ast_ProcLit) { - return lb_generate_anonymous_proc_lit(m, str_lit("_proclit"), expr); - } - } + GB_PANIC("handled earlier"); break; case ExactValue_Typeid: return lb_typeid(m, value.value_typeid);