Skip to content

Commit 18b3a9a

Browse files
committed
rustc_driver: base extern query providers on local ones.
1 parent 19e63bd commit 18b3a9a

File tree

9 files changed

+18
-59
lines changed

9 files changed

+18
-59
lines changed

src/librustc/traits/mod.rs

-11
Original file line numberDiff line numberDiff line change
@@ -842,14 +842,3 @@ pub fn provide(providers: &mut ty::maps::Providers) {
842842
..*providers
843843
};
844844
}
845-
846-
pub fn provide_extern(providers: &mut ty::maps::Providers) {
847-
*providers = ty::maps::Providers {
848-
is_object_safe: object_safety::is_object_safe_provider,
849-
specialization_graph_of: specialize::specialization_graph_provider,
850-
specializes: specialize::specializes,
851-
trans_fulfill_obligation: trans::trans_fulfill_obligation,
852-
vtable_methods,
853-
..*providers
854-
};
855-
}

src/librustc/ty/mod.rs

-11
Original file line numberDiff line numberDiff line change
@@ -2605,17 +2605,6 @@ pub fn provide(providers: &mut ty::maps::Providers) {
26052605
};
26062606
}
26072607

2608-
pub fn provide_extern(providers: &mut ty::maps::Providers) {
2609-
*providers = ty::maps::Providers {
2610-
adt_sized_constraint,
2611-
adt_dtorck_constraint,
2612-
trait_impls_of: trait_def::trait_impls_of_provider,
2613-
param_env,
2614-
..*providers
2615-
};
2616-
}
2617-
2618-
26192608
/// A map for the local crate mapping each type to a vector of its
26202609
/// inherent impls. This is not meant to be used outside of coherence;
26212610
/// rather, you should request the vector for a specific type via

src/librustc_driver/driver.rs

+4-8
Original file line numberDiff line numberDiff line change
@@ -970,24 +970,20 @@ pub fn phase_3_run_analysis_passes<'tcx, F, R>(sess: &'tcx Session,
970970
mir::provide(&mut local_providers);
971971
reachable::provide(&mut local_providers);
972972
rustc_privacy::provide(&mut local_providers);
973-
DefaultTransCrate::provide_local(&mut local_providers);
973+
DefaultTransCrate::provide(&mut local_providers);
974974
typeck::provide(&mut local_providers);
975975
ty::provide(&mut local_providers);
976976
traits::provide(&mut local_providers);
977977
reachable::provide(&mut local_providers);
978978
rustc_const_eval::provide(&mut local_providers);
979979
rustc_passes::provide(&mut local_providers);
980980
middle::region::provide(&mut local_providers);
981-
cstore::provide_local(&mut local_providers);
981+
cstore::provide(&mut local_providers);
982982
lint::provide(&mut local_providers);
983983

984-
let mut extern_providers = ty::maps::Providers::default();
985-
cstore::provide(&mut extern_providers);
984+
let mut extern_providers = local_providers;
985+
cstore::provide_extern(&mut extern_providers);
986986
DefaultTransCrate::provide_extern(&mut extern_providers);
987-
ty::provide_extern(&mut extern_providers);
988-
traits::provide_extern(&mut extern_providers);
989-
// FIXME(eddyb) get rid of this once we replace const_eval with miri.
990-
rustc_const_eval::provide(&mut extern_providers);
991987

992988
// Setup the MIR passes that we want to run.
993989
let mut passes = Passes::new();

