diff options
| author | gingerBill <bill@gingerbill.org> | 2021-04-11 18:59:54 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2021-04-11 18:59:54 +0100 |
| commit | e8bf1f2064da8e4c7811e4f8d94a8c05fd848efe (patch) | |
| tree | 17541f21a748bc06e9de8d97d83f9e8aa3db8a0a /src | |
| parent | 1156bd9dd05becd536feeed90f8d33dc4cc30078 (diff) | |
Minor fixes to platform checking code
Diffstat (limited to 'src')
| -rw-r--r-- | src/build_settings.cpp | 1 | ||||
| -rw-r--r-- | src/llvm_backend.cpp | 10 | ||||
| -rw-r--r-- | src/main.cpp | 26 |
3 files changed, 24 insertions, 13 deletions
diff --git a/src/build_settings.cpp b/src/build_settings.cpp index f55bc631e..6d32d1c8d 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -127,6 +127,7 @@ char const *odin_command_strings[32] = { "query", "doc", "version", + "test", }; diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index b6f2b2d68..eb4f3c300 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -8988,6 +8988,16 @@ lbValue lb_build_builtin_proc(lbProcedure *p, Ast *expr, TypeAndValue const &tv, ); GB_ASSERT(the_asm != nullptr); LLVMBuildCall2(p->builder, func_type, the_asm, nullptr, 0, ""); + } else if (build_context.metrics.arch == TargetArch_arm64) { + LLVMTypeRef func_type = LLVMFunctionType(LLVMVoidTypeInContext(p->module->ctx), nullptr, 0, false); + LLVMValueRef the_asm = LLVMGetInlineAsm(func_type, + cast(char *)"yield", 5, + cast(char *)"", 0, + /*HasSideEffects*/true, /*IsAlignStack*/false, + LLVMInlineAsmDialectATT + ); + GB_ASSERT(the_asm != nullptr); + LLVMBuildCall2(p->builder, func_type, the_asm, nullptr, 0, ""); } return {}; diff --git a/src/main.cpp b/src/main.cpp index e6748f170..b52f970a2 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -273,7 +273,7 @@ i32 linker_stage(lbGenerator *gen) { LIT(output_base), LIT(build_context.resource_filepath) ); - + if(result == 0) { result = system_exec_command_line_app("msvc-link", "\"%.*slink.exe\" %s \"%.*s.res\" -OUT:\"%.*s.%s\" %s " @@ -425,7 +425,7 @@ i32 linker_stage(lbGenerator *gen) { output_ext = substring(build_context.out_filepath, pos, build_context.out_filepath.len); } } - + result = system_exec_command_line_app("ld-link", "%s %s -o \"%.*s%.*s\" %s " " %s " @@ -467,7 +467,7 @@ i32 linker_stage(lbGenerator *gen) { #endif } - + return result; } #endif @@ -696,7 +696,7 @@ bool parse_build_flags(Array<String> args) { add_flag(&build_flags, BuildFlag_Collection, str_lit("collection"), BuildFlagParam_String, Command__does_check); add_flag(&build_flags, BuildFlag_Define, str_lit("define"), BuildFlagParam_String, Command__does_check, true); add_flag(&build_flags, BuildFlag_BuildMode, str_lit("build-mode"), BuildFlagParam_String, Command__does_build); // Commands_build is not used to allow for a better error message - add_flag(&build_flags, BuildFlag_Target, str_lit("target"), BuildFlagParam_String, Command__does_build); + add_flag(&build_flags, BuildFlag_Target, str_lit("target"), BuildFlagParam_String, Command__does_check); add_flag(&build_flags, BuildFlag_Debug, str_lit("debug"), BuildFlagParam_None, Command__does_check); add_flag(&build_flags, BuildFlag_DisableAssert, str_lit("disable-assert"), BuildFlagParam_None, Command__does_check); add_flag(&build_flags, BuildFlag_NoBoundsCheck, str_lit("no-bounds-check"), BuildFlagParam_None, Command__does_check); @@ -2349,11 +2349,11 @@ int main(int arg_count, char const **arg_ptr) { LIT(output_base), LIT(build_context.resource_filepath) ); - + if(result != 0) { return 1; } - + result = system_exec_command_line_app("msvc-link", "\"%.*slink.exe\" \"%.*s.obj\" \"%.*s.res\" -OUT:\"%.*s.%s\" %s " "/nologo /incremental:no /opt:ref /subsystem:%s " @@ -2368,11 +2368,11 @@ int main(int arg_count, char const **arg_ptr) { LIT(build_context.extra_linker_flags), lib_str ); - + if(result != 0) { return 1; } - + } else { i32 result = system_exec_command_line_app("msvc-link", "\"%.*slink.exe\" \"%.*s.obj\" -OUT:\"%.*s.%s\" %s " @@ -2388,7 +2388,7 @@ int main(int arg_count, char const **arg_ptr) { LIT(build_context.extra_linker_flags), lib_str ); - + if(result != 0) { return 1; } @@ -2409,7 +2409,7 @@ int main(int arg_count, char const **arg_ptr) { LIT(build_context.extra_linker_flags), lib_str ); - + if(result != 0) { return 1; } @@ -2547,11 +2547,11 @@ int main(int arg_count, char const **arg_ptr) { LIT(build_context.link_flags), LIT(build_context.extra_linker_flags), link_settings); - + if(result != 0) { return 1; } - + #if defined(GB_SYSTEM_OSX) if (build_context.ODIN_DEBUG) { // NOTE: macOS links DWARF symbols dynamically. Dsymutil will map the stubs in the exe @@ -2578,6 +2578,6 @@ int main(int arg_count, char const **arg_ptr) { #endif } } - + return 0; } |