Skip to content

Commit b0202d9

Browse files
Use LocalDefIdSet/Map instead of FxHashSet/Map for live_symbols_and_ignored_derived_traits query.
1 parent f0eadba commit b0202d9

File tree

3 files changed

+17
-17
lines changed

3 files changed

+17
-17
lines changed

compiler/rustc_middle/src/query/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -899,8 +899,8 @@ rustc_queries! {
899899
/// The second return value maps from ADTs to ignored derived traits (e.g. Debug and Clone) and
900900
/// their respective impl (i.e., part of the derive macro)
901901
query live_symbols_and_ignored_derived_traits(_: ()) -> &'tcx (
902-
FxHashSet<LocalDefId>,
903-
FxHashMap<LocalDefId, Vec<(DefId, DefId)>>
902+
LocalDefIdSet,
903+
LocalDefIdMap<Vec<(DefId, DefId)>>
904904
) {
905905
arena_cache
906906
desc { "finding live symbols in crate" }

compiler/rustc_middle/src/ty/query.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@ use rustc_data_structures::unord::UnordSet;
5050
use rustc_errors::ErrorGuaranteed;
5151
use rustc_hir as hir;
5252
use rustc_hir::def::{DefKind, DocLinkResMap};
53-
use rustc_hir::def_id::{CrateNum, DefId, DefIdMap, DefIdSet, LocalDefId, LocalDefIdSet};
53+
use rustc_hir::def_id::{
54+
CrateNum, DefId, DefIdMap, DefIdSet, LocalDefId, LocalDefIdMap, LocalDefIdSet,
55+
};
5456
use rustc_hir::hir_id::OwnerId;
5557
use rustc_hir::lang_items::{LangItem, LanguageItems};
5658
use rustc_hir::{Crate, ItemLocalId, TraitCandidate};

compiler/rustc_passes/src/dead.rs

+12-14
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
// closely. The idea is that all reachable symbols are live, codes called
33
// from live codes are live, and everything else is dead.
44

5+
use hir::def_id::{LocalDefIdMap, LocalDefIdSet};
56
use itertools::Itertools;
6-
use rustc_data_structures::fx::{FxHashMap, FxHashSet};
77
use rustc_errors::MultiSpan;
88
use rustc_hir as hir;
99
use rustc_hir::def::{CtorOf, DefKind, Res};
@@ -45,17 +45,17 @@ struct MarkSymbolVisitor<'tcx> {
4545
worklist: Vec<LocalDefId>,
4646
tcx: TyCtxt<'tcx>,
4747
maybe_typeck_results: Option<&'tcx ty::TypeckResults<'tcx>>,
48-
live_symbols: FxHashSet<LocalDefId>,
48+
live_symbols: LocalDefIdSet,
4949
repr_has_repr_c: bool,
5050
repr_has_repr_simd: bool,
5151
in_pat: bool,
5252
ignore_variant_stack: Vec<DefId>,
5353
// maps from tuple struct constructors to tuple struct items
54-
struct_constructors: FxHashMap<LocalDefId, LocalDefId>,
54+
struct_constructors: LocalDefIdMap<LocalDefId>,
5555
// maps from ADTs to ignored derived traits (e.g. Debug and Clone)
5656
// and the span of their respective impl (i.e., part of the derive
5757
// macro)
58-
ignored_derived_traits: FxHashMap<LocalDefId, Vec<(DefId, DefId)>>,
58+
ignored_derived_traits: LocalDefIdMap<Vec<(DefId, DefId)>>,
5959
}
6060

6161
impl<'tcx> MarkSymbolVisitor<'tcx> {
@@ -237,7 +237,7 @@ impl<'tcx> MarkSymbolVisitor<'tcx> {
237237
}
238238

239239
fn mark_live_symbols(&mut self) {
240-
let mut scanned = FxHashSet::default();
240+
let mut scanned = LocalDefIdSet::default();
241241
while let Some(id) = self.worklist.pop() {
242242
if !scanned.insert(id) {
243243
continue;
@@ -371,7 +371,7 @@ impl<'tcx> Visitor<'tcx> for MarkSymbolVisitor<'tcx> {
371371
}
372372
if tcx.visibility(def_id).is_public() { Some(def_id) } else { None }
373373
});
374-
self.live_symbols.extend(live_fields);
374+
Extend::extend(&mut self.live_symbols, live_fields);
375375

376376
intravisit::walk_struct_def(self, def);
377377
}
@@ -506,7 +506,7 @@ fn has_allow_dead_code_or_lang_attr(tcx: TyCtxt<'_>, def_id: LocalDefId) -> bool
506506
fn check_item<'tcx>(
507507
tcx: TyCtxt<'tcx>,
508508
worklist: &mut Vec<LocalDefId>,
509-
struct_constructors: &mut FxHashMap<LocalDefId, LocalDefId>,
509+
struct_constructors: &mut LocalDefIdMap<LocalDefId>,
510510
id: hir::ItemId,
511511
) {
512512
let allow_dead_code = has_allow_dead_code_or_lang_attr(tcx, id.owner_id.def_id);
@@ -583,9 +583,7 @@ fn check_foreign_item(tcx: TyCtxt<'_>, worklist: &mut Vec<LocalDefId>, id: hir::
583583
}
584584
}
585585

586-
fn create_and_seed_worklist(
587-
tcx: TyCtxt<'_>,
588-
) -> (Vec<LocalDefId>, FxHashMap<LocalDefId, LocalDefId>) {
586+
fn create_and_seed_worklist(tcx: TyCtxt<'_>) -> (Vec<LocalDefId>, LocalDefIdMap<LocalDefId>) {
589587
let effective_visibilities = &tcx.effective_visibilities(());
590588
// see `MarkSymbolVisitor::struct_constructors`
591589
let mut struct_constructors = Default::default();
@@ -617,7 +615,7 @@ fn create_and_seed_worklist(
617615
fn live_symbols_and_ignored_derived_traits(
618616
tcx: TyCtxt<'_>,
619617
(): (),
620-
) -> (FxHashSet<LocalDefId>, FxHashMap<LocalDefId, Vec<(DefId, DefId)>>) {
618+
) -> (LocalDefIdSet, LocalDefIdMap<Vec<(DefId, DefId)>>) {
621619
let (worklist, struct_constructors) = create_and_seed_worklist(tcx);
622620
let mut symbol_visitor = MarkSymbolVisitor {
623621
worklist,
@@ -629,7 +627,7 @@ fn live_symbols_and_ignored_derived_traits(
629627
in_pat: false,
630628
ignore_variant_stack: vec![],
631629
struct_constructors,
632-
ignored_derived_traits: FxHashMap::default(),
630+
ignored_derived_traits: Default::default(),
633631
};
634632
symbol_visitor.mark_live_symbols();
635633
(symbol_visitor.live_symbols, symbol_visitor.ignored_derived_traits)
@@ -643,8 +641,8 @@ struct DeadVariant {
643641

644642
struct DeadVisitor<'tcx> {
645643
tcx: TyCtxt<'tcx>,
646-
live_symbols: &'tcx FxHashSet<LocalDefId>,
647-
ignored_derived_traits: &'tcx FxHashMap<LocalDefId, Vec<(DefId, DefId)>>,
644+
live_symbols: &'tcx LocalDefIdSet,
645+
ignored_derived_traits: &'tcx LocalDefIdMap<Vec<(DefId, DefId)>>,
648646
}
649647

650648
enum ShouldWarnAboutField {

0 commit comments

Comments
 (0)