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.
This commit is contained in:
parent
69f45cd965
commit
f141acf067
4 changed files with 8 additions and 11 deletions
|
@ -325,10 +325,6 @@ impl CodegenBackend for LlvmCodegenBackend {
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Now that we won't touch anything in the incremental compilation directory
|
|
||||||
// any more, we can finalize it (which involves renaming it)
|
|
||||||
rustc_incremental::finalize_session_directory(sess, codegen_results.crate_hash);
|
|
||||||
|
|
||||||
sess.time("llvm_dump_timing_file", || {
|
sess.time("llvm_dump_timing_file", || {
|
||||||
if sess.opts.debugging_opts.llvm_time_trace {
|
if sess.opts.debugging_opts.llvm_time_trace {
|
||||||
llvm_util::time_trace_profiler_finish("llvm_timings.json");
|
llvm_util::time_trace_profiler_finish("llvm_timings.json");
|
||||||
|
|
|
@ -13,7 +13,6 @@ use rustc_data_structures::fx::FxHashMap;
|
||||||
use rustc_data_structures::profiling::SelfProfilerRef;
|
use rustc_data_structures::profiling::SelfProfilerRef;
|
||||||
use rustc_data_structures::profiling::TimingGuard;
|
use rustc_data_structures::profiling::TimingGuard;
|
||||||
use rustc_data_structures::profiling::VerboseTimingGuard;
|
use rustc_data_structures::profiling::VerboseTimingGuard;
|
||||||
use rustc_data_structures::svh::Svh;
|
|
||||||
use rustc_data_structures::sync::Lrc;
|
use rustc_data_structures::sync::Lrc;
|
||||||
use rustc_errors::emitter::Emitter;
|
use rustc_errors::emitter::Emitter;
|
||||||
use rustc_errors::{DiagnosticId, FatalError, Handler, Level};
|
use rustc_errors::{DiagnosticId, FatalError, Handler, Level};
|
||||||
|
@ -414,7 +413,6 @@ pub fn start_async_codegen<B: ExtraBackendMethods>(
|
||||||
let sess = tcx.sess;
|
let sess = tcx.sess;
|
||||||
|
|
||||||
let crate_name = tcx.crate_name(LOCAL_CRATE);
|
let crate_name = tcx.crate_name(LOCAL_CRATE);
|
||||||
let crate_hash = tcx.crate_hash(LOCAL_CRATE);
|
|
||||||
let no_builtins = tcx.sess.contains_name(&tcx.hir().krate().item.attrs, sym::no_builtins);
|
let no_builtins = tcx.sess.contains_name(&tcx.hir().krate().item.attrs, sym::no_builtins);
|
||||||
let is_compiler_builtins =
|
let is_compiler_builtins =
|
||||||
tcx.sess.contains_name(&tcx.hir().krate().item.attrs, sym::compiler_builtins);
|
tcx.sess.contains_name(&tcx.hir().krate().item.attrs, sym::compiler_builtins);
|
||||||
|
@ -463,7 +461,6 @@ pub fn start_async_codegen<B: ExtraBackendMethods>(
|
||||||
OngoingCodegen {
|
OngoingCodegen {
|
||||||
backend,
|
backend,
|
||||||
crate_name,
|
crate_name,
|
||||||
crate_hash,
|
|
||||||
metadata,
|
metadata,
|
||||||
windows_subsystem,
|
windows_subsystem,
|
||||||
linker_info,
|
linker_info,
|
||||||
|
@ -1720,7 +1717,6 @@ impl SharedEmitterMain {
|
||||||
pub struct OngoingCodegen<B: ExtraBackendMethods> {
|
pub struct OngoingCodegen<B: ExtraBackendMethods> {
|
||||||
pub backend: B,
|
pub backend: B,
|
||||||
pub crate_name: Symbol,
|
pub crate_name: Symbol,
|
||||||
pub crate_hash: Svh,
|
|
||||||
pub metadata: EncodedMetadata,
|
pub metadata: EncodedMetadata,
|
||||||
pub windows_subsystem: Option<String>,
|
pub windows_subsystem: Option<String>,
|
||||||
pub linker_info: LinkerInfo,
|
pub linker_info: LinkerInfo,
|
||||||
|
@ -1766,7 +1762,6 @@ impl<B: ExtraBackendMethods> OngoingCodegen<B> {
|
||||||
(
|
(
|
||||||
CodegenResults {
|
CodegenResults {
|
||||||
crate_name: self.crate_name,
|
crate_name: self.crate_name,
|
||||||
crate_hash: self.crate_hash,
|
|
||||||
metadata: self.metadata,
|
metadata: self.metadata,
|
||||||
windows_subsystem: self.windows_subsystem,
|
windows_subsystem: self.windows_subsystem,
|
||||||
linker_info: self.linker_info,
|
linker_info: self.linker_info,
|
||||||
|
|
|
@ -21,7 +21,6 @@ extern crate tracing;
|
||||||
extern crate rustc_middle;
|
extern crate rustc_middle;
|
||||||
|
|
||||||
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
|
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
|
||||||
use rustc_data_structures::svh::Svh;
|
|
||||||
use rustc_data_structures::sync::Lrc;
|
use rustc_data_structures::sync::Lrc;
|
||||||
use rustc_hir::def_id::CrateNum;
|
use rustc_hir::def_id::CrateNum;
|
||||||
use rustc_hir::LangItem;
|
use rustc_hir::LangItem;
|
||||||
|
@ -134,7 +133,6 @@ pub struct CodegenResults {
|
||||||
pub modules: Vec<CompiledModule>,
|
pub modules: Vec<CompiledModule>,
|
||||||
pub allocator_module: Option<CompiledModule>,
|
pub allocator_module: Option<CompiledModule>,
|
||||||
pub metadata_module: Option<CompiledModule>,
|
pub metadata_module: Option<CompiledModule>,
|
||||||
pub crate_hash: Svh,
|
|
||||||
pub metadata: rustc_middle::middle::cstore::EncodedMetadata,
|
pub metadata: rustc_middle::middle::cstore::EncodedMetadata,
|
||||||
pub windows_subsystem: Option<String>,
|
pub windows_subsystem: Option<String>,
|
||||||
pub linker_info: back::linker::LinkerInfo,
|
pub linker_info: back::linker::LinkerInfo,
|
||||||
|
|
|
@ -3,6 +3,7 @@ use crate::passes::{self, BoxedResolver, QueryContext};
|
||||||
|
|
||||||
use rustc_ast as ast;
|
use rustc_ast as ast;
|
||||||
use rustc_codegen_ssa::traits::CodegenBackend;
|
use rustc_codegen_ssa::traits::CodegenBackend;
|
||||||
|
use rustc_data_structures::svh::Svh;
|
||||||
use rustc_data_structures::sync::{Lrc, OnceCell, WorkerLocal};
|
use rustc_data_structures::sync::{Lrc, OnceCell, WorkerLocal};
|
||||||
use rustc_errors::ErrorReported;
|
use rustc_errors::ErrorReported;
|
||||||
use rustc_hir::def_id::LOCAL_CRATE;
|
use rustc_hir::def_id::LOCAL_CRATE;
|
||||||
|
@ -331,6 +332,7 @@ impl<'tcx> Queries<'tcx> {
|
||||||
pub fn linker(&'tcx self) -> Result<Linker> {
|
pub fn linker(&'tcx self) -> Result<Linker> {
|
||||||
let dep_graph = self.dep_graph()?;
|
let dep_graph = self.dep_graph()?;
|
||||||
let prepare_outputs = self.prepare_outputs()?;
|
let prepare_outputs = self.prepare_outputs()?;
|
||||||
|
let crate_hash = self.global_ctxt()?.peek_mut().enter(|tcx| tcx.crate_hash(LOCAL_CRATE));
|
||||||
let ongoing_codegen = self.ongoing_codegen()?;
|
let ongoing_codegen = self.ongoing_codegen()?;
|
||||||
|
|
||||||
let sess = self.session().clone();
|
let sess = self.session().clone();
|
||||||
|
@ -340,6 +342,7 @@ impl<'tcx> Queries<'tcx> {
|
||||||
sess,
|
sess,
|
||||||
dep_graph: dep_graph.peek().clone(),
|
dep_graph: dep_graph.peek().clone(),
|
||||||
prepare_outputs: prepare_outputs.take(),
|
prepare_outputs: prepare_outputs.take(),
|
||||||
|
crate_hash,
|
||||||
ongoing_codegen: ongoing_codegen.take(),
|
ongoing_codegen: ongoing_codegen.take(),
|
||||||
codegen_backend,
|
codegen_backend,
|
||||||
})
|
})
|
||||||
|
@ -350,6 +353,7 @@ pub struct Linker {
|
||||||
sess: Lrc<Session>,
|
sess: Lrc<Session>,
|
||||||
dep_graph: DepGraph,
|
dep_graph: DepGraph,
|
||||||
prepare_outputs: OutputFilenames,
|
prepare_outputs: OutputFilenames,
|
||||||
|
crate_hash: Svh,
|
||||||
ongoing_codegen: Box<dyn Any>,
|
ongoing_codegen: Box<dyn Any>,
|
||||||
codegen_backend: Lrc<Box<dyn CodegenBackend>>,
|
codegen_backend: Lrc<Box<dyn CodegenBackend>>,
|
||||||
}
|
}
|
||||||
|
@ -370,6 +374,10 @@ impl Linker {
|
||||||
let prof = self.sess.prof.clone();
|
let prof = self.sess.prof.clone();
|
||||||
prof.generic_activity("drop_dep_graph").run(move || drop(dep_graph));
|
prof.generic_activity("drop_dep_graph").run(move || drop(dep_graph));
|
||||||
|
|
||||||
|
// Now that we won't touch anything in the incremental compilation directory
|
||||||
|
// any more, we can finalize it (which involves renaming it)
|
||||||
|
rustc_incremental::finalize_session_directory(&self.sess, self.crate_hash);
|
||||||
|
|
||||||
if !self
|
if !self
|
||||||
.sess
|
.sess
|
||||||
.opts
|
.opts
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue