From c5c46c507370e99a1c3459aaa3c6990ca6f6c549 Mon Sep 17 00:00:00 2001 From: Jeroen van Rijn Date: Sun, 3 Dec 2023 18:08:18 +0100 Subject: [PATCH] Silence writable string warnings when compiling Odin on Linux. --- src/llvm_backend.cpp | 18 +++++++++--------- src/main.cpp | 4 ++-- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp index effd9d28e..f61c297bd 100644 --- a/src/llvm_backend.cpp +++ b/src/llvm_backend.cpp @@ -21,8 +21,8 @@ #include "llvm_backend_stmt.cpp" #include "llvm_backend_proc.cpp" -char *get_default_microarchitecture() { - char * default_march = "generic"; +String get_default_microarchitecture() { + String default_march = str_lit("generic"); if (build_context.metrics.arch == TargetArch_amd64) { // NOTE(bill): x86-64-v2 is more than enough for everyone // @@ -32,9 +32,9 @@ char *get_default_microarchitecture() { // x86-64-v4: AVX512F, AVX512BW, AVX512CD, AVX512DQ, AVX512VL if (ODIN_LLVM_MINIMUM_VERSION_12) { if (build_context.metrics.os == TargetOs_freestanding) { - default_march = "x86-64"; + default_march = str_lit("x86-64"); } else { - default_march = "x86-64-v2"; + default_march = str_lit("x86-64-v2"); } } } @@ -2509,16 +2509,16 @@ gb_internal bool lb_generate_code(lbGenerator *gen) { code_mode = LLVMCodeModelKernel; } - char const *host_cpu_name = LLVMGetHostCPUName(); - char const *llvm_cpu = get_default_microarchitecture(); + String host_cpu_name = copy_string(permanent_allocator(), make_string_c(LLVMGetHostCPUName())); + String llvm_cpu = get_default_microarchitecture(); char const *llvm_features = ""; if (build_context.microarch.len != 0) { if (build_context.microarch == "native") { llvm_cpu = host_cpu_name; } else { - llvm_cpu = alloc_cstring(permanent_allocator(), build_context.microarch); + llvm_cpu = copy_string(permanent_allocator(), build_context.microarch); } - if (gb_strcmp(llvm_cpu, host_cpu_name) == 0) { + if (llvm_cpu == host_cpu_name) { llvm_features = LLVMGetHostCPUFeatures(); } } @@ -2578,7 +2578,7 @@ gb_internal bool lb_generate_code(lbGenerator *gen) { for (auto const &entry : gen->modules) { LLVMTargetMachineRef target_machine = LLVMCreateTargetMachine( - target, target_triple, llvm_cpu, + target, target_triple, (const char *)llvm_cpu.text, llvm_features, code_gen_level, reloc_mode, diff --git a/src/main.cpp b/src/main.cpp index e3c44fff4..14f7e84ec 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2544,6 +2544,7 @@ int main(int arg_count, char const **arg_ptr) { } } + String default_march = get_default_microarchitecture(); if (print_microarch_list) { if (build_context.microarch != "?") { gb_printf("Unknown microarchitecture '%.*s'.\n", LIT(build_context.microarch)); @@ -2554,8 +2555,6 @@ int main(int arg_count, char const **arg_ptr) { String march_list = target_microarch_list[build_context.metrics.arch]; String_Iterator it = {march_list, 0}; - String default_march = make_string_c(get_default_microarchitecture()); - for (;;) { String str = string_split_iterator(&it, ','); if (str == "") break; @@ -2574,6 +2573,7 @@ int main(int arg_count, char const **arg_ptr) { } if (build_context.show_debug_messages) { + debugf("Selected microarch: %.*s\n", LIT(default_march)); for_array(i, build_context.build_paths) { String build_path = path_to_string(heap_allocator(), build_context.build_paths[i]); debugf("build_paths[%ld]: %.*s\n", i, LIT(build_path));