diff options
| author | bors <bors@rust-lang.org> | 2023-03-12 06:48:30 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-03-12 06:48:30 +0000 |
| commit | 150cb381471533050751111e5faf1d9f05c02f77 (patch) | |
| tree | 3180ee8fcea1444fdcfe2038f48bf3e06c661799 /compiler/rustc_interface/src | |
| parent | 501ad021b9a4fb2cd6a39e0302d22f169f6166b0 (diff) | |
| parent | 9570023ce13d0b2fb3d5b79ce9db57e6d28c31d1 (diff) | |
| download | rust-150cb381471533050751111e5faf1d9f05c02f77.tar.gz rust-150cb381471533050751111e5faf1d9f05c02f77.zip | |
Auto merge of #108794 - nnethercote:avoid-unnecessary-hashing, r=cjgillot
Avoid unnecessary hashing I noticed some stable hashing being done in a non-incremental build. It turns out that some of this is necessary to compute the crate hash, but some of it is not. Removing the unnecessary hashing is a perf win. r? `@cjgillot`
Diffstat (limited to 'compiler/rustc_interface/src')
| -rw-r--r-- | compiler/rustc_interface/src/queries.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/compiler/rustc_interface/src/queries.rs b/compiler/rustc_interface/src/queries.rs index a96cc95a384..58ad044b399 100644 --- a/compiler/rustc_interface/src/queries.rs +++ b/compiler/rustc_interface/src/queries.rs @@ -284,7 +284,11 @@ impl<'tcx> Queries<'tcx> { let codegen_backend = self.codegen_backend().clone(); let (crate_hash, prepare_outputs, dep_graph) = self.global_ctxt()?.enter(|tcx| { - (tcx.crate_hash(LOCAL_CRATE), tcx.output_filenames(()).clone(), tcx.dep_graph.clone()) + ( + if tcx.sess.needs_crate_hash() { Some(tcx.crate_hash(LOCAL_CRATE)) } else { None }, + tcx.output_filenames(()).clone(), + tcx.dep_graph.clone(), + ) }); let ongoing_codegen = self.ongoing_codegen()?.steal(); @@ -308,7 +312,8 @@ pub struct Linker { // compilation outputs dep_graph: DepGraph, prepare_outputs: Arc<OutputFilenames>, - crate_hash: Svh, + // Only present when incr. comp. is enabled. + crate_hash: Option<Svh>, ongoing_codegen: Box<dyn Any>, } |
