When doing linker-plugin based LTO, write LLVM bitcode obj-files

instead of embedding the bitcode into the regular object file.
This commit is contained in:
Michael Woerister 2018-07-06 13:58:25 +02:00
parent 65ff4141a5
commit 72df804d8e
3 changed files with 24 additions and 28 deletions

View file

@ -288,10 +288,10 @@ impl ModuleConfig {
self.no_builtins = no_builtins || sess.target.target.options.no_builtins;
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;
self.obj_is_bitcode = sess.target.target.options.obj_is_bitcode ||
sess.opts.debugging_opts.cross_lang_lto.enabled();
let embed_bitcode = sess.target.target.options.embed_bitcode ||
sess.opts.debugging_opts.embed_bitcode ||
sess.opts.debugging_opts.cross_lang_lto.embed_bitcode();
sess.opts.debugging_opts.embed_bitcode;
if embed_bitcode {
match sess.opts.optimize {
config::OptLevel::No |
@ -1365,7 +1365,7 @@ fn execute_work_item(cgcx: &CodegenContext,
// Don't run LTO passes when cross-lang LTO is enabled. The linker
// will do that for us in this case.
let needs_lto = needs_lto &&
!cgcx.opts.debugging_opts.cross_lang_lto.embed_bitcode();
!cgcx.opts.debugging_opts.cross_lang_lto.enabled();
if needs_lto {
Ok(WorkItemResult::NeedsLTO(module))