allow #[target_feature]
on #[naked]
functions
This commit is contained in:
parent
c6a166bac2
commit
a3bb0104ff
@ -5,7 +5,6 @@ Notable attributes that are incompatible with `#[naked]` are:
|
||||
|
||||
* `#[inline]`
|
||||
* `#[track_caller]`
|
||||
* `#[target_feature]`
|
||||
* `#[test]`, `#[ignore]`, `#[should_panic]`
|
||||
|
||||
Erroneous code example:
|
||||
|
@ -423,7 +423,6 @@ fn check_naked(
|
||||
//
|
||||
// * `#[inline]`
|
||||
// * `#[track_caller]`
|
||||
// * `#[target_feature]`
|
||||
// * `#[test]`, `#[ignore]`, `#[should_panic]`
|
||||
//
|
||||
// NOTE: when making changes to this list, check that `error_codes/E0736.md` remains accurate
|
||||
@ -452,6 +451,7 @@ fn check_naked(
|
||||
sym::instruction_set,
|
||||
// code generation
|
||||
sym::cold,
|
||||
sym::target_feature,
|
||||
// documentation
|
||||
sym::doc,
|
||||
];
|
||||
|
@ -1,13 +0,0 @@
|
||||
//@ only-x86_64
|
||||
//@ needs-asm-support
|
||||
#![feature(naked_functions)]
|
||||
#![crate_type = "lib"]
|
||||
|
||||
use std::arch::asm;
|
||||
|
||||
#[target_feature(enable = "sse2")]
|
||||
//~^ ERROR [E0736]
|
||||
#[naked]
|
||||
pub unsafe extern "C" fn naked_target_feature() {
|
||||
asm!("", options(noreturn));
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
error[E0736]: attribute incompatible with `#[naked]`
|
||||
--> $DIR/naked-functions-target-feature.rs:8:1
|
||||
|
|
||||
LL | #[target_feature(enable = "sse2")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the `target_feature` attribute is incompatible with `#[naked]`
|
||||
LL |
|
||||
LL | #[naked]
|
||||
| -------- function marked with `#[naked]` here
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0736`.
|
@ -231,6 +231,12 @@ pub extern "C" fn valid_b() {
|
||||
asm!("", options(noreturn, att_syntax));
|
||||
}
|
||||
|
||||
#[target_feature(enable = "sse2")]
|
||||
#[naked]
|
||||
pub unsafe extern "C" fn compatible_target_feature() {
|
||||
asm!("", options(noreturn));
|
||||
}
|
||||
|
||||
#[doc = "foo bar baz"]
|
||||
#[naked]
|
||||
pub unsafe extern "C" fn compatible_doc_attributes() {
|
||||
|
Loading…
Reference in New Issue
Block a user