diff options
Diffstat (limited to 'src/codegen')
| -rw-r--r-- | src/codegen/llvm.zig | 7 | ||||
| -rw-r--r-- | src/codegen/llvm/bindings.zig | 4 |
2 files changed, 7 insertions, 4 deletions
diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index eec46b8379..57ee1c8a67 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -1259,8 +1259,11 @@ pub const Object = struct { ); errdefer target_machine.dispose(); - if (pic) module.setModulePICLevel(); - if (comp.config.pie) module.setModulePIELevel(); + const large_pic = target_util.usesLargePIC(comp.root_mod.resolved_target.result); + + if (pic) module.setModulePICLevel(large_pic); + if (comp.config.pie) module.setModulePIELevel(large_pic); + if (code_model != .Default) module.setModuleCodeModel(code_model); if (comp.llvm_opt_bisect_limit >= 0) { diff --git a/src/codegen/llvm/bindings.zig b/src/codegen/llvm/bindings.zig index ebab18f68a..a5017568e5 100644 --- a/src/codegen/llvm/bindings.zig +++ b/src/codegen/llvm/bindings.zig @@ -53,10 +53,10 @@ pub const Module = opaque { extern fn LLVMDisposeModule(*Module) void; pub const setModulePICLevel = ZigLLVMSetModulePICLevel; - extern fn ZigLLVMSetModulePICLevel(module: *Module) void; + extern fn ZigLLVMSetModulePICLevel(module: *Module, big: bool) void; pub const setModulePIELevel = ZigLLVMSetModulePIELevel; - extern fn ZigLLVMSetModulePIELevel(module: *Module) void; + extern fn ZigLLVMSetModulePIELevel(module: *Module, large: bool) void; pub const setModuleCodeModel = ZigLLVMSetModuleCodeModel; extern fn ZigLLVMSetModuleCodeModel(module: *Module, code_model: CodeModel) void; |
