Skip to content

Commit 4d8cef0

Browse files
authored
Unrolled build for #157444
Rollup merge of #157444 - bjorn3:lto_refactors21, r=lqd Couple of work product cleanups Part of rust-lang/compiler-team#908
2 parents f20a92e + f484629 commit 4d8cef0

10 files changed

Lines changed: 42 additions & 62 deletions

File tree

compiler/rustc_codegen_cranelift/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ use cranelift_codegen::settings::{self, Configurable};
4040
use rustc_codegen_ssa::traits::CodegenBackend;
4141
use rustc_codegen_ssa::{CompiledModules, CrateInfo, TargetConfig, back};
4242
use rustc_log::tracing::info;
43-
use rustc_middle::dep_graph::{WorkProduct, WorkProductId};
43+
use rustc_middle::dep_graph::WorkProductMap;
4444
use rustc_session::Session;
4545
use rustc_session::config::OutputFilenames;
4646
use rustc_span::{Symbol, sym};
@@ -88,7 +88,7 @@ mod prelude {
8888
};
8989
pub(crate) use cranelift_module::{self, DataDescription, FuncId, Linkage, Module};
9090
pub(crate) use rustc_abi::{BackendRepr, FIRST_VARIANT, FieldIdx, Scalar, Size, VariantIdx};
91-
pub(crate) use rustc_data_structures::fx::{FxHashMap, FxIndexMap};
91+
pub(crate) use rustc_data_structures::fx::FxHashMap;
9292
pub(crate) use rustc_hir::def_id::{DefId, LOCAL_CRATE};
9393
pub(crate) use rustc_index::Idx;
9494
pub(crate) use rustc_middle::mir::{self, *};
@@ -235,7 +235,7 @@ impl CodegenBackend for CraneliftCodegenBackend {
235235
sess: &Session,
236236
_outputs: &OutputFilenames,
237237
crate_info: &CrateInfo,
238-
) -> (CompiledModules, FxIndexMap<WorkProductId, WorkProduct>) {
238+
) -> (CompiledModules, WorkProductMap) {
239239
ongoing_codegen
240240
.downcast::<rustc_codegen_ssa::back::write::OngoingCodegen<driver::aot::AotDriver>>()
241241
.unwrap()

compiler/rustc_codegen_gcc/src/lib.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,10 @@ use rustc_codegen_ssa::base::codegen_crate;
8989
use rustc_codegen_ssa::target_features::cfg_target_feature;
9090
use rustc_codegen_ssa::traits::{CodegenBackend, ExtraBackendMethods, WriteBackendMethods};
9191
use rustc_codegen_ssa::{CompiledModule, CompiledModules, CrateInfo, ModuleCodegen, TargetConfig};
92-
use rustc_data_structures::fx::FxIndexMap;
9392
use rustc_data_structures::profiling::SelfProfilerRef;
9493
use rustc_data_structures::sync::IntoDynSyncSend;
9594
use rustc_errors::{DiagCtxt, DiagCtxtHandle};
96-
use rustc_middle::dep_graph::{WorkProduct, WorkProductId};
95+
use rustc_middle::dep_graph::{WorkProduct, WorkProductMap};
9796
use rustc_middle::ty::TyCtxt;
9897
use rustc_middle::util::Providers;
9998
use rustc_session::Session;
@@ -301,7 +300,7 @@ impl CodegenBackend for GccCodegenBackend {
301300
sess: &Session,
302301
_outputs: &OutputFilenames,
303302
crate_info: &CrateInfo,
304-
) -> (CompiledModules, FxIndexMap<WorkProductId, WorkProduct>) {
303+
) -> (CompiledModules, WorkProductMap) {
305304
ongoing_codegen
306305
.downcast::<rustc_codegen_ssa::back::write::OngoingCodegen<GccCodegenBackend>>()
307306
.expect("Expected GccCodegenBackend's OngoingCodegen, found Box<Any>")

compiler/rustc_codegen_llvm/src/lib.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,10 @@ use rustc_codegen_ssa::back::write::{
3232
};
3333
use rustc_codegen_ssa::traits::*;
3434
use rustc_codegen_ssa::{CompiledModule, CompiledModules, CrateInfo, ModuleCodegen, TargetConfig};
35-
use rustc_data_structures::fx::FxIndexMap;
3635
use rustc_data_structures::profiling::SelfProfilerRef;
3736
use rustc_errors::{DiagCtxt, DiagCtxtHandle};
3837
use rustc_metadata::EncodedMetadata;
39-
use rustc_middle::dep_graph::{WorkProduct, WorkProductId};
38+
use rustc_middle::dep_graph::{WorkProduct, WorkProductMap};
4039
use rustc_middle::ty::TyCtxt;
4140
use rustc_middle::util::Providers;
4241
use rustc_session::Session;
@@ -358,7 +357,7 @@ impl CodegenBackend for LlvmCodegenBackend {
358357
sess: &Session,
359358
outputs: &OutputFilenames,
360359
crate_info: &CrateInfo,
361-
) -> (CompiledModules, FxIndexMap<WorkProductId, WorkProduct>) {
360+
) -> (CompiledModules, WorkProductMap) {
362361
let (compiled_modules, work_products) = ongoing_codegen
363362
.downcast::<rustc_codegen_ssa::back::write::OngoingCodegen<LlvmCodegenBackend>>()
364363
.expect("Expected LlvmCodegenBackend's OngoingCodegen, found Box<Any>")

compiler/rustc_codegen_ssa/src/back/write.rs

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ use std::sync::mpsc::{Receiver, Sender, channel};
66
use std::{assert_matches, fs, io, mem, str, thread};
77

88
use rustc_abi::Size;
9-
use rustc_data_structures::fx::FxIndexMap;
109
use rustc_data_structures::jobserver::{self, Acquired};
1110
use rustc_data_structures::profiling::{SelfProfilerRef, VerboseTimingGuard};
1211
use rustc_errors::emitter::Emitter;
@@ -22,7 +21,7 @@ use rustc_incremental::{
2221
use rustc_macros::{Decodable, Encodable};
2322
use rustc_metadata::fs::copy_to_stdout;
2423
use rustc_middle::bug;
25-
use rustc_middle::dep_graph::{WorkProduct, WorkProductId};
24+
use rustc_middle::dep_graph::{WorkProduct, WorkProductMap};
2625
use rustc_middle::ty::TyCtxt;
2726
use rustc_session::Session;
2827
use rustc_session::config::{
@@ -460,8 +459,8 @@ pub(crate) fn start_async_codegen<B: WriteBackendMethods>(
460459
fn copy_all_cgu_workproducts_to_incr_comp_cache_dir(
461460
sess: &Session,
462461
compiled_modules: &CompiledModules,
463-
) -> FxIndexMap<WorkProductId, WorkProduct> {
464-
let mut work_products = FxIndexMap::default();
462+
) -> WorkProductMap {
463+
let mut work_products = WorkProductMap::default();
465464

466465
if sess.opts.incremental.is_none() || sess.opts.unstable_opts.disable_incr_comp_backend_caching
467466
{
@@ -490,14 +489,13 @@ fn copy_all_cgu_workproducts_to_incr_comp_cache_dir(
490489
if let Some(path) = &module.bytecode {
491490
files.push((OutputType::Bitcode.extension(), path.as_path()));
492491
}
493-
if let Some((id, product)) = copy_cgu_workproduct_to_incr_comp_cache_dir(
492+
let (id, product) = copy_cgu_workproduct_to_incr_comp_cache_dir(
494493
sess,
495494
&module.name,
496495
files.as_slice(),
497496
&module.links_from_incr_cache,
498-
) {
499-
work_products.insert(id, product);
500-
}
497+
);
498+
work_products.insert(id, product);
501499
}
502500

503501
work_products
@@ -2099,11 +2097,7 @@ pub struct OngoingCodegen<B: WriteBackendMethods> {
20992097
}
21002098

21012099
impl<B: WriteBackendMethods> OngoingCodegen<B> {
2102-
pub fn join(
2103-
self,
2104-
sess: &Session,
2105-
crate_info: &CrateInfo,
2106-
) -> (CompiledModules, FxIndexMap<WorkProductId, WorkProduct>) {
2100+
pub fn join(self, sess: &Session, crate_info: &CrateInfo) -> (CompiledModules, WorkProductMap) {
21072101
self.shared_emitter_main.check(sess, true);
21082102

21092103
let maybe_lto_modules = sess.time("join_worker_thread", || match self.coordinator.join() {

compiler/rustc_codegen_ssa/src/traits/backend.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,10 @@ use std::any::Any;
22
use std::hash::Hash;
33

44
use rustc_ast::expand::allocator::AllocatorMethod;
5-
use rustc_data_structures::fx::FxIndexMap;
65
use rustc_data_structures::sync::{DynSend, DynSync};
76
use rustc_metadata::EncodedMetadata;
87
use rustc_metadata::creader::MetadataLoaderDyn;
9-
use rustc_middle::dep_graph::{WorkProduct, WorkProductId};
8+
use rustc_middle::dep_graph::WorkProductMap;
109
use rustc_middle::ty::TyCtxt;
1110
use rustc_middle::util::Providers;
1211
use rustc_session::Session;
@@ -130,7 +129,7 @@ pub trait CodegenBackend {
130129
sess: &Session,
131130
outputs: &OutputFilenames,
132131
crate_info: &CrateInfo,
133-
) -> (CompiledModules, FxIndexMap<WorkProductId, WorkProduct>);
132+
) -> (CompiledModules, WorkProductMap);
134133

135134
fn print_pass_timings(&self) {}
136135

compiler/rustc_incremental/src/persist/save.rs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
use std::fs;
22

3-
use rustc_data_structures::fx::FxIndexMap;
43
use rustc_data_structures::sync::par_join;
5-
use rustc_middle::dep_graph::{DepGraph, WorkProduct, WorkProductId};
4+
use rustc_middle::dep_graph::{DepGraph, WorkProductMap};
65
use rustc_middle::query::on_disk_cache;
76
use rustc_middle::ty::TyCtxt;
87
use rustc_serialize::Encodable as RustcEncodable;
@@ -93,7 +92,7 @@ pub(crate) fn save_dep_graph(tcx: TyCtxt<'_>) {
9392
pub fn save_work_product_index(
9493
sess: &Session,
9594
dep_graph: &DepGraph,
96-
new_work_products: FxIndexMap<WorkProductId, WorkProduct>,
95+
new_work_products: WorkProductMap,
9796
) {
9897
if sess.opts.incremental.is_none() {
9998
return;
@@ -126,18 +125,16 @@ pub fn save_work_product_index(
126125

127126
// Check that we did not delete one of the current work-products:
128127
debug_assert!({
129-
new_work_products.iter().all(|(_, wp)| {
128+
new_work_products.items().all(|(_, wp)| {
130129
wp.saved_files.items().all(|(_, path)| in_incr_comp_dir_sess(sess, path).exists())
131130
})
132131
});
133132
}
134133

135-
fn encode_work_product_index(
136-
work_products: &FxIndexMap<WorkProductId, WorkProduct>,
137-
encoder: &mut FileEncoder,
138-
) {
134+
fn encode_work_product_index(work_products: &WorkProductMap, encoder: &mut FileEncoder) {
139135
let serialized_products: Vec<_> = work_products
140-
.iter()
136+
.to_sorted_stable_ord()
137+
.into_iter()
141138
.map(|(id, work_product)| SerializedWorkProduct {
142139
id: *id,
143140
work_product: work_product.clone(),

compiler/rustc_incremental/src/persist/work_product.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,16 @@ use crate::persist::fs::*;
1616

1717
/// Copies a CGU work product to the incremental compilation directory, so next compilation can
1818
/// find and reuse it.
19+
///
20+
/// Panics when incr comp is disabled.
1921
pub fn copy_cgu_workproduct_to_incr_comp_cache_dir(
2022
sess: &Session,
2123
cgu_name: &str,
2224
files: &[(&'static str, &Path)],
2325
known_links: &[PathBuf],
24-
) -> Option<(WorkProductId, WorkProduct)> {
26+
) -> (WorkProductId, WorkProduct) {
2527
debug!(?cgu_name, ?files);
26-
sess.opts.incremental.as_ref()?;
28+
assert!(sess.opts.incremental.is_some());
2729

2830
let mut saved_files = UnordMap::default();
2931
for (ext, path) in files {
@@ -50,7 +52,7 @@ pub fn copy_cgu_workproduct_to_incr_comp_cache_dir(
5052
let work_product = WorkProduct { cgu_name: cgu_name.to_string(), saved_files };
5153
debug!(?work_product);
5254
let work_product_id = WorkProductId::from_cgu_name(cgu_name);
53-
Some((work_product_id, work_product))
55+
(work_product_id, work_product)
5456
}
5557

5658
/// Removes files for a given work product.

compiler/rustc_interface/src/queries.rs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,11 @@ use std::sync::Arc;
33

44
use rustc_codegen_ssa::traits::CodegenBackend;
55
use rustc_codegen_ssa::{CompiledModules, CrateInfo};
6-
use rustc_data_structures::indexmap::IndexMap;
76
use rustc_data_structures::svh::Svh;
87
use rustc_errors::timings::TimingSection;
98
use rustc_hir::def_id::LOCAL_CRATE;
109
use rustc_metadata::EncodedMetadata;
11-
use rustc_middle::dep_graph::DepGraph;
10+
use rustc_middle::dep_graph::{DepGraph, WorkProductMap};
1211
use rustc_middle::ty::TyCtxt;
1312
use rustc_session::Session;
1413
use rustc_session::config::{self, OutputFilenames, OutputType};
@@ -51,7 +50,7 @@ impl Linker {
5150
let (compiled_modules, mut work_products) = sess.time("finish_ongoing_codegen", || {
5251
match self.ongoing_codegen.downcast::<CompiledModules>() {
5352
// This was a check only build
54-
Ok(compiled_modules) => (*compiled_modules, IndexMap::default()),
53+
Ok(compiled_modules) => (*compiled_modules, WorkProductMap::default()),
5554

5655
Err(ongoing_codegen) => codegen_backend.join_codegen(
5756
ongoing_codegen,
@@ -90,14 +89,13 @@ impl Linker {
9089

9190
if sess.opts.incremental.is_some()
9291
&& let Some(path) = self.metadata.path()
93-
&& let Some((id, product)) =
94-
rustc_incremental::copy_cgu_workproduct_to_incr_comp_cache_dir(
95-
sess,
96-
"metadata",
97-
&[("rmeta", path)],
98-
&[],
99-
)
10092
{
93+
let (id, product) = rustc_incremental::copy_cgu_workproduct_to_incr_comp_cache_dir(
94+
sess,
95+
"metadata",
96+
&[("rmeta", path)],
97+
&[],
98+
);
10199
work_products.insert(id, product);
102100
}
103101

compiler/rustc_interface/src/util.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,10 @@ use rustc_codegen_ssa::target_features::cfg_target_feature;
1414
use rustc_codegen_ssa::traits::CodegenBackend;
1515
use rustc_codegen_ssa::{CompiledModules, CrateInfo, TargetConfig};
1616
use rustc_data_structures::base_n::{CASE_INSENSITIVE, ToBaseN};
17-
use rustc_data_structures::fx::FxIndexMap;
1817
use rustc_data_structures::jobserver::Proxy;
1918
use rustc_data_structures::sync;
2019
use rustc_metadata::{DylibError, EncodedMetadata, load_symbol_from_dylib};
21-
use rustc_middle::dep_graph::{WorkProduct, WorkProductId};
20+
use rustc_middle::dep_graph::WorkProductMap;
2221
use rustc_middle::ty::{CurrentGcx, TyCtxt};
2322
use rustc_query_impl::{CollectActiveJobsKind, collect_active_query_jobs};
2423
use rustc_session::config::{
@@ -418,8 +417,8 @@ impl CodegenBackend for DummyCodegenBackend {
418417
_sess: &Session,
419418
_outputs: &OutputFilenames,
420419
_crate_info: &CrateInfo,
421-
) -> (CompiledModules, FxIndexMap<WorkProductId, WorkProduct>) {
422-
(*ongoing_codegen.downcast().unwrap(), FxIndexMap::default())
420+
) -> (CompiledModules, WorkProductMap) {
421+
(*ongoing_codegen.downcast().unwrap(), WorkProductMap::default())
423422
}
424423

425424
fn link(

tests/ui-fulldeps/codegen-backend/auxiliary/the_backend.rs

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,24 +4,17 @@
44
#![deny(warnings)]
55

66
extern crate rustc_codegen_ssa;
7-
extern crate rustc_data_structures;
8-
extern crate rustc_driver;
9-
extern crate rustc_errors;
10-
extern crate rustc_hir;
7+
extern crate rustc_driver as _;
118
extern crate rustc_metadata;
129
extern crate rustc_middle;
1310
extern crate rustc_session;
14-
extern crate rustc_span;
15-
extern crate rustc_symbol_mangling;
16-
extern crate rustc_target;
1711

1812
use std::any::Any;
1913

2014
use rustc_codegen_ssa::traits::CodegenBackend;
2115
use rustc_codegen_ssa::{CompiledModules, CrateInfo};
22-
use rustc_data_structures::fx::FxIndexMap;
2316
use rustc_metadata::EncodedMetadata;
24-
use rustc_middle::dep_graph::{WorkProduct, WorkProductId};
17+
use rustc_middle::dep_graph::WorkProductMap;
2518
use rustc_middle::ty::TyCtxt;
2619
use rustc_session::Session;
2720
use rustc_session::config::OutputFilenames;
@@ -47,11 +40,11 @@ impl CodegenBackend for TheBackend {
4740
_sess: &Session,
4841
_outputs: &OutputFilenames,
4942
_crate_info: &CrateInfo,
50-
) -> (CompiledModules, FxIndexMap<WorkProductId, WorkProduct>) {
43+
) -> (CompiledModules, WorkProductMap) {
5144
let codegen_results = ongoing_codegen
5245
.downcast::<CompiledModules>()
5346
.expect("in join_codegen: ongoing_codegen is not a CompiledModules");
54-
(*codegen_results, FxIndexMap::default())
47+
(*codegen_results, WorkProductMap::default())
5548
}
5649

5750
fn link(

0 commit comments

Comments
 (0)