From ad3991d30382676f987a38243b3097d880b9033a Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Wed, 9 Oct 2024 09:01:57 +0200 Subject: nightly feature tracking: get rid of the per-feature bool fields --- compiler/rustc_codegen_ssa/src/codegen_attrs.rs | 10 +++--- compiler/rustc_codegen_ssa/src/target_features.rs | 42 +++++++++++------------ 2 files changed, 26 insertions(+), 26 deletions(-) (limited to 'compiler/rustc_codegen_ssa/src') diff --git a/compiler/rustc_codegen_ssa/src/codegen_attrs.rs b/compiler/rustc_codegen_ssa/src/codegen_attrs.rs index d536419ab3c..a5bd3adbcdd 100644 --- a/compiler/rustc_codegen_ssa/src/codegen_attrs.rs +++ b/compiler/rustc_codegen_ssa/src/codegen_attrs.rs @@ -137,7 +137,7 @@ fn codegen_fn_attrs(tcx: TyCtxt<'_>, did: LocalDefId) -> CodegenFnAttrs { let inner = attr.meta_item_list(); match inner.as_deref() { Some([item]) if item.has_name(sym::linker) => { - if !tcx.features().used_with_arg { + if !tcx.features().used_with_arg() { feature_err( &tcx.sess, sym::used_with_arg, @@ -149,7 +149,7 @@ fn codegen_fn_attrs(tcx: TyCtxt<'_>, did: LocalDefId) -> CodegenFnAttrs { codegen_fn_attrs.flags |= CodegenFnAttrFlags::USED_LINKER; } Some([item]) if item.has_name(sym::compiler) => { - if !tcx.features().used_with_arg { + if !tcx.features().used_with_arg() { feature_err( &tcx.sess, sym::used_with_arg, @@ -213,7 +213,7 @@ fn codegen_fn_attrs(tcx: TyCtxt<'_>, did: LocalDefId) -> CodegenFnAttrs { .emit(); } if is_closure - && !tcx.features().closure_track_caller + && !tcx.features().closure_track_caller() && !attr.span.allows_unstable(sym::closure_track_caller) { feature_err( @@ -268,7 +268,7 @@ fn codegen_fn_attrs(tcx: TyCtxt<'_>, did: LocalDefId) -> CodegenFnAttrs { // // This exception needs to be kept in sync with allowing // `#[target_feature]` on `main` and `start`. - } else if !tcx.features().target_feature_11 { + } else if !tcx.features().target_feature_11() { feature_err( &tcx.sess, sym::target_feature_11, @@ -584,7 +584,7 @@ fn codegen_fn_attrs(tcx: TyCtxt<'_>, did: LocalDefId) -> CodegenFnAttrs { // its parent function, which effectively inherits the features anyway. Boxing this closure // would result in this closure being compiled without the inherited target features, but this // is probably a poor usage of `#[inline(always)]` and easily avoided by not using the attribute. - if tcx.features().target_feature_11 + if tcx.features().target_feature_11() && tcx.is_closure_like(did.to_def_id()) && codegen_fn_attrs.inline != InlineAttr::Always { diff --git a/compiler/rustc_codegen_ssa/src/target_features.rs b/compiler/rustc_codegen_ssa/src/target_features.rs index dfe8fd616e4..d9930710609 100644 --- a/compiler/rustc_codegen_ssa/src/target_features.rs +++ b/compiler/rustc_codegen_ssa/src/target_features.rs @@ -63,27 +63,27 @@ pub(crate) fn from_target_feature( // Only allow features whose feature gates have been enabled. let allowed = match feature_gate.as_ref().copied() { - Some(sym::arm_target_feature) => rust_features.arm_target_feature, - Some(sym::hexagon_target_feature) => rust_features.hexagon_target_feature, - Some(sym::powerpc_target_feature) => rust_features.powerpc_target_feature, - Some(sym::mips_target_feature) => rust_features.mips_target_feature, - Some(sym::riscv_target_feature) => rust_features.riscv_target_feature, - Some(sym::avx512_target_feature) => rust_features.avx512_target_feature, - Some(sym::sse4a_target_feature) => rust_features.sse4a_target_feature, - Some(sym::tbm_target_feature) => rust_features.tbm_target_feature, - Some(sym::wasm_target_feature) => rust_features.wasm_target_feature, - Some(sym::rtm_target_feature) => rust_features.rtm_target_feature, - Some(sym::ermsb_target_feature) => rust_features.ermsb_target_feature, - Some(sym::bpf_target_feature) => rust_features.bpf_target_feature, - Some(sym::aarch64_ver_target_feature) => rust_features.aarch64_ver_target_feature, - Some(sym::csky_target_feature) => rust_features.csky_target_feature, - Some(sym::loongarch_target_feature) => rust_features.loongarch_target_feature, - Some(sym::lahfsahf_target_feature) => rust_features.lahfsahf_target_feature, - Some(sym::prfchw_target_feature) => rust_features.prfchw_target_feature, - Some(sym::sha512_sm_x86) => rust_features.sha512_sm_x86, - Some(sym::x86_amx_intrinsics) => rust_features.x86_amx_intrinsics, - Some(sym::xop_target_feature) => rust_features.xop_target_feature, - Some(sym::s390x_target_feature) => rust_features.s390x_target_feature, + Some(sym::arm_target_feature) => rust_features.arm_target_feature(), + Some(sym::hexagon_target_feature) => rust_features.hexagon_target_feature(), + Some(sym::powerpc_target_feature) => rust_features.powerpc_target_feature(), + Some(sym::mips_target_feature) => rust_features.mips_target_feature(), + Some(sym::riscv_target_feature) => rust_features.riscv_target_feature(), + Some(sym::avx512_target_feature) => rust_features.avx512_target_feature(), + Some(sym::sse4a_target_feature) => rust_features.sse4a_target_feature(), + Some(sym::tbm_target_feature) => rust_features.tbm_target_feature(), + Some(sym::wasm_target_feature) => rust_features.wasm_target_feature(), + Some(sym::rtm_target_feature) => rust_features.rtm_target_feature(), + Some(sym::ermsb_target_feature) => rust_features.ermsb_target_feature(), + Some(sym::bpf_target_feature) => rust_features.bpf_target_feature(), + Some(sym::aarch64_ver_target_feature) => rust_features.aarch64_ver_target_feature(), + Some(sym::csky_target_feature) => rust_features.csky_target_feature(), + Some(sym::loongarch_target_feature) => rust_features.loongarch_target_feature(), + Some(sym::lahfsahf_target_feature) => rust_features.lahfsahf_target_feature(), + Some(sym::prfchw_target_feature) => rust_features.prfchw_target_feature(), + Some(sym::sha512_sm_x86) => rust_features.sha512_sm_x86(), + Some(sym::x86_amx_intrinsics) => rust_features.x86_amx_intrinsics(), + Some(sym::xop_target_feature) => rust_features.xop_target_feature(), + Some(sym::s390x_target_feature) => rust_features.s390x_target_feature(), Some(name) => bug!("unknown target feature gate {}", name), None => true, }; -- cgit 1.4.1-3-g733a5 From 6ad17bd30c68c90792cb0e4fca8208be41493f6b Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Wed, 23 Oct 2024 07:34:35 +0100 Subject: get rid of feature list in target feature logic --- compiler/rustc_codegen_ssa/src/target_features.rs | 26 ++--------------------- 1 file changed, 2 insertions(+), 24 deletions(-) (limited to 'compiler/rustc_codegen_ssa/src') diff --git a/compiler/rustc_codegen_ssa/src/target_features.rs b/compiler/rustc_codegen_ssa/src/target_features.rs index d9930710609..0845bcc5749 100644 --- a/compiler/rustc_codegen_ssa/src/target_features.rs +++ b/compiler/rustc_codegen_ssa/src/target_features.rs @@ -5,7 +5,6 @@ use rustc_data_structures::unord::{UnordMap, UnordSet}; use rustc_errors::Applicability; use rustc_hir::def::DefKind; use rustc_hir::def_id::{DefId, LOCAL_CRATE, LocalDefId}; -use rustc_middle::bug; use rustc_middle::middle::codegen_fn_attrs::TargetFeature; use rustc_middle::query::Providers; use rustc_middle::ty::TyCtxt; @@ -61,30 +60,9 @@ pub(crate) fn from_target_feature( return None; }; - // Only allow features whose feature gates have been enabled. + // Only allow target features whose feature gates have been enabled. let allowed = match feature_gate.as_ref().copied() { - Some(sym::arm_target_feature) => rust_features.arm_target_feature(), - Some(sym::hexagon_target_feature) => rust_features.hexagon_target_feature(), - Some(sym::powerpc_target_feature) => rust_features.powerpc_target_feature(), - Some(sym::mips_target_feature) => rust_features.mips_target_feature(), - Some(sym::riscv_target_feature) => rust_features.riscv_target_feature(), - Some(sym::avx512_target_feature) => rust_features.avx512_target_feature(), - Some(sym::sse4a_target_feature) => rust_features.sse4a_target_feature(), - Some(sym::tbm_target_feature) => rust_features.tbm_target_feature(), - Some(sym::wasm_target_feature) => rust_features.wasm_target_feature(), - Some(sym::rtm_target_feature) => rust_features.rtm_target_feature(), - Some(sym::ermsb_target_feature) => rust_features.ermsb_target_feature(), - Some(sym::bpf_target_feature) => rust_features.bpf_target_feature(), - Some(sym::aarch64_ver_target_feature) => rust_features.aarch64_ver_target_feature(), - Some(sym::csky_target_feature) => rust_features.csky_target_feature(), - Some(sym::loongarch_target_feature) => rust_features.loongarch_target_feature(), - Some(sym::lahfsahf_target_feature) => rust_features.lahfsahf_target_feature(), - Some(sym::prfchw_target_feature) => rust_features.prfchw_target_feature(), - Some(sym::sha512_sm_x86) => rust_features.sha512_sm_x86(), - Some(sym::x86_amx_intrinsics) => rust_features.x86_amx_intrinsics(), - Some(sym::xop_target_feature) => rust_features.xop_target_feature(), - Some(sym::s390x_target_feature) => rust_features.s390x_target_feature(), - Some(name) => bug!("unknown target feature gate {}", name), + Some(name) => rust_features.enabled(name), None => true, }; if !allowed { -- cgit 1.4.1-3-g733a5