From 3ed6379192ceffdc1b85cd83c16e87cd477e2043 Mon Sep 17 00:00:00 2001 From: LemonBoy Date: Tue, 25 May 2021 19:41:41 +0200 Subject: [PATCH] stage1: Store target info in the LLVM module This is needed to let LLVM (or, better, libLTO) produce code using the target options specified by the user. Fix #8803 --- src/stage1/codegen.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/stage1/codegen.cpp b/src/stage1/codegen.cpp index 85b464baca..1a6f047ee1 100644 --- a/src/stage1/codegen.cpp +++ b/src/stage1/codegen.cpp @@ -589,6 +589,13 @@ static LLVMValueRef make_fn_llvm_value(CodeGen *g, ZigFn *fn) { // use the ABI alignment, which is fine. } + if (g->zig_target->llvm_cpu_name != nullptr) { + ZigLLVMAddFunctionAttr(llvm_fn, "target-cpu", g->zig_target->llvm_cpu_name); + } + if (g->zig_target->llvm_cpu_features != nullptr) { + ZigLLVMAddFunctionAttr(llvm_fn, "target-features", g->zig_target->llvm_cpu_features); + } + if (is_async) { addLLVMArgAttr(llvm_fn, 0, "nonnull"); } else {