src/librustc_metadata/cstore.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ pub use rustc::middle::cstore::{NativeLibrary, NativeLibraryKind, LinkagePrefere
3434
pub use rustc::middle::cstore::NativeLibraryKind::*;
3535
pub use rustc::middle::cstore::{CrateSource, LibSource};
3636

37-
pub use cstore_impl::{provide, provide_local};
37+
pub use cstore_impl::{provide, provide_extern};
3838

3939
// A map from external crate numbers (as decoded from some crate file) to
4040
// local crate numbers (as generated during this session). Each external

src/librustc_metadata/cstore_impl.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ use rustc::hir;
4545
macro_rules! provide {
4646
(<$lt:tt> $tcx:ident, $def_id:ident, $other:ident, $cdata:ident,
4747
$($name:ident => $compute:block)*) => {
48-
pub fn provide<$lt>(providers: &mut Providers<$lt>) {
48+
pub fn provide_extern<$lt>(providers: &mut Providers<$lt>) {
4949
$(fn $name<'a, $lt:$lt, T>($tcx: TyCtxt<'a, $lt, $lt>, def_id_arg: T)
5050
-> <ty::queries::$name<$lt> as
5151
QueryConfig>::Value
@@ -243,7 +243,7 @@ provide! { <'tcx> tcx, def_id, other, cdata,
243243
has_clone_closures => { cdata.has_clone_closures(tcx.sess) }
244244
}
245245

246-
pub fn provide_local<'tcx>(providers: &mut Providers<'tcx>) {
246+
pub fn provide<'tcx>(providers: &mut Providers<'tcx>) {
247247
fn is_const_fn<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, def_id: DefId) -> bool {
248248
let node_id = tcx.hir.as_local_node_id(def_id)
249249
.expect("Non-local call to local provider is_const_fn");

src/librustc_trans/back/symbol_export.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ pub fn crates_export_threshold(crate_types: &[config::CrateType])
6060
}
6161
}
6262

63-
pub fn provide_local(providers: &mut Providers) {
63+
pub fn provide(providers: &mut Providers) {
6464
providers.exported_symbol_ids = |tcx, cnum| {
6565
let export_threshold = threshold(tcx);
6666
Rc::new(tcx.exported_symbols(cnum)

src/librustc_trans/base.rs

+1-5
Original file line numberDiff line numberDiff line change
@@ -1384,7 +1384,7 @@ fn compile_codegen_unit<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
13841384
}
13851385
}
13861386

1387-
pub fn provide_local(providers: &mut Providers) {
1387+
pub fn provide(providers: &mut Providers) {
13881388
providers.collect_and_partition_translation_items =
13891389
collect_and_partition_translation_items;
13901390

@@ -1400,10 +1400,6 @@ pub fn provide_local(providers: &mut Providers) {
14001400
providers.compile_codegen_unit = compile_codegen_unit;
14011401
}
14021402

1403-
pub fn provide_extern(providers: &mut Providers) {
1404-
providers.is_translated_function = is_translated_function;
1405-
}
1406-
14071403
pub fn linkage_to_llvm(linkage: Linkage) -> llvm::Linkage {
14081404
match linkage {
14091405
Linkage::External => llvm::Linkage::ExternalLinkage,

src/librustc_trans/lib.rs

+5-16
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ use rustc::middle::cstore::MetadataLoader;
8181
use rustc::middle::cstore::{NativeLibrary, CrateSource, LibSource};
8282
use rustc::session::Session;
8383
use rustc::session::config::{OutputFilenames, OutputType};
84-
use rustc::ty::maps::Providers;
8584
use rustc::ty::{self, TyCtxt};
8685
use rustc::util::nodemap::{FxHashSet, FxHashMap};
8786

@@ -167,12 +166,14 @@ impl rustc_trans_utils::trans_crate::TransCrate for LlvmTransCrate {
167166
box metadata::LlvmMetadataLoader
168167
}
169168

170-
fn provide_local(providers: &mut ty::maps::Providers) {
171-
provide_local(providers);
169+
fn provide(providers: &mut ty::maps::Providers) {
170+
back::symbol_names::provide(providers);
171+
back::symbol_export::provide(providers);
172+
base::provide(providers);
172173
}
173174

174175
fn provide_extern(providers: &mut ty::maps::Providers) {
175-
provide_extern(providers);
176+
back::symbol_export::provide_extern(providers);
176177
}
177178

178179
fn trans_crate<'a, 'tcx>(
@@ -332,15 +333,3 @@ pub struct CrateInfo {
332333
}
333334

334335
__build_diagnostic_array! { librustc_trans, DIAGNOSTICS }
335-
336-
pub fn provide_local(providers: &mut Providers) {
337-
back::symbol_names::provide(providers);
338-
back::symbol_export::provide_local(providers);
339-
base::provide_local(providers);
340-
}
341-
342-
pub fn provide_extern(providers: &mut Providers) {
343-
back::symbol_names::provide(providers);
344-
back::symbol_export::provide_extern(providers);
345-
base::provide_extern(providers);
346-
}

src/librustc_trans_utils/trans_crate.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ pub trait TransCrate {
5151
type TranslatedCrate;
5252

5353
fn metadata_loader() -> Box<MetadataLoaderTrait>;
54-
fn provide_local(_providers: &mut Providers);
54+
fn provide(_providers: &mut Providers);
5555
fn provide_extern(_providers: &mut Providers);
5656
fn trans_crate<'a, 'tcx>(
5757
tcx: TyCtxt<'a, 'tcx, 'tcx>,
@@ -77,8 +77,8 @@ impl TransCrate for DummyTransCrate {
7777
box DummyMetadataLoader(())
7878
}
7979

80-
fn provide_local(_providers: &mut Providers) {
81-
bug!("DummyTransCrate::provide_local");
80+
fn provide(_providers: &mut Providers) {
81+
bug!("DummyTransCrate::provide");
8282
}
8383

8484
fn provide_extern(_providers: &mut Providers) {
@@ -185,7 +185,7 @@ impl TransCrate for MetadataOnlyTransCrate {
185185
box NoLlvmMetadataLoader
186186
}
187187

188-
fn provide_local(_providers: &mut Providers) {}
188+
fn provide(_providers: &mut Providers) {}
189189
fn provide_extern(_providers: &mut Providers) {}
190190

191191
fn trans_crate<'a, 'tcx>(

0 commit comments

Comments
 (0)