Skip to content

Commit 4922310

Browse files
committed
Move reachable_set query in librustc_passes.
1 parent 2e7dbb4 commit 4922310

File tree

7 files changed

+22
-31
lines changed

7 files changed

+22
-31
lines changed

src/librustc/lib.rs

-1
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,6 @@ pub mod middle {
105105
pub mod lang_items;
106106
pub mod lib_features;
107107
pub mod privacy;
108-
pub mod reachable;
109108
pub mod recursion_limit;
110109
pub mod region;
111110
pub mod resolve_lifetime;

src/librustc/query/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -510,7 +510,7 @@ rustc_queries! {
510510
}
511511

512512
Other {
513-
query reachable_set(_: CrateNum) -> ReachableSet {
513+
query reachable_set(_: CrateNum) -> Lrc<HirIdSet> {
514514
desc { "reachability" }
515515
}
516516

src/librustc/ty/query/mod.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ use crate::middle::exported_symbols::{ExportedSymbol, SymbolExportLevel};
1010
use crate::middle::lang_items::{LangItem, LanguageItems};
1111
use crate::middle::lib_features::LibFeatures;
1212
use crate::middle::privacy::AccessLevels;
13-
use crate::middle::reachable::ReachableSet;
1413
use crate::middle::region;
1514
use crate::middle::resolve_lifetime::{ObjectLifetimeDefault, Region, ResolveLifetimes};
1615
use crate::middle::stability::{self, DeprecationEntry};
@@ -37,7 +36,7 @@ use crate::ty::subst::SubstsRef;
3736
use crate::ty::util::NeedsDrop;
3837
use crate::ty::{self, AdtSizedConstraint, CrateInherentImpls, ParamEnvAnd, Ty, TyCtxt};
3938
use crate::util::common::ErrorReported;
40-
use crate::util::nodemap::{DefIdMap, DefIdSet};
39+
use crate::util::nodemap::{DefIdMap, DefIdSet, HirIdSet};
4140
use rustc_data_structures::profiling::ProfileCategory::*;
4241

4342
use rustc_data_structures::fingerprint::Fingerprint;

src/librustc_codegen_ssa/back/symbol_export.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@ fn reachable_non_generics_provider(
6565

6666
let mut reachable_non_generics: DefIdMap<_> = tcx
6767
.reachable_set(LOCAL_CRATE)
68-
.0
6968
.iter()
7069
.filter_map(|&hir_id| {
7170
// We want to ignore some FFI functions that are not exposed from
@@ -313,7 +312,7 @@ fn upstream_monomorphizations_for_provider(
313312

314313
fn is_unreachable_local_definition_provider(tcx: TyCtxt<'_>, def_id: DefId) -> bool {
315314
if let Some(hir_id) = tcx.hir().as_local_hir_id(def_id) {
316-
!tcx.reachable_set(LOCAL_CRATE).0.contains(&hir_id)
315+
!tcx.reachable_set(LOCAL_CRATE).contains(&hir_id)
317316
} else {
318317
bug!("is_unreachable_local_definition called with non-local DefId: {:?}", def_id)
319318
}

src/librustc_interface/passes.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use rustc::hir::def_id::{CrateNum, LOCAL_CRATE};
1010
use rustc::hir::lowering::lower_crate;
1111
use rustc::lint;
1212
use rustc::middle::cstore::{CrateStore, MetadataLoader, MetadataLoaderDyn};
13-
use rustc::middle::{self, reachable, resolve_lifetime, stability};
13+
use rustc::middle::{self, resolve_lifetime, stability};
1414
use rustc::session::config::{self, CrateType, Input, OutputFilenames, OutputType};
1515
use rustc::session::config::{PpMode, PpSourceMode};
1616
use rustc::session::search_paths::PathKind;
@@ -678,14 +678,12 @@ pub fn default_provide(providers: &mut ty::query::Providers<'_>) {
678678
plugin::build::provide(providers);
679679
hir::provide(providers);
680680
mir::provide(providers);
681-
reachable::provide(providers);
682681
resolve_lifetime::provide(providers);
683682
rustc_privacy::provide(providers);
684683
typeck::provide(providers);
685684
ty::provide(providers);
686685
traits::provide(providers);
687686
stability::provide(providers);
688-
reachable::provide(providers);
689687
rustc_passes::provide(providers);
690688
rustc_traits::provide(providers);
691689
middle::region::provide(providers);

src/librustc_passes/lib.rs

+2
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,13 @@ mod intrinsicck;
2828
pub mod layout_test;
2929
mod liveness;
3030
pub mod loops;
31+
mod reachable;
3132

3233
pub fn provide(providers: &mut Providers<'_>) {
3334
check_const::provide(providers);
3435
entry::provide(providers);
3536
loops::provide(providers);
3637
liveness::provide(providers);
3738
intrinsicck::provide(providers);
39+
reachable::provide(providers);
3840
}

src/librustc_passes/reachable.rs

+16-22
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,22 @@
55
// makes all other generics or inline functions that it references
66
// reachable as well.
77

8-
use crate::hir::def::{DefKind, Res};
9-
use crate::hir::def_id::{CrateNum, DefId};
10-
use crate::hir::Node;
11-
use crate::hir::{CodegenFnAttrFlags, CodegenFnAttrs};
12-
use crate::middle::privacy;
13-
use crate::session::config;
14-
use crate::ty::query::Providers;
15-
use crate::ty::{self, TyCtxt};
16-
use crate::util::nodemap::{FxHashSet, HirIdSet};
8+
use rustc::hir::def::{DefKind, Res};
9+
use rustc::hir::def_id::{CrateNum, DefId};
10+
use rustc::hir::Node;
11+
use rustc::hir::{CodegenFnAttrFlags, CodegenFnAttrs};
12+
use rustc::middle::privacy;
13+
use rustc::session::config;
14+
use rustc::ty::query::Providers;
15+
use rustc::ty::{self, TyCtxt};
16+
use rustc::util::nodemap::{FxHashSet, HirIdSet};
1717
use rustc_data_structures::sync::Lrc;
1818

19-
use crate::hir;
20-
use crate::hir::def_id::LOCAL_CRATE;
21-
use crate::hir::intravisit;
22-
use crate::hir::intravisit::{NestedVisitorMap, Visitor};
23-
use crate::hir::itemlikevisit::ItemLikeVisitor;
24-
use rustc_macros::HashStable;
19+
use rustc::hir;
20+
use rustc::hir::def_id::LOCAL_CRATE;
21+
use rustc::hir::intravisit;
22+
use rustc::hir::intravisit::{NestedVisitorMap, Visitor};
23+
use rustc::hir::itemlikevisit::ItemLikeVisitor;
2524
use rustc_target::spec::abi::Abi;
2625

2726
// Returns true if the given item must be inlined because it may be
@@ -378,12 +377,7 @@ impl<'a, 'tcx> ItemLikeVisitor<'tcx> for CollectPrivateImplItemsVisitor<'a, 'tcx
378377
}
379378
}
380379

381-
// We introduce a new-type here, so we can have a specialized HashStable
382-
// implementation for it.
383-
#[derive(Clone, HashStable)]
384-
pub struct ReachableSet(pub Lrc<HirIdSet>);
385-
386-
fn reachable_set(tcx: TyCtxt<'_>, crate_num: CrateNum) -> ReachableSet {
380+
fn reachable_set(tcx: TyCtxt<'_>, crate_num: CrateNum) -> Lrc<HirIdSet> {
387381
debug_assert!(crate_num == LOCAL_CRATE);
388382

389383
let access_levels = &tcx.privacy_access_levels(LOCAL_CRATE);
@@ -429,7 +423,7 @@ fn reachable_set(tcx: TyCtxt<'_>, crate_num: CrateNum) -> ReachableSet {
429423
debug!("Inline reachability shows: {:?}", reachable_context.reachable_symbols);
430424

431425
// Return the set of reachable symbols.
432-
ReachableSet(Lrc::new(reachable_context.reachable_symbols))
426+
Lrc::new(reachable_context.reachable_symbols)
433427
}
434428

435429
pub fn provide(providers: &mut Providers<'_>) {

0 commit comments

Comments
 (0)