diff options
| author | bjorn3 <bjorn3@users.noreply.github.com> | 2021-05-30 17:24:54 +0200 |
|---|---|---|
| committer | bjorn3 <bjorn3@users.noreply.github.com> | 2021-10-25 13:36:23 +0200 |
| commit | f5c3e83013700835cfd64215b482b8dffe1f71be (patch) | |
| tree | 9ff9bcd4e9ac8e0a4b215ce25d2ff3c1edd20759 /compiler/rustc_interface/src | |
| parent | 56694b04532cc0dec6e2f577135da3513e856923 (diff) | |
| download | rust-f5c3e83013700835cfd64215b482b8dffe1f71be.tar.gz rust-f5c3e83013700835cfd64215b482b8dffe1f71be.zip | |
Avoid a branch on key being local for queries that use the same local and extern providers
Diffstat (limited to 'compiler/rustc_interface/src')
| -rw-r--r-- | compiler/rustc_interface/src/interface.rs | 4 | ||||
| -rw-r--r-- | compiler/rustc_interface/src/passes.rs | 7 |
2 files changed, 5 insertions, 6 deletions
diff --git a/compiler/rustc_interface/src/interface.rs b/compiler/rustc_interface/src/interface.rs index 81585f8f4e4..7a6a643e3d0 100644 --- a/compiler/rustc_interface/src/interface.rs +++ b/compiler/rustc_interface/src/interface.rs @@ -38,7 +38,7 @@ pub struct Compiler { pub(crate) output_file: Option<PathBuf>, pub(crate) register_lints: Option<Box<dyn Fn(&Session, &mut LintStore) + Send + Sync>>, pub(crate) override_queries: - Option<fn(&Session, &mut ty::query::Providers, &mut ty::query::Providers)>, + Option<fn(&Session, &mut ty::query::Providers, &mut ty::query::ExternProviders)>, } impl Compiler { @@ -155,7 +155,7 @@ pub struct Config { /// /// The second parameter is local providers and the third parameter is external providers. pub override_queries: - Option<fn(&Session, &mut ty::query::Providers, &mut ty::query::Providers)>, + Option<fn(&Session, &mut ty::query::Providers, &mut ty::query::ExternProviders)>, /// This is a callback from the driver that is called to create a codegen backend. pub make_codegen_backend: diff --git a/compiler/rustc_interface/src/passes.rs b/compiler/rustc_interface/src/passes.rs index eea32083568..62f5f09aa48 100644 --- a/compiler/rustc_interface/src/passes.rs +++ b/compiler/rustc_interface/src/passes.rs @@ -19,7 +19,7 @@ use rustc_metadata::creader::CStore; use rustc_metadata::{encode_metadata, EncodedMetadata}; use rustc_middle::arena::Arena; use rustc_middle::dep_graph::DepGraph; -use rustc_middle::ty::query::Providers; +use rustc_middle::ty::query::{ExternProviders, Providers}; use rustc_middle::ty::{self, GlobalCtxt, ResolverOutputs, TyCtxt}; use rustc_mir_build as mir_build; use rustc_parse::{parse_crate_from_file, parse_crate_from_source_str, validate_attr}; @@ -764,8 +764,8 @@ pub static DEFAULT_QUERY_PROVIDERS: SyncLazy<Providers> = SyncLazy::new(|| { *providers }); -pub static DEFAULT_EXTERN_QUERY_PROVIDERS: SyncLazy<Providers> = SyncLazy::new(|| { - let mut extern_providers = *DEFAULT_QUERY_PROVIDERS; +pub static DEFAULT_EXTERN_QUERY_PROVIDERS: SyncLazy<ExternProviders> = SyncLazy::new(|| { + let mut extern_providers = ExternProviders::default(); rustc_metadata::provide_extern(&mut extern_providers); rustc_codegen_ssa::provide_extern(&mut extern_providers); extern_providers @@ -816,7 +816,6 @@ pub fn create_global_ctxt<'tcx>( codegen_backend.provide(&mut local_providers); let mut extern_providers = *DEFAULT_EXTERN_QUERY_PROVIDERS; - codegen_backend.provide(&mut extern_providers); codegen_backend.provide_extern(&mut extern_providers); if let Some(callback) = compiler.override_queries { |
