@@ -312,7 +312,7 @@ pub fn target_features(sess: &Session, allow_unstable: bool) -> Vec<Symbol> {
312
312
sess. target
313
313
. supported_target_features ( )
314
314
. iter ( )
315
- . filter_map ( |& ( feature, gate) | {
315
+ . filter_map ( |& ( feature, gate, _ ) | {
316
316
if sess. is_nightly_build ( ) || allow_unstable || gate. is_stable ( ) {
317
317
Some ( feature)
318
318
} else {
@@ -386,7 +386,7 @@ fn print_target_features(out: &mut String, sess: &Session, tm: &llvm::TargetMach
386
386
. target
387
387
. supported_target_features ( )
388
388
. iter ( )
389
- . map ( |( feature, _gate) | {
389
+ . map ( |( feature, _gate, _implied ) | {
390
390
// LLVM asserts that these are sorted. LLVM and Rust both use byte comparison for these strings.
391
391
let llvm_feature = to_llvm_features ( sess, * feature) . llvm_feature_name ;
392
392
let desc =
@@ -571,17 +571,19 @@ pub(crate) fn global_llvm_features(sess: &Session, diagnostics: bool) -> Vec<Str
571
571
let feature = backend_feature_name ( sess, s) ?;
572
572
// Warn against use of LLVM specific feature names and unstable features on the CLI.
573
573
if diagnostics {
574
- let feature_state = supported_features. iter ( ) . find ( |& & ( v, _) | v == feature) ;
574
+ let feature_state = supported_features. iter ( ) . find ( |& & ( v, _, _ ) | v == feature) ;
575
575
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
+ } ) ;
585
587
let unknown_feature = if let Some ( rust_feature) = rust_feature {
586
588
UnknownCTargetFeature {
587
589
feature,
@@ -592,7 +594,7 @@ pub(crate) fn global_llvm_features(sess: &Session, diagnostics: bool) -> Vec<Str
592
594
} ;
593
595
sess. dcx ( ) . emit_warn ( unknown_feature) ;
594
596
} 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 ( ) )
596
598
{
597
599
// An unstable feature. Warn about using it.
598
600
sess. dcx ( ) . emit_warn ( UnstableCTargetFeature { feature } ) ;
0 commit comments