aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-04-11 18:59:54 +0100
committergingerBill <bill@gingerbill.org>2021-04-11 18:59:54 +0100
commite8bf1f2064da8e4c7811e4f8d94a8c05fd848efe (patch)
tree17541f21a748bc06e9de8d97d83f9e8aa3db8a0a /src
parent1156bd9dd05becd536feeed90f8d33dc4cc30078 (diff)
Minor fixes to platform checking code
Diffstat (limited to 'src')
-rw-r--r--src/build_settings.cpp1
-rw-r--r--src/llvm_backend.cpp10
-rw-r--r--src/main.cpp26
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;
}