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
This commit is contained in:
LemonBoy 2021-05-25 19:41:41 +02:00 committed by Andrew Kelley
parent 2f538f30fd
commit 3ed6379192

View File

@ -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 {