mirror of
https://github.com/rust-lang/rust.git
synced 2026-01-24 23:17:31 +00:00
also skip abi_required_features check in rustdoc
(cherry picked from commit 4c939db0e7)
This commit is contained in:
@@ -65,11 +65,16 @@ pub(crate) fn from_target_feature_attr(
|
||||
// Only allow target features whose feature gates have been enabled
|
||||
// and which are permitted to be toggled.
|
||||
if let Err(reason) = stability.toggle_allowed(/*enable*/ true) {
|
||||
tcx.dcx().emit_err(errors::ForbiddenTargetFeatureAttr {
|
||||
span: item.span(),
|
||||
feature,
|
||||
reason,
|
||||
});
|
||||
// We skip this error in rustdoc, where we want to allow all target features of
|
||||
// all targets, so we can't check their ABI compatibility and anyway we are not
|
||||
// generating code so "it's fine".
|
||||
if !tcx.sess.opts.actually_rustdoc {
|
||||
tcx.dcx().emit_err(errors::ForbiddenTargetFeatureAttr {
|
||||
span: item.span(),
|
||||
feature,
|
||||
reason,
|
||||
});
|
||||
}
|
||||
} else if let Some(nightly_feature) = stability.requires_nightly()
|
||||
&& !rust_features.enabled(nightly_feature)
|
||||
{
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
//! This is a regression test for <https://github.com/rust-lang/rust/issues/137366>, ensuring
|
||||
//! that we can use the `neon` target feature on ARM-32 targets in rustdoc despite there
|
||||
//! that we can use the `neon` target feature on ARM32 targets in rustdoc despite there
|
||||
//! being a "forbidden" feature of the same name for aarch64, and rustdoc merging the
|
||||
//! target features of all targets.
|
||||
//@ check-pass
|
||||
//@ compile-flags: --target armv7-unknown-linux-gnueabihf
|
||||
//@ revisions: arm aarch64
|
||||
//@[arm] compile-flags: --target armv7-unknown-linux-gnueabihf
|
||||
//@[arm] needs-llvm-components: arm
|
||||
//@[aarch64] compile-flags: --target aarch64-unknown-none-softfloat
|
||||
//@[aarch64] needs-llvm-components: aarch64
|
||||
|
||||
#![crate_type = "lib"]
|
||||
#![feature(no_core, lang_items)]
|
||||
@@ -15,4 +19,10 @@ pub trait Sized {}
|
||||
|
||||
// `fp-armv8` is "forbidden" on aarch64 as we tie it to `neon`.
|
||||
#[target_feature(enable = "fp-armv8")]
|
||||
pub fn fun() {}
|
||||
pub fn fun1() {}
|
||||
|
||||
// This would usually be rejected as it changes the ABI.
|
||||
// But we disable that check in rustdoc since we are building "for all targets" and the
|
||||
// check can't really handle that.
|
||||
#[target_feature(enable = "soft-float")]
|
||||
pub fn fun2() {}
|
||||
|
||||
Reference in New Issue
Block a user