Move rustc_codegen_ssa target features to rustc_target

This commit is contained in:
Urgau 2023-12-12 21:47:20 +01:00
parent e1f039f562
commit b1affb9321
2 changed files with 6 additions and 7 deletions

View File

@ -2,12 +2,10 @@
use gccjit::Context; use gccjit::Context;
use smallvec::{smallvec, SmallVec}; use smallvec::{smallvec, SmallVec};
use rustc_codegen_ssa::target_features::{
supported_target_features, tied_target_features, RUSTC_SPECIFIC_FEATURES,
};
use rustc_data_structures::fx::FxHashMap; use rustc_data_structures::fx::FxHashMap;
use rustc_middle::bug; use rustc_middle::bug;
use rustc_session::Session; use rustc_session::Session;
use rustc_target::target_features::RUSTC_SPECIFIC_FEATURES;
use crate::errors::{PossibleFeature, TargetFeatureDisableOrEnable, UnknownCTargetFeature, UnknownCTargetFeaturePrefix}; use crate::errors::{PossibleFeature, TargetFeatureDisableOrEnable, UnknownCTargetFeature, UnknownCTargetFeaturePrefix};
@ -44,7 +42,7 @@ pub(crate) fn global_gcc_features(sess: &Session, diagnostics: bool) -> Vec<Stri
); );
// -Ctarget-features // -Ctarget-features
let supported_features = supported_target_features(sess); let supported_features = sess.target.supported_target_features();
let mut featsmap = FxHashMap::default(); let mut featsmap = FxHashMap::default();
let feats = sess.opts.cg.target_feature let feats = sess.opts.cg.target_feature
.split(',') .split(',')
@ -187,7 +185,7 @@ fn backend_feature_name(s: &str) -> Option<&str> {
// Given a map from target_features to whether they are enabled or disabled, // Given a map from target_features to whether they are enabled or disabled,
// ensure only valid combinations are allowed. // ensure only valid combinations are allowed.
pub fn check_tied_features(sess: &Session, features: &FxHashMap<&str, bool>) -> Option<&'static [&'static str]> { pub fn check_tied_features(sess: &Session, features: &FxHashMap<&str, bool>) -> Option<&'static [&'static str]> {
for tied in tied_target_features(sess) { for tied in sess.target.tied_target_features() {
// Tied features must be set to the same value, or not set at all // Tied features must be set to the same value, or not set at all
let mut tied_iter = tied.iter(); let mut tied_iter = tied.iter();
let enabled = features.get(tied_iter.next().unwrap()); let enabled = features.get(tied_iter.next().unwrap());

View File

@ -97,7 +97,6 @@
use rustc_codegen_ssa::base::codegen_crate; use rustc_codegen_ssa::base::codegen_crate;
use rustc_codegen_ssa::back::write::{CodegenContext, FatLtoInput, ModuleConfig, TargetMachineFactoryFn}; use rustc_codegen_ssa::back::write::{CodegenContext, FatLtoInput, ModuleConfig, TargetMachineFactoryFn};
use rustc_codegen_ssa::back::lto::{LtoModuleCodegen, SerializedModule, ThinModule}; use rustc_codegen_ssa::back::lto::{LtoModuleCodegen, SerializedModule, ThinModule};
use rustc_codegen_ssa::target_features::supported_target_features;
use rustc_data_structures::fx::FxIndexMap; use rustc_data_structures::fx::FxIndexMap;
use rustc_data_structures::sync::IntoDynSyncSend; use rustc_data_structures::sync::IntoDynSyncSend;
use rustc_codegen_ssa::traits::{CodegenBackend, ExtraBackendMethods, ThinBufferMethods, WriteBackendMethods}; use rustc_codegen_ssa::traits::{CodegenBackend, ExtraBackendMethods, ThinBufferMethods, WriteBackendMethods};
@ -397,7 +396,9 @@ fn to_gcc_opt_level(optlevel: Option<OptLevel>) -> OptimizationLevel {
} }
pub fn target_features(sess: &Session, allow_unstable: bool, target_info: &LockedTargetInfo) -> Vec<Symbol> { pub fn target_features(sess: &Session, allow_unstable: bool, target_info: &LockedTargetInfo) -> Vec<Symbol> {
supported_target_features(sess) sess
.target
.supported_target_features()
.iter() .iter()
.filter_map( .filter_map(
|&(feature, gate)| { |&(feature, gate)| {