about summary refs log tree commit diff
diff options
context:
space:
mode:
authorFolkert de Vries <folkert@folkertdev.nl>2024-12-18 22:05:27 +0100
committerFolkert de Vries <folkert@folkertdev.nl>2025-04-20 11:18:38 +0200
commitdf8a3d5f1d363c19e2fc82060aabb80a9cd94015 (patch)
tree7da3f224f99a98fed9cb5f179be3e8f7f7d3fbac
parent49e5e4e3a5610c240a717cb99003a5d5d3356679 (diff)
downloadrust-df8a3d5f1d363c19e2fc82060aabb80a9cd94015.tar.gz
rust-df8a3d5f1d363c19e2fc82060aabb80a9cd94015.zip
stabilize `naked_functions`
-rw-r--r--compiler/rustc_codegen_cranelift/example/mini_core_hello_world.rs11
-rw-r--r--compiler/rustc_error_codes/src/error_codes/E0787.md2
-rw-r--r--compiler/rustc_feature/src/accepted.rs2
-rw-r--r--compiler/rustc_feature/src/builtin_attrs.rs7
-rw-r--r--compiler/rustc_feature/src/unstable.rs2
-rw-r--r--compiler/rustc_passes/src/check_attr.rs7
-rw-r--r--library/core/src/arch.rs2
-rw-r--r--src/doc/unstable-book/src/compiler-flags/sanitizer.md2
-rw-r--r--tests/assembly/naked-functions/aarch64-naked-fn-no-bti-prolog.rs2
-rw-r--r--tests/assembly/naked-functions/aix.rs2
-rw-r--r--tests/assembly/naked-functions/wasm32.rs2
-rw-r--r--tests/assembly/naked-functions/x86_64-naked-fn-no-cet-prolog.rs2
-rw-r--r--tests/auxiliary/minicore.rs1
-rw-r--r--tests/codegen/cffi/c-variadic-naked.rs1
-rw-r--r--tests/codegen/naked-asan.rs2
-rw-r--r--tests/codegen/naked-fn/aligned.rs2
-rw-r--r--tests/codegen/naked-fn/generics.rs1
-rw-r--r--tests/codegen/naked-fn/instruction-set.rs2
-rw-r--r--tests/codegen/naked-fn/min-function-alignment.rs2
-rw-r--r--tests/codegen/naked-fn/naked-functions.rs2
-rw-r--r--tests/run-make/naked-symbol-visibility/a_rust_dylib.rs2
-rw-r--r--tests/ui/asm/naked-asm-outside-naked-fn.rs1
-rw-r--r--tests/ui/asm/naked-asm-outside-naked-fn.stderr6
-rw-r--r--tests/ui/asm/naked-functions-ffi.rs1
-rw-r--r--tests/ui/asm/naked-functions-ffi.stderr4
-rw-r--r--tests/ui/asm/naked-functions-inline.rs1
-rw-r--r--tests/ui/asm/naked-functions-inline.stderr8
-rw-r--r--tests/ui/asm/naked-functions-instruction-set.rs2
-rw-r--r--tests/ui/asm/naked-functions-rustic-abi.rs2
-rw-r--r--tests/ui/asm/naked-functions-target-feature.rs2
-rw-r--r--tests/ui/asm/naked-functions-testattrs.rs1
-rw-r--r--tests/ui/asm/naked-functions-testattrs.stderr8
-rw-r--r--tests/ui/asm/naked-functions-unused.aarch64.stderr20
-rw-r--r--tests/ui/asm/naked-functions-unused.rs1
-rw-r--r--tests/ui/asm/naked-functions-unused.x86_64.stderr20
-rw-r--r--tests/ui/asm/naked-functions.rs1
-rw-r--r--tests/ui/asm/naked-functions.stderr50
-rw-r--r--tests/ui/asm/naked-invalid-attr.rs4
-rw-r--r--tests/ui/asm/naked-invalid-attr.stderr17
-rw-r--r--tests/ui/asm/naked-with-invalid-repr-attr.rs1
-rw-r--r--tests/ui/asm/naked-with-invalid-repr-attr.stderr12
-rw-r--r--tests/ui/asm/named-asm-labels.rs2
-rw-r--r--tests/ui/asm/named-asm-labels.stderr116
-rw-r--r--tests/ui/asm/simple_global_asm.rs1
-rw-r--r--tests/ui/feature-gates/feature-gate-naked_functions.rs20
-rw-r--r--tests/ui/feature-gates/feature-gate-naked_functions.stderr75
-rw-r--r--tests/ui/feature-gates/feature-gate-naked_functions_rustic_abi.rs2
-rw-r--r--tests/ui/feature-gates/feature-gate-naked_functions_target_feature.rs2
-rw-r--r--tests/ui/feature-gates/feature-gate-naked_functions_target_feature.stderr2
-rw-r--r--tests/ui/lint/inline-exported.rs2
-rw-r--r--tests/ui/lint/inline-exported.stderr8
-rw-r--r--tests/ui/rfcs/rfc-2091-track-caller/error-with-naked.rs1
-rw-r--r--tests/ui/rfcs/rfc-2091-track-caller/error-with-naked.stderr8
53 files changed, 165 insertions, 294 deletions
diff --git a/compiler/rustc_codegen_cranelift/example/mini_core_hello_world.rs b/compiler/rustc_codegen_cranelift/example/mini_core_hello_world.rs
index 0b3a7281d5a..93ca2e0e421 100644
--- a/compiler/rustc_codegen_cranelift/example/mini_core_hello_world.rs
+++ b/compiler/rustc_codegen_cranelift/example/mini_core_hello_world.rs
@@ -1,13 +1,4 @@
-#![feature(
-    no_core,
-    lang_items,
-    never_type,
-    linkage,
-    extern_types,
-    naked_functions,
-    thread_local,
-    repr_simd
-)]
+#![feature(no_core, lang_items, never_type, linkage, extern_types, thread_local, repr_simd)]
 #![no_core]
 #![allow(dead_code, non_camel_case_types, internal_features)]
 
diff --git a/compiler/rustc_error_codes/src/error_codes/E0787.md b/compiler/rustc_error_codes/src/error_codes/E0787.md
index 47b56ac17f4..b7f92c8feb5 100644
--- a/compiler/rustc_error_codes/src/error_codes/E0787.md
+++ b/compiler/rustc_error_codes/src/error_codes/E0787.md
@@ -3,8 +3,6 @@ An unsupported naked function definition.
 Erroneous code example:
 
 ```compile_fail,E0787
-#![feature(naked_functions)]
-
 #[unsafe(naked)]
 pub extern "C" fn f() -> u32 {
     42
diff --git a/compiler/rustc_feature/src/accepted.rs b/compiler/rustc_feature/src/accepted.rs
index fcc11dd3c1f..e3e4eefe5e1 100644
--- a/compiler/rustc_feature/src/accepted.rs
+++ b/compiler/rustc_feature/src/accepted.rs
@@ -300,6 +300,8 @@ declare_features! (
     /// Allows patterns with concurrent by-move and by-ref bindings.
     /// For example, you can write `Foo(a, ref b)` where `a` is by-move and `b` is by-ref.
     (accepted, move_ref_pattern, "1.49.0", Some(68354)),
+    /// Allows using `#[naked]` on functions.
+    (accepted, naked_functions, "CURRENT_RUSTC_VERSION", Some(90957)),
     /// Allows specifying modifiers in the link attribute: `#[link(modifiers = "...")]`
     (accepted, native_link_modifiers, "1.61.0", Some(81490)),
     /// Allows specifying the bundle link modifier
