stage1: Store the specified code model in the LLVM module

This is needed for LTO builds to pick up the correct module.

Closes #9132
This commit is contained in:
LemonBoy 2021-06-16 12:14:50 +02:00 committed by Veikka Tuominen
parent b9e78593bb
commit ccb6e1627e
3 changed files with 11 additions and 0 deletions

View File

@ -9289,6 +9289,10 @@ static void init(CodeGen *g) {
ZigLLVMSetModulePIELevel(g->module);
}
if (g->code_model != CodeModelDefault) {
ZigLLVMSetModuleCodeModel(g->module, to_llvm_code_model(g));
}
const char *target_specific_cpu_args = "";
const char *target_specific_features = "";

View File

@ -969,6 +969,12 @@ void ZigLLVMSetModulePIELevel(LLVMModuleRef module) {
unwrap(module)->setPIELevel(PIELevel::Level::Large);
}
void ZigLLVMSetModuleCodeModel(LLVMModuleRef module, LLVMCodeModel code_model) {
bool JIT;
unwrap(module)->setCodeModel(*unwrap(code_model, JIT));
assert(!JIT);
}
static AtomicOrdering mapFromLLVMOrdering(LLVMAtomicOrdering Ordering) {
switch (Ordering) {
case LLVMAtomicOrderingNotAtomic: return AtomicOrdering::NotAtomic;

View File

@ -208,6 +208,7 @@ ZIG_EXTERN_C void ZigLLVMAddModuleDebugInfoFlag(LLVMModuleRef module);
ZIG_EXTERN_C void ZigLLVMAddModuleCodeViewFlag(LLVMModuleRef module);
ZIG_EXTERN_C void ZigLLVMSetModulePICLevel(LLVMModuleRef module);
ZIG_EXTERN_C void ZigLLVMSetModulePIELevel(LLVMModuleRef module);
ZIG_EXTERN_C void ZigLLVMSetModuleCodeModel(LLVMModuleRef module, LLVMCodeModel code_model);
ZIG_EXTERN_C void ZigLLVMSetCurrentDebugLocation(LLVMBuilderRef builder, int line, int column,
struct ZigLLVMDIScope *scope);