diff options
| author | bors <bors@rust-lang.org> | 2021-10-01 17:17:43 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-10-01 17:17:43 +0000 |
| commit | b6057bf7b7ee7c58e6a39ead02eaa13b75f908c2 (patch) | |
| tree | 0e8e802c3a63ccb92171d9385c718eaa16340de5 /compiler/rustc_codegen_llvm/src/context.rs | |
| parent | ed937594d3912ced11f6f35a90bb8bf591909d2a (diff) | |
| parent | 534946cba101325387a213d37dd9a1d30f08660c (diff) | |
| download | rust-b6057bf7b7ee7c58e6a39ead02eaa13b75f908c2.tar.gz rust-b6057bf7b7ee7c58e6a39ead02eaa13b75f908c2.zip | |
Auto merge of #89435 - Manishearth:rollup-vh2ih7k, r=Manishearth
Rollup of 6 pull requests Successful merges: - #87868 (Added -Z randomize-layout flag) - #88820 (Add `pie` as another `relocation-model` value) - #89029 (feat(rustc_parse): recover from pre-RFC-2000 const generics syntax) - #89322 (Reapply "Remove optimization_fuel_crate from Session") - #89340 (Improve error message for `printf`-style format strings) - #89415 (Correct caller/callsite confusion in inliner message) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/rustc_codegen_llvm/src/context.rs')
| -rw-r--r-- | compiler/rustc_codegen_llvm/src/context.rs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/compiler/rustc_codegen_llvm/src/context.rs b/compiler/rustc_codegen_llvm/src/context.rs index 52a12b2fd81..7bdbec11d60 100644 --- a/compiler/rustc_codegen_llvm/src/context.rs +++ b/compiler/rustc_codegen_llvm/src/context.rs @@ -195,11 +195,14 @@ pub unsafe fn create_module( let llvm_target = SmallCStr::new(&sess.target.llvm_target); llvm::LLVMRustSetNormalizedTarget(llmod, llvm_target.as_ptr()); - if sess.relocation_model() == RelocModel::Pic { + let reloc_model = sess.relocation_model(); + if matches!(reloc_model, RelocModel::Pic | RelocModel::Pie) { llvm::LLVMRustSetModulePICLevel(llmod); // PIE is potentially more effective than PIC, but can only be used in executables. // If all our outputs are executables, then we can relax PIC to PIE. - if sess.crate_types().iter().all(|ty| *ty == CrateType::Executable) { + if reloc_model == RelocModel::Pie + || sess.crate_types().iter().all(|ty| *ty == CrateType::Executable) + { llvm::LLVMRustSetModulePIELevel(llmod); } } |