diff --git a/compiler/rustc_feature/src/builtin_attrs.rs b/compiler/rustc_feature/src/builtin_attrs.rs
index 713e460e507..0233f7a72e8 100644
--- a/compiler/rustc_feature/src/builtin_attrs.rs
+++ b/compiler/rustc_feature/src/builtin_attrs.rs
@@ -443,6 +443,7 @@ pub static BUILTIN_ATTRIBUTES: &[BuiltinAttribute] = &[
     ungated!(unsafe(Edition2024) no_mangle, Normal, template!(Word), WarnFollowing, EncodeCrossCrate::No),
     ungated!(used, Normal, template!(Word, List: "compiler|linker"), WarnFollowing, EncodeCrossCrate::No),
     ungated!(link_ordinal, Normal, template!(List: "ordinal"), ErrorPreceding, EncodeCrossCrate::Yes),
+    ungated!(unsafe naked, Normal, template!(Word), WarnFollowing, EncodeCrossCrate::No),
 
     // Limits:
     ungated!(
@@ -515,12 +516,6 @@ pub static BUILTIN_ATTRIBUTES: &[BuiltinAttribute] = &[
     // Unstable attributes:
     // ==========================================================================
 
-    // Linking:
-    gated!(
-        unsafe naked, Normal, template!(Word), WarnFollowing, EncodeCrossCrate::No,
-        naked_functions, experimental!(naked)
-    ),
-
     // Testing:
     gated!(
         test_runner, CrateLevel, template!(List: "path"), ErrorFollowing,
diff --git a/compiler/rustc_feature/src/unstable.rs b/compiler/rustc_feature/src/unstable.rs
index e09ae3c1239..cbc121e3632 100644
--- a/compiler/rustc_feature/src/unstable.rs
+++ b/compiler/rustc_feature/src/unstable.rs
@@ -563,8 +563,6 @@ declare_features! (
     (unstable, must_not_suspend, "1.57.0", Some(83310)),
     /// Allows `mut ref` and `mut ref mut` identifier patterns.
     (incomplete, mut_ref, "1.79.0", Some(123076)),
-    /// Allows using `#[naked]` on functions.
-    (unstable, naked_functions, "1.9.0", Some(90957)),
     /// Allows using `#[naked]` on `extern "Rust"` functions.
     (unstable, naked_functions_rustic_abi, "CURRENT_RUSTC_VERSION", Some(138997)),
     /// Allows using `#[target_feature(enable = "...")]` on `#[naked]` on functions.
diff --git a/compiler/rustc_passes/src/check_attr.rs b/compiler/rustc_passes/src/check_attr.rs
index cbe5058b551..cfc71a412be 100644
--- a/compiler/rustc_passes/src/check_attr.rs
+++ b/compiler/rustc_passes/src/check_attr.rs
@@ -690,13 +690,6 @@ impl<'tcx> CheckAttrVisitor<'tcx> {
                     }
                 }
             }
-            // FIXME(#80564): We permit struct fields, match arms and macro defs to have an
-            // `#[naked]` attribute with just a lint, because we previously
-            // erroneously allowed it and some crates used it accidentally, to be compatible
-            // with crates depending on them, we can't throw an error here.
-            Target::Field | Target::Arm | Target::MacroDef => {
-                self.inline_attr_str_error_with_macro_def(hir_id, attr, "naked")
-            }
             _ => {
                 self.dcx().emit_err(errors::AttrShouldBeAppliedToFn {
                     attr_span: attr.span(),
diff --git a/library/core/src/arch.rs b/library/core/src/arch.rs
index 81d828a971c..f19fde2b4c7 100644
--- a/library/core/src/arch.rs
+++ b/library/core/src/arch.rs
@@ -32,7 +32,7 @@ pub macro asm("assembly template", $(operands,)* $(options($(option),*))?) {
 ///
 /// [Rust By Example]: https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html
 /// [reference]: https://doc.rust-lang.org/nightly/reference/inline-assembly.html
-#[unstable(feature = "naked_functions", issue = "90957")]
+#[stable(feature = "naked_functions", since = "CURRENT_RUSTC_VERSION")]
 #[rustc_builtin_macro]
 pub macro naked_asm("assembly template", $(operands,)* $(options($(option),*))?) {
     /* compiler built-in */
diff --git a/src/doc/unstable-book/src/compiler-flags/sanitizer.md b/src/doc/unstable-book/src/compiler-flags/sanitizer.md
index f2e1bb80cb2..2f9d4d22e5a 100644
--- a/src/doc/unstable-book/src/compiler-flags/sanitizer.md
+++ b/src/doc/unstable-book/src/compiler-flags/sanitizer.md
@@ -245,8 +245,6 @@ See the [Clang ControlFlowIntegrity documentation][clang-cfi] for more details.
 ## Example 1: Redirecting control flow using an indirect branch/call to an invalid destination
 
 ```rust,ignore (making doc tests pass cross-platform is hard)
-#![feature(naked_functions)]
-
 use std::arch::naked_asm;
 use std::mem;
 
diff --git a/tests/assembly/naked-functions/aarch64-naked-fn-no-bti-prolog.rs b/tests/assembly/naked-functions/aarch64-naked-fn-no-bti-prolog.rs
index 46acf7c6501..860ecc3cfcd 100644
--- a/tests/assembly/naked-functions/aarch64-naked-fn-no-bti-prolog.rs
+++ b/tests/assembly/naked-functions/aarch64-naked-fn-no-bti-prolog.rs
@@ -4,7 +4,7 @@
 //@ only-aarch64
 
 #![crate_type = "lib"]
-#![feature(naked_functions)]
+
 use std::arch::naked_asm;
 
 // The problem at hand: Rust has adopted a fairly strict meaning for "naked functions",
diff --git a/tests/assembly/naked-functions/aix.rs b/tests/assembly/naked-functions/aix.rs
index 9aa9edc39e7..57ff0e183be 100644
--- a/tests/assembly/naked-functions/aix.rs
+++ b/tests/assembly/naked-functions/aix.rs
@@ -9,7 +9,7 @@
 //@[aix] needs-llvm-components: powerpc
 
 #![crate_type = "lib"]
-#![feature(no_core, naked_functions, asm_experimental_arch, f128, linkage, fn_align)]
+#![feature(no_core, asm_experimental_arch, f128, linkage, fn_align)]
 #![no_core]
 
 // tests that naked functions work for the `powerpc64-ibm-aix` target.
diff --git a/tests/assembly/naked-functions/wasm32.rs b/tests/assembly/naked-functions/wasm32.rs
index c114cb385be..71e4d80764a 100644
--- a/tests/assembly/naked-functions/wasm32.rs
+++ b/tests/assembly/naked-functions/wasm32.rs
@@ -9,7 +9,7 @@
 //@ [wasm32-wasip1] needs-llvm-components: webassembly
 
 #![crate_type = "lib"]
-#![feature(no_core, naked_functions, asm_experimental_arch, f128, linkage, fn_align)]
+#![feature(no_core, asm_experimental_arch, f128, linkage, fn_align)]
 #![no_core]
 
 extern crate minicore;
diff --git a/tests/assembly/naked-functions/x86_64-naked-fn-no-cet-prolog.rs b/tests/assembly/naked-functions/x86_64-naked-fn-no-cet-prolog.rs
index df6a2e91c51..81ee9b13b4e 100644
--- a/tests/assembly/naked-functions/x86_64-naked-fn-no-cet-prolog.rs
+++ b/tests/assembly/naked-functions/x86_64-naked-fn-no-cet-prolog.rs
@@ -4,7 +4,7 @@
 //@ only-x86_64
 
 #![crate_type = "lib"]
-#![feature(naked_functions)]
+
 use std::arch::naked_asm;
 
 // The problem at hand: Rust has adopted a fairly strict meaning for "naked functions",
diff --git a/tests/auxiliary/minicore.rs b/tests/auxiliary/minicore.rs
index 03aa8476508..941c4abed46 100644
--- a/tests/auxiliary/minicore.rs
+++ b/tests/auxiliary/minicore.rs
@@ -22,7 +22,6 @@
     negative_impls,
     rustc_attrs,
     decl_macro,
-    naked_functions,
     f16,
     f128,
     asm_experimental_arch,
diff --git a/tests/codegen/cffi/c-variadic-naked.rs b/tests/codegen/cffi/c-variadic-naked.rs
index 05d48e52dc0..5843628b633 100644
--- a/tests/codegen/cffi/c-variadic-naked.rs
+++ b/tests/codegen/cffi/c-variadic-naked.rs
@@ -5,7 +5,6 @@
 
 #![crate_type = "lib"]
 #![feature(c_variadic)]
-#![feature(naked_functions)]
 #![no_std]
 
 #[unsafe(naked)]
diff --git a/tests/codegen/naked-asan.rs b/tests/codegen/naked-asan.rs
index 52b3e709cd3..223c41b15bb 100644
--- a/tests/codegen/naked-asan.rs
+++ b/tests/codegen/naked-asan.rs
@@ -6,7 +6,7 @@
 
 #![crate_type = "lib"]
 #![no_std]
-#![feature(abi_x86_interrupt, naked_functions)]
+#![feature(abi_x86_interrupt)]
 
 pub fn caller() {
     page_fault_handler(1, 2);
diff --git a/tests/codegen/naked-fn/aligned.rs b/tests/codegen/naked-fn/aligned.rs
index 6183461feda..47ef779f1b2 100644
--- a/tests/codegen/naked-fn/aligned.rs
+++ b/tests/codegen/naked-fn/aligned.rs
@@ -3,7 +3,7 @@
 //@ ignore-arm no "ret" mnemonic
 
 #![crate_type = "lib"]
-#![feature(naked_functions, fn_align)]
+#![feature(fn_align)]
 use std::arch::naked_asm;
 
 // CHECK: .balign 16
diff --git a/tests/codegen/naked-fn/generics.rs b/tests/codegen/naked-fn/generics.rs
index 44275867771..865be00d91e 100644
--- a/tests/codegen/naked-fn/generics.rs
+++ b/tests/codegen/naked-fn/generics.rs
@@ -2,7 +2,6 @@
 //@ only-x86_64
 
 #![crate_type = "lib"]
-#![feature(naked_functions, asm_const)]
 
 use std::arch::naked_asm;
 
diff --git a/tests/codegen/naked-fn/instruction-set.rs b/tests/codegen/naked-fn/instruction-set.rs
index 2ccd47d6458..67560c5aba7 100644
--- a/tests/codegen/naked-fn/instruction-set.rs
+++ b/tests/codegen/naked-fn/instruction-set.rs
@@ -6,7 +6,7 @@
 //@ [thumb-mode] needs-llvm-components: arm
 
 #![crate_type = "lib"]
-#![feature(no_core, lang_items, rustc_attrs, naked_functions)]
+#![feature(no_core, lang_items, rustc_attrs)]
 #![no_core]
 
 extern crate minicore;
diff --git a/tests/codegen/naked-fn/min-function-alignment.rs b/tests/codegen/naked-fn/min-function-alignment.rs
index 4a914228824..1d778be8c90 100644
--- a/tests/codegen/naked-fn/min-function-alignment.rs
+++ b/tests/codegen/naked-fn/min-function-alignment.rs
@@ -2,7 +2,7 @@
 //@ needs-asm-support
 //@ ignore-arm no "ret" mnemonic
 
-#![feature(naked_functions, fn_align)]
+#![feature(fn_align)]
 #![crate_type = "lib"]
 
 // functions without explicit alignment use the global minimum
diff --git a/tests/codegen/naked-fn/naked-functions.rs b/tests/codegen/naked-fn/naked-functions.rs
index 1bcdd6de373..344af6eb42f 100644
--- a/tests/codegen/naked-fn/naked-functions.rs
+++ b/tests/codegen/naked-fn/naked-functions.rs
@@ -13,7 +13,7 @@
 //@[thumb] needs-llvm-components: arm
 
 #![crate_type = "lib"]
-#![feature(no_core, lang_items, rustc_attrs, naked_functions)]
+#![feature(no_core, lang_items, rustc_attrs)]
 #![no_core]
 
 extern crate minicore;
diff --git a/tests/run-make/naked-symbol-visibility/a_rust_dylib.rs b/tests/run-make/naked-symbol-visibility/a_rust_dylib.rs
index ae755195253..ce787f83ade 100644
--- a/tests/run-make/naked-symbol-visibility/a_rust_dylib.rs
+++ b/tests/run-make/naked-symbol-visibility/a_rust_dylib.rs
@@ -1,4 +1,4 @@
-#![feature(naked_functions, linkage)]
+#![feature(linkage)]
 #![crate_type = "dylib"]
 
 use std::arch::naked_asm;
diff --git a/tests/ui/asm/naked-asm-outside-naked-fn.rs b/tests/ui/asm/naked-asm-outside-naked-fn.rs
index a7680cc63ae..0a15b21f4d0 100644
--- a/tests/ui/asm/naked-asm-outside-naked-fn.rs
+++ b/tests/ui/asm/naked-asm-outside-naked-fn.rs
@@ -3,7 +3,6 @@
 //@ ignore-nvptx64
 //@ ignore-spirv
 
-#![feature(naked_functions)]
 #![crate_type = "lib"]
 
 use std::arch::naked_asm;
diff --git a/tests/ui/asm/naked-asm-outside-naked-fn.stderr b/tests/ui/asm/naked-asm-outside-naked-fn.stderr
index 85a50a49fec..2cebaa9ea28 100644
--- a/tests/ui/asm/naked-asm-outside-naked-fn.stderr
+++ b/tests/ui/asm/naked-asm-outside-naked-fn.stderr
@@ -1,17 +1,17 @@
 error: the `naked_asm!` macro can only be used in functions marked with `#[unsafe(naked)]`
-  --> $DIR/naked-asm-outside-naked-fn.rs:21:5
+  --> $DIR/naked-asm-outside-naked-fn.rs:20:5
    |
 LL |     naked_asm!("")
    |     ^^^^^^^^^^^^^^
 
 error: the `naked_asm!` macro can only be used in functions marked with `#[unsafe(naked)]`
-  --> $DIR/naked-asm-outside-naked-fn.rs:26:9
+  --> $DIR/naked-asm-outside-naked-fn.rs:25:9
    |
 LL |     (|| naked_asm!(""))()
    |         ^^^^^^^^^^^^^^
 
 error: the `naked_asm!` macro can only be used in functions marked with `#[unsafe(naked)]`
-  --> $DIR/naked-asm-outside-naked-fn.rs:32:9
+  --> $DIR/naked-asm-outside-naked-fn.rs:31:9
    |
 LL |         naked_asm!("");
    |         ^^^^^^^^^^^^^^
diff --git a/tests/ui/asm/naked-functions-ffi.rs b/tests/ui/asm/naked-functions-ffi.rs
index 8fd0da01d72..565c440022d 100644
--- a/tests/ui/asm/naked-functions-ffi.rs
+++ b/tests/ui/asm/naked-functions-ffi.rs
@@ -1,6 +1,5 @@
 //@ check-pass
 //@ needs-asm-support
-#![feature(naked_functions)]
 #![crate_type = "lib"]
 
 use std::arch::naked_asm;
diff --git a/tests/ui/asm/naked-functions-ffi.stderr b/tests/ui/asm/naked-functions-ffi.stderr
index 908881b1949..9df6185498e 100644
--- a/tests/ui/asm/naked-functions-ffi.stderr
+++ b/tests/ui/asm/naked-functions-ffi.stderr
@@ -1,5 +1,5 @@
 warning: `extern` fn uses type `char`, which is not FFI-safe
-  --> $DIR/naked-functions-ffi.rs:9:28
+  --> $DIR/naked-functions-ffi.rs:8:28
    |
 LL | pub extern "C" fn naked(p: char) -> u128 {
    |                            ^^^^ not FFI-safe
@@ -9,7 +9,7 @@ LL | pub extern "C" fn naked(p: char) -> u128 {
    = note: `#[warn(improper_ctypes_definitions)]` on by default
 
 warning: `extern` fn uses type `u128`, which is not FFI-safe
-  --> $DIR/naked-functions-ffi.rs:9:37
+  --> $DIR/naked-functions-ffi.rs:8:37
    |
 LL | pub extern "C" fn naked(p: char) -> u128 {
    |                                     ^^^^ not FFI-safe
diff --git a/tests/ui/asm/naked-functions-inline.rs b/tests/ui/asm/naked-functions-inline.rs
index 261401be645..93741f26275 100644
--- a/tests/ui/asm/naked-functions-inline.rs
+++ b/tests/ui/asm/naked-functions-inline.rs
@@ -1,5 +1,4 @@
 //@ needs-asm-support
-#![feature(naked_functions)]
 #![crate_type = "lib"]
 
 use std::arch::naked_asm;
diff --git a/tests/ui/asm/naked-functions-inline.stderr b/tests/ui/asm/naked-functions-inline.stderr
index 6df5b08ae85..07d5f3bc49a 100644
--- a/tests/ui/asm/naked-functions-inline.stderr
+++ b/tests/ui/asm/naked-functions-inline.stderr
@@ -1,5 +1,5 @@
 error[E0736]: attribute incompatible with `#[unsafe(naked)]`
-  --> $DIR/naked-functions-inline.rs:13:1
+  --> $DIR/naked-functions-inline.rs:12:1
    |
 LL | #[unsafe(naked)]
    | ---------------- function marked with `#[unsafe(naked)]` here
@@ -7,7 +7,7 @@ LL | #[inline]
    | ^^^^^^^^^ the `inline` attribute is incompatible with `#[unsafe(naked)]`
 
 error[E0736]: attribute incompatible with `#[unsafe(naked)]`
-  --> $DIR/naked-functions-inline.rs:20:1
+  --> $DIR/naked-functions-inline.rs:19:1
    |
 LL | #[unsafe(naked)]
    | ---------------- function marked with `#[unsafe(naked)]` here
@@ -15,7 +15,7 @@ LL | #[inline(always)]
    | ^^^^^^^^^^^^^^^^^ the `inline` attribute is incompatible with `#[unsafe(naked)]`
 
 error[E0736]: attribute incompatible with `#[unsafe(naked)]`
-  --> $DIR/naked-functions-inline.rs:27:1
+  --> $DIR/naked-functions-inline.rs:26:1
    |
 LL | #[unsafe(naked)]
    | ---------------- function marked with `#[unsafe(naked)]` here
@@ -23,7 +23,7 @@ LL | #[inline(never)]
    | ^^^^^^^^^^^^^^^^ the `inline` attribute is incompatible with `#[unsafe(naked)]`
 
 error[E0736]: attribute incompatible with `#[unsafe(naked)]`
-  --> $DIR/naked-functions-inline.rs:34:19
+  --> $DIR/naked-functions-inline.rs:33:19
    |
 LL | #[unsafe(naked)]
    | ---------------- function marked with `#[unsafe(naked)]` here
diff --git a/tests/ui/asm/naked-functions-instruction-set.rs b/tests/ui/asm/naked-functions-instruction-set.rs
index 6fd34b035ed..69927a56aab 100644
--- a/tests/ui/asm/naked-functions-instruction-set.rs
+++ b/tests/ui/asm/naked-functions-instruction-set.rs
@@ -5,7 +5,7 @@
 //@ build-pass
 
 #![crate_type = "lib"]
-#![feature(no_core, naked_functions)]
+#![feature(no_core)]
 #![no_core]
 
 extern crate minicore;
diff --git a/tests/ui/asm/naked-functions-rustic-abi.rs b/tests/ui/asm/naked-functions-rustic-abi.rs
index 99b8d2e19fe..d9c11474828 100644
--- a/tests/ui/asm/naked-functions-rustic-abi.rs
+++ b/tests/ui/asm/naked-functions-rustic-abi.rs
@@ -6,7 +6,7 @@
 //@ build-pass
 //@ needs-asm-support
 
-#![feature(naked_functions, naked_functions_rustic_abi, rust_cold_cc)]
+#![feature(naked_functions_rustic_abi, rust_cold_cc)]
 #![crate_type = "lib"]
 
 use std::arch::{asm, naked_asm};
diff --git a/tests/ui/asm/naked-functions-target-feature.rs b/tests/ui/asm/naked-functions-target-feature.rs
index d8dc2104c76..57ad79b1c31 100644
--- a/tests/ui/asm/naked-functions-target-feature.rs
+++ b/tests/ui/asm/naked-functions-target-feature.rs
@@ -1,7 +1,7 @@
 //@ build-pass
 //@ needs-asm-support
 
-#![feature(naked_functions, naked_functions_target_feature)]
+#![feature(naked_functions_target_feature)]
 #![crate_type = "lib"]
 
 use std::arch::{asm, naked_asm};
diff --git a/tests/ui/asm/naked-functions-testattrs.rs b/tests/ui/asm/naked-functions-testattrs.rs
index c8539e80640..6dc14a6840e 100644
--- a/tests/ui/asm/naked-functions-testattrs.rs
+++ b/tests/ui/asm/naked-functions-testattrs.rs
@@ -1,7 +1,6 @@
 //@ needs-asm-support
 //@ compile-flags: --test
 
-#![feature(naked_functions)]
 #![feature(test)]
 #![crate_type = "lib"]
 
diff --git a/tests/ui/asm/naked-functions-testattrs.stderr b/tests/ui/asm/naked-functions-testattrs.stderr
index ad2041ec118..8aab2f04ee2 100644
--- a/tests/ui/asm/naked-functions-testattrs.stderr
+++ b/tests/ui/asm/naked-functions-testattrs.stderr
@@ -1,5 +1,5 @@
 error[E0736]: cannot use `#[unsafe(naked)]` with testing attributes
-  --> $DIR/naked-functions-testattrs.rs:11:1
+  --> $DIR/naked-functions-testattrs.rs:10:1
    |
 LL | #[test]
    | ------- function marked with testing attribute here
@@ -7,7 +7,7 @@ LL | #[unsafe(naked)]
    | ^^^^^^^^^^^^^^^^ `#[unsafe(naked)]` is incompatible with testing attributes
 
 error[E0736]: cannot use `#[unsafe(naked)]` with testing attributes
-  --> $DIR/naked-functions-testattrs.rs:19:1
+  --> $DIR/naked-functions-testattrs.rs:18:1
    |
 LL | #[test]
    | ------- function marked with testing attribute here
@@ -15,7 +15,7 @@ LL | #[unsafe(naked)]
    | ^^^^^^^^^^^^^^^^ `#[unsafe(naked)]` is incompatible with testing attributes
 
 error[E0736]: cannot use `#[unsafe(naked)]` with testing attributes
-  --> $DIR/naked-functions-testattrs.rs:27:1
+  --> $DIR/naked-functions-testattrs.rs:26:1
    |
 LL | #[test]
    | ------- function marked with testing attribute here
@@ -23,7 +23,7 @@ LL | #[unsafe(naked)]
    | ^^^^^^^^^^^^^^^^ `#[unsafe(naked)]` is incompatible with testing attributes
 
 error[E0736]: cannot use `#[unsafe(naked)]` with testing attributes
-  --> $DIR/naked-functions-testattrs.rs:34:1
+  --> $DIR/naked-functions-testattrs.rs:33:1
    |
 LL | #[bench]
    | -------- function marked with testing attribute here
diff --git a/tests/ui/asm/naked-functions-unused.aarch64.stderr b/tests/ui/asm/naked-functions-unused.aarch64.stderr
index ea63ced1aab..bfb2923b0b8 100644
--- a/tests/ui/asm/naked-functions-unused.aarch64.stderr
+++ b/tests/ui/asm/naked-functions-unused.aarch64.stderr
@@ -1,5 +1,5 @@
 error: unused variable: `a`
-  --> $DIR/naked-functions-unused.rs:17:32
+  --> $DIR/naked-functions-unused.rs:16:32
    |
 LL |     pub extern "C" fn function(a: usize, b: usize) -> usize {
    |                                ^ help: if this is intentional, prefix it with an underscore: `_a`
@@ -12,55 +12,55 @@ LL | #![deny(unused)]
    = note: `#[deny(unused_variables)]` implied by `#[deny(unused)]`
 
 error: unused variable: `b`
-  --> $DIR/naked-functions-unused.rs:17:42
+  --> $DIR/naked-functions-unused.rs:16:42
    |
 LL |     pub extern "C" fn function(a: usize, b: usize) -> usize {
    |                                          ^ help: if this is intentional, prefix it with an underscore: `_b`
 
 error: unused variable: `a`
-  --> $DIR/naked-functions-unused.rs:28:38
+  --> $DIR/naked-functions-unused.rs:27:38
    |
 LL |         pub extern "C" fn associated(a: usize, b: usize) -> usize {
    |                                      ^ help: if this is intentional, prefix it with an underscore: `_a`
 
 error: unused variable: `b`
-  --> $DIR/naked-functions-unused.rs:28:48
+  --> $DIR/naked-functions-unused.rs:27:48
    |
 LL |         pub extern "C" fn associated(a: usize, b: usize) -> usize {
    |                                                ^ help: if this is intentional, prefix it with an underscore: `_b`
 
 error: unused variable: `a`
-  --> $DIR/naked-functions-unused.rs:36:41
+  --> $DIR/naked-functions-unused.rs:35:41
    |
 LL |         pub extern "C" fn method(&self, a: usize, b: usize) -> usize {
    |                                         ^ help: if this is intentional, prefix it with an underscore: `_a`
 
 error: unused variable: `b`
-  --> $DIR/naked-functions-unused.rs:36:51
+  --> $DIR/naked-functions-unused.rs:35:51
    |
 LL |         pub extern "C" fn method(&self, a: usize, b: usize) -> usize {
    |                                                   ^ help: if this is intentional, prefix it with an underscore: `_b`
 
 error: unused variable: `a`
-  --> $DIR/naked-functions-unused.rs:46:40
+  --> $DIR/naked-functions-unused.rs:45:40
    |
 LL |         extern "C" fn trait_associated(a: usize, b: usize) -> usize {
    |                                        ^ help: if this is intentional, prefix it with an underscore: `_a`
 
 error: unused variable: `b`
-  --> $DIR/naked-functions-unused.rs:46:50
+  --> $DIR/naked-functions-unused.rs:45:50
    |
 LL |         extern "C" fn trait_associated(a: usize, b: usize) -> usize {
    |                                                  ^ help: if this is intentional, prefix it with an underscore: `_b`
 
 error: unused variable: `a`
-  --> $DIR/naked-functions-unused.rs:54:43
+  --> $DIR/naked-functions-unused.rs:53:43
    |
 LL |         extern "C" fn trait_method(&self, a: usize, b: usize) -> usize {
    |                                           ^ help: if this is intentional, prefix it with an underscore: `_a`
 
 error: unused variable: `b`
-  --> $DIR/naked-functions-unused.rs:54:53
+  --> $DIR/naked-functions-unused.rs:53:53
    |
 LL |         extern "C" fn trait_method(&self, a: usize, b: usize) -> usize {
    |                                                     ^ help: if this is intentional, prefix it with an underscore: `_b`
diff --git a/tests/ui/asm/naked-functions-unused.rs b/tests/ui/asm/naked-functions-unused.rs
index 67c05984be7..945ab1a40ad 100644
--- a/tests/ui/asm/naked-functions-unused.rs
+++ b/tests/ui/asm/naked-functions-unused.rs
@@ -3,7 +3,6 @@
 //@[x86_64] only-x86_64
 //@[aarch64] only-aarch64
 #![deny(unused)]
-#![feature(naked_functions)]
 #![crate_type = "lib"]
 
 pub trait Trait {
diff --git a/tests/ui/asm/naked-functions-unused.x86_64.stderr b/tests/ui/asm/naked-functions-unused.x86_64.stderr
index ea63ced1aab..bfb2923b0b8 100644
--- a/tests/ui/asm/naked-functions-unused.x86_64.stderr
+++ b/tests/ui/asm/naked-functions-unused.x86_64.stderr
@@ -1,5 +1,5 @@
 error: unused variable: `a`
-  --> $DIR/naked-functions-unused.rs:17:32
+  --> $DIR/naked-functions-unused.rs:16:32
    |
 LL |     pub extern "C" fn function(a: usize, b: usize) -> usize {
    |                                ^ help: if this is intentional, prefix it with an underscore: `_a`
@@ -12,55 +12,55 @@ LL | #![deny(unused)]
    = note: `#[deny(unused_variables)]` implied by `#[deny(unused)]`
 
 error: unused variable: `b`
-  --> $DIR/naked-functions-unused.rs:17:42
+  --> $DIR/naked-functions-unused.rs:16:42
    |
 LL |     pub extern "C" fn function(a: usize, b: usize) -> usize {
    |                                          ^ help: if this is intentional, prefix it with an underscore: `_b`
 
 error: unused variable: `a`
-  --> $DIR/naked-functions-unused.rs:28:38
+  --> $DIR/naked-functions-unused.rs:27:38
    |
 LL |         pub extern "C" fn associated(a: usize, b: usize) -> usize {
    |                                      ^ help: if this is intentional, prefix it with an underscore: `_a`
 
 error: unused variable: `b`
-  --> $DIR/naked-functions-unused.rs:28:48
+  --> $DIR/naked-functions-unused.rs:27:48
    |
 LL |         pub extern "C" fn associated(a: usize, b: usize) -> usize {
    |                                                ^ help: if this is intentional, prefix it with an underscore: `_b`
 
 error: unused variable: `a`
-  --> $DIR/naked-functions-unused.rs:36:41
+  --> $DIR/naked-functions-unused.rs:35:41
    |
 LL |         pub extern "C" fn method(&self, a: usize, b: usize) -> usize {
    |                                         ^ help: if this is intentional, prefix it with an underscore: `_a`
 
 error: unused variable: `b`
-  --> $DIR/naked-functions-unused.rs:36:51
+  --> $DIR/naked-functions-unused.rs:35:51
    |
 LL |         pub extern "C" fn method(&self, a: usize, b: usize) -> usize {
    |                                                   ^ help: if this is intentional, prefix it with an underscore: `_b`
 
 error: unused variable: `a`
-  --> $DIR/naked-functions-unused.rs:46:40
+  --> $DIR/naked-functions-unused.rs:45:40
    |
 LL |         extern "C" fn trait_associated(a: usize, b: usize) -> usize {
    |                                        ^ help: if this is intentional, prefix it with an underscore: `_a`
 
 error: unused variable: `b`
-  --> $DIR/naked-functions-unused.rs:46:50
+  --> $DIR/naked-functions-unused.rs:45:50
    |
 LL |         extern "C" fn trait_associated(a: usize, b: usize) -> usize {
    |                                                  ^ help: if this is intentional, prefix it with an underscore: `_b`
 
 error: unused variable: `a`
-  --> $DIR/naked-functions-unused.rs:54:43
+  --> $DIR/naked-functions-unused.rs:53:43
    |
 LL |         extern "C" fn trait_method(&self, a: usize, b: usize) -> usize {
    |                                           ^ help: if this is intentional, prefix it with an underscore: `_a`
 
 error: unused variable: `b`
-  --> $DIR/naked-functions-unused.rs:54:53
+  --> $DIR/naked-functions-unused.rs:53:53
    |
 LL |         extern "C" fn trait_method(&self, a: usize, b: usize) -> usize {
    |                                                     ^ help: if this is intentional, prefix it with an underscore: `_b`
diff --git a/tests/ui/asm/naked-functions.rs b/tests/ui/asm/naked-functions.rs
index b433c1b5389..1eeb716e98a 100644
--- a/tests/ui/asm/naked-functions.rs
+++ b/tests/ui/asm/naked-functions.rs
@@ -2,7 +2,6 @@
 //@ ignore-nvptx64
 //@ ignore-spirv
 
-#![feature(naked_functions)]
 #![feature(asm_unwind, linkage)]
 #![crate_type = "lib"]
 
diff --git a/tests/ui/asm/naked-functions.stderr b/tests/ui/asm/naked-functions.stderr
index 2b67c3aecd7..b94a09bb92e 100644
--- a/tests/ui/asm/naked-functions.stderr
+++ b/tests/ui/asm/naked-functions.stderr
@@ -1,107 +1,107 @@
 error: the `in` operand cannot be used with `naked_asm!`
-  --> $DIR/naked-functions.rs:47:29
+  --> $DIR/naked-functions.rs:46:29
    |
 LL |     naked_asm!("/* {0} */", in(reg) a)
    |                             ^^ the `in` operand is not meaningful for global-scoped inline assembly, remove it
 
 error: the `in` operand cannot be used with `naked_asm!`
-  --> $DIR/naked-functions.rs:68:10
+  --> $DIR/naked-functions.rs:67:10
    |
 LL |          in(reg) a,
    |          ^^ the `in` operand is not meaningful for global-scoped inline assembly, remove it
 
 error: the `noreturn` option cannot be used with `naked_asm!`
-  --> $DIR/naked-functions.rs:88:28
+  --> $DIR/naked-functions.rs:87:28
    |
 LL |     naked_asm!("", options(noreturn));
    |                            ^^^^^^^^ the `noreturn` option is not meaningful for global-scoped inline assembly
 
 error: the `nomem` option cannot be used with `naked_asm!`
-  --> $DIR/naked-functions.rs:105:28
+  --> $DIR/naked-functions.rs:104:28
    |
 LL |     naked_asm!("", options(nomem, preserves_flags));
    |                            ^^^^^ the `nomem` option is not meaningful for global-scoped inline assembly
 
 error: the `preserves_flags` option cannot be used with `naked_asm!`
-  --> $DIR/naked-functions.rs:105:35
+  --> $DIR/naked-functions.rs:104:35
    |
 LL |     naked_asm!("", options(nomem, preserves_flags));
    |                                   ^^^^^^^^^^^^^^^ the `preserves_flags` option is not meaningful for global-scoped inline assembly
 
 error: the `readonly` option cannot be used with `naked_asm!`
-  --> $DIR/naked-functions.rs:112:28
+  --> $DIR/naked-functions.rs:111:28
    |
 LL |     naked_asm!("", options(readonly, nostack), options(pure));
    |                            ^^^^^^^^ the `readonly` option is not meaningful for global-scoped inline assembly
 
 error: the `nostack` option cannot be used with `naked_asm!`
-  --> $DIR/naked-functions.rs:112:38
+  --> $DIR/naked-functions.rs:111:38
    |
 LL |     naked_asm!("", options(readonly, nostack), options(pure));
    |                                      ^^^^^^^ the `nostack` option is not meaningful for global-scoped inline assembly
 
 error: the `pure` option cannot be used with `naked_asm!`
-  --> $DIR/naked-functions.rs:112:56
+  --> $DIR/naked-functions.rs:111:56
    |
 LL |     naked_asm!("", options(readonly, nostack), options(pure));
    |                                                        ^^^^ the `pure` option is not meaningful for global-scoped inline assembly
 
 error: the `may_unwind` option cannot be used with `naked_asm!`
-  --> $DIR/naked-functions.rs:120:28
+  --> $DIR/naked-functions.rs:119:28
    |
 LL |     naked_asm!("", options(may_unwind));
    |                            ^^^^^^^^^^ the `may_unwind` option is not meaningful for global-scoped inline assembly
 
 error: this is a user specified error
-  --> $DIR/naked-functions.rs:151:5
+  --> $DIR/naked-functions.rs:150:5
    |
 LL |     compile_error!("this is a user specified error")
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: this is a user specified error
-  --> $DIR/naked-functions.rs:157:5
+  --> $DIR/naked-functions.rs:156:5
    |
 LL |     compile_error!("this is a user specified error");
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error: asm template must be a string literal
-  --> $DIR/naked-functions.rs:164:16
+  --> $DIR/naked-functions.rs:163:16
    |
 LL |     naked_asm!(invalid_syntax)
    |                ^^^^^^^^^^^^^^
 
 error[E0787]: the `asm!` macro is not allowed in naked functions
-  --> $DIR/naked-functions.rs:13:14
+  --> $DIR/naked-functions.rs:12:14
    |
 LL |     unsafe { asm!("", options(raw)) };
    |              ^^^^^^^^^^^^^^^^^^^^^^ consider using the `naked_asm!` macro instead
 
 error: patterns not allowed in naked function parameters
-  --> $DIR/naked-functions.rs:25:5
+  --> $DIR/naked-functions.rs:24:5
    |
 LL |     mut a: u32,
    |     ^^^^^
 
 error: patterns not allowed in naked function parameters
-  --> $DIR/naked-functions.rs:27:5
+  --> $DIR/naked-functions.rs:26:5
    |
 LL |     &b: &i32,
    |     ^^
 
 error: patterns not allowed in naked function parameters
-  --> $DIR/naked-functions.rs:29:6
+  --> $DIR/naked-functions.rs:28:6
    |
 LL |     (None | Some(_)): Option<std::ptr::NonNull<u8>>,
    |      ^^^^^^^^^^^^^^
 
 error: patterns not allowed in naked function parameters
-  --> $DIR/naked-functions.rs:31:5
+  --> $DIR/naked-functions.rs:30:5
    |
 LL |     P { x, y }: P,
    |     ^^^^^^^^^^
 
 error: referencing function parameters is not allowed in naked functions
-  --> $DIR/naked-functions.rs:40:5
+  --> $DIR/naked-functions.rs:39:5
    |
 LL |     a + 1
    |     ^
@@ -109,7 +109,7 @@ LL |     a + 1
    = help: follow the calling convention in asm block to use parameters
 
 error[E0787]: naked functions must contain a single `naked_asm!` invocation
-  --> $DIR/naked-functions.rs:38:1
+  --> $DIR/naked-functions.rs:37:1
    |
 LL | pub extern "C" fn inc(a: u32) -> u32 {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -118,7 +118,7 @@ LL |     a + 1
    |     ----- not allowed in naked functions
 
 error[E0787]: naked functions must contain a single `naked_asm!` invocation
-  --> $DIR/naked-functions.rs:52:1
+  --> $DIR/naked-functions.rs:51:1
    |
 LL | pub extern "C" fn inc_closure(a: u32) -> u32 {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -127,7 +127,7 @@ LL |     (|| a + 1)()
    |     ------------ not allowed in naked functions
 
 error[E0787]: naked functions must contain a single `naked_asm!` invocation
-  --> $DIR/naked-functions.rs:58:1
+  --> $DIR/naked-functions.rs:57:1
    |
 LL | pub extern "C" fn unsupported_operands() {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -144,13 +144,13 @@ LL |     let mut e = 0usize;
    |     ------------------- not allowed in naked functions
 
 error[E0787]: naked functions must contain a single `naked_asm!` invocation
-  --> $DIR/naked-functions.rs:80:1
+  --> $DIR/naked-functions.rs:79:1
    |
 LL | pub extern "C" fn missing_assembly() {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
 error[E0787]: naked functions must contain a single `naked_asm!` invocation
-  --> $DIR/naked-functions.rs:85:1
+  --> $DIR/naked-functions.rs:84:1
    |
 LL | pub extern "C" fn too_many_asm_blocks() {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -159,7 +159,7 @@ LL |     naked_asm!("");
    |     -------------- multiple `naked_asm!` invocations are not allowed in naked functions
 
 error: referencing function parameters is not allowed in naked functions
-  --> $DIR/naked-functions.rs:97:11
+  --> $DIR/naked-functions.rs:96:11
    |
 LL |         *&y
    |           ^
@@ -167,7 +167,7 @@ LL |         *&y
    = help: follow the calling convention in asm block to use parameters
 
 error[E0787]: naked functions must contain a single `naked_asm!` invocation
-  --> $DIR/naked-functions.rs:95:5
+  --> $DIR/naked-functions.rs:94:5
    |
 LL |     pub extern "C" fn inner(y: usize) -> usize {
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/tests/ui/asm/naked-invalid-attr.rs b/tests/ui/asm/naked-invalid-attr.rs
index 6c5fdbe74d8..c3a3131ee46 100644
--- a/tests/ui/asm/naked-invalid-attr.rs
+++ b/tests/ui/asm/naked-invalid-attr.rs
@@ -1,7 +1,6 @@
-// Checks that #[unsafe(naked)] attribute can be placed on function definitions only.
+// Checks that the #[unsafe(naked)] attribute can be placed on function definitions only.
 //
 //@ needs-asm-support
-#![feature(naked_functions)]
 #![unsafe(naked)] //~ ERROR should be applied to a function definition
 
 use std::arch::naked_asm;
@@ -14,6 +13,7 @@ extern "C" {
 #[unsafe(naked)] //~ ERROR should be applied to a function definition
 #[repr(C)]
 struct S {
+    #[unsafe(naked)] //~ ERROR should be applied to a function definition
     a: u32,
     b: u32,
 }
diff --git a/tests/ui/asm/naked-invalid-attr.stderr b/tests/ui/asm/naked-invalid-attr.stderr
index 6e2746b5684..81d30e6475d 100644
--- a/tests/ui/asm/naked-invalid-attr.stderr
+++ b/tests/ui/asm/naked-invalid-attr.stderr
@@ -1,16 +1,25 @@
 error: attribute should be applied to a function definition
-  --> $DIR/naked-invalid-attr.rs:14:1
+  --> $DIR/naked-invalid-attr.rs:13:1
    |
 LL |   #[unsafe(naked)]
    |   ^^^^^^^^^^^^^^^^
 LL |   #[repr(C)]
 LL | / struct S {
+LL | |     #[unsafe(naked)]
 LL | |     a: u32,
 LL | |     b: u32,
 LL | | }
    | |_- not a function definition
 
 error: attribute should be applied to a function definition
+  --> $DIR/naked-invalid-attr.rs:16:5
+   |
+LL |     #[unsafe(naked)]
+   |     ^^^^^^^^^^^^^^^^
+LL |     a: u32,
+   |     ------ not a function definition
+
+error: attribute should be applied to a function definition
   --> $DIR/naked-invalid-attr.rs:51:5
    |
 LL |     #[unsafe(naked)]
@@ -27,7 +36,7 @@ LL |     extern "C" fn invoke(&self);
    |     ---------------------------- not a function definition
 
 error: attribute should be applied to a function definition
-  --> $DIR/naked-invalid-attr.rs:10:5
+  --> $DIR/naked-invalid-attr.rs:9:5
    |
 LL |     #[unsafe(naked)]
    |     ^^^^^^^^^^^^^^^^
@@ -35,10 +44,10 @@ LL |     fn f();
    |     ------- not a function definition
 
 error: attribute should be applied to a function definition
-  --> $DIR/naked-invalid-attr.rs:5:1
+  --> $DIR/naked-invalid-attr.rs:4:1
    |
 LL | #![unsafe(naked)]
    | ^^^^^^^^^^^^^^^^^ cannot be applied to crates
 
-error: aborting due to 5 previous errors
+error: aborting due to 6 previous errors
 
diff --git a/tests/ui/asm/naked-with-invalid-repr-attr.rs b/tests/ui/asm/naked-with-invalid-repr-attr.rs
index c9f335ea950..96eed70dc55 100644
--- a/tests/ui/asm/naked-with-invalid-repr-attr.rs
+++ b/tests/ui/asm/naked-with-invalid-repr-attr.rs
@@ -1,5 +1,4 @@
 //@ needs-asm-support
-#![feature(naked_functions)]
 #![feature(fn_align)]
 #![crate_type = "lib"]
 use std::arch::naked_asm;
diff --git a/tests/ui/asm/naked-with-invalid-repr-attr.stderr b/tests/ui/asm/naked-with-invalid-repr-attr.stderr
index 219e32473be..f173a39e5bf 100644
--- a/tests/ui/asm/naked-with-invalid-repr-attr.stderr
+++ b/tests/ui/asm/naked-with-invalid-repr-attr.stderr
@@ -1,5 +1,5 @@
 error[E0517]: attribute should be applied to a struct, enum, or union
-  --> $DIR/naked-with-invalid-repr-attr.rs:7:8
+  --> $DIR/naked-with-invalid-repr-attr.rs:6:8
    |
 LL |   #[repr(C)]
    |          ^
@@ -11,7 +11,7 @@ LL | | }
    | |_- not a struct, enum, or union
 
 error[E0517]: attribute should be applied to a struct, enum, or union
-  --> $DIR/naked-with-invalid-repr-attr.rs:15:8
+  --> $DIR/naked-with-invalid-repr-attr.rs:14:8
    |
 LL |   #[repr(transparent)]
    |          ^^^^^^^^^^^
@@ -23,7 +23,7 @@ LL | | }
    | |_- not a struct, enum, or union
 
 error[E0517]: attribute should be applied to a struct, enum, or union
-  --> $DIR/naked-with-invalid-repr-attr.rs:23:19
+  --> $DIR/naked-with-invalid-repr-attr.rs:22:19
    |
 LL |   #[repr(align(16), C)]
    |                     ^
@@ -35,7 +35,7 @@ LL | | }
    | |_- not a struct, enum, or union
 
 error[E0517]: attribute should be applied to a struct, enum, or union
-  --> $DIR/naked-with-invalid-repr-attr.rs:32:8
+  --> $DIR/naked-with-invalid-repr-attr.rs:31:8
    |
 LL |   #[repr(C, packed)]
    |          ^
@@ -48,7 +48,7 @@ LL | | }
    | |_- not a struct, enum, or union
 
 error[E0517]: attribute should be applied to a struct or union
-  --> $DIR/naked-with-invalid-repr-attr.rs:32:11
+  --> $DIR/naked-with-invalid-repr-attr.rs:31:11
    |
 LL |   #[repr(C, packed)]
    |             ^^^^^^
@@ -61,7 +61,7 @@ LL | | }
    | |_- not a struct or union
 
 error[E0517]: attribute should be applied to an enum
-  --> $DIR/naked-with-invalid-repr-attr.rs:42:8
+  --> $DIR/naked-with-invalid-repr-attr.rs:41:8
    |
 LL |   #[repr(u8)]
    |          ^^
diff --git a/tests/ui/asm/named-asm-labels.rs b/tests/ui/asm/named-asm-labels.rs
index d5c194452d7..996fb82a944 100644
--- a/tests/ui/asm/named-asm-labels.rs
+++ b/tests/ui/asm/named-asm-labels.rs
@@ -10,8 +10,6 @@
 // which causes less readable LLVM errors and in the worst cases causes ICEs
 // or segfaults based on system dependent behavior and codegen flags.
 
-#![feature(naked_functions)]
-
 use std::arch::{asm, global_asm, naked_asm};
 
 #[no_mangle]
diff --git a/tests/ui/asm/named-asm-labels.stderr b/tests/ui/asm/named-asm-labels.stderr
index 0120d4948d5..cd7e7a08c1d 100644
--- a/tests/ui/asm/named-asm-labels.stderr
+++ b/tests/ui/asm/named-asm-labels.stderr
@@ -1,5 +1,5 @@
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:23:15
+  --> $DIR/named-asm-labels.rs:21:15
    |
 LL |         asm!("bar: nop");
    |               ^^^
@@ -9,7 +9,7 @@ LL |         asm!("bar: nop");
    = note: `#[deny(named_asm_labels)]` on by default
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:26:15
+  --> $DIR/named-asm-labels.rs:24:15
    |
 LL |         asm!("abcd:");
    |               ^^^^
@@ -18,7 +18,7 @@ LL |         asm!("abcd:");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:29:15
+  --> $DIR/named-asm-labels.rs:27:15
    |
 LL |         asm!("foo: bar1: nop");
    |               ^^^
@@ -27,7 +27,7 @@ LL |         asm!("foo: bar1: nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:29:20
+  --> $DIR/named-asm-labels.rs:27:20
    |
 LL |         asm!("foo: bar1: nop");
    |                    ^^^^
@@ -36,7 +36,7 @@ LL |         asm!("foo: bar1: nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:34:15
+  --> $DIR/named-asm-labels.rs:32:15
    |
 LL |         asm!("foo1: nop", "nop");
    |               ^^^^
@@ -45,7 +45,7 @@ LL |         asm!("foo1: nop", "nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:35:15
+  --> $DIR/named-asm-labels.rs:33:15
    |
 LL |         asm!("foo2: foo3: nop", "nop");
    |               ^^^^
@@ -54,7 +54,7 @@ LL |         asm!("foo2: foo3: nop", "nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:35:21
+  --> $DIR/named-asm-labels.rs:33:21
    |
 LL |         asm!("foo2: foo3: nop", "nop");
    |                     ^^^^
@@ -63,7 +63,7 @@ LL |         asm!("foo2: foo3: nop", "nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:38:22
+  --> $DIR/named-asm-labels.rs:36:22
    |
 LL |         asm!("nop", "foo4: nop");
    |                      ^^^^
@@ -72,7 +72,7 @@ LL |         asm!("nop", "foo4: nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:39:15
+  --> $DIR/named-asm-labels.rs:37:15
    |
 LL |         asm!("foo5: nop", "foo6: nop");
    |               ^^^^
@@ -81,7 +81,7 @@ LL |         asm!("foo5: nop", "foo6: nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:39:28
+  --> $DIR/named-asm-labels.rs:37:28
    |
 LL |         asm!("foo5: nop", "foo6: nop");
    |                            ^^^^
@@ -90,7 +90,7 @@ LL |         asm!("foo5: nop", "foo6: nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:44:15
+  --> $DIR/named-asm-labels.rs:42:15
    |
 LL |         asm!("foo7: nop; foo8: nop");
    |               ^^^^
@@ -99,7 +99,7 @@ LL |         asm!("foo7: nop; foo8: nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:44:26
+  --> $DIR/named-asm-labels.rs:42:26
    |
 LL |         asm!("foo7: nop; foo8: nop");
    |                          ^^^^
@@ -108,7 +108,7 @@ LL |         asm!("foo7: nop; foo8: nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:47:15
+  --> $DIR/named-asm-labels.rs:45:15
    |
 LL |         asm!("foo9: nop; nop");
    |               ^^^^
@@ -117,7 +117,7 @@ LL |         asm!("foo9: nop; nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:48:20
+  --> $DIR/named-asm-labels.rs:46:20
    |
 LL |         asm!("nop; foo10: nop");
    |                    ^^^^^
@@ -126,7 +126,7 @@ LL |         asm!("nop; foo10: nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:51:15
+  --> $DIR/named-asm-labels.rs:49:15
    |
 LL |         asm!("bar2: nop\n bar3: nop");
    |               ^^^^
@@ -135,7 +135,7 @@ LL |         asm!("bar2: nop\n bar3: nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:51:27
+  --> $DIR/named-asm-labels.rs:49:27
    |
 LL |         asm!("bar2: nop\n bar3: nop");
    |                           ^^^^
@@ -144,7 +144,7 @@ LL |         asm!("bar2: nop\n bar3: nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:54:15
+  --> $DIR/named-asm-labels.rs:52:15
    |
 LL |         asm!("bar4: nop\n nop");
    |               ^^^^
@@ -153,7 +153,7 @@ LL |         asm!("bar4: nop\n nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:55:21
+  --> $DIR/named-asm-labels.rs:53:21
    |
 LL |         asm!("nop\n bar5: nop");
    |                     ^^^^
@@ -162,7 +162,7 @@ LL |         asm!("nop\n bar5: nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:56:21
+  --> $DIR/named-asm-labels.rs:54:21
    |
 LL |         asm!("nop\n bar6: bar7: nop");
    |                     ^^^^
@@ -171,7 +171,7 @@ LL |         asm!("nop\n bar6: bar7: nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:56:27
+  --> $DIR/named-asm-labels.rs:54:27
    |
 LL |         asm!("nop\n bar6: bar7: nop");
    |                           ^^^^
@@ -180,7 +180,7 @@ LL |         asm!("nop\n bar6: bar7: nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:63:13
+  --> $DIR/named-asm-labels.rs:61:13
    |
 LL |             blah2: nop
    |             ^^^^^
@@ -189,7 +189,7 @@ LL |             blah2: nop
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:64:13
+  --> $DIR/named-asm-labels.rs:62:13
    |
 LL |             blah3: nop
    |             ^^^^^
@@ -198,7 +198,7 @@ LL |             blah3: nop
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:73:19
+  --> $DIR/named-asm-labels.rs:71:19
    |
 LL |             nop ; blah4: nop
    |                   ^^^^^
@@ -207,7 +207,7 @@ LL |             nop ; blah4: nop
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:87:15
+  --> $DIR/named-asm-labels.rs:85:15
    |
 LL |         asm!("blah1: 2bar: nop");
    |               ^^^^^
@@ -216,7 +216,7 @@ LL |         asm!("blah1: 2bar: nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:90:15
+  --> $DIR/named-asm-labels.rs:88:15
    |
 LL |         asm!("def: def: nop");
    |               ^^^
@@ -225,7 +225,7 @@ LL |         asm!("def: def: nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:90:15
+  --> $DIR/named-asm-labels.rs:88:15
    |
 LL |         asm!("def: def: nop");
    |               ^^^
@@ -235,7 +235,7 @@ LL |         asm!("def: def: nop");
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:93:15
+  --> $DIR/named-asm-labels.rs:91:15
    |
 LL |         asm!("def: nop\ndef: nop");
    |               ^^^
@@ -244,7 +244,7 @@ LL |         asm!("def: nop\ndef: nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:93:15
+  --> $DIR/named-asm-labels.rs:91:15
    |
 LL |         asm!("def: nop\ndef: nop");
    |               ^^^
@@ -254,7 +254,7 @@ LL |         asm!("def: nop\ndef: nop");
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:96:15
+  --> $DIR/named-asm-labels.rs:94:15
    |
 LL |         asm!("def: nop; def: nop");
    |               ^^^
@@ -263,7 +263,7 @@ LL |         asm!("def: nop; def: nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:96:15
+  --> $DIR/named-asm-labels.rs:94:15
    |
 LL |         asm!("def: nop; def: nop");
    |               ^^^
@@ -273,7 +273,7 @@ LL |         asm!("def: nop; def: nop");
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:106:15
+  --> $DIR/named-asm-labels.rs:104:15
    |
 LL |         asm!("fooo\u{003A} nop");
    |               ^^^^^^^^^^^^^^^^
@@ -282,7 +282,7 @@ LL |         asm!("fooo\u{003A} nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:107:15
+  --> $DIR/named-asm-labels.rs:105:15
    |
 LL |         asm!("foooo\x3A nop");
    |               ^^^^^^^^^^^^^
@@ -291,7 +291,7 @@ LL |         asm!("foooo\x3A nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:110:15
+  --> $DIR/named-asm-labels.rs:108:15
    |
 LL |         asm!("fooooo:\u{000A} nop");
    |               ^^^^^^
@@ -300,7 +300,7 @@ LL |         asm!("fooooo:\u{000A} nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:111:15
+  --> $DIR/named-asm-labels.rs:109:15
    |
 LL |         asm!("foooooo:\x0A nop");
    |               ^^^^^^^
@@ -309,7 +309,7 @@ LL |         asm!("foooooo:\x0A nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:115:14
+  --> $DIR/named-asm-labels.rs:113:14
    |
 LL |         asm!("\x41\x42\x43\x3A\x20\x6E\x6F\x70");
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -319,7 +319,7 @@ LL |         asm!("\x41\x42\x43\x3A\x20\x6E\x6F\x70");
    = note: the label may be declared in the expansion of a macro
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:123:13
+  --> $DIR/named-asm-labels.rs:121:13
    |
 LL |             ab: nop // ab: does foo
    |             ^^
@@ -328,7 +328,7 @@ LL |             ab: nop // ab: does foo
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:144:19
+  --> $DIR/named-asm-labels.rs:142:19
    |
 LL |             asm!("test_{}: nop", in(reg) 10);
    |                   ^^^^^^^
@@ -338,7 +338,7 @@ LL |             asm!("test_{}: nop", in(reg) 10);
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:146:15
+  --> $DIR/named-asm-labels.rs:144:15
    |
 LL |         asm!("test_{}: nop", const 10);
    |               ^^^^^^^
@@ -348,7 +348,7 @@ LL |         asm!("test_{}: nop", const 10);
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:147:15
+  --> $DIR/named-asm-labels.rs:145:15
    |
 LL |         asm!("test_{}: nop", sym main);
    |               ^^^^^^^
@@ -358,7 +358,7 @@ LL |         asm!("test_{}: nop", sym main);
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:148:15
+  --> $DIR/named-asm-labels.rs:146:15
    |
 LL |         asm!("{}_test: nop", const 10);
    |               ^^^^^^^
@@ -368,7 +368,7 @@ LL |         asm!("{}_test: nop", const 10);
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:149:15
+  --> $DIR/named-asm-labels.rs:147:15
    |
 LL |         asm!("test_{}_test: nop", const 10);
    |               ^^^^^^^^^^^^
@@ -378,7 +378,7 @@ LL |         asm!("test_{}_test: nop", const 10);
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:150:15
+  --> $DIR/named-asm-labels.rs:148:15
    |
 LL |         asm!("{}: nop", const 10);
    |               ^^
@@ -388,7 +388,7 @@ LL |         asm!("{}: nop", const 10);
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:152:15
+  --> $DIR/named-asm-labels.rs:150:15
    |
 LL |         asm!("{uwu}: nop", uwu = const 10);
    |               ^^^^^
@@ -398,7 +398,7 @@ LL |         asm!("{uwu}: nop", uwu = const 10);
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:153:15
+  --> $DIR/named-asm-labels.rs:151:15
    |
 LL |         asm!("{0}: nop", const 10);
    |               ^^^
@@ -408,7 +408,7 @@ LL |         asm!("{0}: nop", const 10);
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:154:15
+  --> $DIR/named-asm-labels.rs:152:15
    |
 LL |         asm!("{1}: nop", "/* {0} */", const 10, const 20);
    |               ^^^
@@ -418,7 +418,7 @@ LL |         asm!("{1}: nop", "/* {0} */", const 10, const 20);
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:157:14
+  --> $DIR/named-asm-labels.rs:155:14
    |
 LL |         asm!(include_str!("named-asm-labels.s"));
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -428,7 +428,7 @@ LL |         asm!(include_str!("named-asm-labels.s"));
    = note: the label may be declared in the expansion of a macro
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:157:14
+  --> $DIR/named-asm-labels.rs:155:14
    |
 LL |         asm!(include_str!("named-asm-labels.s"));
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -439,7 +439,7 @@ LL |         asm!(include_str!("named-asm-labels.s"));
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:157:14
+  --> $DIR/named-asm-labels.rs:155:14
    |
 LL |         asm!(include_str!("named-asm-labels.s"));
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -450,7 +450,7 @@ LL |         asm!(include_str!("named-asm-labels.s"));
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:157:14
+  --> $DIR/named-asm-labels.rs:155:14
    |
 LL |         asm!(include_str!("named-asm-labels.s"));
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -461,7 +461,7 @@ LL |         asm!(include_str!("named-asm-labels.s"));
    = note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
 
 warning: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:171:19
+  --> $DIR/named-asm-labels.rs:169:19
    |
 LL |             asm!("warned: nop");
    |                   ^^^^^^
@@ -469,13 +469,13 @@ LL |             asm!("warned: nop");
    = help: only local labels of the form `<number>:` should be used in inline asm
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 note: the lint level is defined here
-  --> $DIR/named-asm-labels.rs:169:16
+  --> $DIR/named-asm-labels.rs:167:16
    |
 LL |         #[warn(named_asm_labels)]
    |                ^^^^^^^^^^^^^^^^
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:180:17
+  --> $DIR/named-asm-labels.rs:178:17
    |
 LL |     naked_asm!(".Lfoo: mov rax, {}; ret;", "nop", const 1)
    |                 ^^^^^
@@ -484,7 +484,7 @@ LL |     naked_asm!(".Lfoo: mov rax, {}; ret;", "nop", const 1)
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:187:20
+  --> $DIR/named-asm-labels.rs:185:20
    |
 LL |     unsafe { asm!(".Lbar: mov rax, {}; ret;", "nop", const 1, options(noreturn)) }
    |                    ^^^^^
@@ -493,7 +493,7 @@ LL |     unsafe { asm!(".Lbar: mov rax, {}; ret;", "nop", const 1, options(noret
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:195:17
+  --> $DIR/named-asm-labels.rs:193:17
    |
 LL |     naked_asm!(".Laaa: nop; ret;")
    |                 ^^^^^
@@ -502,7 +502,7 @@ LL |     naked_asm!(".Laaa: nop; ret;")
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:205:21
+  --> $DIR/named-asm-labels.rs:203:21
    |
 LL |         naked_asm!(".Lbbb: nop; ret;")
    |                     ^^^^^
@@ -511,7 +511,7 @@ LL |         naked_asm!(".Lbbb: nop; ret;")
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:214:15
+  --> $DIR/named-asm-labels.rs:212:15
    |
 LL |         asm!("closure1: nop");
    |               ^^^^^^^^
@@ -520,7 +520,7 @@ LL |         asm!("closure1: nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:218:15
+  --> $DIR/named-asm-labels.rs:216:15
    |
 LL |         asm!("closure2: nop");
    |               ^^^^^^^^
@@ -529,7 +529,7 @@ LL |         asm!("closure2: nop");
    = note: see the asm section of Rust By Example <https://doc.rust-lang.org/nightly/rust-by-example/unsafe/asm.html#labels> for more information
 
 error: avoid using named labels in inline assembly
-  --> $DIR/named-asm-labels.rs:228:19
+  --> $DIR/named-asm-labels.rs:226:19
    |
 LL |             asm!("closure3: nop");
    |                   ^^^^^^^^
diff --git a/tests/ui/asm/simple_global_asm.rs b/tests/ui/asm/simple_global_asm.rs
index 9b193b3e44c..68b0b83858e 100644
--- a/tests/ui/asm/simple_global_asm.rs
+++ b/tests/ui/asm/simple_global_asm.rs
@@ -1,7 +1,6 @@
 //@ run-pass
 //@ needs-asm-support
 
-#![feature(naked_functions)]
 #![allow(dead_code)]
 
 #[cfg(any(target_arch = "x86_64", target_arch = "x86"))]
diff --git a/tests/ui/feature-gates/feature-gate-naked_functions.rs b/tests/ui/feature-gates/feature-gate-naked_functions.rs
deleted file mode 100644
index d940decd561..00000000000
--- a/tests/ui/feature-gates/feature-gate-naked_functions.rs
+++ /dev/null
@@ -1,20 +0,0 @@
-//@ needs-asm-support
-
-use std::arch::naked_asm;
-//~^ ERROR use of unstable library feature `naked_functions`
-
-#[naked] //~ ERROR unsafe attribute used without unsafe
-//~^ ERROR the `#[naked]` attribute is an experimental feature
-extern "C" fn naked() {
-    naked_asm!("")
-    //~^ ERROR use of unstable library feature `naked_functions`
-}
-
-#[naked] //~ ERROR unsafe attribute used without unsafe
-//~^ ERROR the `#[naked]` attribute is an experimental feature
-extern "C" fn naked_2() -> isize {
-    naked_asm!("")
-    //~^ ERROR use of unstable library feature `naked_functions`
-}
-
-fn main() {}
diff --git a/tests/ui/feature-gates/feature-gate-naked_functions.stderr b/tests/ui/feature-gates/feature-gate-naked_functions.stderr
deleted file mode 100644
index ea765db7d94..00000000000
--- a/tests/ui/feature-gates/feature-gate-naked_functions.stderr
+++ /dev/null
@@ -1,75 +0,0 @@
-error[E0658]: use of unstable library feature `naked_functions`
-  --> $DIR/feature-gate-naked_functions.rs:9:5
-   |
-LL |     naked_asm!("")
-   |     ^^^^^^^^^
-   |
-   = note: see issue #90957 <https://github.com/rust-lang/rust/issues/90957> for more information
-   = help: add `#![feature(naked_functions)]` to the crate attributes to enable
-   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error[E0658]: use of unstable library feature `naked_functions`
-  --> $DIR/feature-gate-naked_functions.rs:16:5
-   |
-LL |     naked_asm!("")
-   |     ^^^^^^^^^
-   |
-   = note: see issue #90957 <https://github.com/rust-lang/rust/issues/90957> for more information
-   = help: add `#![feature(naked_functions)]` to the crate attributes to enable
-   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error: unsafe attribute used without unsafe
-  --> $DIR/feature-gate-naked_functions.rs:6:3
-   |
-LL | #[naked]
-   |   ^^^^^ usage of unsafe attribute
-   |
-help: wrap the attribute in `unsafe(...)`
-   |
-LL | #[unsafe(naked)]
-   |   +++++++     +
-
-error: unsafe attribute used without unsafe
-  --> $DIR/feature-gate-naked_functions.rs:13:3
-   |
-LL | #[naked]
-   |   ^^^^^ usage of unsafe attribute
-   |
-help: wrap the attribute in `unsafe(...)`
-   |
-LL | #[unsafe(naked)]
-   |   +++++++     +
-
-error[E0658]: the `#[naked]` attribute is an experimental feature
-  --> $DIR/feature-gate-naked_functions.rs:6:1
-   |
-LL | #[naked]
-   | ^^^^^^^^
-   |
-   = note: see issue #90957 <https://github.com/rust-lang/rust/issues/90957> for more information
-   = help: add `#![feature(naked_functions)]` to the crate attributes to enable
-   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error[E0658]: the `#[naked]` attribute is an experimental feature
-  --> $DIR/feature-gate-naked_functions.rs:13:1
-   |
-LL | #[naked]
-   | ^^^^^^^^
-   |
-   = note: see issue #90957 <https://github.com/rust-lang/rust/issues/90957> for more information
-   = help: add `#![feature(naked_functions)]` to the crate attributes to enable
-   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error[E0658]: use of unstable library feature `naked_functions`
-  --> $DIR/feature-gate-naked_functions.rs:3:5
-   |
-LL | use std::arch::naked_asm;
-   |     ^^^^^^^^^^^^^^^^^^^^
-   |
-   = note: see issue #90957 <https://github.com/rust-lang/rust/issues/90957> for more information
-   = help: add `#![feature(naked_functions)]` to the crate attributes to enable
-   = note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
-
-error: aborting due to 7 previous errors
-
-For more information about this error, try `rustc --explain E0658`.
diff --git a/tests/ui/feature-gates/feature-gate-naked_functions_rustic_abi.rs b/tests/ui/feature-gates/feature-gate-naked_functions_rustic_abi.rs
index cc5b4f0e88b..d16c6ccd4c3 100644
--- a/tests/ui/feature-gates/feature-gate-naked_functions_rustic_abi.rs
+++ b/tests/ui/feature-gates/feature-gate-naked_functions_rustic_abi.rs
@@ -1,7 +1,7 @@
 //@ needs-asm-support
 //@ only-x86_64
 
-#![feature(naked_functions, rust_cold_cc)]
+#![feature(rust_cold_cc)]
 
 use std::arch::naked_asm;
 
diff --git a/tests/ui/feature-gates/feature-gate-naked_functions_target_feature.rs b/tests/ui/feature-gates/feature-gate-naked_functions_target_feature.rs
index b2e102f1db4..1fee3e7dcd1 100644
--- a/tests/ui/feature-gates/feature-gate-naked_functions_target_feature.rs
+++ b/tests/ui/feature-gates/feature-gate-naked_functions_target_feature.rs
@@ -1,8 +1,6 @@
 //@ needs-asm-support
 //@ only-x86_64
 
-#![feature(naked_functions)]
-
 use std::arch::naked_asm;
 
 #[unsafe(naked)]
diff --git a/tests/ui/feature-gates/feature-gate-naked_functions_target_feature.stderr b/tests/ui/feature-gates/feature-gate-naked_functions_target_feature.stderr
index b0592d08046..8e601a14753 100644
--- a/tests/ui/feature-gates/feature-gate-naked_functions_target_feature.stderr
+++ b/tests/ui/feature-gates/feature-gate-naked_functions_target_feature.stderr
@@ -1,5 +1,5 @@
 error[E0658]: `#[target_feature(/* ... */)]` is currently unstable on `#[naked]` functions
-  --> $DIR/feature-gate-naked_functions_target_feature.rs:9:1
+  --> $DIR/feature-gate-naked_functions_target_feature.rs:7:1
    |
 LL | #[target_feature(enable = "avx2")]
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/tests/ui/lint/inline-exported.rs b/tests/ui/lint/inline-exported.rs
index 69e322ef513..6a23cd58236 100644
--- a/tests/ui/lint/inline-exported.rs
+++ b/tests/ui/lint/inline-exported.rs
@@ -2,9 +2,7 @@
 //! because `#[inline]` is ignored for such functions.
 
 #![crate_type = "lib"]
-
 #![feature(linkage)]
-#![feature(naked_functions)]
 #![deny(unused_attributes)]
 
 #[inline]
diff --git a/tests/ui/lint/inline-exported.stderr b/tests/ui/lint/inline-exported.stderr
index dcf63cc4090..05a2bda2406 100644
--- a/tests/ui/lint/inline-exported.stderr
+++ b/tests/ui/lint/inline-exported.stderr
@@ -1,18 +1,18 @@
 error: `#[inline]` is ignored on externally exported functions
-  --> $DIR/inline-exported.rs:10:1
+  --> $DIR/inline-exported.rs:8:1
    |
 LL | #[inline]
    | ^^^^^^^^^
    |
    = help: externally exported functions are functions with `#[no_mangle]`, `#[export_name]`, or `#[linkage]`
 note: the lint level is defined here
-  --> $DIR/inline-exported.rs:8:9
+  --> $DIR/inline-exported.rs:6:9
    |
 LL | #![deny(unused_attributes)]
    |         ^^^^^^^^^^^^^^^^^
 
 error: `#[inline]` is ignored on externally exported functions
-  --> $DIR/inline-exported.rs:15:1
+  --> $DIR/inline-exported.rs:13:1
    |
 LL | #[inline]
    | ^^^^^^^^^
@@ -20,7 +20,7 @@ LL | #[inline]
    = help: externally exported functions are functions with `#[no_mangle]`, `#[export_name]`, or `#[linkage]`
 
 error: `#[inline]` is ignored on externally exported functions
-  --> $DIR/inline-exported.rs:20:1
+  --> $DIR/inline-exported.rs:18:1
    |
 LL | #[inline]
    | ^^^^^^^^^
diff --git a/tests/ui/rfcs/rfc-2091-track-caller/error-with-naked.rs b/tests/ui/rfcs/rfc-2091-track-caller/error-with-naked.rs
index ce6d10bf33c..a4baf1fe4b9 100644
--- a/tests/ui/rfcs/rfc-2091-track-caller/error-with-naked.rs
+++ b/tests/ui/rfcs/rfc-2091-track-caller/error-with-naked.rs
@@ -1,5 +1,4 @@
 //@ needs-asm-support
-#![feature(naked_functions)]
 
 use std::arch::naked_asm;
 
diff --git a/tests/ui/rfcs/rfc-2091-track-caller/error-with-naked.stderr b/tests/ui/rfcs/rfc-2091-track-caller/error-with-naked.stderr
index f89d94b67d8..d3cafbc6350 100644
--- a/tests/ui/rfcs/rfc-2091-track-caller/error-with-naked.stderr
+++ b/tests/ui/rfcs/rfc-2091-track-caller/error-with-naked.stderr
@@ -1,5 +1,5 @@
 error[E0736]: attribute incompatible with `#[unsafe(naked)]`
-  --> $DIR/error-with-naked.rs:6:1
+  --> $DIR/error-with-naked.rs:5:1
    |
 LL | #[track_caller]
    | ^^^^^^^^^^^^^^^ the `track_caller` attribute is incompatible with `#[unsafe(naked)]`
@@ -8,7 +8,7 @@ LL | #[unsafe(naked)]
    | ---------------- function marked with `#[unsafe(naked)]` here
 
 error[E0736]: attribute incompatible with `#[unsafe(naked)]`
-  --> $DIR/error-with-naked.rs:18:5
+  --> $DIR/error-with-naked.rs:17:5
    |
 LL |     #[track_caller]
    |     ^^^^^^^^^^^^^^^ the `track_caller` attribute is incompatible with `#[unsafe(naked)]`
@@ -17,13 +17,13 @@ LL |     #[unsafe(naked)]
    |     ---------------- function marked with `#[unsafe(naked)]` here
 
 error[E0737]: `#[track_caller]` requires Rust ABI
-  --> $DIR/error-with-naked.rs:6:1
+  --> $DIR/error-with-naked.rs:5:1
    |
 LL | #[track_caller]
    | ^^^^^^^^^^^^^^^
 
 error[E0737]: `#[track_caller]` requires Rust ABI
-  --> $DIR/error-with-naked.rs:18:5
+  --> $DIR/error-with-naked.rs:17:5
    |
 LL |     #[track_caller]
    |     ^^^^^^^^^^^^^^^