File tree 2 files changed +23
-8
lines changed
compiler/rustc_codegen_ssa/src
2 files changed +23
-8
lines changed Original file line number Diff line number Diff line change @@ -65,11 +65,16 @@ pub(crate) fn from_target_feature_attr(
65
65
// Only allow target features whose feature gates have been enabled
66
66
// and which are permitted to be toggled.
67
67
if let Err ( reason) = stability. toggle_allowed ( /*enable*/ true ) {
68
- tcx. dcx ( ) . emit_err ( errors:: ForbiddenTargetFeatureAttr {
69
- span : item. span ( ) ,
70
- feature,
71
- reason,
72
- } ) ;
68
+ // We skip this error in rustdoc, where we want to allow all target features of
69
+ // all targets, so we can't check their ABI compatibility and anyway we are not
70
+ // generating code so "it's fine".
71
+ if !tcx. sess . opts . actually_rustdoc {
72
+ tcx. dcx ( ) . emit_err ( errors:: ForbiddenTargetFeatureAttr {
73
+ span : item. span ( ) ,
74
+ feature,
75
+ reason,
76
+ } ) ;
77
+ }
73
78
} else if let Some ( nightly_feature) = stability. requires_nightly ( )
74
79
&& !rust_features. enabled ( nightly_feature)
75
80
{
Original file line number Diff line number Diff line change 1
1
//! This is a regression test for <https://github.com/rust-lang/rust/issues/137366>, ensuring
2
- //! that we can use the `neon` target feature on ARM-32 targets in rustdoc despite there
2
+ //! that we can use the `neon` target feature on ARM32 targets in rustdoc despite there
3
3
//! being a "forbidden" feature of the same name for aarch64, and rustdoc merging the
4
4
//! target features of all targets.
5
5
//@ check-pass
6
- //@ compile-flags: --target armv7-unknown-linux-gnueabihf
6
+ //@ revisions: arm aarch64
7
+ //@[arm] compile-flags: --target armv7-unknown-linux-gnueabihf
8
+ //@[arm] needs-llvm-components: arm
9
+ //@[aarch64] compile-flags: --target aarch64-unknown-none-softfloat
10
+ //@[aarch64] needs-llvm-components: aarch64
7
11
8
12
#![ crate_type = "lib" ]
9
13
#![ feature( no_core, lang_items) ]
@@ -15,4 +19,10 @@ pub trait Sized {}
15
19
16
20
// `fp-armv8` is "forbidden" on aarch64 as we tie it to `neon`.
17
21
#[ target_feature( enable = "fp-armv8" ) ]
18
- pub fn fun ( ) { }
22
+ pub fn fun1 ( ) { }
23
+
24
+ // This would usually be rejected as it changes the ABI.
25
+ // But we disable that check in rustdoc since we are building "for all targets" and the
26
+ // check can't really handle that.
27
+ #[ target_feature( enable = "soft-float" ) ]
28
+ pub fn fun2 ( ) { }
You can’t perform that action at this time.
0 commit comments