Auto merge of #81118 - ojeda:metadata-obj, r=nagisa
Skip linking if it is not required This allows to use `--emit=metadata,obj` and other metadata + non-link combinations. Fixes #81117.
This commit is contained in:
commit
a4cbb44ae2
@ -74,7 +74,7 @@ pub fn link_binary<'a, B: ArchiveBuilder<'a>>(
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if outputs.outputs.should_codegen() {
|
if outputs.outputs.should_link() {
|
||||||
let tmpdir = TempFileBuilder::new()
|
let tmpdir = TempFileBuilder::new()
|
||||||
.prefix("rustc")
|
.prefix("rustc")
|
||||||
.tempdir()
|
.tempdir()
|
||||||
@ -123,9 +123,7 @@ pub fn link_binary<'a, B: ArchiveBuilder<'a>>(
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if sess.opts.output_types.should_codegen()
|
if sess.opts.output_types.should_link() && !preserve_objects_for_their_debuginfo(sess) {
|
||||||
&& !preserve_objects_for_their_debuginfo(sess)
|
|
||||||
{
|
|
||||||
for module in &codegen_results.modules {
|
for module in &codegen_results.modules {
|
||||||
remove_temps_from_module(module);
|
remove_temps_from_module(module);
|
||||||
}
|
}
|
||||||
|
@ -403,6 +403,20 @@ impl OutputTypes {
|
|||||||
OutputType::Metadata | OutputType::DepInfo => false,
|
OutputType::Metadata | OutputType::DepInfo => false,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Returns `true` if any of the output types require linking.
|
||||||
|
pub fn should_link(&self) -> bool {
|
||||||
|
self.0.keys().any(|k| match *k {
|
||||||
|
OutputType::Bitcode
|
||||||
|
| OutputType::Assembly
|
||||||
|
| OutputType::LlvmAssembly
|
||||||
|
| OutputType::Mir
|
||||||
|
| OutputType::Metadata
|
||||||
|
| OutputType::Object
|
||||||
|
| OutputType::DepInfo => false,
|
||||||
|
OutputType::Exe => true,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Use tree-based collections to cheaply get a deterministic `Hash` implementation.
|
/// Use tree-based collections to cheaply get a deterministic `Hash` implementation.
|
||||||
|
7
src/test/ui/emit-metadata-obj.rs
Normal file
7
src/test/ui/emit-metadata-obj.rs
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
// compile-flags:--emit=metadata,obj
|
||||||
|
// build-pass
|
||||||
|
|
||||||
|
// A test for the emission of metadata + obj and other metadata + non-link
|
||||||
|
// combinations. See issue #81117.
|
||||||
|
|
||||||
|
fn main() {}
|
Loading…
x
Reference in New Issue
Block a user