Move rustc_codegen_ssa target features to rustc_target
This commit is contained in:
parent
e1f039f562
commit
b1affb9321
@ -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());
|
||||||
|
@ -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)| {
|
||||||
|
Loading…
Reference in New Issue
Block a user