diff options
| author | bjorn3 <17426603+bjorn3@users.noreply.github.com> | 2022-09-04 09:26:04 +0000 |
|---|---|---|
| committer | Jakub Beránek <berykubik@gmail.com> | 2022-10-23 13:43:07 +0200 |
| commit | 32238ce1e2219bfec46bc660091b2dcac0168148 (patch) | |
| tree | 87da7362e0c0ac60531beb67b1366de8f107d7dc /compiler/rustc_codegen_llvm/src | |
| parent | f7f17bf220265f0d36a015a14d5ce613b81a2822 (diff) | |
| download | rust-32238ce1e2219bfec46bc660091b2dcac0168148.tar.gz rust-32238ce1e2219bfec46bc660091b2dcac0168148.zip | |
Allow LTO for dylibs
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
| -rw-r--r-- | compiler/rustc_codegen_llvm/src/back/lto.rs | 17 |
1 files changed, 4 insertions, 13 deletions
diff --git a/compiler/rustc_codegen_llvm/src/back/lto.rs b/compiler/rustc_codegen_llvm/src/back/lto.rs index cef7bf1e803..fb58d5f7df2 100644 --- a/compiler/rustc_codegen_llvm/src/back/lto.rs +++ b/compiler/rustc_codegen_llvm/src/back/lto.rs @@ -32,8 +32,8 @@ pub const THIN_LTO_KEYS_INCR_COMP_FILE_NAME: &str = "thin-lto-past-keys.bin"; pub fn crate_type_allows_lto(crate_type: CrateType) -> bool { match crate_type { - CrateType::Executable | CrateType::Staticlib | CrateType::Cdylib => true, - CrateType::Dylib | CrateType::Rlib | CrateType::ProcMacro => false, + CrateType::Executable | CrateType::Dylib | CrateType::Staticlib | CrateType::Cdylib => true, + CrateType::Rlib | CrateType::ProcMacro => false, } } @@ -73,17 +73,6 @@ fn prepare_lto( // with either fat or thin LTO let mut upstream_modules = Vec::new(); if cgcx.lto != Lto::ThinLocal { - if cgcx.opts.cg.prefer_dynamic { - diag_handler - .struct_err("cannot prefer dynamic linking when performing LTO") - .note( - "only 'staticlib', 'bin', and 'cdylib' outputs are \ - supported with LTO", - ) - .emit(); - return Err(FatalError); - } - // Make sure we actually can run LTO for crate_type in cgcx.crate_types.iter() { if !crate_type_allows_lto(*crate_type) { @@ -92,6 +81,8 @@ fn prepare_lto( static library outputs", ); return Err(e); + } else if *crate_type == CrateType::Dylib { + diag_handler.warn("LTO with dylibs may not be as effective"); } } |
