From f5c3e83013700835cfd64215b482b8dffe1f71be Mon Sep 17 00:00:00 2001 From: bjorn3 Date: Sun, 30 May 2021 17:24:54 +0200 Subject: Avoid a branch on key being local for queries that use the same local and extern providers --- compiler/rustc_interface/src/interface.rs | 4 ++-- compiler/rustc_interface/src/passes.rs | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) (limited to 'compiler/rustc_interface/src') 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, pub(crate) register_lints: Option>, pub(crate) override_queries: - Option, + Option, } 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, + Option, /// 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 = SyncLazy::new(|| { *providers }); -pub static DEFAULT_EXTERN_QUERY_PROVIDERS: SyncLazy = SyncLazy::new(|| { - let mut extern_providers = *DEFAULT_QUERY_PROVIDERS; +pub static DEFAULT_EXTERN_QUERY_PROVIDERS: SyncLazy = 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 { -- cgit 1.4.1-3-g733a5