From 443f99fca02365c8d4cbc734d290d4b0cc7c3ae6 Mon Sep 17 00:00:00 2001 From: Michael Woerister Date: Mon, 16 Apr 2018 16:25:29 +0200 Subject: [PATCH] Add -Z cross-lang-lto flag in order to support linker-based LTO. --- src/librustc/session/config.rs | 2 ++ src/librustc_trans/back/write.rs | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/librustc/session/config.rs b/src/librustc/session/config.rs index 59b40e9e2dc5..574a8992ad15 100644 --- a/src/librustc/session/config.rs +++ b/src/librustc/session/config.rs @@ -1293,6 +1293,8 @@ options! {DebuggingOptions, DebuggingSetter, basic_debugging_options, "make the current crate share its generic instantiations"), chalk: bool = (false, parse_bool, [TRACKED], "enable the experimental Chalk-based trait solving engine"), + cross_lang_lto: bool = (false, parse_bool, [TRACKED], + "generate build artifacts that are compatible with linker-based LTO."), } pub fn default_lib_output() -> CrateType { diff --git a/src/librustc_trans/back/write.rs b/src/librustc_trans/back/write.rs index a14c98acb2dc..aeed81fa0594 100644 --- a/src/librustc_trans/back/write.rs +++ b/src/librustc_trans/back/write.rs @@ -293,7 +293,8 @@ impl ModuleConfig { self.inline_threshold = sess.opts.cg.inline_threshold; self.obj_is_bitcode = sess.target.target.options.obj_is_bitcode; let embed_bitcode = sess.target.target.options.embed_bitcode || - sess.opts.debugging_opts.embed_bitcode; + sess.opts.debugging_opts.embed_bitcode || + sess.opts.debugging_opts.cross_lang_lto; if embed_bitcode { match sess.opts.optimize { config::OptLevel::No |