diff options
Diffstat (limited to 'compiler/rustc_codegen_gcc/src/gcc_util.rs')
| -rw-r--r-- | compiler/rustc_codegen_gcc/src/gcc_util.rs | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/compiler/rustc_codegen_gcc/src/gcc_util.rs b/compiler/rustc_codegen_gcc/src/gcc_util.rs index b0fd07827d6..3e579d75d86 100644 --- a/compiler/rustc_codegen_gcc/src/gcc_util.rs +++ b/compiler/rustc_codegen_gcc/src/gcc_util.rs @@ -129,12 +129,18 @@ pub(crate) fn global_gcc_features(sess: &Session, diagnostics: bool) -> Vec<Stri }); } } else { - if abi_enable_set.contains(feature) { - sess.dcx().emit_warn(ForbiddenCTargetFeature { - feature, - enabled: "disabled", - reason: "this feature is required by the target ABI", - }); + // FIXME: we have to request implied features here since + // negative features do not handle implied features above. + #[allow(rustc::potential_query_instability)] // order does not matter + for &required in abi_enable_set.iter() { + let implied = sess.target.implied_target_features(std::iter::once(required)); + if implied.contains(feature) { + sess.dcx().emit_warn(ForbiddenCTargetFeature { + feature, + enabled: "disabled", + reason: "this feature is required by the target ABI", + }); + } } } |
