Skip to content

Commit f141acf

Browse files
committed
Move finalize_session_directory call out of cg_llvm
This causes it to be called even when passing `-Zno-link`, when linking fails or when neither `--emit link` nor `--emit metadata` is used.
1 parent 69f45cd commit f141acf

File tree

4 files changed

+8
-11
lines changed

4 files changed

+8
-11
lines changed

Diff for: compiler/rustc_codegen_llvm/src/lib.rs

-4
Original file line numberDiff line numberDiff line change
@@ -325,10 +325,6 @@ impl CodegenBackend for LlvmCodegenBackend {
325325
);
326326
});
327327

328-
// Now that we won't touch anything in the incremental compilation directory
329-
// any more, we can finalize it (which involves renaming it)
330-
rustc_incremental::finalize_session_directory(sess, codegen_results.crate_hash);
331-
332328
sess.time("llvm_dump_timing_file", || {
333329
if sess.opts.debugging_opts.llvm_time_trace {
334330
llvm_util::time_trace_profiler_finish("llvm_timings.json");

Diff for: compiler/rustc_codegen_ssa/src/back/write.rs

-5
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ use rustc_data_structures::fx::FxHashMap;
1313
use rustc_data_structures::profiling::SelfProfilerRef;
1414
use rustc_data_structures::profiling::TimingGuard;
1515
use rustc_data_structures::profiling::VerboseTimingGuard;
16-
use rustc_data_structures::svh::Svh;
1716
use rustc_data_structures::sync::Lrc;
1817
use rustc_errors::emitter::Emitter;
1918
use rustc_errors::{DiagnosticId, FatalError, Handler, Level};
@@ -414,7 +413,6 @@ pub fn start_async_codegen<B: ExtraBackendMethods>(
414413
let sess = tcx.sess;
415414

416415
let crate_name = tcx.crate_name(LOCAL_CRATE);
417-
let crate_hash = tcx.crate_hash(LOCAL_CRATE);
418416
let no_builtins = tcx.sess.contains_name(&tcx.hir().krate().item.attrs, sym::no_builtins);
419417
let is_compiler_builtins =
420418
tcx.sess.contains_name(&tcx.hir().krate().item.attrs, sym::compiler_builtins);
@@ -463,7 +461,6 @@ pub fn start_async_codegen<B: ExtraBackendMethods>(
463461
OngoingCodegen {
464462
backend,
465463
crate_name,
466-
crate_hash,
467464
metadata,
468465
windows_subsystem,
469466
linker_info,
@@ -1720,7 +1717,6 @@ impl SharedEmitterMain {
17201717
pub struct OngoingCodegen<B: ExtraBackendMethods> {
17211718
pub backend: B,
17221719
pub crate_name: Symbol,
1723-
pub crate_hash: Svh,
17241720
pub metadata: EncodedMetadata,
17251721
pub windows_subsystem: Option<String>,
17261722
pub linker_info: LinkerInfo,
@@ -1766,7 +1762,6 @@ impl<B: ExtraBackendMethods> OngoingCodegen<B> {
17661762
(
17671763
CodegenResults {
17681764
crate_name: self.crate_name,
1769-
crate_hash: self.crate_hash,
17701765
metadata: self.metadata,
17711766
windows_subsystem: self.windows_subsystem,
17721767
linker_info: self.linker_info,

Diff for: compiler/rustc_codegen_ssa/src/lib.rs

-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ extern crate tracing;
2121
extern crate rustc_middle;
2222

2323
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
24-
use rustc_data_structures::svh::Svh;
2524
use rustc_data_structures::sync::Lrc;
2625
use rustc_hir::def_id::CrateNum;
2726
use rustc_hir::LangItem;
@@ -134,7 +133,6 @@ pub struct CodegenResults {
134133
pub modules: Vec<CompiledModule>,
135134
pub allocator_module: Option<CompiledModule>,
136135
pub metadata_module: Option<CompiledModule>,
137-
pub crate_hash: Svh,
138136
pub metadata: rustc_middle::middle::cstore::EncodedMetadata,
139137
pub windows_subsystem: Option<String>,
140138
pub linker_info: back::linker::LinkerInfo,

Diff for: compiler/rustc_interface/src/queries.rs

+8
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use crate::passes::{self, BoxedResolver, QueryContext};
33

44
use rustc_ast as ast;
55
use rustc_codegen_ssa::traits::CodegenBackend;
6+
use rustc_data_structures::svh::Svh;
67
use rustc_data_structures::sync::{Lrc, OnceCell, WorkerLocal};
78
use rustc_errors::ErrorReported;
89
use rustc_hir::def_id::LOCAL_CRATE;
@@ -331,6 +332,7 @@ impl<'tcx> Queries<'tcx> {
331332
pub fn linker(&'tcx self) -> Result<Linker> {
332333
let dep_graph = self.dep_graph()?;
333334
let prepare_outputs = self.prepare_outputs()?;
335+
let crate_hash = self.global_ctxt()?.peek_mut().enter(|tcx| tcx.crate_hash(LOCAL_CRATE));
334336
let ongoing_codegen = self.ongoing_codegen()?;
335337

336338
let sess = self.session().clone();
@@ -340,6 +342,7 @@ impl<'tcx> Queries<'tcx> {
340342
sess,
341343
dep_graph: dep_graph.peek().clone(),
342344
prepare_outputs: prepare_outputs.take(),
345+
crate_hash,
343346
ongoing_codegen: ongoing_codegen.take(),
344347
codegen_backend,
345348
})
@@ -350,6 +353,7 @@ pub struct Linker {
350353
sess: Lrc<Session>,
351354
dep_graph: DepGraph,
352355
prepare_outputs: OutputFilenames,
356+
crate_hash: Svh,
353357
ongoing_codegen: Box<dyn Any>,
354358
codegen_backend: Lrc<Box<dyn CodegenBackend>>,
355359
}
@@ -370,6 +374,10 @@ impl Linker {
370374
let prof = self.sess.prof.clone();
371375
prof.generic_activity("drop_dep_graph").run(move || drop(dep_graph));
372376

377+
// Now that we won't touch anything in the incremental compilation directory
378+
// any more, we can finalize it (which involves renaming it)
379+
rustc_incremental::finalize_session_directory(&self.sess, self.crate_hash);
380+
373381
if !self
374382
.sess
375383
.opts

0 commit comments

Comments
 (0)