1
Fork 0

Auto merge of #85909 - cjgillot:alloc-kind-query, r=Aaron1011

Make allocator_kind a query.

Part of #85153

r? `@Aaron1011`
This commit is contained in:
bors 2021-06-28 01:20:01 +00:00
commit 345530412f
10 changed files with 11 additions and 17 deletions

View file

@ -1,6 +1,6 @@
use rustc_span::symbol::{sym, Symbol}; use rustc_span::symbol::{sym, Symbol};
#[derive(Clone, Copy)] #[derive(Clone, Debug, Copy, HashStable_Generic)]
pub enum AllocatorKind { pub enum AllocatorKind {
Global, Global,
Default, Default,

View file

@ -19,7 +19,7 @@ pub(crate) fn codegen(
}); });
if any_dynamic_crate { if any_dynamic_crate {
false false
} else if let Some(kind) = tcx.allocator_kind() { } else if let Some(kind) = tcx.allocator_kind(()) {
codegen_inner(module, unwind_context, kind); codegen_inner(module, unwind_context, kind);
true true
} else { } else {

View file

@ -180,7 +180,7 @@ fn exported_symbols_provider_local(
symbols.push((exported_symbol, SymbolExportLevel::C)); symbols.push((exported_symbol, SymbolExportLevel::C));
} }
if tcx.allocator_kind().is_some() { if tcx.allocator_kind(()).is_some() {
for method in ALLOCATOR_METHODS { for method in ALLOCATOR_METHODS {
let symbol_name = format!("__rust_{}", method.name); let symbol_name = format!("__rust_{}", method.name);
let exported_symbol = ExportedSymbol::NoDefId(SymbolName::new(tcx, &symbol_name)); let exported_symbol = ExportedSymbol::NoDefId(SymbolName::new(tcx, &symbol_name));

View file

@ -518,7 +518,7 @@ pub fn codegen_crate<B: ExtraBackendMethods>(
}); });
let allocator_module = if any_dynamic_crate { let allocator_module = if any_dynamic_crate {
None None
} else if let Some(kind) = tcx.allocator_kind() { } else if let Some(kind) = tcx.allocator_kind(()) {
let llmod_id = let llmod_id =
cgu_name_builder.build_cgu_name(LOCAL_CRATE, &["crate"], Some("allocator")).to_string(); cgu_name_builder.build_cgu_name(LOCAL_CRATE, &["crate"], Some("allocator")).to_string();
let mut modules = backend.new_metadata(tcx, &llmod_id); let mut modules = backend.new_metadata(tcx, &llmod_id);

View file

@ -4,7 +4,6 @@ use crate::native_libs;
use crate::rmeta::encoder; use crate::rmeta::encoder;
use rustc_ast as ast; use rustc_ast as ast;
use rustc_ast::expand::allocator::AllocatorKind;
use rustc_data_structures::stable_map::FxHashMap; use rustc_data_structures::stable_map::FxHashMap;
use rustc_data_structures::svh::Svh; use rustc_data_structures::svh::Svh;
use rustc_hir as hir; use rustc_hir as hir;
@ -242,6 +241,7 @@ pub fn provide(providers: &mut Providers) {
// therefore no actual inputs, they're just reading tables calculated in // therefore no actual inputs, they're just reading tables calculated in
// resolve! Does this work? Unsure! That's what the issue is about // resolve! Does this work? Unsure! That's what the issue is about
*providers = Providers { *providers = Providers {
allocator_kind: |tcx, ()| CStore::from_tcx(tcx).allocator_kind(),
is_dllimport_foreign_item: |tcx, id| match tcx.native_library_kind(id) { is_dllimport_foreign_item: |tcx, id| match tcx.native_library_kind(id) {
Some( Some(
NativeLibKind::Dylib { .. } | NativeLibKind::RawDylib | NativeLibKind::Unspecified, NativeLibKind::Dylib { .. } | NativeLibKind::RawDylib | NativeLibKind::Unspecified,
@ -535,8 +535,4 @@ impl CrateStore for CStore {
fn encode_metadata(&self, tcx: TyCtxt<'_>) -> EncodedMetadata { fn encode_metadata(&self, tcx: TyCtxt<'_>) -> EncodedMetadata {
encoder::encode_metadata(tcx) encoder::encode_metadata(tcx)
} }
fn allocator_kind(&self) -> Option<AllocatorKind> {
self.allocator_kind()
}
} }

View file

@ -285,7 +285,7 @@ pub type DepNode = rustc_query_system::dep_graph::DepNode<DepKind>;
// required that their size stay the same, but we don't want to change // required that their size stay the same, but we don't want to change
// it inadvertently. This assert just ensures we're aware of any change. // it inadvertently. This assert just ensures we're aware of any change.
#[cfg(any(target_arch = "x86", target_arch = "x86_64"))] #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
static_assert_size!(DepNode, 17); static_assert_size!(DepNode, 18);
#[cfg(not(any(target_arch = "x86", target_arch = "x86_64")))] #[cfg(not(any(target_arch = "x86", target_arch = "x86_64")))]
static_assert_size!(DepNode, 24); static_assert_size!(DepNode, 24);

View file

@ -5,7 +5,6 @@
use crate::ty::TyCtxt; use crate::ty::TyCtxt;
use rustc_ast as ast; use rustc_ast as ast;
use rustc_ast::expand::allocator::AllocatorKind;
use rustc_data_structures::svh::Svh; use rustc_data_structures::svh::Svh;
use rustc_data_structures::sync::{self, MetadataRef}; use rustc_data_structures::sync::{self, MetadataRef};
use rustc_hir::def::DefKind; use rustc_hir::def::DefKind;
@ -215,7 +214,6 @@ pub trait CrateStore {
// utility functions // utility functions
fn encode_metadata(&self, tcx: TyCtxt<'_>) -> EncodedMetadata; fn encode_metadata(&self, tcx: TyCtxt<'_>) -> EncodedMetadata;
fn allocator_kind(&self) -> Option<AllocatorKind>;
} }
pub type CrateStoreDyn = dyn CrateStore + sync::Sync; pub type CrateStoreDyn = dyn CrateStore + sync::Sync;

View file

@ -1416,6 +1416,10 @@ rustc_queries! {
eval_always eval_always
desc { "check whether crate {} is a private dependency", c } desc { "check whether crate {} is a private dependency", c }
} }
query allocator_kind(_: ()) -> Option<AllocatorKind> {
eval_always
desc { "allocator kind for the current crate" }
}
query upvars_mentioned(def_id: DefId) -> Option<&'tcx FxIndexMap<hir::HirId, hir::Upvar>> { query upvars_mentioned(def_id: DefId) -> Option<&'tcx FxIndexMap<hir::HirId, hir::Upvar>> {
desc { |tcx| "collecting upvars mentioned in `{}`", tcx.def_path_str(def_id) } desc { |tcx| "collecting upvars mentioned in `{}`", tcx.def_path_str(def_id) }

View file

@ -26,7 +26,6 @@ use crate::ty::{
TraitObjectVisitor, Ty, TyKind, TyS, TyVar, TyVid, TypeAndMut, UintTy, Visibility, TraitObjectVisitor, Ty, TyKind, TyS, TyVar, TyVid, TypeAndMut, UintTy, Visibility,
}; };
use rustc_ast as ast; use rustc_ast as ast;
use rustc_ast::expand::allocator::AllocatorKind;
use rustc_attr as attr; use rustc_attr as attr;
use rustc_data_structures::fx::{FxHashMap, FxHashSet}; use rustc_data_structures::fx::{FxHashMap, FxHashSet};
use rustc_data_structures::profiling::SelfProfilerRef; use rustc_data_structures::profiling::SelfProfilerRef;
@ -1260,10 +1259,6 @@ impl<'tcx> TyCtxt<'tcx> {
self.all_crate_nums(()) self.all_crate_nums(())
} }
pub fn allocator_kind(self) -> Option<AllocatorKind> {
self.cstore.allocator_kind()
}
pub fn features(self) -> &'tcx rustc_feature::Features { pub fn features(self) -> &'tcx rustc_feature::Features {
self.features_query(()) self.features_query(())
} }

View file

@ -33,6 +33,7 @@ use crate::traits::{self, ImplSource};
use crate::ty::subst::{GenericArg, SubstsRef}; use crate::ty::subst::{GenericArg, SubstsRef};
use crate::ty::util::AlwaysRequiresDrop; use crate::ty::util::AlwaysRequiresDrop;
use crate::ty::{self, AdtSizedConstraint, CrateInherentImpls, ParamEnvAnd, Ty, TyCtxt}; use crate::ty::{self, AdtSizedConstraint, CrateInherentImpls, ParamEnvAnd, Ty, TyCtxt};
use rustc_ast::expand::allocator::AllocatorKind;
use rustc_data_structures::fx::{FxHashMap, FxHashSet, FxIndexMap}; use rustc_data_structures::fx::{FxHashMap, FxHashSet, FxIndexMap};
use rustc_data_structures::steal::Steal; use rustc_data_structures::steal::Steal;
use rustc_data_structures::svh::Svh; use rustc_data_structures::svh::Svh;