diff options
| author | bjorn3 <17426603+bjorn3@users.noreply.github.com> | 2025-05-30 11:55:06 +0000 |
|---|---|---|
| committer | bjorn3 <17426603+bjorn3@users.noreply.github.com> | 2025-06-03 10:04:34 +0000 |
| commit | badabab01f15f156dbb6ce39df4a339006fbfae1 (patch) | |
| tree | fec9ba97cb1f0d7770f52316dfcab95e8bac589f /compiler/rustc_interface/src/passes.rs | |
| parent | c68032fd4c442d275f4daa571ba19c076106b490 (diff) | |
| download | rust-badabab01f15f156dbb6ce39df4a339006fbfae1.tar.gz rust-badabab01f15f156dbb6ce39df4a339006fbfae1.zip | |
Only borrow EncodedMetadata in codegen_crate
And move passing it to the linker to the driver code.
Diffstat (limited to 'compiler/rustc_interface/src/passes.rs')
| -rw-r--r-- | compiler/rustc_interface/src/passes.rs | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/compiler/rustc_interface/src/passes.rs b/compiler/rustc_interface/src/passes.rs index 5bc7559d29a..124f92f17dc 100644 --- a/compiler/rustc_interface/src/passes.rs +++ b/compiler/rustc_interface/src/passes.rs @@ -18,6 +18,7 @@ use rustc_hir::def_id::{LOCAL_CRATE, StableCrateId, StableCrateIdMap}; use rustc_hir::definitions::Definitions; use rustc_incremental::setup_dep_graph; use rustc_lint::{BufferedEarlyLint, EarlyCheckNode, LintStore, unerased_lint_store}; +use rustc_metadata::EncodedMetadata; use rustc_metadata::creader::CStore; use rustc_middle::arena::Arena; use rustc_middle::dep_graph::DepsType; @@ -1112,7 +1113,7 @@ fn analysis(tcx: TyCtxt<'_>, (): ()) { pub(crate) fn start_codegen<'tcx>( codegen_backend: &dyn CodegenBackend, tcx: TyCtxt<'tcx>, -) -> Box<dyn Any> { +) -> (Box<dyn Any>, EncodedMetadata) { // Hook for tests. if let Some((def_id, _)) = tcx.entry_fn(()) && tcx.has_attr(def_id, sym::rustc_delayed_bug_from_inside_query) @@ -1137,8 +1138,9 @@ pub(crate) fn start_codegen<'tcx>( let (metadata, need_metadata_module) = rustc_metadata::fs::encode_and_write_metadata(tcx); - let codegen = tcx.sess.time("codegen_crate", move || { - codegen_backend.codegen_crate(tcx, metadata, need_metadata_module) + let codegen = tcx.sess.time("codegen_crate", || { + codegen_backend + .codegen_crate(tcx, if need_metadata_module { Some(&metadata) } else { None }) }); info!("Post-codegen\n{:?}", tcx.debug_stats()); @@ -1149,7 +1151,7 @@ pub(crate) fn start_codegen<'tcx>( tcx.sess.code_stats.print_type_sizes(); } - codegen + (codegen, metadata) } /// Compute and validate the crate name. |
