Rollup merge of #104105 - davidtwco:split-dwarf-lto, r=michaelwoerister
llvm: dwo only emitted when object code emitted Fixes #103932. `CompiledModule` should not think a DWARF object was emitted when a bitcode-only compilation has happened, this can confuse archive file creation (which expects to create an archive containing non-existent dwo files). r? ``````@michaelwoerister``````
This commit is contained in:
commit
e284780cf6
3 changed files with 211 additions and 18 deletions
|
@ -765,11 +765,21 @@ pub(crate) unsafe fn codegen(
|
|||
drop(handlers);
|
||||
}
|
||||
|
||||
// `.dwo` files are only emitted if:
|
||||
//
|
||||
// - Object files are being emitted (i.e. bitcode only or metadata only compilations will not
|
||||
// produce dwarf objects, even if otherwise enabled)
|
||||
// - Target supports Split DWARF
|
||||
// - Split debuginfo is enabled
|
||||
// - Split DWARF kind is `split` (i.e. debuginfo is split into `.dwo` files, not different
|
||||
// sections in the `.o` files).
|
||||
let dwarf_object_emitted = matches!(config.emit_obj, EmitObj::ObjectCode(_))
|
||||
&& cgcx.target_can_use_split_dwarf
|
||||
&& cgcx.split_debuginfo != SplitDebuginfo::Off
|
||||
&& cgcx.split_dwarf_kind == SplitDwarfKind::Split;
|
||||
Ok(module.into_compiled_module(
|
||||
config.emit_obj != EmitObj::None,
|
||||
cgcx.target_can_use_split_dwarf
|
||||
&& cgcx.split_debuginfo != SplitDebuginfo::Off
|
||||
&& cgcx.split_dwarf_kind == SplitDwarfKind::Split,
|
||||
dwarf_object_emitted,
|
||||
config.emit_bc,
|
||||
&cgcx.output_filenames,
|
||||
))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue