@@ -312,7 +312,7 @@ pub fn target_features(sess: &Session, allow_unstable: bool) -> Vec<Symbol> {
312312 sess. target
313313 . supported_target_features ( )
314314 . iter ( )
315- . filter_map ( |& ( feature, gate) | {
315+ . filter_map ( |& ( feature, gate, _ ) | {
316316 if sess. is_nightly_build ( ) || allow_unstable || gate. is_stable ( ) {
317317 Some ( feature)
318318 } else {
@@ -386,7 +386,7 @@ fn print_target_features(out: &mut String, sess: &Session, tm: &llvm::TargetMach
386386 . target
387387 . supported_target_features ( )
388388 . iter ( )
389- . map ( |( feature, _gate) | {
389+ . map ( |( feature, _gate, _implied ) | {
390390 // LLVM asserts that these are sorted. LLVM and Rust both use byte comparison for these strings.
391391 let llvm_feature = to_llvm_features ( sess, * feature) . llvm_feature_name ;
392392 let desc =
@@ -571,17 +571,19 @@ pub(crate) fn global_llvm_features(sess: &Session, diagnostics: bool) -> Vec<Str
571571 let feature = backend_feature_name ( sess, s) ?;
572572 // Warn against use of LLVM specific feature names and unstable features on the CLI.
573573 if diagnostics {
574- let feature_state = supported_features. iter ( ) . find ( |& & ( v, _) | v == feature) ;
574+ let feature_state = supported_features. iter ( ) . find ( |& & ( v, _, _ ) | v == feature) ;
575575 if feature_state. is_none ( ) {
576- let rust_feature = supported_features. iter ( ) . find_map ( |& ( rust_feature, _) | {
577- let llvm_features = to_llvm_features ( sess, rust_feature) ;
578- if llvm_features. contains ( feature) && !llvm_features. contains ( rust_feature)
579- {
580- Some ( rust_feature)
581- } else {
582- None
583- }
584- } ) ;
576+ let rust_feature =
577+ supported_features. iter ( ) . find_map ( |& ( rust_feature, _, _) | {
578+ let llvm_features = to_llvm_features ( sess, rust_feature) ;
579+ if llvm_features. contains ( feature)
580+ && !llvm_features. contains ( rust_feature)
581+ {
582+ Some ( rust_feature)
583+ } else {
584+ None
585+ }
586+ } ) ;
585587 let unknown_feature = if let Some ( rust_feature) = rust_feature {
586588 UnknownCTargetFeature {
587589 feature,
@@ -592,7 +594,7 @@ pub(crate) fn global_llvm_features(sess: &Session, diagnostics: bool) -> Vec<Str
592594 } ;
593595 sess. dcx ( ) . emit_warn ( unknown_feature) ;
594596 } else if feature_state
595- . is_some_and ( |( _name, feature_gate) | !feature_gate. is_stable ( ) )
597+ . is_some_and ( |( _name, feature_gate, _implied ) | !feature_gate. is_stable ( ) )
596598 {
597599 // An unstable feature. Warn about using it.
598600 sess. dcx ( ) . emit_warn ( UnstableCTargetFeature { feature } ) ;
0 commit comments