diff options
| author | Michael Woerister <michaelwoerister@posteo> | 2019-02-01 15:15:43 +0100 |
|---|---|---|
| committer | Michael Woerister <michaelwoerister@posteo> | 2019-02-12 15:10:29 +0100 |
| commit | 04f425d2c31ea0ef022793a3fdcb8af84d471b86 (patch) | |
| tree | a57c5d535bf6cdbed732223013da3f9907ea6b78 /src/librustc_codegen_ssa | |
| parent | a54b5c7a645ead203d77e78245362f9e0f00dd3c (diff) | |
| download | rust-04f425d2c31ea0ef022793a3fdcb8af84d471b86.tar.gz rust-04f425d2c31ea0ef022793a3fdcb8af84d471b86.zip | |
Stabilize linker-plugin based LTO.
Diffstat (limited to 'src/librustc_codegen_ssa')
| -rw-r--r-- | src/librustc_codegen_ssa/back/linker.rs | 26 | ||||
| -rw-r--r-- | src/librustc_codegen_ssa/back/write.rs | 10 |
2 files changed, 18 insertions, 18 deletions
diff --git a/src/librustc_codegen_ssa/back/linker.rs b/src/librustc_codegen_ssa/back/linker.rs index 249715a7b6e..4b34bf704d5 100644 --- a/src/librustc_codegen_ssa/back/linker.rs +++ b/src/librustc_codegen_ssa/back/linker.rs @@ -13,7 +13,7 @@ use rustc::hir::def_id::{LOCAL_CRATE, CrateNum}; use rustc::middle::dependency_format::Linkage; use rustc::session::Session; use rustc::session::config::{self, CrateType, OptLevel, DebugInfo, - CrossLangLto, Lto}; + LinkerPluginLto, Lto}; use rustc::ty::TyCtxt; use rustc_target::spec::{LinkerFlavor, LldFlavor}; use serialize::{json, Encoder}; @@ -127,7 +127,7 @@ pub trait Linker { fn subsystem(&mut self, subsystem: &str); fn group_start(&mut self); fn group_end(&mut self); - fn cross_lang_lto(&mut self); + fn linker_plugin_lto(&mut self); // Should have been finalize(self), but we don't support self-by-value on trait objects (yet?). fn finalize(&mut self) -> Command; } @@ -183,7 +183,7 @@ impl<'a> GccLinker<'a> { } } - fn push_cross_lang_lto_args(&mut self, plugin_path: Option<&OsStr>) { + fn push_linker_plugin_lto_args(&mut self, plugin_path: Option<&OsStr>) { if let Some(plugin_path) = plugin_path { let mut arg = OsString::from("-plugin="); arg.push(plugin_path); @@ -454,16 +454,16 @@ impl<'a> Linker for GccLinker<'a> { } } - fn cross_lang_lto(&mut self) { - match self.sess.opts.debugging_opts.cross_lang_lto { - CrossLangLto::Disabled => { + fn linker_plugin_lto(&mut self) { + match self.sess.opts.cg.linker_plugin_lto { + LinkerPluginLto::Disabled => { // Nothing to do } - CrossLangLto::LinkerPluginAuto => { - self.push_cross_lang_lto_args(None); + LinkerPluginLto::LinkerPluginAuto => { + self.push_linker_plugin_lto_args(None); } - CrossLangLto::LinkerPlugin(ref path) => { - self.push_cross_lang_lto_args(Some(path.as_os_str())); + LinkerPluginLto::LinkerPlugin(ref path) => { + self.push_linker_plugin_lto_args(Some(path.as_os_str())); } } } @@ -697,7 +697,7 @@ impl<'a> Linker for MsvcLinker<'a> { fn group_start(&mut self) {} fn group_end(&mut self) {} - fn cross_lang_lto(&mut self) { + fn linker_plugin_lto(&mut self) { // Do nothing } } @@ -865,7 +865,7 @@ impl<'a> Linker for EmLinker<'a> { fn group_start(&mut self) {} fn group_end(&mut self) {} - fn cross_lang_lto(&mut self) { + fn linker_plugin_lto(&mut self) { // Do nothing } } @@ -1047,7 +1047,7 @@ impl<'a> Linker for WasmLd<'a> { fn group_start(&mut self) {} fn group_end(&mut self) {} - fn cross_lang_lto(&mut self) { + fn linker_plugin_lto(&mut self) { // Do nothing for now } } diff --git a/src/librustc_codegen_ssa/back/write.rs b/src/librustc_codegen_ssa/back/write.rs index eeb191b09e2..81952c9c820 100644 --- a/src/librustc_codegen_ssa/back/write.rs +++ b/src/librustc_codegen_ssa/back/write.rs @@ -126,7 +126,7 @@ impl ModuleConfig { self.time_passes = sess.time_passes(); self.inline_threshold = sess.opts.cg.inline_threshold; self.obj_is_bitcode = sess.target.target.options.obj_is_bitcode || - sess.opts.debugging_opts.cross_lang_lto.enabled(); + sess.opts.cg.linker_plugin_lto.enabled(); let embed_bitcode = sess.target.target.options.embed_bitcode || sess.opts.debugging_opts.embed_bitcode; if embed_bitcode { @@ -737,7 +737,7 @@ fn execute_optimize_work_item<B: ExtraBackendMethods>( // If the linker does LTO, we don't have to do it. Note that we // keep doing full LTO, if it is requested, as not to break the // assumption that the output will be a single module. - let linker_does_lto = cgcx.opts.debugging_opts.cross_lang_lto.enabled(); + let linker_does_lto = cgcx.opts.cg.linker_plugin_lto.enabled(); // When we're automatically doing ThinLTO for multi-codegen-unit // builds we don't actually want to LTO the allocator modules if @@ -1883,7 +1883,7 @@ pub fn pre_lto_bitcode_filename(module_name: &str) -> String { fn msvc_imps_needed(tcx: TyCtxt) -> bool { // This should never be true (because it's not supported). If it is true, // something is wrong with commandline arg validation. - assert!(!(tcx.sess.opts.debugging_opts.cross_lang_lto.enabled() && + assert!(!(tcx.sess.opts.cg.linker_plugin_lto.enabled() && tcx.sess.target.target.options.is_like_msvc && tcx.sess.opts.cg.prefer_dynamic)); @@ -1891,6 +1891,6 @@ fn msvc_imps_needed(tcx: TyCtxt) -> bool { tcx.sess.crate_types.borrow().iter().any(|ct| *ct == config::CrateType::Rlib) && // ThinLTO can't handle this workaround in all cases, so we don't // emit the `__imp_` symbols. Instead we make them unnecessary by disallowing - // dynamic linking when cross-language LTO is enabled. - !tcx.sess.opts.debugging_opts.cross_lang_lto.enabled() + // dynamic linking when linker plugin LTO is enabled. + !tcx.sess.opts.cg.linker_plugin_lto.enabled() } |
