about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--compiler/rustc_ast_passes/src/feature_gate.rs13
-rw-r--r--compiler/rustc_codegen_llvm/src/builder.rs18
-rw-r--r--compiler/rustc_codegen_llvm/src/intrinsic.rs40
-rw-r--r--compiler/rustc_codegen_llvm/src/llvm/ffi.rs2
-rw-r--r--compiler/rustc_error_codes/src/error_codes/E0554.md4
-rw-r--r--compiler/rustc_error_codes/src/error_codes/E0754.md3
-rw-r--r--compiler/rustc_feature/src/accepted.rs2
-rw-r--r--compiler/rustc_feature/src/active.rs3
-rw-r--r--compiler/rustc_lint/src/levels.rs81
-rw-r--r--compiler/rustc_lint/src/non_ascii_idents.rs37
-rw-r--r--compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp6
-rw-r--r--compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs12
-rw-r--r--library/core/src/num/int_macros.rs54
-rw-r--r--library/core/src/num/uint_macros.rs82
-rw-r--r--library/core/src/ptr/const_ptr.rs8
-rw-r--r--library/core/src/ptr/mut_ptr.rs8
-rw-r--r--library/core/src/raw.rs4
-rw-r--r--library/core/tests/mem.rs3
-rw-r--r--library/std/src/fs/tests.rs4
-rw-r--r--library/std/src/io/error.rs7
-rw-r--r--library/std/src/lib.rs1
-rw-r--r--library/std/src/sys/hermit/fd.rs9
-rw-r--r--library/std/src/sys/hermit/mod.rs2
-rw-r--r--library/std/src/sys/hermit/net.rs78
-rw-r--r--library/std/src/sys/sgx/mod.rs2
-rw-r--r--library/std/src/sys/unix/fs.rs2
-rw-r--r--library/std/src/sys/unix/l4re.rs5
-rw-r--r--library/std/src/sys/unix/mod.rs1
-rw-r--r--library/std/src/sys/unix/os.rs2
-rw-r--r--library/std/src/sys/unsupported/common.rs5
-rw-r--r--library/std/src/sys/unsupported/os.rs4
-rw-r--r--library/std/src/sys/vxworks/mod.rs1
-rw-r--r--library/std/src/sys/wasi/mod.rs1
-rw-r--r--library/std/src/sys/windows/fs.rs5
-rw-r--r--library/std/src/sys/windows/mod.rs1
-rw-r--r--library/std/src/sys/windows/net.rs2
-rw-r--r--src/doc/unstable-book/src/language-features/non-ascii-idents.md48
-rw-r--r--src/librustdoc/html/format.rs83
-rw-r--r--src/librustdoc/html/render/context.rs10
-rw-r--r--src/librustdoc/html/render/mod.rs3
-rw-r--r--src/librustdoc/html/static/search.js2
-rw-r--r--src/test/codegen/issue-84268.rs23
-rw-r--r--src/test/codegen/simd-intrinsic/simd-intrinsic-float-abs.rs14
-rw-r--r--src/test/codegen/simd-intrinsic/simd-intrinsic-float-ceil.rs14
-rw-r--r--src/test/codegen/simd-intrinsic/simd-intrinsic-float-cos.rs14
-rw-r--r--src/test/codegen/simd-intrinsic/simd-intrinsic-float-exp.rs14
-rw-r--r--src/test/codegen/simd-intrinsic/simd-intrinsic-float-exp2.rs14
-rw-r--r--src/test/codegen/simd-intrinsic/simd-intrinsic-float-floor.rs14
-rw-r--r--src/test/codegen/simd-intrinsic/simd-intrinsic-float-fma.rs14
-rw-r--r--src/test/codegen/simd-intrinsic/simd-intrinsic-float-fsqrt.rs14
-rw-r--r--src/test/codegen/simd-intrinsic/simd-intrinsic-float-log.rs14
-rw-r--r--src/test/codegen/simd-intrinsic/simd-intrinsic-float-log10.rs14
-rw-r--r--src/test/codegen/simd-intrinsic/simd-intrinsic-float-log2.rs14
-rw-r--r--src/test/codegen/simd-intrinsic/simd-intrinsic-float-pow.rs14
-rw-r--r--src/test/codegen/simd-intrinsic/simd-intrinsic-float-powi.rs14
-rw-r--r--src/test/codegen/simd-intrinsic/simd-intrinsic-float-sin.rs14
-rw-r--r--src/test/debuginfo/multi-byte-chars.rs2
-rw-r--r--src/test/ui/cast/fat-ptr-cast-rpass.rs4
-rw-r--r--src/test/ui/codemap_tests/unicode_2.rs2
-rw-r--r--src/test/ui/codemap_tests/unicode_2.stderr6
-rw-r--r--src/test/ui/destructuring-assignment/bad-expr-lhs.rs (renamed from src/test/ui/bad/bad-expr-lhs.rs)0
-rw-r--r--src/test/ui/destructuring-assignment/bad-expr-lhs.stderr (renamed from src/test/ui/bad/bad-expr-lhs.stderr)0
-rw-r--r--src/test/ui/feature-gates/feature-gate-non_ascii_idents.rs34
-rw-r--r--src/test/ui/feature-gates/feature-gate-non_ascii_idents.stderr130
-rw-r--r--src/test/ui/fn/bad-main.rs (renamed from src/test/ui/bad/bad-main.rs)0
-rw-r--r--src/test/ui/fn/bad-main.stderr (renamed from src/test/ui/bad/bad-main.stderr)0
-rw-r--r--src/test/ui/generics/bad-mid-path-type-params.rs (renamed from src/test/ui/bad/bad-mid-path-type-params.rs)0
-rw-r--r--src/test/ui/generics/bad-mid-path-type-params.stderr (renamed from src/test/ui/bad/bad-mid-path-type-params.stderr)0
-rw-r--r--src/test/ui/imports/local-modularized-tricky-fail-2.rs56
-rw-r--r--src/test/ui/imports/local-modularized-tricky-fail-2.stderr63
-rw-r--r--src/test/ui/imports/local-modularized-tricky-fail-3.rs22
-rw-r--r--src/test/ui/imports/local-modularized-tricky-fail-3.stderr43
-rw-r--r--src/test/ui/imports/local-modularized-tricky-pass-1.rs (renamed from src/test/ui/imports/local-modularized-tricky-pass.rs)0
-rw-r--r--src/test/ui/imports/local-modularized-tricky-pass-2.rs50
-rw-r--r--src/test/ui/intrinsics/bad-intrinsic-monomorphization.rs (renamed from src/test/ui/bad/bad-intrinsic-monomorphization.rs)0
-rw-r--r--src/test/ui/intrinsics/bad-intrinsic-monomorphization.stderr (renamed from src/test/ui/bad/bad-intrinsic-monomorphization.stderr)0
-rw-r--r--src/test/ui/issues/issue-44023.rs2
-rw-r--r--src/test/ui/issues/issue-44023.stderr2
-rw-r--r--src/test/ui/linkage-attr/bad-extern-link-attrs.rs (renamed from src/test/ui/bad/bad-extern-link-attrs.rs)0
-rw-r--r--src/test/ui/linkage-attr/bad-extern-link-attrs.stderr (renamed from src/test/ui/bad/bad-extern-link-attrs.stderr)0
-rw-r--r--src/test/ui/lint/bad-lint-cap.rs (renamed from src/test/ui/bad/bad-lint-cap.rs)0
-rw-r--r--src/test/ui/lint/bad-lint-cap.stderr (renamed from src/test/ui/bad/bad-lint-cap.stderr)0
-rw-r--r--src/test/ui/lint/bad-lint-cap2.rs (renamed from src/test/ui/bad/bad-lint-cap2.rs)0
-rw-r--r--src/test/ui/lint/bad-lint-cap2.stderr (renamed from src/test/ui/bad/bad-lint-cap2.stderr)0
-rw-r--r--src/test/ui/lint/bad-lint-cap3.rs (renamed from src/test/ui/bad/bad-lint-cap3.rs)0
-rw-r--r--src/test/ui/lint/bad-lint-cap3.stderr (renamed from src/test/ui/bad/bad-lint-cap3.stderr)0
-rw-r--r--src/test/ui/lint/issue-83477.rs16
-rw-r--r--src/test/ui/lint/issue-83477.stderr30
-rw-r--r--src/test/ui/lint/lint-non-snake-case-no-lowercase-equivalent.rs1
-rw-r--r--src/test/ui/lint/lint-nonstandard-style-unicode-1.rs1
-rw-r--r--src/test/ui/lint/lint-nonstandard-style-unicode-1.stderr14
-rw-r--r--src/test/ui/lint/lint-nonstandard-style-unicode-2.rs1
-rw-r--r--src/test/ui/lint/lint-nonstandard-style-unicode-2.stderr4
-rw-r--r--src/test/ui/lint/lint-nonstandard-style-unicode-3.rs1
-rw-r--r--src/test/ui/lint/lint-nonstandard-style-unicode-3.stderr2
-rw-r--r--src/test/ui/lint/rfc-2457-non-ascii-idents/lint-confusable-idents.rs1
-rw-r--r--src/test/ui/lint/rfc-2457-non-ascii-idents/lint-confusable-idents.stderr6
-rw-r--r--src/test/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables-2.rs1
-rw-r--r--src/test/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables.rs1
-rw-r--r--src/test/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables.stderr8
-rw-r--r--src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.rs1
-rw-r--r--src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.stderr8
-rw-r--r--src/test/ui/lint/rfc-2457-non-ascii-idents/lint-uncommon-codepoints.rs1
-rw-r--r--src/test/ui/lint/rfc-2457-non-ascii-idents/lint-uncommon-codepoints.stderr8
-rw-r--r--src/test/ui/lint/special-upper-lower-cases.rs1
-rw-r--r--src/test/ui/lint/special-upper-lower-cases.stderr8
-rw-r--r--src/test/ui/never_type/defaulted-never-note.rs4
-rw-r--r--src/test/ui/never_type/defaulted-never-note.stderr4
-rw-r--r--src/test/ui/parser/bad-crate-name.rs (renamed from src/test/ui/bad/bad-crate-name.rs)0
-rw-r--r--src/test/ui/parser/bad-crate-name.stderr (renamed from src/test/ui/bad/bad-crate-name.stderr)0
-rw-r--r--src/test/ui/parser/issue-48508.rs1
-rw-r--r--src/test/ui/parser/multibyte-char-use-seperator-issue-80134.rs2
-rw-r--r--src/test/ui/parser/multibyte-char-use-seperator-issue-80134.stderr27
-rw-r--r--src/test/ui/resolve/bad-env-capture.rs (renamed from src/test/ui/bad/bad-env-capture.rs)0
-rw-r--r--src/test/ui/resolve/bad-env-capture.stderr (renamed from src/test/ui/bad/bad-env-capture.stderr)0
-rw-r--r--src/test/ui/resolve/bad-env-capture2.rs (renamed from src/test/ui/bad/bad-env-capture2.rs)0
-rw-r--r--src/test/ui/resolve/bad-env-capture2.stderr (renamed from src/test/ui/bad/bad-env-capture2.stderr)0
-rw-r--r--src/test/ui/resolve/bad-env-capture3.rs (renamed from src/test/ui/bad/bad-env-capture3.rs)0
-rw-r--r--src/test/ui/resolve/bad-env-capture3.stderr (renamed from src/test/ui/bad/bad-env-capture3.stderr)0
-rw-r--r--src/test/ui/resolve/bad-expr-path.rs (renamed from src/test/ui/bad/bad-expr-path.rs)0
-rw-r--r--src/test/ui/resolve/bad-expr-path.stderr (renamed from src/test/ui/bad/bad-expr-path.stderr)0
-rw-r--r--src/test/ui/resolve/bad-expr-path2.rs (renamed from src/test/ui/bad/bad-expr-path2.rs)0
-rw-r--r--src/test/ui/resolve/bad-expr-path2.stderr (renamed from src/test/ui/bad/bad-expr-path2.stderr)0
-rw-r--r--src/test/ui/resolve/bad-module.rs (renamed from src/test/ui/bad/bad-module.rs)0
-rw-r--r--src/test/ui/resolve/bad-module.stderr (renamed from src/test/ui/bad/bad-module.stderr)0
-rw-r--r--src/test/ui/resolve/bad-type-env-capture.rs (renamed from src/test/ui/bad/bad-type-env-capture.rs)0
-rw-r--r--src/test/ui/resolve/bad-type-env-capture.stderr (renamed from src/test/ui/bad/bad-type-env-capture.stderr)0
-rw-r--r--src/test/ui/rfc-2457/crate_name_nonascii_forbidden-1.rs2
-rw-r--r--src/test/ui/rfc-2457/crate_name_nonascii_forbidden-1.stderr2
-rw-r--r--src/test/ui/rfc-2457/crate_name_nonascii_forbidden-2.rs1
-rw-r--r--src/test/ui/rfc-2457/crate_name_nonascii_forbidden-2.stderr2
-rw-r--r--src/test/ui/rfc-2457/extern_block_nonascii_forbidden.rs1
-rw-r--r--src/test/ui/rfc-2457/extern_block_nonascii_forbidden.stderr6
-rw-r--r--src/test/ui/rfc-2457/idents-normalized.rs1
-rw-r--r--src/test/ui/rfc-2457/mod_file_nonascii_forbidden.rs2
-rw-r--r--src/test/ui/rfc-2457/mod_file_nonascii_forbidden.stderr4
-rw-r--r--src/test/ui/rfc-2457/mod_file_nonascii_with_path_allowed.rs1
-rw-r--r--src/test/ui/rfc-2457/mod_inline_nonascii_allowed.rs1
-rw-r--r--src/test/ui/rfc-2457/no_mangle_nonascii_forbidden.rs2
-rw-r--r--src/test/ui/rfc-2457/no_mangle_nonascii_forbidden.stderr2
-rw-r--r--src/test/ui/static/bad-const-type.rs (renamed from src/test/ui/bad/bad-const-type.rs)0
-rw-r--r--src/test/ui/static/bad-const-type.stderr (renamed from src/test/ui/bad/bad-const-type.stderr)0
-rw-r--r--src/test/ui/traits/bad-method-typaram-kind.rs (renamed from src/test/ui/bad/bad-method-typaram-kind.rs)0
-rw-r--r--src/test/ui/traits/bad-method-typaram-kind.stderr (renamed from src/test/ui/bad/bad-method-typaram-kind.stderr)0
-rw-r--r--src/test/ui/traits/bad-sized.rs (renamed from src/test/ui/bad/bad-sized.rs)0
-rw-r--r--src/test/ui/traits/bad-sized.stderr (renamed from src/test/ui/bad/bad-sized.stderr)0
-rw-r--r--src/test/ui/utf8_idents-rpass.rs2
-rw-r--r--src/test/ui/utf8_idents.rs13
-rw-r--r--src/test/ui/utf8_idents.stderr47
-rw-r--r--src/tools/clippy/tests/ui/filter_methods.rs2
-rw-r--r--src/tools/clippy/tests/ui/wildcard_enum_match_arm.fixed3
-rw-r--r--src/tools/clippy/tests/ui/wildcard_enum_match_arm.rs1
-rw-r--r--src/tools/clippy/tests/ui/wildcard_enum_match_arm.stderr2
-rw-r--r--src/tools/tidy/src/ui_tests.rs2
154 files changed, 628 insertions, 916 deletions
diff --git a/compiler/rustc_ast_passes/src/feature_gate.rs b/compiler/rustc_ast_passes/src/feature_gate.rs
index f6b18bdea51..c803c8a83b1 100644
--- a/compiler/rustc_ast_passes/src/feature_gate.rs
+++ b/compiler/rustc_ast_passes/src/feature_gate.rs
@@ -8,7 +8,7 @@ use rustc_feature::{Features, GateIssue};
 use rustc_session::parse::{feature_err, feature_err_issue};
 use rustc_session::Session;
 use rustc_span::source_map::Spanned;
-use rustc_span::symbol::{sym, Symbol};
+use rustc_span::symbol::sym;
 use rustc_span::Span;
 
 use tracing::debug;
@@ -328,17 +328,6 @@ impl<'a> Visitor<'a> for PostExpansionVisitor<'a> {
         }
     }
 
-    fn visit_name(&mut self, sp: Span, name: Symbol) {
-        if !name.as_str().is_ascii() {
-            gate_feature_post!(
-                &self,
-                non_ascii_idents,
-                self.sess.parse_sess.source_map().guess_head_span(sp),
-                "non-ascii idents are not fully supported"
-            );
-        }
-    }
-
     fn visit_item(&mut self, i: &'a ast::Item) {
         match i.kind {
             ast::ItemKind::ForeignMod(ref foreign_module) => {
diff --git a/compiler/rustc_codegen_llvm/src/builder.rs b/compiler/rustc_codegen_llvm/src/builder.rs
index 896e56a9a1e..f823792fabe 100644
--- a/compiler/rustc_codegen_llvm/src/builder.rs
+++ b/compiler/rustc_codegen_llvm/src/builder.rs
@@ -261,7 +261,7 @@ impl BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
     fn fadd_fast(&mut self, lhs: &'ll Value, rhs: &'ll Value) -> &'ll Value {
         unsafe {
             let instr = llvm::LLVMBuildFAdd(self.llbuilder, lhs, rhs, UNNAMED);
-            llvm::LLVMRustSetHasUnsafeAlgebra(instr);
+            llvm::LLVMRustSetFastMath(instr);
             instr
         }
     }
@@ -269,7 +269,7 @@ impl BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
     fn fsub_fast(&mut self, lhs: &'ll Value, rhs: &'ll Value) -> &'ll Value {
         unsafe {
             let instr = llvm::LLVMBuildFSub(self.llbuilder, lhs, rhs, UNNAMED);
-            llvm::LLVMRustSetHasUnsafeAlgebra(instr);
+            llvm::LLVMRustSetFastMath(instr);
             instr
         }
     }
@@ -277,7 +277,7 @@ impl BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
     fn fmul_fast(&mut self, lhs: &'ll Value, rhs: &'ll Value) -> &'ll Value {
         unsafe {
             let instr = llvm::LLVMBuildFMul(self.llbuilder, lhs, rhs, UNNAMED);
-            llvm::LLVMRustSetHasUnsafeAlgebra(instr);
+            llvm::LLVMRustSetFastMath(instr);
             instr
         }
     }
@@ -285,7 +285,7 @@ impl BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
     fn fdiv_fast(&mut self, lhs: &'ll Value, rhs: &'ll Value) -> &'ll Value {
         unsafe {
             let instr = llvm::LLVMBuildFDiv(self.llbuilder, lhs, rhs, UNNAMED);
-            llvm::LLVMRustSetHasUnsafeAlgebra(instr);
+            llvm::LLVMRustSetFastMath(instr);
             instr
         }
     }
@@ -293,7 +293,7 @@ impl BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
     fn frem_fast(&mut self, lhs: &'ll Value, rhs: &'ll Value) -> &'ll Value {
         unsafe {
             let instr = llvm::LLVMBuildFRem(self.llbuilder, lhs, rhs, UNNAMED);
-            llvm::LLVMRustSetHasUnsafeAlgebra(instr);
+            llvm::LLVMRustSetFastMath(instr);
             instr
         }
     }
@@ -1242,14 +1242,14 @@ impl Builder<'a, 'll, 'tcx> {
     pub fn vector_reduce_fadd_fast(&mut self, acc: &'ll Value, src: &'ll Value) -> &'ll Value {
         unsafe {
             let instr = llvm::LLVMRustBuildVectorReduceFAdd(self.llbuilder, acc, src);
-            llvm::LLVMRustSetHasUnsafeAlgebra(instr);
+            llvm::LLVMRustSetFastMath(instr);
             instr
         }
     }
     pub fn vector_reduce_fmul_fast(&mut self, acc: &'ll Value, src: &'ll Value) -> &'ll Value {
         unsafe {
             let instr = llvm::LLVMRustBuildVectorReduceFMul(self.llbuilder, acc, src);
-            llvm::LLVMRustSetHasUnsafeAlgebra(instr);
+            llvm::LLVMRustSetFastMath(instr);
             instr
         }
     }
@@ -1282,7 +1282,7 @@ impl Builder<'a, 'll, 'tcx> {
         unsafe {
             let instr =
                 llvm::LLVMRustBuildVectorReduceFMin(self.llbuilder, src, /*NoNaNs:*/ true);
-            llvm::LLVMRustSetHasUnsafeAlgebra(instr);
+            llvm::LLVMRustSetFastMath(instr);
             instr
         }
     }
@@ -1290,7 +1290,7 @@ impl Builder<'a, 'll, 'tcx> {
         unsafe {
             let instr =
                 llvm::LLVMRustBuildVectorReduceFMax(self.llbuilder, src, /*NoNaNs:*/ true);
-            llvm::LLVMRustSetHasUnsafeAlgebra(instr);
+            llvm::LLVMRustSetFastMath(instr);
             instr
         }
     }
diff --git a/compiler/rustc_codegen_llvm/src/intrinsic.rs b/compiler/rustc_codegen_llvm/src/intrinsic.rs
index 52fab2ea17d..fc6c1abf4af 100644
--- a/compiler/rustc_codegen_llvm/src/intrinsic.rs
+++ b/compiler/rustc_codegen_llvm/src/intrinsic.rs
@@ -1053,50 +1053,48 @@ fn generic_simd_intrinsic(
         let vec_ty = bx.type_vector(elem_ty, in_len);
 
         let (intr_name, fn_ty) = match name {
-            sym::simd_fsqrt => ("sqrt", bx.type_func(&[vec_ty], vec_ty)),
-            sym::simd_fsin => ("sin", bx.type_func(&[vec_ty], vec_ty)),
-            sym::simd_fcos => ("cos", bx.type_func(&[vec_ty], vec_ty)),
-            sym::simd_fabs => ("fabs", bx.type_func(&[vec_ty], vec_ty)),
             sym::simd_ceil => ("ceil", bx.type_func(&[vec_ty], vec_ty)),
-            sym::simd_floor => ("floor", bx.type_func(&[vec_ty], vec_ty)),
-            sym::simd_round => ("round", bx.type_func(&[vec_ty], vec_ty)),
-            sym::simd_trunc => ("trunc", bx.type_func(&[vec_ty], vec_ty)),
-            sym::simd_fexp => ("exp", bx.type_func(&[vec_ty], vec_ty)),
+            sym::simd_fabs => ("fabs", bx.type_func(&[vec_ty], vec_ty)),
+            sym::simd_fcos => ("cos", bx.type_func(&[vec_ty], vec_ty)),
             sym::simd_fexp2 => ("exp2", bx.type_func(&[vec_ty], vec_ty)),
+            sym::simd_fexp => ("exp", bx.type_func(&[vec_ty], vec_ty)),
             sym::simd_flog10 => ("log10", bx.type_func(&[vec_ty], vec_ty)),
             sym::simd_flog2 => ("log2", bx.type_func(&[vec_ty], vec_ty)),
             sym::simd_flog => ("log", bx.type_func(&[vec_ty], vec_ty)),
+            sym::simd_floor => ("floor", bx.type_func(&[vec_ty], vec_ty)),
+            sym::simd_fma => ("fma", bx.type_func(&[vec_ty, vec_ty, vec_ty], vec_ty)),
             sym::simd_fpowi => ("powi", bx.type_func(&[vec_ty, bx.type_i32()], vec_ty)),
             sym::simd_fpow => ("pow", bx.type_func(&[vec_ty, vec_ty], vec_ty)),
-            sym::simd_fma => ("fma", bx.type_func(&[vec_ty, vec_ty, vec_ty], vec_ty)),
+            sym::simd_fsin => ("sin", bx.type_func(&[vec_ty], vec_ty)),
+            sym::simd_fsqrt => ("sqrt", bx.type_func(&[vec_ty], vec_ty)),
+            sym::simd_round => ("round", bx.type_func(&[vec_ty], vec_ty)),
+            sym::simd_trunc => ("trunc", bx.type_func(&[vec_ty], vec_ty)),
             _ => return_error!("unrecognized intrinsic `{}`", name),
         };
-
         let llvm_name = &format!("llvm.{0}.v{1}{2}", intr_name, in_len, elem_ty_str);
         let f = bx.declare_cfn(&llvm_name, llvm::UnnamedAddr::No, fn_ty);
         let c = bx.call(f, &args.iter().map(|arg| arg.immediate()).collect::<Vec<_>>(), None);
-        unsafe { llvm::LLVMRustSetHasUnsafeAlgebra(c) };
         Ok(c)
     }
 
     if std::matches!(
         name,
-        sym::simd_fsqrt
-            | sym::simd_fsin
-            | sym::simd_fcos
+        sym::simd_ceil
             | sym::simd_fabs
-            | sym::simd_ceil
-            | sym::simd_floor
-            | sym::simd_round
-            | sym::simd_trunc
-            | sym::simd_fexp
+            | sym::simd_fcos
             | sym::simd_fexp2
+            | sym::simd_fexp
             | sym::simd_flog10
             | sym::simd_flog2
             | sym::simd_flog
-            | sym::simd_fpowi
-            | sym::simd_fpow
+            | sym::simd_floor
             | sym::simd_fma
+            | sym::simd_fpow
+            | sym::simd_fpowi
+            | sym::simd_fsin
+            | sym::simd_fsqrt
+            | sym::simd_round
+            | sym::simd_trunc
     ) {
         return simd_simple_float_intrinsic(name, in_elem, in_ty, in_len, bx, span, args);
     }
diff --git a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
index 54a8249b175..32b1526f6e4 100644
--- a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
+++ b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs
@@ -1354,7 +1354,7 @@ extern "C" {
     pub fn LLVMBuildNeg(B: &Builder<'a>, V: &'a Value, Name: *const c_char) -> &'a Value;
     pub fn LLVMBuildFNeg(B: &Builder<'a>, V: &'a Value, Name: *const c_char) -> &'a Value;
     pub fn LLVMBuildNot(B: &Builder<'a>, V: &'a Value, Name: *const c_char) -> &'a Value;
-    pub fn LLVMRustSetHasUnsafeAlgebra(Instr: &Value);
+    pub fn LLVMRustSetFastMath(Instr: &Value);
 
     // Memory
     pub fn LLVMBuildAlloca(B: &Builder<'a>, Ty: &'a Type, Name: *const c_char) -> &'a Value;
diff --git a/compiler/rustc_error_codes/src/error_codes/E0554.md b/compiler/rustc_error_codes/src/error_codes/E0554.md
index e55fa4c6ede..3178bf21919 100644
--- a/compiler/rustc_error_codes/src/error_codes/E0554.md
+++ b/compiler/rustc_error_codes/src/error_codes/E0554.md
@@ -4,8 +4,8 @@ beta compilers will not comply.
 Erroneous code example:
 
 ```ignore (depends on release channel)
-#![feature(non_ascii_idents)] // error: `#![feature]` may not be used on the
-                              //        stable release channel
+#![feature(lang_items)] // error: `#![feature]` may not be used on the
+                        //        stable release channel
 ```
 
 If you need the feature, make sure to use a nightly release of the compiler
diff --git a/compiler/rustc_error_codes/src/error_codes/E0754.md b/compiler/rustc_error_codes/src/error_codes/E0754.md
index 9f4b19cfda6..acddb69aaba 100644
--- a/compiler/rustc_error_codes/src/error_codes/E0754.md
+++ b/compiler/rustc_error_codes/src/error_codes/E0754.md
@@ -3,7 +3,6 @@ A non-ASCII identifier was used in an invalid context.
 Erroneous code examples:
 
 ```compile_fail,E0754
-# #![feature(non_ascii_idents)]
 
 mod řųśť; // error!
 
@@ -17,8 +16,6 @@ Non-ASCII can be used as module names if it is inlined or if a `#[path]`
 attribute is specified. For example:
 
 ```
-# #![feature(non_ascii_idents)]
-
 mod řųśť { // ok!
     const IS_GREAT: bool = true;
 }
diff --git a/compiler/rustc_feature/src/accepted.rs b/compiler/rustc_feature/src/accepted.rs
index f006351647e..e8642a52749 100644
--- a/compiler/rustc_feature/src/accepted.rs
+++ b/compiler/rustc_feature/src/accepted.rs
@@ -279,6 +279,8 @@ declare_features! (
     (accepted, unsafe_block_in_unsafe_fn, "1.52.0", Some(71668), None),
     /// Allows the use of or-patterns (e.g., `0 | 1`).
     (accepted, or_patterns, "1.53.0", Some(54883), None),
+    /// Allows defining identifiers beyond ASCII.
+    (accepted, non_ascii_idents, "1.53.0", Some(55467), None),
 
     // -------------------------------------------------------------------------
     // feature-group-end: accepted features
diff --git a/compiler/rustc_feature/src/active.rs b/compiler/rustc_feature/src/active.rs
index 6fd1af60fe2..a410826d3fd 100644
--- a/compiler/rustc_feature/src/active.rs
+++ b/compiler/rustc_feature/src/active.rs
@@ -255,9 +255,6 @@ declare_features! (
     // feature-group-start: actual feature gates
     // -------------------------------------------------------------------------
 
-    /// Allows defining identifiers beyond ASCII.
-    (active, non_ascii_idents, "1.0.0", Some(55467), None),
-
     /// Allows using `#[plugin_registrar]` on functions.
     (active, plugin_registrar, "1.0.0", Some(29597), None),
 
diff --git a/compiler/rustc_lint/src/levels.rs b/compiler/rustc_lint/src/levels.rs
index e0857ad1eb9..54909381a10 100644
--- a/compiler/rustc_lint/src/levels.rs
+++ b/compiler/rustc_lint/src/levels.rs
@@ -236,10 +236,9 @@ impl<'s> LintLevelsBuilder<'s> {
                 Some(lvl) => lvl,
             };
 
-            let meta = unwrap_or!(attr.meta(), continue);
             self.sess.mark_attr_used(attr);
 
-            let mut metas = unwrap_or!(meta.meta_item_list(), continue);
+            let mut metas = unwrap_or!(attr.meta_item_list(), continue);
 
             if metas.is_empty() {
                 // FIXME (#55112): issue unused-attributes lint for `#[level()]`
@@ -255,8 +254,6 @@ impl<'s> LintLevelsBuilder<'s> {
                     ast::MetaItemKind::Word => {} // actual lint names handled later
                     ast::MetaItemKind::NameValue(ref name_value) => {
                         if item.path == sym::reason {
-                            // found reason, reslice meta list to exclude it
-                            metas = &metas[0..metas.len() - 1];
                             // FIXME (#55112): issue unused-attributes lint if we thereby
                             // don't have any lint names (`#[level(reason = "foo")]`)
                             if let ast::LitKind::Str(rationale, _) = name_value.kind {
@@ -275,6 +272,8 @@ impl<'s> LintLevelsBuilder<'s> {
                                     .span_label(name_value.span, "reason must be a string literal")
                                     .emit();
                             }
+                            // found reason, reslice meta list to exclude it
+                            metas.pop().unwrap();
                         } else {
                             bad_attr(item.span)
                                 .span_label(item.span, "bad attribute argument")
@@ -288,10 +287,10 @@ impl<'s> LintLevelsBuilder<'s> {
             }
 
             for li in metas {
-                let meta_item = match li.meta_item() {
-                    Some(meta_item) if meta_item.is_word() => meta_item,
+                let sp = li.span();
+                let mut meta_item = match li {
+                    ast::NestedMetaItem::MetaItem(meta_item) if meta_item.is_word() => meta_item,
                     _ => {
-                        let sp = li.span();
                         let mut err = bad_attr(sp);
                         let mut add_label = true;
                         if let Some(item) = li.meta_item() {
@@ -330,15 +329,19 @@ impl<'s> LintLevelsBuilder<'s> {
                         continue;
                     }
 
-                    Some(tool_ident.name)
+                    Some(meta_item.path.segments.remove(0).ident.name)
                 } else {
                     None
                 };
-                let name = meta_item.path.segments.last().expect("empty lint name").ident.name;
-                let lint_result = store.check_lint_name(&name.as_str(), tool_name);
+                let name = pprust::path_to_string(&meta_item.path);
+                let lint_result = store.check_lint_name(&name, tool_name);
                 match &lint_result {
                     CheckLintNameResult::Ok(ids) => {
-                        let src = LintLevelSource::Node(name, li.span(), reason);
+                        let src = LintLevelSource::Node(
+                            meta_item.path.segments.last().expect("empty lint name").ident.name,
+                            sp,
+                            reason,
+                        );
                         for &id in *ids {
                             self.check_gated_lint(id, attr.span);
                             self.insert_spec(&mut specs, id, (level, src));
@@ -351,7 +354,7 @@ impl<'s> LintLevelsBuilder<'s> {
                                 let complete_name = &format!("{}::{}", tool_name.unwrap(), name);
                                 let src = LintLevelSource::Node(
                                     Symbol::intern(complete_name),
-                                    li.span(),
+                                    sp,
                                     reason,
                                 );
                                 for id in ids {
@@ -367,7 +370,7 @@ impl<'s> LintLevelsBuilder<'s> {
                                     lint,
                                     lvl,
                                     src,
-                                    Some(li.span().into()),
+                                    Some(sp.into()),
                                     |lint| {
                                         let msg = format!(
                                             "lint name `{}` is deprecated \
@@ -376,7 +379,7 @@ impl<'s> LintLevelsBuilder<'s> {
                                         );
                                         lint.build(&msg)
                                             .span_suggestion(
-                                                li.span(),
+                                                sp,
                                                 "change it to",
                                                 new_lint_name.to_string(),
                                                 Applicability::MachineApplicable,
@@ -387,7 +390,7 @@ impl<'s> LintLevelsBuilder<'s> {
 
                                 let src = LintLevelSource::Node(
                                     Symbol::intern(&new_lint_name),
-                                    li.span(),
+                                    sp,
                                     reason,
                                 );
                                 for id in ids {
@@ -414,12 +417,12 @@ impl<'s> LintLevelsBuilder<'s> {
                             lint,
                             renamed_lint_level,
                             src,
-                            Some(li.span().into()),
+                            Some(sp.into()),
                             |lint| {
                                 let mut err = lint.build(&msg);
                                 if let Some(new_name) = &renamed {
                                     err.span_suggestion(
-                                        li.span(),
+                                        sp,
                                         "use the new name",
                                         new_name.to_string(),
                                         Applicability::MachineApplicable,
@@ -433,30 +436,23 @@ impl<'s> LintLevelsBuilder<'s> {
                         let lint = builtin::UNKNOWN_LINTS;
                         let (level, src) =
                             self.sets.get_lint_level(lint, self.cur, Some(&specs), self.sess);
-                        struct_lint_level(
-                            self.sess,
-                            lint,
-                            level,
-                            src,
-                            Some(li.span().into()),
-                            |lint| {
-                                let name = if let Some(tool_name) = tool_name {
-                                    format!("{}::{}", tool_name, name)
-                                } else {
-                                    name.to_string()
-                                };
-                                let mut db = lint.build(&format!("unknown lint: `{}`", name));
-                                if let Some(suggestion) = suggestion {
-                                    db.span_suggestion(
-                                        li.span(),
-                                        "did you mean",
-                                        suggestion.to_string(),
-                                        Applicability::MachineApplicable,
-                                    );
-                                }
-                                db.emit();
-                            },
-                        );
+                        struct_lint_level(self.sess, lint, level, src, Some(sp.into()), |lint| {
+                            let name = if let Some(tool_name) = tool_name {
+                                format!("{}::{}", tool_name, name)
+                            } else {
+                                name.to_string()
+                            };
+                            let mut db = lint.build(&format!("unknown lint: `{}`", name));
+                            if let Some(suggestion) = suggestion {
+                                db.span_suggestion(
+                                    sp,
+                                    "did you mean",
+                                    suggestion.to_string(),
+                                    Applicability::MachineApplicable,
+                                );
+                            }
+                            db.emit();
+                        });
                     }
                 }
                 // If this lint was renamed, apply the new lint instead of ignoring the attribute.
@@ -466,8 +462,7 @@ impl<'s> LintLevelsBuilder<'s> {
                     // Ignore any errors or warnings that happen because the new name is inaccurate
                     // NOTE: `new_name` already includes the tool name, so we don't have to add it again.
                     if let CheckLintNameResult::Ok(ids) = store.check_lint_name(&new_name, None) {
-                        let src =
-                            LintLevelSource::Node(Symbol::intern(&new_name), li.span(), reason);
+                        let src = LintLevelSource::Node(Symbol::intern(&new_name), sp, reason);
                         for &id in ids {
                             self.check_gated_lint(id, attr.span);
                             self.insert_spec(&mut specs, id, (level, src));
diff --git a/compiler/rustc_lint/src/non_ascii_idents.rs b/compiler/rustc_lint/src/non_ascii_idents.rs
index a1c7e47e749..301e607fc58 100644
--- a/compiler/rustc_lint/src/non_ascii_idents.rs
+++ b/compiler/rustc_lint/src/non_ascii_idents.rs
@@ -10,7 +10,6 @@ declare_lint! {
     ///
     /// ```rust,compile_fail
     /// # #![allow(unused)]
-    /// #![feature(non_ascii_idents)]
     /// #![deny(non_ascii_idents)]
     /// fn main() {
     ///     let föö = 1;
@@ -21,14 +20,11 @@ declare_lint! {
     ///
     /// ### Explanation
     ///
-    /// Currently on stable Rust, identifiers must contain ASCII characters.
-    /// The [`non_ascii_idents`] nightly-only feature allows identifiers to
-    /// contain non-ASCII characters. This lint allows projects that wish to
-    /// retain the limit of only using ASCII characters to switch this lint to
-    /// "forbid" (for example to ease collaboration or for security reasons).
+    /// This lint allows projects that wish to retain the limit of only using
+    /// ASCII characters to switch this lint to "forbid" (for example to ease
+    /// collaboration or for security reasons).
     /// See [RFC 2457] for more details.
     ///
-    /// [`non_ascii_idents`]: https://doc.rust-lang.org/nightly/unstable-book/language-features/non-ascii-idents.html
     /// [RFC 2457]: https://github.com/rust-lang/rfcs/blob/master/text/2457-non-ascii-idents.md
     pub NON_ASCII_IDENTS,
     Allow,
@@ -44,7 +40,6 @@ declare_lint! {
     ///
     /// ```rust
     /// # #![allow(unused)]
-    /// #![feature(non_ascii_idents)]
     /// const µ: f64 = 0.000001;
     /// ```
     ///
@@ -52,10 +47,8 @@ declare_lint! {
     ///
     /// ### Explanation
     ///
-    /// With the [`non_ascii_idents`] nightly-only feature enabled,
-    /// identifiers are allowed to use non-ASCII characters. This lint warns
-    /// about using characters which are not commonly used, and may cause
-    /// visual confusion.
+    /// This lint warns about using characters which are not commonly used, and may
+    /// cause visual confusion.
     ///
     /// This lint is triggered by identifiers that contain a codepoint that is
     /// not part of the set of "Allowed" codepoints as described by [Unicode®
@@ -66,7 +59,6 @@ declare_lint! {
     /// that if you "forbid" this lint that existing code may fail in the
     /// future.
     ///
-    /// [`non_ascii_idents`]: https://doc.rust-lang.org/nightly/unstable-book/language-features/non-ascii-idents.html
     /// [TR39Allowed]: https://www.unicode.org/reports/tr39/#General_Security_Profile
     pub UNCOMMON_CODEPOINTS,
     Warn,
@@ -81,8 +73,6 @@ declare_lint! {
     /// ### Example
     ///
     /// ```rust
-    /// #![feature(non_ascii_idents)]
-    ///
     /// // Latin Capital Letter E With Caron
     /// pub const Ě: i32 = 1;
     /// // Latin Capital Letter E With Breve
@@ -93,10 +83,8 @@ declare_lint! {
     ///
     /// ### Explanation
     ///
-    /// With the [`non_ascii_idents`] nightly-only feature enabled,
-    /// identifiers are allowed to use non-ASCII characters. This lint warns
-    /// when different identifiers may appear visually similar, which can
-    /// cause confusion.
+    /// This lint warns when different identifiers may appear visually similar,
+    /// which can cause confusion.
     ///
     /// The confusable detection algorithm is based on [Unicode® Technical
     /// Standard #39 Unicode Security Mechanisms Section 4 Confusable
@@ -110,7 +98,6 @@ declare_lint! {
     /// Beware that if you "forbid" this lint that existing code may fail in
     /// the future.
     ///
-    /// [`non_ascii_idents`]: https://doc.rust-lang.org/nightly/unstable-book/language-features/non-ascii-idents.html
     /// [TR39Confusable]: https://www.unicode.org/reports/tr39/#Confusable_Detection
     pub CONFUSABLE_IDENTS,
     Warn,
@@ -127,8 +114,6 @@ declare_lint! {
     /// ### Example
     ///
     /// ```rust
-    /// #![feature(non_ascii_idents)]
-    ///
     /// // The Japanese katakana character エ can be confused with the Han character 工.
     /// const エ: &'static str = "アイウ";
     /// ```
@@ -137,10 +122,8 @@ declare_lint! {
     ///
     /// ### Explanation
     ///
-    /// With the [`non_ascii_idents`] nightly-only feature enabled,
-    /// identifiers are allowed to use non-ASCII characters. This lint warns
-    /// when characters between different scripts may appear visually similar,
-    /// which can cause confusion.
+    /// This lint warns when characters between different scripts may appear
+    /// visually similar, which can cause confusion.
     ///
     /// If the crate contains other identifiers in the same script that have
     /// non-confusable characters, then this lint will *not* be issued. For
@@ -152,8 +135,6 @@ declare_lint! {
     /// Note that the set of confusable characters may change over time.
     /// Beware that if you "forbid" this lint that existing code may fail in
     /// the future.
-    ///
-    /// [`non_ascii_idents`]: https://doc.rust-lang.org/nightly/unstable-book/language-features/non-ascii-idents.html
     pub MIXED_SCRIPT_CONFUSABLES,
     Warn,
     "detects Unicode scripts whose mixed script confusables codepoints are solely used",
diff --git a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
index d6db69c748f..ef27f04ae21 100644
--- a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
+++ b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
@@ -349,8 +349,10 @@ extern "C" void LLVMRustRemoveFunctionAttributes(LLVMValueRef Fn,
   F->setAttributes(PALNew);
 }
 
-// enable fpmath flag UnsafeAlgebra
-extern "C" void LLVMRustSetHasUnsafeAlgebra(LLVMValueRef V) {
+// Enable a fast-math flag
+//
+// https://llvm.org/docs/LangRef.html#fast-math-flags
+extern "C" void LLVMRustSetFastMath(LLVMValueRef V) {
   if (auto I = dyn_cast<Instruction>(unwrap<Value>(V))) {
     I->setFast(true);
   }
diff --git a/compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs b/compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs
index 15a3d3ddd8d..c3bb3fffb82 100644
--- a/compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs
+++ b/compiler/rustc_trait_selection/src/traits/error_reporting/mod.rs
@@ -503,14 +503,14 @@ impl<'a, 'tcx> InferCtxtExt<'tcx> for InferCtxt<'a, 'tcx> {
                             let unit_obligation =
                                 obligation.with(predicate.without_const().to_predicate(tcx));
                             if self.predicate_may_hold(&unit_obligation) {
+                                err.note("this trait is implemented for `()`.");
                                 err.note(
-                                    "the trait is implemented for `()`. \
-                                     Possibly this error has been caused by changes to \
-                                     Rust's type-inference algorithm (see issue #48950 \
-                                     <https://github.com/rust-lang/rust/issues/48950> \
-                                     for more information). Consider whether you meant to use \
-                                     the type `()` here instead.",
+                                    "this error might have been caused by changes to \
+                                    Rust's type-inference algorithm (see issue #48950 \
+                                    <https://github.com/rust-lang/rust/issues/48950> \
+                                    for more information).",
                                 );
+                                err.help("did you intend to use the type `()` here instead?");
                             }
                         }
 
diff --git a/library/core/src/num/int_macros.rs b/library/core/src/num/int_macros.rs
index 9632e64f180..608deb49a9d 100644
--- a/library/core/src/num/int_macros.rs
+++ b/library/core/src/num/int_macros.rs
@@ -79,7 +79,7 @@ macro_rules! int_impl {
         #[rustc_const_stable(feature = "const_int_methods", since = "1.32.0")]
         #[doc(alias = "popcount")]
         #[doc(alias = "popcnt")]
-        #[inline]
+        #[inline(always)]
         pub const fn count_ones(self) -> u32 { (self as $UnsignedT).count_ones() }
 
         /// Returns the number of zeros in the binary representation of `self`.
@@ -93,7 +93,7 @@ macro_rules! int_impl {
         /// ```
         #[stable(feature = "rust1", since = "1.0.0")]
         #[rustc_const_stable(feature = "const_int_methods", since = "1.32.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn count_zeros(self) -> u32 {
             (!self).count_ones()
         }
@@ -111,7 +111,7 @@ macro_rules! int_impl {
         /// ```
         #[stable(feature = "rust1", since = "1.0.0")]
         #[rustc_const_stable(feature = "const_int_methods", since = "1.32.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn leading_zeros(self) -> u32 {
             (self as $UnsignedT).leading_zeros()
         }
@@ -129,7 +129,7 @@ macro_rules! int_impl {
         /// ```
         #[stable(feature = "rust1", since = "1.0.0")]
         #[rustc_const_stable(feature = "const_int_methods", since = "1.32.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn trailing_zeros(self) -> u32 {
             (self as $UnsignedT).trailing_zeros()
         }
@@ -147,7 +147,7 @@ macro_rules! int_impl {
         /// ```
         #[stable(feature = "leading_trailing_ones", since = "1.46.0")]
         #[rustc_const_stable(feature = "leading_trailing_ones", since = "1.46.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn leading_ones(self) -> u32 {
             (self as $UnsignedT).leading_ones()
         }
@@ -165,7 +165,7 @@ macro_rules! int_impl {
         /// ```
         #[stable(feature = "leading_trailing_ones", since = "1.46.0")]
         #[rustc_const_stable(feature = "leading_trailing_ones", since = "1.46.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn trailing_ones(self) -> u32 {
             (self as $UnsignedT).trailing_ones()
         }
@@ -189,7 +189,7 @@ macro_rules! int_impl {
         #[rustc_const_stable(feature = "const_int_methods", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn rotate_left(self, n: u32) -> Self {
             (self as $UnsignedT).rotate_left(n) as Self
         }
@@ -214,7 +214,7 @@ macro_rules! int_impl {
         #[rustc_const_stable(feature = "const_int_methods", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn rotate_right(self, n: u32) -> Self {
             (self as $UnsignedT).rotate_right(n) as Self
         }
@@ -234,7 +234,7 @@ macro_rules! int_impl {
         /// ```
         #[stable(feature = "rust1", since = "1.0.0")]
         #[rustc_const_stable(feature = "const_int_methods", since = "1.32.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn swap_bytes(self) -> Self {
             (self as $UnsignedT).swap_bytes() as Self
         }
@@ -255,7 +255,7 @@ macro_rules! int_impl {
         /// ```
         #[stable(feature = "reverse_bits", since = "1.37.0")]
         #[rustc_const_stable(feature = "const_int_methods", since = "1.32.0")]
-        #[inline]
+        #[inline(always)]
         #[must_use]
         pub const fn reverse_bits(self) -> Self {
             (self as $UnsignedT).reverse_bits() as Self
@@ -416,7 +416,7 @@ macro_rules! int_impl {
         )]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub unsafe fn unchecked_add(self, rhs: Self) -> Self {
             // SAFETY: the caller must uphold the safety contract for
             // `unchecked_add`.
@@ -454,7 +454,7 @@ macro_rules! int_impl {
         )]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub unsafe fn unchecked_sub(self, rhs: Self) -> Self {
             // SAFETY: the caller must uphold the safety contract for
             // `unchecked_sub`.
@@ -492,7 +492,7 @@ macro_rules! int_impl {
         )]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub unsafe fn unchecked_mul(self, rhs: Self) -> Self {
             // SAFETY: the caller must uphold the safety contract for
             // `unchecked_mul`.
@@ -741,7 +741,7 @@ macro_rules! int_impl {
         #[rustc_const_stable(feature = "const_saturating_int_methods", since = "1.47.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn saturating_add(self, rhs: Self) -> Self {
             intrinsics::saturating_add(self, rhs)
         }
@@ -762,7 +762,7 @@ macro_rules! int_impl {
         #[rustc_const_stable(feature = "const_saturating_int_methods", since = "1.47.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn saturating_sub(self, rhs: Self) -> Self {
             intrinsics::saturating_sub(self, rhs)
         }
@@ -783,7 +783,7 @@ macro_rules! int_impl {
 
         #[stable(feature = "saturating_neg", since = "1.45.0")]
         #[rustc_const_stable(feature = "const_saturating_int_methods", since = "1.47.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn saturating_neg(self) -> Self {
             intrinsics::saturating_sub(0, self)
         }
@@ -883,7 +883,7 @@ macro_rules! int_impl {
         #[rustc_const_stable(feature = "const_int_methods", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn wrapping_add(self, rhs: Self) -> Self {
             intrinsics::wrapping_add(self, rhs)
         }
@@ -903,7 +903,7 @@ macro_rules! int_impl {
         #[rustc_const_stable(feature = "const_int_methods", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn wrapping_sub(self, rhs: Self) -> Self {
             intrinsics::wrapping_sub(self, rhs)
         }
@@ -923,7 +923,7 @@ macro_rules! int_impl {
         #[rustc_const_stable(feature = "const_int_methods", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn wrapping_mul(self, rhs: Self) -> Self {
             intrinsics::wrapping_mul(self, rhs)
         }
@@ -1081,7 +1081,7 @@ macro_rules! int_impl {
         #[rustc_const_stable(feature = "const_int_methods", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn wrapping_shl(self, rhs: u32) -> Self {
             // SAFETY: the masking by the bitsize of the type ensures that we do not shift
             // out of bounds
@@ -1110,7 +1110,7 @@ macro_rules! int_impl {
         #[rustc_const_stable(feature = "const_int_methods", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn wrapping_shr(self, rhs: u32) -> Self {
             // SAFETY: the masking by the bitsize of the type ensures that we do not shift
             // out of bounds
@@ -1225,7 +1225,7 @@ macro_rules! int_impl {
         #[rustc_const_stable(feature = "const_int_methods", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn overflowing_add(self, rhs: Self) -> (Self, bool) {
             let (a, b) = intrinsics::add_with_overflow(self as $ActualT, rhs as $ActualT);
             (a as Self, b)
@@ -1249,7 +1249,7 @@ macro_rules! int_impl {
         #[rustc_const_stable(feature = "const_int_methods", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn overflowing_sub(self, rhs: Self) -> (Self, bool) {
             let (a, b) = intrinsics::sub_with_overflow(self as $ActualT, rhs as $ActualT);
             (a as Self, b)
@@ -1272,7 +1272,7 @@ macro_rules! int_impl {
         #[rustc_const_stable(feature = "const_int_methods", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn overflowing_mul(self, rhs: Self) -> (Self, bool) {
             let (a, b) = intrinsics::mul_with_overflow(self as $ActualT, rhs as $ActualT);
             (a as Self, b)
@@ -1725,7 +1725,7 @@ macro_rules! int_impl {
         /// ```
         #[stable(feature = "rust1", since = "1.0.0")]
         #[rustc_const_stable(feature = "const_int_sign", since = "1.47.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn signum(self) -> Self {
             match self {
                 n if n > 0 =>  1,
@@ -1747,7 +1747,7 @@ macro_rules! int_impl {
         /// ```
         #[stable(feature = "rust1", since = "1.0.0")]
         #[rustc_const_stable(feature = "const_int_methods", since = "1.32.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn is_positive(self) -> bool { self > 0 }
 
         /// Returns `true` if `self` is negative and `false` if the number is zero or
@@ -1763,7 +1763,7 @@ macro_rules! int_impl {
         /// ```
         #[stable(feature = "rust1", since = "1.0.0")]
         #[rustc_const_stable(feature = "const_int_methods", since = "1.32.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn is_negative(self) -> bool { self < 0 }
 
         /// Return the memory representation of this integer as a byte array in
diff --git a/library/core/src/num/uint_macros.rs b/library/core/src/num/uint_macros.rs
index 62d539b96c3..46638ea4463 100644
--- a/library/core/src/num/uint_macros.rs
+++ b/library/core/src/num/uint_macros.rs
@@ -79,7 +79,7 @@ macro_rules! uint_impl {
         #[rustc_const_stable(feature = "const_math", since = "1.32.0")]
         #[doc(alias = "popcount")]
         #[doc(alias = "popcnt")]
-        #[inline]
+        #[inline(always)]
         pub const fn count_ones(self) -> u32 {
             intrinsics::ctpop(self as $ActualT) as u32
         }
@@ -95,7 +95,7 @@ macro_rules! uint_impl {
         /// ```
         #[stable(feature = "rust1", since = "1.0.0")]
         #[rustc_const_stable(feature = "const_math", since = "1.32.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn count_zeros(self) -> u32 {
             (!self).count_ones()
         }
@@ -113,7 +113,7 @@ macro_rules! uint_impl {
         /// ```
         #[stable(feature = "rust1", since = "1.0.0")]
         #[rustc_const_stable(feature = "const_math", since = "1.32.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn leading_zeros(self) -> u32 {
             intrinsics::ctlz(self as $ActualT) as u32
         }
@@ -132,7 +132,7 @@ macro_rules! uint_impl {
         /// ```
         #[stable(feature = "rust1", since = "1.0.0")]
         #[rustc_const_stable(feature = "const_math", since = "1.32.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn trailing_zeros(self) -> u32 {
             intrinsics::cttz(self) as u32
         }
@@ -150,7 +150,7 @@ macro_rules! uint_impl {
         /// ```
         #[stable(feature = "leading_trailing_ones", since = "1.46.0")]
         #[rustc_const_stable(feature = "leading_trailing_ones", since = "1.46.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn leading_ones(self) -> u32 {
             (!self).leading_zeros()
         }
@@ -169,7 +169,7 @@ macro_rules! uint_impl {
         /// ```
         #[stable(feature = "leading_trailing_ones", since = "1.46.0")]
         #[rustc_const_stable(feature = "leading_trailing_ones", since = "1.46.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn trailing_ones(self) -> u32 {
             (!self).trailing_zeros()
         }
@@ -193,7 +193,7 @@ macro_rules! uint_impl {
         #[rustc_const_stable(feature = "const_math", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn rotate_left(self, n: u32) -> Self {
             intrinsics::rotate_left(self, n as $SelfT)
         }
@@ -218,7 +218,7 @@ macro_rules! uint_impl {
         #[rustc_const_stable(feature = "const_math", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn rotate_right(self, n: u32) -> Self {
             intrinsics::rotate_right(self, n as $SelfT)
         }
@@ -237,7 +237,7 @@ macro_rules! uint_impl {
         /// ```
         #[stable(feature = "rust1", since = "1.0.0")]
         #[rustc_const_stable(feature = "const_math", since = "1.32.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn swap_bytes(self) -> Self {
             intrinsics::bswap(self as $ActualT) as Self
         }
@@ -258,7 +258,7 @@ macro_rules! uint_impl {
         /// ```
         #[stable(feature = "reverse_bits", since = "1.37.0")]
         #[rustc_const_stable(feature = "const_math", since = "1.32.0")]
-        #[inline]
+        #[inline(always)]
         #[must_use]
         pub const fn reverse_bits(self) -> Self {
             intrinsics::bitreverse(self as $ActualT) as Self
@@ -284,7 +284,7 @@ macro_rules! uint_impl {
         /// ```
         #[stable(feature = "rust1", since = "1.0.0")]
         #[rustc_const_stable(feature = "const_math", since = "1.32.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn from_be(x: Self) -> Self {
             #[cfg(target_endian = "big")]
             {
@@ -316,7 +316,7 @@ macro_rules! uint_impl {
         /// ```
         #[stable(feature = "rust1", since = "1.0.0")]
         #[rustc_const_stable(feature = "const_math", since = "1.32.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn from_le(x: Self) -> Self {
             #[cfg(target_endian = "little")]
             {
@@ -348,7 +348,7 @@ macro_rules! uint_impl {
         /// ```
         #[stable(feature = "rust1", since = "1.0.0")]
         #[rustc_const_stable(feature = "const_math", since = "1.32.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn to_be(self) -> Self { // or not to be?
             #[cfg(target_endian = "big")]
             {
@@ -380,7 +380,7 @@ macro_rules! uint_impl {
         /// ```
         #[stable(feature = "rust1", since = "1.0.0")]
         #[rustc_const_stable(feature = "const_math", since = "1.32.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn to_le(self) -> Self {
             #[cfg(target_endian = "little")]
             {
@@ -426,7 +426,7 @@ macro_rules! uint_impl {
         )]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub unsafe fn unchecked_add(self, rhs: Self) -> Self {
             // SAFETY: the caller must uphold the safety contract for
             // `unchecked_add`.
@@ -464,7 +464,7 @@ macro_rules! uint_impl {
         )]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub unsafe fn unchecked_sub(self, rhs: Self) -> Self {
             // SAFETY: the caller must uphold the safety contract for
             // `unchecked_sub`.
@@ -502,7 +502,7 @@ macro_rules! uint_impl {
         )]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub unsafe fn unchecked_mul(self, rhs: Self) -> Self {
             // SAFETY: the caller must uphold the safety contract for
             // `unchecked_mul`.
@@ -727,7 +727,7 @@ macro_rules! uint_impl {
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[rustc_const_stable(feature = "const_saturating_int_methods", since = "1.47.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn saturating_add(self, rhs: Self) -> Self {
             intrinsics::saturating_add(self, rhs)
         }
@@ -747,7 +747,7 @@ macro_rules! uint_impl {
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
         #[rustc_const_stable(feature = "const_saturating_int_methods", since = "1.47.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn saturating_sub(self, rhs: Self) -> Self {
             intrinsics::saturating_sub(self, rhs)
         }
@@ -813,7 +813,7 @@ macro_rules! uint_impl {
         #[rustc_const_stable(feature = "const_wrapping_math", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn wrapping_add(self, rhs: Self) -> Self {
             intrinsics::wrapping_add(self, rhs)
         }
@@ -833,7 +833,7 @@ macro_rules! uint_impl {
         #[rustc_const_stable(feature = "const_wrapping_math", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn wrapping_sub(self, rhs: Self) -> Self {
             intrinsics::wrapping_sub(self, rhs)
         }
@@ -856,7 +856,7 @@ macro_rules! uint_impl {
         #[rustc_const_stable(feature = "const_wrapping_math", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                           without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn wrapping_mul(self, rhs: Self) -> Self {
             intrinsics::wrapping_mul(self, rhs)
         }
@@ -878,7 +878,7 @@ macro_rules! uint_impl {
         #[rustc_const_stable(feature = "const_wrapping_int_methods", since = "1.52.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn wrapping_div(self, rhs: Self) -> Self {
             self / rhs
         }
@@ -903,7 +903,7 @@ macro_rules! uint_impl {
         #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.52.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn wrapping_div_euclid(self, rhs: Self) -> Self {
             self / rhs
         }
@@ -926,7 +926,7 @@ macro_rules! uint_impl {
         #[rustc_const_stable(feature = "const_wrapping_int_methods", since = "1.52.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn wrapping_rem(self, rhs: Self) -> Self {
             self % rhs
         }
@@ -952,7 +952,7 @@ macro_rules! uint_impl {
         #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.52.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn wrapping_rem_euclid(self, rhs: Self) -> Self {
             self % rhs
         }
@@ -1008,7 +1008,7 @@ macro_rules! uint_impl {
         #[rustc_const_stable(feature = "const_wrapping_math", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn wrapping_shl(self, rhs: u32) -> Self {
             // SAFETY: the masking by the bitsize of the type ensures that we do not shift
             // out of bounds
@@ -1040,7 +1040,7 @@ macro_rules! uint_impl {
         #[rustc_const_stable(feature = "const_wrapping_math", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn wrapping_shr(self, rhs: u32) -> Self {
             // SAFETY: the masking by the bitsize of the type ensures that we do not shift
             // out of bounds
@@ -1106,7 +1106,7 @@ macro_rules! uint_impl {
         #[rustc_const_stable(feature = "const_wrapping_math", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn overflowing_add(self, rhs: Self) -> (Self, bool) {
             let (a, b) = intrinsics::add_with_overflow(self as $ActualT, rhs as $ActualT);
             (a as Self, b)
@@ -1131,7 +1131,7 @@ macro_rules! uint_impl {
         #[rustc_const_stable(feature = "const_wrapping_math", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn overflowing_sub(self, rhs: Self) -> (Self, bool) {
             let (a, b) = intrinsics::sub_with_overflow(self as $ActualT, rhs as $ActualT);
             (a as Self, b)
@@ -1158,7 +1158,7 @@ macro_rules! uint_impl {
         #[rustc_const_stable(feature = "const_wrapping_math", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                           without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn overflowing_mul(self, rhs: Self) -> (Self, bool) {
             let (a, b) = intrinsics::mul_with_overflow(self as $ActualT, rhs as $ActualT);
             (a as Self, b)
@@ -1182,7 +1182,7 @@ macro_rules! uint_impl {
         /// ```
         #[doc = concat!("assert_eq!(5", stringify!($SelfT), ".overflowing_div(2), (2, false));")]
         /// ```
-        #[inline]
+        #[inline(always)]
         #[stable(feature = "wrapping", since = "1.7.0")]
         #[rustc_const_stable(feature = "const_overflowing_int_methods", since = "1.52.0")]
         #[must_use = "this returns the result of the operation, \
@@ -1212,7 +1212,7 @@ macro_rules! uint_impl {
         /// ```
         #[doc = concat!("assert_eq!(5", stringify!($SelfT), ".overflowing_div_euclid(2), (2, false));")]
         /// ```
-        #[inline]
+        #[inline(always)]
         #[stable(feature = "euclidean_division", since = "1.38.0")]
         #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.52.0")]
         #[must_use = "this returns the result of the operation, \
@@ -1239,7 +1239,7 @@ macro_rules! uint_impl {
         /// ```
         #[doc = concat!("assert_eq!(5", stringify!($SelfT), ".overflowing_rem(2), (1, false));")]
         /// ```
-        #[inline]
+        #[inline(always)]
         #[stable(feature = "wrapping", since = "1.7.0")]
         #[rustc_const_stable(feature = "const_overflowing_int_methods", since = "1.52.0")]
         #[must_use = "this returns the result of the operation, \
@@ -1269,7 +1269,7 @@ macro_rules! uint_impl {
         /// ```
         #[doc = concat!("assert_eq!(5", stringify!($SelfT), ".overflowing_rem_euclid(2), (1, false));")]
         /// ```
-        #[inline]
+        #[inline(always)]
         #[stable(feature = "euclidean_division", since = "1.38.0")]
         #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.52.0")]
         #[must_use = "this returns the result of the operation, \
@@ -1293,7 +1293,7 @@ macro_rules! uint_impl {
         #[doc = concat!("assert_eq!(0", stringify!($SelfT), ".overflowing_neg(), (0, false));")]
         #[doc = concat!("assert_eq!(2", stringify!($SelfT), ".overflowing_neg(), (-2i32 as ", stringify!($SelfT), ", true));")]
         /// ```
-        #[inline]
+        #[inline(always)]
         #[stable(feature = "wrapping", since = "1.7.0")]
         #[rustc_const_stable(feature = "const_wrapping_math", since = "1.32.0")]
         pub const fn overflowing_neg(self) -> (Self, bool) {
@@ -1320,7 +1320,7 @@ macro_rules! uint_impl {
         #[rustc_const_stable(feature = "const_wrapping_math", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn overflowing_shl(self, rhs: u32) -> (Self, bool) {
             (self.wrapping_shl(rhs), (rhs > ($BITS - 1)))
         }
@@ -1345,7 +1345,7 @@ macro_rules! uint_impl {
         #[rustc_const_stable(feature = "const_wrapping_math", since = "1.32.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         pub const fn overflowing_shr(self, rhs: u32) -> (Self, bool) {
             (self.wrapping_shr(rhs), (rhs > ($BITS - 1)))
         }
@@ -1458,7 +1458,7 @@ macro_rules! uint_impl {
         #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.52.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         #[rustc_inherit_overflow_checks]
         pub const fn div_euclid(self, rhs: Self) -> Self {
             self / rhs
@@ -1486,7 +1486,7 @@ macro_rules! uint_impl {
         #[rustc_const_stable(feature = "const_euclidean_int_methods", since = "1.52.0")]
         #[must_use = "this returns the result of the operation, \
                       without modifying the original"]
-        #[inline]
+        #[inline(always)]
         #[rustc_inherit_overflow_checks]
         pub const fn rem_euclid(self, rhs: Self) -> Self {
             self % rhs
@@ -1504,7 +1504,7 @@ macro_rules! uint_impl {
         /// ```
         #[stable(feature = "rust1", since = "1.0.0")]
         #[rustc_const_stable(feature = "const_is_power_of_two", since = "1.32.0")]
-        #[inline]
+        #[inline(always)]
         pub const fn is_power_of_two(self) -> bool {
             self.count_ones() == 1
         }
diff --git a/library/core/src/ptr/const_ptr.rs b/library/core/src/ptr/const_ptr.rs
index 4571ba154ea..b9b2ba9ae61 100644
--- a/library/core/src/ptr/const_ptr.rs
+++ b/library/core/src/ptr/const_ptr.rs
@@ -226,7 +226,7 @@ impl<T: ?Sized> *const T {
     #[stable(feature = "rust1", since = "1.0.0")]
     #[must_use = "returns a new pointer rather than modifying its argument"]
     #[rustc_const_unstable(feature = "const_ptr_offset", issue = "71499")]
-    #[inline]
+    #[inline(always)]
     pub const unsafe fn offset(self, count: isize) -> *const T
     where
         T: Sized,
@@ -288,7 +288,7 @@ impl<T: ?Sized> *const T {
     #[stable(feature = "ptr_wrapping_offset", since = "1.16.0")]
     #[must_use = "returns a new pointer rather than modifying its argument"]
     #[rustc_const_unstable(feature = "const_ptr_offset", issue = "71499")]
-    #[inline]
+    #[inline(always)]
     pub const fn wrapping_offset(self, count: isize) -> *const T
     where
         T: Sized,
@@ -507,7 +507,7 @@ impl<T: ?Sized> *const T {
     #[stable(feature = "pointer_methods", since = "1.26.0")]
     #[must_use = "returns a new pointer rather than modifying its argument"]
     #[rustc_const_unstable(feature = "const_ptr_offset", issue = "71499")]
-    #[inline]
+    #[inline(always)]
     pub const unsafe fn add(self, count: usize) -> Self
     where
         T: Sized,
@@ -634,7 +634,7 @@ impl<T: ?Sized> *const T {
     #[stable(feature = "pointer_methods", since = "1.26.0")]
     #[must_use = "returns a new pointer rather than modifying its argument"]
     #[rustc_const_unstable(feature = "const_ptr_offset", issue = "71499")]
-    #[inline]
+    #[inline(always)]
     pub const fn wrapping_add(self, count: usize) -> Self
     where
         T: Sized,
diff --git a/library/core/src/ptr/mut_ptr.rs b/library/core/src/ptr/mut_ptr.rs
index ba08823e343..55c019c51d5 100644
--- a/library/core/src/ptr/mut_ptr.rs
+++ b/library/core/src/ptr/mut_ptr.rs
@@ -231,7 +231,7 @@ impl<T: ?Sized> *mut T {
     #[stable(feature = "rust1", since = "1.0.0")]
     #[must_use = "returns a new pointer rather than modifying its argument"]
     #[rustc_const_unstable(feature = "const_ptr_offset", issue = "71499")]
-    #[inline]
+    #[inline(always)]
     pub const unsafe fn offset(self, count: isize) -> *mut T
     where
         T: Sized,
@@ -294,7 +294,7 @@ impl<T: ?Sized> *mut T {
     #[stable(feature = "ptr_wrapping_offset", since = "1.16.0")]
     #[must_use = "returns a new pointer rather than modifying its argument"]
     #[rustc_const_unstable(feature = "const_ptr_offset", issue = "71499")]
-    #[inline]
+    #[inline(always)]
     pub const fn wrapping_offset(self, count: isize) -> *mut T
     where
         T: Sized,
@@ -613,7 +613,7 @@ impl<T: ?Sized> *mut T {
     #[stable(feature = "pointer_methods", since = "1.26.0")]
     #[must_use = "returns a new pointer rather than modifying its argument"]
     #[rustc_const_unstable(feature = "const_ptr_offset", issue = "71499")]
-    #[inline]
+    #[inline(always)]
     pub const unsafe fn add(self, count: usize) -> Self
     where
         T: Sized,
@@ -740,7 +740,7 @@ impl<T: ?Sized> *mut T {
     #[stable(feature = "pointer_methods", since = "1.26.0")]
     #[must_use = "returns a new pointer rather than modifying its argument"]
     #[rustc_const_unstable(feature = "const_ptr_offset", issue = "71499")]
-    #[inline]
+    #[inline(always)]
     pub const fn wrapping_add(self, count: usize) -> Self
     where
         T: Sized,
diff --git a/library/core/src/raw.rs b/library/core/src/raw.rs
index 1227d9b01f0..6d1e28f4cd7 100644
--- a/library/core/src/raw.rs
+++ b/library/core/src/raw.rs
@@ -1,5 +1,9 @@
 #![allow(missing_docs)]
 #![unstable(feature = "raw", issue = "27751")]
+#![rustc_deprecated(
+    since = "1.53.0",
+    reason = "use pointer metadata APIs instead https://github.com/rust-lang/rust/issues/81513"
+)]
 
 //! Contains struct definitions for the layout of compiler built-in types.
 //!
diff --git a/library/core/tests/mem.rs b/library/core/tests/mem.rs
index c0b75036f4f..dfdbc9305d2 100644
--- a/library/core/tests/mem.rs
+++ b/library/core/tests/mem.rs
@@ -97,6 +97,9 @@ fn test_transmute_copy() {
     assert_eq!(1, unsafe { transmute_copy(&1) });
 }
 
+// Remove this test when `std::raw` is removed.
+// The replacement pointer metadata APIs are tested in library/core/tests/ptr.rs
+#[allow(deprecated)]
 #[test]
 fn test_transmute() {
     trait Foo {
diff --git a/library/std/src/fs/tests.rs b/library/std/src/fs/tests.rs
index 5c969741592..ce8d3a56f7a 100644
--- a/library/std/src/fs/tests.rs
+++ b/library/std/src/fs/tests.rs
@@ -1329,7 +1329,9 @@ fn metadata_access_times() {
         match (a.created(), b.created()) {
             (Ok(t1), Ok(t2)) => assert!(t1 <= t2),
             (Err(e1), Err(e2))
-                if e1.kind() == ErrorKind::Other && e2.kind() == ErrorKind::Other => {}
+                if e1.kind() == ErrorKind::Other && e2.kind() == ErrorKind::Other
+                    || e1.kind() == ErrorKind::Unsupported
+                        && e2.kind() == ErrorKind::Unsupported => {}
             (a, b) => {
                 panic!("creation time must be always supported or not supported: {:?} {:?}", a, b,)
             }
diff --git a/library/std/src/io/error.rs b/library/std/src/io/error.rs
index 97c92aa3506..9bed12bf2ae 100644
--- a/library/std/src/io/error.rs
+++ b/library/std/src/io/error.rs
@@ -180,6 +180,12 @@ pub enum ErrorKind {
     /// read.
     #[stable(feature = "read_exact", since = "1.6.0")]
     UnexpectedEof,
+
+    /// This operation is unsupported on this platform.
+    ///
+    /// This means that the operation can never succeed.
+    #[stable(feature = "unsupported_error", since = "1.53.0")]
+    Unsupported,
 }
 
 impl ErrorKind {
@@ -203,6 +209,7 @@ impl ErrorKind {
             ErrorKind::Interrupted => "operation interrupted",
             ErrorKind::Other => "other os error",
             ErrorKind::UnexpectedEof => "unexpected end of file",
+            ErrorKind::Unsupported => "unsupported",
         }
     }
 }
diff --git a/library/std/src/lib.rs b/library/std/src/lib.rs
index 84f74ef9407..089d43483fc 100644
--- a/library/std/src/lib.rs
+++ b/library/std/src/lib.rs
@@ -459,6 +459,7 @@ pub use core::pin;
 #[stable(feature = "rust1", since = "1.0.0")]
 pub use core::ptr;
 #[stable(feature = "rust1", since = "1.0.0")]
+#[allow(deprecated, deprecated_in_future)]
 pub use core::raw;
 #[stable(feature = "rust1", since = "1.0.0")]
 pub use core::result;
diff --git a/library/std/src/sys/hermit/fd.rs b/library/std/src/sys/hermit/fd.rs
index 1c0515a1503..c400f5f2c2e 100644
--- a/library/std/src/sys/hermit/fd.rs
+++ b/library/std/src/sys/hermit/fd.rs
@@ -1,9 +1,10 @@
 #![unstable(reason = "not public", issue = "none", feature = "fd")]
 
-use crate::io::{self, ErrorKind, Read};
+use crate::io::{self, Read};
 use crate::mem;
 use crate::sys::cvt;
 use crate::sys::hermit::abi;
+use crate::sys::unsupported;
 use crate::sys_common::AsInner;
 
 #[derive(Debug)]
@@ -46,7 +47,7 @@ impl FileDesc {
         self.duplicate_path(&[])
     }
     pub fn duplicate_path(&self, _path: &[u8]) -> io::Result<FileDesc> {
-        Err(io::Error::new_const(ErrorKind::Other, &"duplicate isn't supported"))
+        unsupported()
     }
 
     pub fn nonblocking(&self) -> io::Result<bool> {
@@ -54,11 +55,11 @@ impl FileDesc {
     }
 
     pub fn set_cloexec(&self) -> io::Result<()> {
-        Err(io::Error::new_const(ErrorKind::Other, &"cloexec isn't supported"))
+        unsupported()
     }
 
     pub fn set_nonblocking(&self, _nonblocking: bool) -> io::Result<()> {
-        Err(io::Error::new_const(ErrorKind::Other, &"nonblocking isn't supported"))
+        unsupported()
     }
 }
 
diff --git a/library/std/src/sys/hermit/mod.rs b/library/std/src/sys/hermit/mod.rs
index 1ecda25c03d..f8c1612d1ca 100644
--- a/library/std/src/sys/hermit/mod.rs
+++ b/library/std/src/sys/hermit/mod.rs
@@ -56,7 +56,7 @@ pub fn unsupported<T>() -> crate::io::Result<T> {
 
 pub fn unsupported_err() -> crate::io::Error {
     crate::io::Error::new_const(
-        crate::io::ErrorKind::Other,
+        crate::io::ErrorKind::Unsupported,
         &"operation not supported on HermitCore yet",
     )
 }
diff --git a/library/std/src/sys/hermit/net.rs b/library/std/src/sys/hermit/net.rs
index 7053487ccfb..a9c09b6ceef 100644
--- a/library/std/src/sys/hermit/net.rs
+++ b/library/std/src/sys/hermit/net.rs
@@ -166,7 +166,7 @@ impl TcpStream {
     }
 
     pub fn socket_addr(&self) -> io::Result<SocketAddr> {
-        Err(io::Error::new_const(ErrorKind::Other, &"socket_addr isn't supported"))
+        unsupported()
     }
 
     pub fn shutdown(&self, how: Shutdown) -> io::Result<()> {
@@ -199,7 +199,7 @@ impl TcpStream {
     }
 
     pub fn take_error(&self) -> io::Result<Option<io::Error>> {
-        Err(io::Error::new_const(ErrorKind::Other, &"take_error isn't supported"))
+        unsupported()
     }
 
     pub fn set_nonblocking(&self, mode: bool) -> io::Result<()> {
@@ -247,27 +247,27 @@ impl TcpListener {
     }
 
     pub fn set_ttl(&self, _: u32) -> io::Result<()> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn ttl(&self) -> io::Result<u32> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn set_only_v6(&self, _: bool) -> io::Result<()> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn only_v6(&self) -> io::Result<bool> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn take_error(&self) -> io::Result<Option<io::Error>> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn set_nonblocking(&self, _: bool) -> io::Result<()> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 }
 
@@ -281,127 +281,127 @@ pub struct UdpSocket(abi::Handle);
 
 impl UdpSocket {
     pub fn bind(_: io::Result<&SocketAddr>) -> io::Result<UdpSocket> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn peer_addr(&self) -> io::Result<SocketAddr> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn socket_addr(&self) -> io::Result<SocketAddr> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn recv_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn peek_from(&self, _: &mut [u8]) -> io::Result<(usize, SocketAddr)> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn send_to(&self, _: &[u8], _: &SocketAddr) -> io::Result<usize> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn duplicate(&self) -> io::Result<UdpSocket> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn set_read_timeout(&self, _: Option<Duration>) -> io::Result<()> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn set_write_timeout(&self, _: Option<Duration>) -> io::Result<()> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn read_timeout(&self) -> io::Result<Option<Duration>> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn write_timeout(&self) -> io::Result<Option<Duration>> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn set_broadcast(&self, _: bool) -> io::Result<()> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn broadcast(&self) -> io::Result<bool> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn set_multicast_loop_v4(&self, _: bool) -> io::Result<()> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn multicast_loop_v4(&self) -> io::Result<bool> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn set_multicast_ttl_v4(&self, _: u32) -> io::Result<()> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn multicast_ttl_v4(&self) -> io::Result<u32> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn set_multicast_loop_v6(&self, _: bool) -> io::Result<()> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn multicast_loop_v6(&self) -> io::Result<bool> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn join_multicast_v4(&self, _: &Ipv4Addr, _: &Ipv4Addr) -> io::Result<()> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn join_multicast_v6(&self, _: &Ipv6Addr, _: u32) -> io::Result<()> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn leave_multicast_v4(&self, _: &Ipv4Addr, _: &Ipv4Addr) -> io::Result<()> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn leave_multicast_v6(&self, _: &Ipv6Addr, _: u32) -> io::Result<()> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn set_ttl(&self, _: u32) -> io::Result<()> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn ttl(&self) -> io::Result<u32> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn take_error(&self) -> io::Result<Option<io::Error>> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn set_nonblocking(&self, _: bool) -> io::Result<()> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn recv(&self, _: &mut [u8]) -> io::Result<usize> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn peek(&self, _: &mut [u8]) -> io::Result<usize> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn send(&self, _: &[u8]) -> io::Result<usize> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 
     pub fn connect(&self, _: io::Result<&SocketAddr>) -> io::Result<()> {
-        Err(io::Error::new_const(ErrorKind::Other, &"not supported"))
+        unsupported()
     }
 }
 
diff --git a/library/std/src/sys/sgx/mod.rs b/library/std/src/sys/sgx/mod.rs
index 3cd245f40d9..da37d1aeb7e 100644
--- a/library/std/src/sys/sgx/mod.rs
+++ b/library/std/src/sys/sgx/mod.rs
@@ -50,7 +50,7 @@ pub fn unsupported<T>() -> crate::io::Result<T> {
 }
 
 pub fn unsupported_err() -> crate::io::Error {
-    crate::io::Error::new_const(ErrorKind::Other, &"operation not supported on SGX yet")
+    crate::io::Error::new_const(ErrorKind::Unsupported, &"operation not supported on SGX yet")
 }
 
 /// This function is used to implement various functions that doesn't exist,
diff --git a/library/std/src/sys/unix/fs.rs b/library/std/src/sys/unix/fs.rs
index 759565bab73..16a7f727696 100644
--- a/library/std/src/sys/unix/fs.rs
+++ b/library/std/src/sys/unix/fs.rs
@@ -366,7 +366,7 @@ impl FileAttr {
         }
 
         Err(io::Error::new_const(
-            io::ErrorKind::Other,
+            io::ErrorKind::Unsupported,
             &"creation time is not available on this platform \
                             currently",
         ))
diff --git a/library/std/src/sys/unix/l4re.rs b/library/std/src/sys/unix/l4re.rs
index d60a4b5591f..3cf637c8228 100644
--- a/library/std/src/sys/unix/l4re.rs
+++ b/library/std/src/sys/unix/l4re.rs
@@ -1,6 +1,9 @@
 macro_rules! unimpl {
     () => {
-        return Err(io::Error::new_const(io::ErrorKind::Other, &"No networking available on L4Re."));
+        return Err(io::Error::new_const(
+            io::ErrorKind::Unsupported,
+            &"No networking available on L4Re.",
+        ));
     };
 }
 
diff --git a/library/std/src/sys/unix/mod.rs b/library/std/src/sys/unix/mod.rs
index 44328ffc22e..6e44ac19c7b 100644
--- a/library/std/src/sys/unix/mod.rs
+++ b/library/std/src/sys/unix/mod.rs
@@ -148,6 +148,7 @@ pub fn decode_error_kind(errno: i32) -> ErrorKind {
         libc::EINVAL => ErrorKind::InvalidInput,
         libc::ETIMEDOUT => ErrorKind::TimedOut,
         libc::EEXIST => ErrorKind::AlreadyExists,
+        libc::ENOSYS => ErrorKind::Unsupported,
 
         // These two constants can have the same value on some systems,
         // but different values on others, so we can't use a match
diff --git a/library/std/src/sys/unix/os.rs b/library/std/src/sys/unix/os.rs
index ce2c4e88c7e..98e578c5255 100644
--- a/library/std/src/sys/unix/os.rs
+++ b/library/std/src/sys/unix/os.rs
@@ -447,7 +447,7 @@ pub fn current_exe() -> io::Result<PathBuf> {
 #[cfg(any(target_os = "fuchsia", target_os = "l4re"))]
 pub fn current_exe() -> io::Result<PathBuf> {
     use crate::io::ErrorKind;
-    Err(io::Error::new_const(ErrorKind::Other, &"Not yet implemented!"))
+    Err(io::Error::new_const(ErrorKind::Unsupported, &"Not yet implemented!"))
 }
 
 #[cfg(target_os = "vxworks")]
diff --git a/library/std/src/sys/unsupported/common.rs b/library/std/src/sys/unsupported/common.rs
index 01e4fd3c994..64ec50fa9ec 100644
--- a/library/std/src/sys/unsupported/common.rs
+++ b/library/std/src/sys/unsupported/common.rs
@@ -18,7 +18,10 @@ pub fn unsupported<T>() -> std_io::Result<T> {
 }
 
 pub fn unsupported_err() -> std_io::Error {
-    std_io::Error::new_const(std_io::ErrorKind::Other, &"operation not supported on this platform")
+    std_io::Error::new_const(
+        std_io::ErrorKind::Unsupported,
+        &"operation not supported on this platform",
+    )
 }
 
 pub fn decode_error_kind(_code: i32) -> crate::io::ErrorKind {
diff --git a/library/std/src/sys/unsupported/os.rs b/library/std/src/sys/unsupported/os.rs
index 897927e7b79..3754aebf455 100644
--- a/library/std/src/sys/unsupported/os.rs
+++ b/library/std/src/sys/unsupported/os.rs
@@ -80,11 +80,11 @@ pub fn getenv(_: &OsStr) -> io::Result<Option<OsString>> {
 }
 
 pub fn setenv(_: &OsStr, _: &OsStr) -> io::Result<()> {
-    Err(io::Error::new_const(io::ErrorKind::Other, &"cannot set env vars on this platform"))
+    Err(io::Error::new_const(io::ErrorKind::Unsupported, &"cannot set env vars on this platform"))
 }
 
 pub fn unsetenv(_: &OsStr) -> io::Result<()> {
-    Err(io::Error::new_const(io::ErrorKind::Other, &"cannot unset env vars on this platform"))
+    Err(io::Error::new_const(io::ErrorKind::Unsupported, &"cannot unset env vars on this platform"))
 }
 
 pub fn temp_dir() -> PathBuf {
diff --git a/library/std/src/sys/vxworks/mod.rs b/library/std/src/sys/vxworks/mod.rs
index c20edaa1a47..12d0147a129 100644
--- a/library/std/src/sys/vxworks/mod.rs
+++ b/library/std/src/sys/vxworks/mod.rs
@@ -83,6 +83,7 @@ pub fn decode_error_kind(errno: i32) -> ErrorKind {
         libc::EINVAL => ErrorKind::InvalidInput,
         libc::ETIMEDOUT => ErrorKind::TimedOut,
         libc::EEXIST => ErrorKind::AlreadyExists,
+        libc::ENOSYS => ErrorKind::Unsupported,
 
         // These two constants can have the same value on some systems,
         // but different values on others, so we can't use a match
diff --git a/library/std/src/sys/wasi/mod.rs b/library/std/src/sys/wasi/mod.rs
index a0a37ef8316..b7b640b174f 100644
--- a/library/std/src/sys/wasi/mod.rs
+++ b/library/std/src/sys/wasi/mod.rs
@@ -78,6 +78,7 @@ pub fn decode_error_kind(errno: i32) -> std_io::ErrorKind {
         wasi::ERRNO_TIMEDOUT => TimedOut,
         wasi::ERRNO_EXIST => AlreadyExists,
         wasi::ERRNO_AGAIN => WouldBlock,
+        wasi::ERRNO_NOSYS => Unsupported,
         _ => Other,
     }
 }
diff --git a/library/std/src/sys/windows/fs.rs b/library/std/src/sys/windows/fs.rs
index c6509db80c0..8e6bd76f85f 100644
--- a/library/std/src/sys/windows/fs.rs
+++ b/library/std/src/sys/windows/fs.rs
@@ -802,7 +802,10 @@ pub fn link(original: &Path, link: &Path) -> io::Result<()> {
 
 #[cfg(target_vendor = "uwp")]
 pub fn link(_original: &Path, _link: &Path) -> io::Result<()> {
-    return Err(io::Error::new_const(io::ErrorKind::Other, &"hard link are not supported on UWP"));
+    return Err(io::Error::new_const(
+        io::ErrorKind::Unsupported,
+        &"hard link are not supported on UWP",
+    ));
 }
 
 pub fn stat(path: &Path) -> io::Result<FileAttr> {
diff --git a/library/std/src/sys/windows/mod.rs b/library/std/src/sys/windows/mod.rs
index 0353c9811f1..973301af2d9 100644
--- a/library/std/src/sys/windows/mod.rs
+++ b/library/std/src/sys/windows/mod.rs
@@ -78,6 +78,7 @@ pub fn decode_error_kind(errno: i32) -> ErrorKind {
         | c::ERROR_IPSEC_IKE_TIMED_OUT
         | c::ERROR_RUNLEVEL_SWITCH_TIMEOUT
         | c::ERROR_RUNLEVEL_SWITCH_AGENT_TIMEOUT => return ErrorKind::TimedOut,
+        c::ERROR_CALL_NOT_IMPLEMENTED => return ErrorKind::Unsupported,
         _ => {}
     }
 
diff --git a/library/std/src/sys/windows/net.rs b/library/std/src/sys/windows/net.rs
index e50adcb28a4..ad04afc0b6d 100644
--- a/library/std/src/sys/windows/net.rs
+++ b/library/std/src/sys/windows/net.rs
@@ -370,7 +370,7 @@ impl Socket {
 
     #[cfg(target_vendor = "uwp")]
     fn set_no_inherit(&self) -> io::Result<()> {
-        Err(io::Error::new_const(io::ErrorKind::Other, &"Unavailable on UWP"))
+        Err(io::Error::new_const(io::ErrorKind::Unsupported, &"Unavailable on UWP"))
     }
 
     pub fn shutdown(&self, how: Shutdown) -> io::Result<()> {
diff --git a/src/doc/unstable-book/src/language-features/non-ascii-idents.md b/src/doc/unstable-book/src/language-features/non-ascii-idents.md
deleted file mode 100644
index 847f25ecab1..00000000000
--- a/src/doc/unstable-book/src/language-features/non-ascii-idents.md
+++ /dev/null
@@ -1,48 +0,0 @@
-# `non_ascii_idents`
-
-The tracking issue for this feature is: [#55467]
-
-[#55467]: https://github.com/rust-lang/rust/issues/55467
-
-------------------------
-
-The `non_ascii_idents` feature adds support for non-ASCII identifiers.
-
-## Examples
-
-```rust
-#![feature(non_ascii_idents)]
-
-const ε: f64 = 0.00001f64;
-const Π: f64 = 3.14f64;
-```
-
-## Changes to the language reference
-
-> **<sup>Lexer:<sup>**\
-> IDENTIFIER :\
-> &nbsp;&nbsp; &nbsp;&nbsp; XID_start XID_continue<sup>\*</sup>\
-> &nbsp;&nbsp; | `_` XID_continue<sup>+</sup>
-
-An identifier is any nonempty Unicode string of the following form:
-
-Either
-
-   * The first character has property [`XID_start`]
-   * The remaining characters have property [`XID_continue`]
-
-Or
-
-   * The first character is `_`
-   * The identifier is more than one character, `_` alone is not an identifier
-   * The remaining characters have property [`XID_continue`]
-
-that does _not_ occur in the set of [strict keywords].
-
-> **Note**: [`XID_start`] and [`XID_continue`] as character properties cover the
-> character ranges used to form the more familiar C and Java language-family
-> identifiers.
-
-[`XID_start`]:  http://unicode.org/cldr/utility/list-unicodeset.jsp?a=%5B%3AXID_Start%3A%5D&abb=on&g=&i=
-[`XID_continue`]: http://unicode.org/cldr/utility/list-unicodeset.jsp?a=%5B%3AXID_Continue%3A%5D&abb=on&g=&i=
-[strict keywords]: ../../reference/keywords.md#strict-keywords
diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs
index ca364b9f103..e39652c6dd5 100644
--- a/src/librustdoc/html/format.rs
+++ b/src/librustdoc/html/format.rs
@@ -7,6 +7,7 @@
 
 use std::cell::Cell;
 use std::fmt;
+use std::iter;
 
 use rustc_data_structures::captures::Captures;
 use rustc_data_structures::fx::FxHashSet;
@@ -16,12 +17,10 @@ use rustc_span::def_id::{DefId, CRATE_DEF_INDEX};
 use rustc_target::spec::abi::Abi;
 
 use crate::clean::{self, utils::find_nearest_parent_module, PrimitiveType};
-use crate::formats::cache::Cache;
 use crate::formats::item_type::ItemType;
 use crate::html::escape::Escape;
 use crate::html::render::cache::ExternalLocation;
 use crate::html::render::Context;
-use crate::html::render::CURRENT_DEPTH;
 
 crate trait Print {
     fn print(self, buffer: &mut Buffer);
@@ -497,7 +496,7 @@ crate fn href_relative_parts<'a>(fqp: &'a [String], relative_to_fqp: &'a [String
         if f != r {
             let dissimilar_part_count = relative_to_fqp.len() - i;
             let fqp_module = fqp[i..fqp.len()].iter().map(String::as_str);
-            return std::iter::repeat("..").take(dissimilar_part_count).chain(fqp_module).collect();
+            return iter::repeat("..").take(dissimilar_part_count).chain(fqp_module).collect();
         }
     }
     // e.g. linking to std::sync::atomic from std::sync
@@ -506,7 +505,7 @@ crate fn href_relative_parts<'a>(fqp: &'a [String], relative_to_fqp: &'a [String
     // e.g. linking to std::sync from std::sync::atomic
     } else if fqp.len() < relative_to_fqp.len() {
         let dissimilar_part_count = relative_to_fqp.len() - fqp.len();
-        std::iter::repeat("..").take(dissimilar_part_count).collect()
+        iter::repeat("..").take(dissimilar_part_count).collect()
     // linking to the same module
     } else {
         Vec::new()
@@ -555,13 +554,14 @@ fn primitive_link(
     f: &mut fmt::Formatter<'_>,
     prim: clean::PrimitiveType,
     name: &str,
-    m: &Cache,
+    cx: &Context<'_>,
 ) -> fmt::Result {
+    let m = &cx.cache();
     let mut needs_termination = false;
     if !f.alternate() {
         match m.primitive_locations.get(&prim) {
             Some(&def_id) if def_id.is_local() => {
-                let len = CURRENT_DEPTH.with(|s| s.get());
+                let len = cx.current.len();
                 let len = if len == 0 { 0 } else { len - 1 };
                 write!(
                     f,
@@ -572,20 +572,28 @@ fn primitive_link(
                 needs_termination = true;
             }
             Some(&def_id) => {
+                let cname_str;
                 let loc = match m.extern_locations[&def_id.krate] {
-                    (ref cname, _, ExternalLocation::Remote(ref s)) => Some((cname, s.to_string())),
+                    (ref cname, _, ExternalLocation::Remote(ref s)) => {
+                        cname_str = cname.as_str();
+                        Some(vec![s.trim_end_matches('/'), &cname_str[..]])
+                    }
                     (ref cname, _, ExternalLocation::Local) => {
-                        let len = CURRENT_DEPTH.with(|s| s.get());
-                        Some((cname, "../".repeat(len)))
+                        cname_str = cname.as_str();
+                        Some(if cx.current.first().map(|x| &x[..]) == Some(&cname_str[..]) {
+                            iter::repeat("..").take(cx.current.len() - 1).collect()
+                        } else {
+                            let cname = iter::once(&cname_str[..]);
+                            iter::repeat("..").take(cx.current.len()).chain(cname).collect()
+                        })
                     }
                     (.., ExternalLocation::Unknown) => None,
                 };
-                if let Some((cname, root)) = loc {
+                if let Some(loc) = loc {
                     write!(
                         f,
-                        "<a class=\"primitive\" href=\"{}{}/primitive.{}.html\">",
-                        root,
-                        cname,
+                        "<a class=\"primitive\" href=\"{}/primitive.{}.html\">",
+                        loc.join("/"),
                         prim.to_url_str()
                     )?;
                     needs_termination = true;
@@ -660,7 +668,7 @@ fn fmt_type<'cx>(
             fmt::Display::fmt(&tybounds(param_names, cx), f)
         }
         clean::Infer => write!(f, "_"),
-        clean::Primitive(prim) => primitive_link(f, prim, prim.as_str(), &cx.cache()),
+        clean::Primitive(prim) => primitive_link(f, prim, prim.as_str(), cx),
         clean::BareFunction(ref decl) => {
             if f.alternate() {
                 write!(
@@ -679,46 +687,46 @@ fn fmt_type<'cx>(
                     decl.unsafety.print_with_space(),
                     print_abi_with_space(decl.abi)
                 )?;
-                primitive_link(f, PrimitiveType::Fn, "fn", &cx.cache())?;
+                primitive_link(f, PrimitiveType::Fn, "fn", cx)?;
                 write!(f, "{}", decl.decl.print(cx))
             }
         }
         clean::Tuple(ref typs) => {
             match &typs[..] {
-                &[] => primitive_link(f, PrimitiveType::Unit, "()", &cx.cache()),
+                &[] => primitive_link(f, PrimitiveType::Unit, "()", cx),
                 &[ref one] => {
-                    primitive_link(f, PrimitiveType::Tuple, "(", &cx.cache())?;
+                    primitive_link(f, PrimitiveType::Tuple, "(", cx)?;
                     // Carry `f.alternate()` into this display w/o branching manually.
                     fmt::Display::fmt(&one.print(cx), f)?;
-                    primitive_link(f, PrimitiveType::Tuple, ",)", &cx.cache())
+                    primitive_link(f, PrimitiveType::Tuple, ",)", cx)
                 }
                 many => {
-                    primitive_link(f, PrimitiveType::Tuple, "(", &cx.cache())?;
+                    primitive_link(f, PrimitiveType::Tuple, "(", cx)?;
                     for (i, item) in many.iter().enumerate() {
                         if i != 0 {
                             write!(f, ", ")?;
                         }
                         fmt::Display::fmt(&item.print(cx), f)?;
                     }
-                    primitive_link(f, PrimitiveType::Tuple, ")", &cx.cache())
+                    primitive_link(f, PrimitiveType::Tuple, ")", cx)
                 }
             }
         }
         clean::Slice(ref t) => {
-            primitive_link(f, PrimitiveType::Slice, "[", &cx.cache())?;
+            primitive_link(f, PrimitiveType::Slice, "[", cx)?;
             fmt::Display::fmt(&t.print(cx), f)?;
-            primitive_link(f, PrimitiveType::Slice, "]", &cx.cache())
+            primitive_link(f, PrimitiveType::Slice, "]", cx)
         }
         clean::Array(ref t, ref n) => {
-            primitive_link(f, PrimitiveType::Array, "[", &cx.cache())?;
+            primitive_link(f, PrimitiveType::Array, "[", cx)?;
             fmt::Display::fmt(&t.print(cx), f)?;
             if f.alternate() {
-                primitive_link(f, PrimitiveType::Array, &format!("; {}]", n), &cx.cache())
+                primitive_link(f, PrimitiveType::Array, &format!("; {}]", n), cx)
             } else {
-                primitive_link(f, PrimitiveType::Array, &format!("; {}]", Escape(n)), &cx.cache())
+                primitive_link(f, PrimitiveType::Array, &format!("; {}]", Escape(n)), cx)
             }
         }
-        clean::Never => primitive_link(f, PrimitiveType::Never, "!", &cx.cache()),
+        clean::Never => primitive_link(f, PrimitiveType::Never, "!", cx),
         clean::RawPointer(m, ref t) => {
             let m = match m {
                 hir::Mutability::Mut => "mut",
@@ -731,24 +739,19 @@ fn fmt_type<'cx>(
                             f,
                             clean::PrimitiveType::RawPointer,
                             &format!("*{} {:#}", m, t.print(cx)),
-                            &cx.cache(),
+                            cx,
                         )
                     } else {
                         primitive_link(
                             f,
                             clean::PrimitiveType::RawPointer,
                             &format!("*{} {}", m, t.print(cx)),
-                            &cx.cache(),
+                            cx,
                         )
                     }
                 }
                 _ => {
-                    primitive_link(
-                        f,
-                        clean::PrimitiveType::RawPointer,
-                        &format!("*{} ", m),
-                        &cx.cache(),
-                    )?;
+                    primitive_link(f, clean::PrimitiveType::RawPointer, &format!("*{} ", m), cx)?;
                     fmt::Display::fmt(&t.print(cx), f)
                 }
             }
@@ -770,14 +773,14 @@ fn fmt_type<'cx>(
                                     f,
                                     PrimitiveType::Slice,
                                     &format!("{}{}{}[{:#}]", amp, lt, m, bt.print(cx)),
-                                    &cx.cache(),
+                                    cx,
                                 )
                             } else {
                                 primitive_link(
                                     f,
                                     PrimitiveType::Slice,
                                     &format!("{}{}{}[{}]", amp, lt, m, bt.print(cx)),
-                                    &cx.cache(),
+                                    cx,
                                 )
                             }
                         }
@@ -786,14 +789,14 @@ fn fmt_type<'cx>(
                                 f,
                                 PrimitiveType::Slice,
                                 &format!("{}{}{}[", amp, lt, m),
-                                &cx.cache(),
+                                cx,
                             )?;
                             if f.alternate() {
                                 write!(f, "{:#}", bt.print(cx))?;
                             } else {
                                 write!(f, "{}", bt.print(cx))?;
                             }
-                            primitive_link(f, PrimitiveType::Slice, "]", &cx.cache())
+                            primitive_link(f, PrimitiveType::Slice, "]", cx)
                         }
                     }
                 }
@@ -807,7 +810,7 @@ fn fmt_type<'cx>(
                         f,
                         PrimitiveType::Reference,
                         &format!("{}{}{}", amp, lt, m),
-                        &cx.cache(),
+                        cx,
                     )?;
                     fmt_type(&ty, f, use_absolute, cx)
                 }
@@ -1292,7 +1295,7 @@ impl clean::ImportSource {
                 }
                 let name = self.path.last_name();
                 if let hir::def::Res::PrimTy(p) = self.path.res {
-                    primitive_link(f, PrimitiveType::from(p), &*name, &cx.cache())?;
+                    primitive_link(f, PrimitiveType::from(p), &*name, cx)?;
                 } else {
                     write!(f, "{}", name)?;
                 }
diff --git a/src/librustdoc/html/render/context.rs b/src/librustdoc/html/render/context.rs
index d866cf4f4cf..05d20013859 100644
--- a/src/librustdoc/html/render/context.rs
+++ b/src/librustdoc/html/render/context.rs
@@ -16,7 +16,7 @@ use rustc_span::{symbol::sym, Symbol};
 use super::cache::{build_index, ExternalLocation};
 use super::print_item::{full_path, item_path, print_item};
 use super::write_shared::write_shared;
-use super::{print_sidebar, settings, AllTypes, NameDoc, StylePath, BASIC_KEYWORDS, CURRENT_DEPTH};
+use super::{print_sidebar, settings, AllTypes, NameDoc, StylePath, BASIC_KEYWORDS};
 
 use crate::clean::{self, AttributesExt};
 use crate::config::RenderOptions;
@@ -168,12 +168,6 @@ impl<'tcx> Context<'tcx> {
     }
 
     fn render_item(&self, it: &clean::Item, pushname: bool) -> String {
-        // A little unfortunate that this is done like this, but it sure
-        // does make formatting *a lot* nicer.
-        CURRENT_DEPTH.with(|slot| {
-            slot.set(self.current.len());
-        });
-
         let mut title = if it.is_primitive() || it.is_keyword() {
             // No need to include the namespace for primitive types and keywords
             String::new()
@@ -482,8 +476,6 @@ impl<'tcx> FormatRenderer<'tcx> for Context<'tcx> {
             cache: Rc::new(cache),
         };
 
-        CURRENT_DEPTH.with(|s| s.set(0));
-
         // Write shared runs within a flock; disable thread dispatching of IO temporarily.
         Rc::get_mut(&mut cx.shared).unwrap().fs.set_sync_only(true);
         write_shared(&cx, &krate, index, &md_opts)?;
diff --git a/src/librustdoc/html/render/mod.rs b/src/librustdoc/html/render/mod.rs
index dcd2805aceb..7cb6466817c 100644
--- a/src/librustdoc/html/render/mod.rs
+++ b/src/librustdoc/html/render/mod.rs
@@ -35,7 +35,6 @@ mod write_shared;
 crate use context::*;
 crate use write_shared::FILES_UNVERSIONED;
 
-use std::cell::Cell;
 use std::collections::VecDeque;
 use std::default::Default;
 use std::fmt;
@@ -209,8 +208,6 @@ crate struct StylePath {
     crate disabled: bool,
 }
 
-thread_local!(crate static CURRENT_DEPTH: Cell<usize> = Cell::new(0));
-
 fn write_srclink(cx: &Context<'_>, item: &clean::Item, buf: &mut Buffer) {
     if let Some(l) = cx.src_href(item) {
         write!(buf, "<a class=\"srclink\" href=\"{}\" title=\"goto source code\">[src]</a>", l)
diff --git a/src/librustdoc/html/static/search.js b/src/librustdoc/html/static/search.js
index 538c811c710..eb232a96081 100644
--- a/src/librustdoc/html/static/search.js
+++ b/src/librustdoc/html/static/search.js
@@ -840,7 +840,7 @@ window.initSearch = function(rawSearchIndex) {
      * @param  {[string]} path   [The path of the result]
      * @param  {[string]} keys   [The keys to be used (["file", "open"])]
      * @param  {[object]} parent [The parent of the result]
-     * @return {[boolean]}       [Whether the result is valid or not]
+     * @return {boolean}       [Whether the result is valid or not]
      */
     function validateResult(name, path, keys, parent) {
         for (var i = 0, len = keys.length; i < len; ++i) {
diff --git a/src/test/codegen/issue-84268.rs b/src/test/codegen/issue-84268.rs
new file mode 100644
index 00000000000..7ca19544700
--- /dev/null
+++ b/src/test/codegen/issue-84268.rs
@@ -0,0 +1,23 @@
+// compile-flags: -O --crate-type=rlib
+#![feature(platform_intrinsics, repr_simd)]
+
+extern "platform-intrinsic" {
+    fn simd_fabs<T>(x: T) -> T;
+    fn simd_eq<T, U>(x: T, y: T) -> U;
+}
+
+#[repr(simd)]
+pub struct V([f32; 4]);
+
+#[repr(simd)]
+pub struct M([i32; 4]);
+
+#[no_mangle]
+// CHECK-LABEL: @is_infinite
+pub fn is_infinite(v: V) -> M {
+    // CHECK: fabs
+    // CHECK: cmp oeq
+    unsafe {
+        simd_eq(simd_fabs(v), V([f32::INFINITY; 4]))
+    }
+}
diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-abs.rs b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-abs.rs
index 0a687078cd8..e7bb2327a6e 100644
--- a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-abs.rs
+++ b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-abs.rs
@@ -32,28 +32,28 @@ extern "platform-intrinsic" {
 // CHECK-LABEL: @fabs_32x2
 #[no_mangle]
 pub unsafe fn fabs_32x2(a: f32x2) -> f32x2 {
-    // CHECK: call fast <2 x float> @llvm.fabs.v2f32
+    // CHECK: call <2 x float> @llvm.fabs.v2f32
     simd_fabs(a)
 }
 
 // CHECK-LABEL: @fabs_32x4
 #[no_mangle]
 pub unsafe fn fabs_32x4(a: f32x4) -> f32x4 {
-    // CHECK: call fast <4 x float> @llvm.fabs.v4f32
+    // CHECK: call <4 x float> @llvm.fabs.v4f32
     simd_fabs(a)
 }
 
 // CHECK-LABEL: @fabs_32x8
 #[no_mangle]
 pub unsafe fn fabs_32x8(a: f32x8) -> f32x8 {
-    // CHECK: call fast <8 x float> @llvm.fabs.v8f32
+    // CHECK: call <8 x float> @llvm.fabs.v8f32
     simd_fabs(a)
 }
 
 // CHECK-LABEL: @fabs_32x16
 #[no_mangle]
 pub unsafe fn fabs_32x16(a: f32x16) -> f32x16 {
-    // CHECK: call fast <16 x float> @llvm.fabs.v16f32
+    // CHECK: call <16 x float> @llvm.fabs.v16f32
     simd_fabs(a)
 }
 
@@ -73,20 +73,20 @@ pub struct f64x8(pub f64, pub f64, pub f64, pub f64,
 // CHECK-LABEL: @fabs_64x4
 #[no_mangle]
 pub unsafe fn fabs_64x4(a: f64x4) -> f64x4 {
-    // CHECK: call fast <4 x double> @llvm.fabs.v4f64
+    // CHECK: call <4 x double> @llvm.fabs.v4f64
     simd_fabs(a)
 }
 
 // CHECK-LABEL: @fabs_64x2
 #[no_mangle]
 pub unsafe fn fabs_64x2(a: f64x2) -> f64x2 {
-    // CHECK: call fast <2 x double> @llvm.fabs.v2f64
+    // CHECK: call <2 x double> @llvm.fabs.v2f64
     simd_fabs(a)
 }
 
 // CHECK-LABEL: @fabs_64x8
 #[no_mangle]
 pub unsafe fn fabs_64x8(a: f64x8) -> f64x8 {
-    // CHECK: call fast <8 x double> @llvm.fabs.v8f64
+    // CHECK: call <8 x double> @llvm.fabs.v8f64
     simd_fabs(a)
 }
diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-ceil.rs b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-ceil.rs
index 9d47339d163..e33482d7556 100644
--- a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-ceil.rs
+++ b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-ceil.rs
@@ -32,28 +32,28 @@ extern "platform-intrinsic" {
 // CHECK-LABEL: @ceil_32x2
 #[no_mangle]
 pub unsafe fn ceil_32x2(a: f32x2) -> f32x2 {
-    // CHECK: call fast <2 x float> @llvm.ceil.v2f32
+    // CHECK: call <2 x float> @llvm.ceil.v2f32
     simd_ceil(a)
 }
 
 // CHECK-LABEL: @ceil_32x4
 #[no_mangle]
 pub unsafe fn ceil_32x4(a: f32x4) -> f32x4 {
-    // CHECK: call fast <4 x float> @llvm.ceil.v4f32
+    // CHECK: call <4 x float> @llvm.ceil.v4f32
     simd_ceil(a)
 }
 
 // CHECK-LABEL: @ceil_32x8
 #[no_mangle]
 pub unsafe fn ceil_32x8(a: f32x8) -> f32x8 {
-    // CHECK: call fast <8 x float> @llvm.ceil.v8f32
+    // CHECK: call <8 x float> @llvm.ceil.v8f32
     simd_ceil(a)
 }
 
 // CHECK-LABEL: @ceil_32x16
 #[no_mangle]
 pub unsafe fn ceil_32x16(a: f32x16) -> f32x16 {
-    // CHECK: call fast <16 x float> @llvm.ceil.v16f32
+    // CHECK: call <16 x float> @llvm.ceil.v16f32
     simd_ceil(a)
 }
 
@@ -73,20 +73,20 @@ pub struct f64x8(pub f64, pub f64, pub f64, pub f64,
 // CHECK-LABEL: @ceil_64x4
 #[no_mangle]
 pub unsafe fn ceil_64x4(a: f64x4) -> f64x4 {
-    // CHECK: call fast <4 x double> @llvm.ceil.v4f64
+    // CHECK: call <4 x double> @llvm.ceil.v4f64
     simd_ceil(a)
 }
 
 // CHECK-LABEL: @ceil_64x2
 #[no_mangle]
 pub unsafe fn ceil_64x2(a: f64x2) -> f64x2 {
-    // CHECK: call fast <2 x double> @llvm.ceil.v2f64
+    // CHECK: call <2 x double> @llvm.ceil.v2f64
     simd_ceil(a)
 }
 
 // CHECK-LABEL: @ceil_64x8
 #[no_mangle]
 pub unsafe fn ceil_64x8(a: f64x8) -> f64x8 {
-    // CHECK: call fast <8 x double> @llvm.ceil.v8f64
+    // CHECK: call <8 x double> @llvm.ceil.v8f64
     simd_ceil(a)
 }
diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-cos.rs b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-cos.rs
index 770b2a73037..0f52952bc0c 100644
--- a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-cos.rs
+++ b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-cos.rs
@@ -32,28 +32,28 @@ extern "platform-intrinsic" {
 // CHECK-LABEL: @fcos_32x2
 #[no_mangle]
 pub unsafe fn fcos_32x2(a: f32x2) -> f32x2 {
-    // CHECK: call fast <2 x float> @llvm.cos.v2f32
+    // CHECK: call <2 x float> @llvm.cos.v2f32
     simd_fcos(a)
 }
 
 // CHECK-LABEL: @fcos_32x4
 #[no_mangle]
 pub unsafe fn fcos_32x4(a: f32x4) -> f32x4 {
-    // CHECK: call fast <4 x float> @llvm.cos.v4f32
+    // CHECK: call <4 x float> @llvm.cos.v4f32
     simd_fcos(a)
 }
 
 // CHECK-LABEL: @fcos_32x8
 #[no_mangle]
 pub unsafe fn fcos_32x8(a: f32x8) -> f32x8 {
-    // CHECK: call fast <8 x float> @llvm.cos.v8f32
+    // CHECK: call <8 x float> @llvm.cos.v8f32
     simd_fcos(a)
 }
 
 // CHECK-LABEL: @fcos_32x16
 #[no_mangle]
 pub unsafe fn fcos_32x16(a: f32x16) -> f32x16 {
-    // CHECK: call fast <16 x float> @llvm.cos.v16f32
+    // CHECK: call <16 x float> @llvm.cos.v16f32
     simd_fcos(a)
 }
 
@@ -73,20 +73,20 @@ pub struct f64x8(pub f64, pub f64, pub f64, pub f64,
 // CHECK-LABEL: @fcos_64x4
 #[no_mangle]
 pub unsafe fn fcos_64x4(a: f64x4) -> f64x4 {
-    // CHECK: call fast <4 x double> @llvm.cos.v4f64
+    // CHECK: call <4 x double> @llvm.cos.v4f64
     simd_fcos(a)
 }
 
 // CHECK-LABEL: @fcos_64x2
 #[no_mangle]
 pub unsafe fn fcos_64x2(a: f64x2) -> f64x2 {
-    // CHECK: call fast <2 x double> @llvm.cos.v2f64
+    // CHECK: call <2 x double> @llvm.cos.v2f64
     simd_fcos(a)
 }
 
 // CHECK-LABEL: @fcos_64x8
 #[no_mangle]
 pub unsafe fn fcos_64x8(a: f64x8) -> f64x8 {
-    // CHECK: call fast <8 x double> @llvm.cos.v8f64
+    // CHECK: call <8 x double> @llvm.cos.v8f64
     simd_fcos(a)
 }
diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-exp.rs b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-exp.rs
index 33c86050666..1154acf6924 100644
--- a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-exp.rs
+++ b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-exp.rs
@@ -32,28 +32,28 @@ extern "platform-intrinsic" {
 // CHECK-LABEL: @exp_32x2
 #[no_mangle]
 pub unsafe fn exp_32x2(a: f32x2) -> f32x2 {
-    // CHECK: call fast <2 x float> @llvm.exp.v2f32
+    // CHECK: call <2 x float> @llvm.exp.v2f32
     simd_fexp(a)
 }
 
 // CHECK-LABEL: @exp_32x4
 #[no_mangle]
 pub unsafe fn exp_32x4(a: f32x4) -> f32x4 {
-    // CHECK: call fast <4 x float> @llvm.exp.v4f32
+    // CHECK: call <4 x float> @llvm.exp.v4f32
     simd_fexp(a)
 }
 
 // CHECK-LABEL: @exp_32x8
 #[no_mangle]
 pub unsafe fn exp_32x8(a: f32x8) -> f32x8 {
-    // CHECK: call fast <8 x float> @llvm.exp.v8f32
+    // CHECK: call <8 x float> @llvm.exp.v8f32
     simd_fexp(a)
 }
 
 // CHECK-LABEL: @exp_32x16
 #[no_mangle]
 pub unsafe fn exp_32x16(a: f32x16) -> f32x16 {
-    // CHECK: call fast <16 x float> @llvm.exp.v16f32
+    // CHECK: call <16 x float> @llvm.exp.v16f32
     simd_fexp(a)
 }
 
@@ -73,20 +73,20 @@ pub struct f64x8(pub f64, pub f64, pub f64, pub f64,
 // CHECK-LABEL: @exp_64x4
 #[no_mangle]
 pub unsafe fn exp_64x4(a: f64x4) -> f64x4 {
-    // CHECK: call fast <4 x double> @llvm.exp.v4f64
+    // CHECK: call <4 x double> @llvm.exp.v4f64
     simd_fexp(a)
 }
 
 // CHECK-LABEL: @exp_64x2
 #[no_mangle]
 pub unsafe fn exp_64x2(a: f64x2) -> f64x2 {
-    // CHECK: call fast <2 x double> @llvm.exp.v2f64
+    // CHECK: call <2 x double> @llvm.exp.v2f64
     simd_fexp(a)
 }
 
 // CHECK-LABEL: @exp_64x8
 #[no_mangle]
 pub unsafe fn exp_64x8(a: f64x8) -> f64x8 {
-    // CHECK: call fast <8 x double> @llvm.exp.v8f64
+    // CHECK: call <8 x double> @llvm.exp.v8f64
     simd_fexp(a)
 }
diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-exp2.rs b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-exp2.rs
index f7a8986242d..929dc9ac8df 100644
--- a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-exp2.rs
+++ b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-exp2.rs
@@ -32,28 +32,28 @@ extern "platform-intrinsic" {
 // CHECK-LABEL: @exp2_32x2
 #[no_mangle]
 pub unsafe fn exp2_32x2(a: f32x2) -> f32x2 {
-    // CHECK: call fast <2 x float> @llvm.exp2.v2f32
+    // CHECK: call <2 x float> @llvm.exp2.v2f32
     simd_fexp2(a)
 }
 
 // CHECK-LABEL: @exp2_32x4
 #[no_mangle]
 pub unsafe fn exp2_32x4(a: f32x4) -> f32x4 {
-    // CHECK: call fast <4 x float> @llvm.exp2.v4f32
+    // CHECK: call <4 x float> @llvm.exp2.v4f32
     simd_fexp2(a)
 }
 
 // CHECK-LABEL: @exp2_32x8
 #[no_mangle]
 pub unsafe fn exp2_32x8(a: f32x8) -> f32x8 {
-    // CHECK: call fast <8 x float> @llvm.exp2.v8f32
+    // CHECK: call <8 x float> @llvm.exp2.v8f32
     simd_fexp2(a)
 }
 
 // CHECK-LABEL: @exp2_32x16
 #[no_mangle]
 pub unsafe fn exp2_32x16(a: f32x16) -> f32x16 {
-    // CHECK: call fast <16 x float> @llvm.exp2.v16f32
+    // CHECK: call <16 x float> @llvm.exp2.v16f32
     simd_fexp2(a)
 }
 
@@ -73,20 +73,20 @@ pub struct f64x8(pub f64, pub f64, pub f64, pub f64,
 // CHECK-LABEL: @exp2_64x4
 #[no_mangle]
 pub unsafe fn exp2_64x4(a: f64x4) -> f64x4 {
-    // CHECK: call fast <4 x double> @llvm.exp2.v4f64
+    // CHECK: call <4 x double> @llvm.exp2.v4f64
     simd_fexp2(a)
 }
 
 // CHECK-LABEL: @exp2_64x2
 #[no_mangle]
 pub unsafe fn exp2_64x2(a: f64x2) -> f64x2 {
-    // CHECK: call fast <2 x double> @llvm.exp2.v2f64
+    // CHECK: call <2 x double> @llvm.exp2.v2f64
     simd_fexp2(a)
 }
 
 // CHECK-LABEL: @exp2_64x8
 #[no_mangle]
 pub unsafe fn exp2_64x8(a: f64x8) -> f64x8 {
-    // CHECK: call fast <8 x double> @llvm.exp2.v8f64
+    // CHECK: call <8 x double> @llvm.exp2.v8f64
     simd_fexp2(a)
 }
diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-floor.rs b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-floor.rs
index a4070317a62..56ca644f6bd 100644
--- a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-floor.rs
+++ b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-floor.rs
@@ -32,28 +32,28 @@ extern "platform-intrinsic" {
 // CHECK-LABEL: @floor_32x2
 #[no_mangle]
 pub unsafe fn floor_32x2(a: f32x2) -> f32x2 {
-    // CHECK: call fast <2 x float> @llvm.floor.v2f32
+    // CHECK: call <2 x float> @llvm.floor.v2f32
     simd_floor(a)
 }
 
 // CHECK-LABEL: @floor_32x4
 #[no_mangle]
 pub unsafe fn floor_32x4(a: f32x4) -> f32x4 {
-    // CHECK: call fast <4 x float> @llvm.floor.v4f32
+    // CHECK: call <4 x float> @llvm.floor.v4f32
     simd_floor(a)
 }
 
 // CHECK-LABEL: @floor_32x8
 #[no_mangle]
 pub unsafe fn floor_32x8(a: f32x8) -> f32x8 {
-    // CHECK: call fast <8 x float> @llvm.floor.v8f32
+    // CHECK: call <8 x float> @llvm.floor.v8f32
     simd_floor(a)
 }
 
 // CHECK-LABEL: @floor_32x16
 #[no_mangle]
 pub unsafe fn floor_32x16(a: f32x16) -> f32x16 {
-    // CHECK: call fast <16 x float> @llvm.floor.v16f32
+    // CHECK: call <16 x float> @llvm.floor.v16f32
     simd_floor(a)
 }
 
@@ -73,20 +73,20 @@ pub struct f64x8(pub f64, pub f64, pub f64, pub f64,
 // CHECK-LABEL: @floor_64x4
 #[no_mangle]
 pub unsafe fn floor_64x4(a: f64x4) -> f64x4 {
-    // CHECK: call fast <4 x double> @llvm.floor.v4f64
+    // CHECK: call <4 x double> @llvm.floor.v4f64
     simd_floor(a)
 }
 
 // CHECK-LABEL: @floor_64x2
 #[no_mangle]
 pub unsafe fn floor_64x2(a: f64x2) -> f64x2 {
-    // CHECK: call fast <2 x double> @llvm.floor.v2f64
+    // CHECK: call <2 x double> @llvm.floor.v2f64
     simd_floor(a)
 }
 
 // CHECK-LABEL: @floor_64x8
 #[no_mangle]
 pub unsafe fn floor_64x8(a: f64x8) -> f64x8 {
-    // CHECK: call fast <8 x double> @llvm.floor.v8f64
+    // CHECK: call <8 x double> @llvm.floor.v8f64
     simd_floor(a)
 }
diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-fma.rs b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-fma.rs
index 0800a498cb7..fd65cb72baa 100644
--- a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-fma.rs
+++ b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-fma.rs
@@ -32,28 +32,28 @@ extern "platform-intrinsic" {
 // CHECK-LABEL: @fma_32x2
 #[no_mangle]
 pub unsafe fn fma_32x2(a: f32x2, b: f32x2, c: f32x2) -> f32x2 {
-    // CHECK: call fast <2 x float> @llvm.fma.v2f32
+    // CHECK: call <2 x float> @llvm.fma.v2f32
     simd_fma(a, b, c)
 }
 
 // CHECK-LABEL: @fma_32x4
 #[no_mangle]
 pub unsafe fn fma_32x4(a: f32x4, b: f32x4, c: f32x4) -> f32x4 {
-    // CHECK: call fast <4 x float> @llvm.fma.v4f32
+    // CHECK: call <4 x float> @llvm.fma.v4f32
     simd_fma(a, b, c)
 }
 
 // CHECK-LABEL: @fma_32x8
 #[no_mangle]
 pub unsafe fn fma_32x8(a: f32x8, b: f32x8, c: f32x8) -> f32x8 {
-    // CHECK: call fast <8 x float> @llvm.fma.v8f32
+    // CHECK: call <8 x float> @llvm.fma.v8f32
     simd_fma(a, b, c)
 }
 
 // CHECK-LABEL: @fma_32x16
 #[no_mangle]
 pub unsafe fn fma_32x16(a: f32x16, b: f32x16, c: f32x16) -> f32x16 {
-    // CHECK: call fast <16 x float> @llvm.fma.v16f32
+    // CHECK: call <16 x float> @llvm.fma.v16f32
     simd_fma(a, b, c)
 }
 
@@ -73,20 +73,20 @@ pub struct f64x8(pub f64, pub f64, pub f64, pub f64,
 // CHECK-LABEL: @fma_64x4
 #[no_mangle]
 pub unsafe fn fma_64x4(a: f64x4, b: f64x4, c: f64x4) -> f64x4 {
-    // CHECK: call fast <4 x double> @llvm.fma.v4f64
+    // CHECK: call <4 x double> @llvm.fma.v4f64
     simd_fma(a, b, c)
 }
 
 // CHECK-LABEL: @fma_64x2
 #[no_mangle]
 pub unsafe fn fma_64x2(a: f64x2, b: f64x2, c: f64x2) -> f64x2 {
-    // CHECK: call fast <2 x double> @llvm.fma.v2f64
+    // CHECK: call <2 x double> @llvm.fma.v2f64
     simd_fma(a, b, c)
 }
 
 // CHECK-LABEL: @fma_64x8
 #[no_mangle]
 pub unsafe fn fma_64x8(a: f64x8, b: f64x8, c: f64x8) -> f64x8 {
-    // CHECK: call fast <8 x double> @llvm.fma.v8f64
+    // CHECK: call <8 x double> @llvm.fma.v8f64
     simd_fma(a, b, c)
 }
diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-fsqrt.rs b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-fsqrt.rs
index adc44ffd811..adc1919256e 100644
--- a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-fsqrt.rs
+++ b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-fsqrt.rs
@@ -32,28 +32,28 @@ extern "platform-intrinsic" {
 // CHECK-LABEL: @fsqrt_32x2
 #[no_mangle]
 pub unsafe fn fsqrt_32x2(a: f32x2) -> f32x2 {
-    // CHECK: call fast <2 x float> @llvm.sqrt.v2f32
+    // CHECK: call <2 x float> @llvm.sqrt.v2f32
     simd_fsqrt(a)
 }
 
 // CHECK-LABEL: @fsqrt_32x4
 #[no_mangle]
 pub unsafe fn fsqrt_32x4(a: f32x4) -> f32x4 {
-    // CHECK: call fast <4 x float> @llvm.sqrt.v4f32
+    // CHECK: call <4 x float> @llvm.sqrt.v4f32
     simd_fsqrt(a)
 }
 
 // CHECK-LABEL: @fsqrt_32x8
 #[no_mangle]
 pub unsafe fn fsqrt_32x8(a: f32x8) -> f32x8 {
-    // CHECK: call fast <8 x float> @llvm.sqrt.v8f32
+    // CHECK: call <8 x float> @llvm.sqrt.v8f32
     simd_fsqrt(a)
 }
 
 // CHECK-LABEL: @fsqrt_32x16
 #[no_mangle]
 pub unsafe fn fsqrt_32x16(a: f32x16) -> f32x16 {
-    // CHECK: call fast <16 x float> @llvm.sqrt.v16f32
+    // CHECK: call <16 x float> @llvm.sqrt.v16f32
     simd_fsqrt(a)
 }
 
@@ -73,20 +73,20 @@ pub struct f64x8(pub f64, pub f64, pub f64, pub f64,
 // CHECK-LABEL: @fsqrt_64x4
 #[no_mangle]
 pub unsafe fn fsqrt_64x4(a: f64x4) -> f64x4 {
-    // CHECK: call fast <4 x double> @llvm.sqrt.v4f64
+    // CHECK: call <4 x double> @llvm.sqrt.v4f64
     simd_fsqrt(a)
 }
 
 // CHECK-LABEL: @fsqrt_64x2
 #[no_mangle]
 pub unsafe fn fsqrt_64x2(a: f64x2) -> f64x2 {
-    // CHECK: call fast <2 x double> @llvm.sqrt.v2f64
+    // CHECK: call <2 x double> @llvm.sqrt.v2f64
     simd_fsqrt(a)
 }
 
 // CHECK-LABEL: @fsqrt_64x8
 #[no_mangle]
 pub unsafe fn fsqrt_64x8(a: f64x8) -> f64x8 {
-    // CHECK: call fast <8 x double> @llvm.sqrt.v8f64
+    // CHECK: call <8 x double> @llvm.sqrt.v8f64
     simd_fsqrt(a)
 }
diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-log.rs b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-log.rs
index 9c236f19636..c072519c0d6 100644
--- a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-log.rs
+++ b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-log.rs
@@ -32,28 +32,28 @@ extern "platform-intrinsic" {
 // CHECK-LABEL: @log_32x2
 #[no_mangle]
 pub unsafe fn log_32x2(a: f32x2) -> f32x2 {
-    // CHECK: call fast <2 x float> @llvm.log.v2f32
+    // CHECK: call <2 x float> @llvm.log.v2f32
     simd_flog(a)
 }
 
 // CHECK-LABEL: @log_32x4
 #[no_mangle]
 pub unsafe fn log_32x4(a: f32x4) -> f32x4 {
-    // CHECK: call fast <4 x float> @llvm.log.v4f32
+    // CHECK: call <4 x float> @llvm.log.v4f32
     simd_flog(a)
 }
 
 // CHECK-LABEL: @log_32x8
 #[no_mangle]
 pub unsafe fn log_32x8(a: f32x8) -> f32x8 {
-    // CHECK: call fast <8 x float> @llvm.log.v8f32
+    // CHECK: call <8 x float> @llvm.log.v8f32
     simd_flog(a)
 }
 
 // CHECK-LABEL: @log_32x16
 #[no_mangle]
 pub unsafe fn log_32x16(a: f32x16) -> f32x16 {
-    // CHECK: call fast <16 x float> @llvm.log.v16f32
+    // CHECK: call <16 x float> @llvm.log.v16f32
     simd_flog(a)
 }
 
@@ -73,20 +73,20 @@ pub struct f64x8(pub f64, pub f64, pub f64, pub f64,
 // CHECK-LABEL: @log_64x4
 #[no_mangle]
 pub unsafe fn log_64x4(a: f64x4) -> f64x4 {
-    // CHECK: call fast <4 x double> @llvm.log.v4f64
+    // CHECK: call <4 x double> @llvm.log.v4f64
     simd_flog(a)
 }
 
 // CHECK-LABEL: @log_64x2
 #[no_mangle]
 pub unsafe fn log_64x2(a: f64x2) -> f64x2 {
-    // CHECK: call fast <2 x double> @llvm.log.v2f64
+    // CHECK: call <2 x double> @llvm.log.v2f64
     simd_flog(a)
 }
 
 // CHECK-LABEL: @log_64x8
 #[no_mangle]
 pub unsafe fn log_64x8(a: f64x8) -> f64x8 {
-    // CHECK: call fast <8 x double> @llvm.log.v8f64
+    // CHECK: call <8 x double> @llvm.log.v8f64
     simd_flog(a)
 }
diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-log10.rs b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-log10.rs
index a922161affa..5fd64899507 100644
--- a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-log10.rs
+++ b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-log10.rs
@@ -32,28 +32,28 @@ extern "platform-intrinsic" {
 // CHECK-LABEL: @log10_32x2
 #[no_mangle]
 pub unsafe fn log10_32x2(a: f32x2) -> f32x2 {
-    // CHECK: call fast <2 x float> @llvm.log10.v2f32
+    // CHECK: call <2 x float> @llvm.log10.v2f32
     simd_flog10(a)
 }
 
 // CHECK-LABEL: @log10_32x4
 #[no_mangle]
 pub unsafe fn log10_32x4(a: f32x4) -> f32x4 {
-    // CHECK: call fast <4 x float> @llvm.log10.v4f32
+    // CHECK: call <4 x float> @llvm.log10.v4f32
     simd_flog10(a)
 }
 
 // CHECK-LABEL: @log10_32x8
 #[no_mangle]
 pub unsafe fn log10_32x8(a: f32x8) -> f32x8 {
-    // CHECK: call fast <8 x float> @llvm.log10.v8f32
+    // CHECK: call <8 x float> @llvm.log10.v8f32
     simd_flog10(a)
 }
 
 // CHECK-LABEL: @log10_32x16
 #[no_mangle]
 pub unsafe fn log10_32x16(a: f32x16) -> f32x16 {
-    // CHECK: call fast <16 x float> @llvm.log10.v16f32
+    // CHECK: call <16 x float> @llvm.log10.v16f32
     simd_flog10(a)
 }
 
@@ -73,20 +73,20 @@ pub struct f64x8(pub f64, pub f64, pub f64, pub f64,
 // CHECK-LABEL: @log10_64x4
 #[no_mangle]
 pub unsafe fn log10_64x4(a: f64x4) -> f64x4 {
-    // CHECK: call fast <4 x double> @llvm.log10.v4f64
+    // CHECK: call <4 x double> @llvm.log10.v4f64
     simd_flog10(a)
 }
 
 // CHECK-LABEL: @log10_64x2
 #[no_mangle]
 pub unsafe fn log10_64x2(a: f64x2) -> f64x2 {
-    // CHECK: call fast <2 x double> @llvm.log10.v2f64
+    // CHECK: call <2 x double> @llvm.log10.v2f64
     simd_flog10(a)
 }
 
 // CHECK-LABEL: @log10_64x8
 #[no_mangle]
 pub unsafe fn log10_64x8(a: f64x8) -> f64x8 {
-    // CHECK: call fast <8 x double> @llvm.log10.v8f64
+    // CHECK: call <8 x double> @llvm.log10.v8f64
     simd_flog10(a)
 }
diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-log2.rs b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-log2.rs
index 9624acb383f..35175f0ca57 100644
--- a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-log2.rs
+++ b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-log2.rs
@@ -32,28 +32,28 @@ extern "platform-intrinsic" {
 // CHECK-LABEL: @log2_32x2
 #[no_mangle]
 pub unsafe fn log2_32x2(a: f32x2) -> f32x2 {
-    // CHECK: call fast <2 x float> @llvm.log2.v2f32
+    // CHECK: call <2 x float> @llvm.log2.v2f32
     simd_flog2(a)
 }
 
 // CHECK-LABEL: @log2_32x4
 #[no_mangle]
 pub unsafe fn log2_32x4(a: f32x4) -> f32x4 {
-    // CHECK: call fast <4 x float> @llvm.log2.v4f32
+    // CHECK: call <4 x float> @llvm.log2.v4f32
     simd_flog2(a)
 }
 
 // CHECK-LABEL: @log2_32x8
 #[no_mangle]
 pub unsafe fn log2_32x8(a: f32x8) -> f32x8 {
-    // CHECK: call fast <8 x float> @llvm.log2.v8f32
+    // CHECK: call <8 x float> @llvm.log2.v8f32
     simd_flog2(a)
 }
 
 // CHECK-LABEL: @log2_32x16
 #[no_mangle]
 pub unsafe fn log2_32x16(a: f32x16) -> f32x16 {
-    // CHECK: call fast <16 x float> @llvm.log2.v16f32
+    // CHECK: call <16 x float> @llvm.log2.v16f32
     simd_flog2(a)
 }
 
@@ -73,20 +73,20 @@ pub struct f64x8(pub f64, pub f64, pub f64, pub f64,
 // CHECK-LABEL: @log2_64x4
 #[no_mangle]
 pub unsafe fn log2_64x4(a: f64x4) -> f64x4 {
-    // CHECK: call fast <4 x double> @llvm.log2.v4f64
+    // CHECK: call <4 x double> @llvm.log2.v4f64
     simd_flog2(a)
 }
 
 // CHECK-LABEL: @log2_64x2
 #[no_mangle]
 pub unsafe fn log2_64x2(a: f64x2) -> f64x2 {
-    // CHECK: call fast <2 x double> @llvm.log2.v2f64
+    // CHECK: call <2 x double> @llvm.log2.v2f64
     simd_flog2(a)
 }
 
 // CHECK-LABEL: @log2_64x8
 #[no_mangle]
 pub unsafe fn log2_64x8(a: f64x8) -> f64x8 {
-    // CHECK: call fast <8 x double> @llvm.log2.v8f64
+    // CHECK: call <8 x double> @llvm.log2.v8f64
     simd_flog2(a)
 }
diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-pow.rs b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-pow.rs
index 6639e5d652b..3b8d611ab67 100644
--- a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-pow.rs
+++ b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-pow.rs
@@ -32,28 +32,28 @@ extern "platform-intrinsic" {
 // CHECK-LABEL: @fpow_32x2
 #[no_mangle]
 pub unsafe fn fpow_32x2(a: f32x2, b: f32x2) -> f32x2 {
-    // CHECK: call fast <2 x float> @llvm.pow.v2f32
+    // CHECK: call <2 x float> @llvm.pow.v2f32
     simd_fpow(a, b)
 }
 
 // CHECK-LABEL: @fpow_32x4
 #[no_mangle]
 pub unsafe fn fpow_32x4(a: f32x4, b: f32x4) -> f32x4 {
-    // CHECK: call fast <4 x float> @llvm.pow.v4f32
+    // CHECK: call <4 x float> @llvm.pow.v4f32
     simd_fpow(a, b)
 }
 
 // CHECK-LABEL: @fpow_32x8
 #[no_mangle]
 pub unsafe fn fpow_32x8(a: f32x8, b: f32x8) -> f32x8 {
-    // CHECK: call fast <8 x float> @llvm.pow.v8f32
+    // CHECK: call <8 x float> @llvm.pow.v8f32
     simd_fpow(a, b)
 }
 
 // CHECK-LABEL: @fpow_32x16
 #[no_mangle]
 pub unsafe fn fpow_32x16(a: f32x16, b: f32x16) -> f32x16 {
-    // CHECK: call fast <16 x float> @llvm.pow.v16f32
+    // CHECK: call <16 x float> @llvm.pow.v16f32
     simd_fpow(a, b)
 }
 
@@ -73,20 +73,20 @@ pub struct f64x8(pub f64, pub f64, pub f64, pub f64,
 // CHECK-LABEL: @fpow_64x4
 #[no_mangle]
 pub unsafe fn fpow_64x4(a: f64x4, b: f64x4) -> f64x4 {
-    // CHECK: call fast <4 x double> @llvm.pow.v4f64
+    // CHECK: call <4 x double> @llvm.pow.v4f64
     simd_fpow(a, b)
 }
 
 // CHECK-LABEL: @fpow_64x2
 #[no_mangle]
 pub unsafe fn fpow_64x2(a: f64x2, b: f64x2) -> f64x2 {
-    // CHECK: call fast <2 x double> @llvm.pow.v2f64
+    // CHECK: call <2 x double> @llvm.pow.v2f64
     simd_fpow(a, b)
 }
 
 // CHECK-LABEL: @fpow_64x8
 #[no_mangle]
 pub unsafe fn fpow_64x8(a: f64x8, b: f64x8) -> f64x8 {
-    // CHECK: call fast <8 x double> @llvm.pow.v8f64
+    // CHECK: call <8 x double> @llvm.pow.v8f64
     simd_fpow(a, b)
 }
diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-powi.rs b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-powi.rs
index 5e82ea023d8..e80c50c1076 100644
--- a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-powi.rs
+++ b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-powi.rs
@@ -32,28 +32,28 @@ extern "platform-intrinsic" {
 // CHECK-LABEL: @fpowi_32x2
 #[no_mangle]
 pub unsafe fn fpowi_32x2(a: f32x2, b: i32) -> f32x2 {
-    // CHECK: call fast <2 x float> @llvm.powi.v2f32
+    // CHECK: call <2 x float> @llvm.powi.v2f32
     simd_fpowi(a, b)
 }
 
 // CHECK-LABEL: @fpowi_32x4
 #[no_mangle]
 pub unsafe fn fpowi_32x4(a: f32x4, b: i32) -> f32x4 {
-    // CHECK: call fast <4 x float> @llvm.powi.v4f32
+    // CHECK: call <4 x float> @llvm.powi.v4f32
     simd_fpowi(a, b)
 }
 
 // CHECK-LABEL: @fpowi_32x8
 #[no_mangle]
 pub unsafe fn fpowi_32x8(a: f32x8, b: i32) -> f32x8 {
-    // CHECK: call fast <8 x float> @llvm.powi.v8f32
+    // CHECK: call <8 x float> @llvm.powi.v8f32
     simd_fpowi(a, b)
 }
 
 // CHECK-LABEL: @fpowi_32x16
 #[no_mangle]
 pub unsafe fn fpowi_32x16(a: f32x16, b: i32) -> f32x16 {
-    // CHECK: call fast <16 x float> @llvm.powi.v16f32
+    // CHECK: call <16 x float> @llvm.powi.v16f32
     simd_fpowi(a, b)
 }
 
@@ -73,20 +73,20 @@ pub struct f64x8(pub f64, pub f64, pub f64, pub f64,
 // CHECK-LABEL: @fpowi_64x4
 #[no_mangle]
 pub unsafe fn fpowi_64x4(a: f64x4, b: i32) -> f64x4 {
-    // CHECK: call fast <4 x double> @llvm.powi.v4f64
+    // CHECK: call <4 x double> @llvm.powi.v4f64
     simd_fpowi(a, b)
 }
 
 // CHECK-LABEL: @fpowi_64x2
 #[no_mangle]
 pub unsafe fn fpowi_64x2(a: f64x2, b: i32) -> f64x2 {
-    // CHECK: call fast <2 x double> @llvm.powi.v2f64
+    // CHECK: call <2 x double> @llvm.powi.v2f64
     simd_fpowi(a, b)
 }
 
 // CHECK-LABEL: @fpowi_64x8
 #[no_mangle]
 pub unsafe fn fpowi_64x8(a: f64x8, b: i32) -> f64x8 {
-    // CHECK: call fast <8 x double> @llvm.powi.v8f64
+    // CHECK: call <8 x double> @llvm.powi.v8f64
     simd_fpowi(a, b)
 }
diff --git a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-sin.rs b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-sin.rs
index 8ca2ca86076..9e3fab49aff 100644
--- a/src/test/codegen/simd-intrinsic/simd-intrinsic-float-sin.rs
+++ b/src/test/codegen/simd-intrinsic/simd-intrinsic-float-sin.rs
@@ -32,28 +32,28 @@ extern "platform-intrinsic" {
 // CHECK-LABEL: @fsin_32x2
 #[no_mangle]
 pub unsafe fn fsin_32x2(a: f32x2) -> f32x2 {
-    // CHECK: call fast <2 x float> @llvm.sin.v2f32
+    // CHECK: call <2 x float> @llvm.sin.v2f32
     simd_fsin(a)
 }
 
 // CHECK-LABEL: @fsin_32x4
 #[no_mangle]
 pub unsafe fn fsin_32x4(a: f32x4) -> f32x4 {
-    // CHECK: call fast <4 x float> @llvm.sin.v4f32
+    // CHECK: call <4 x float> @llvm.sin.v4f32
     simd_fsin(a)
 }
 
 // CHECK-LABEL: @fsin_32x8
 #[no_mangle]
 pub unsafe fn fsin_32x8(a: f32x8) -> f32x8 {
-    // CHECK: call fast <8 x float> @llvm.sin.v8f32
+    // CHECK: call <8 x float> @llvm.sin.v8f32
     simd_fsin(a)
 }
 
 // CHECK-LABEL: @fsin_32x16
 #[no_mangle]
 pub unsafe fn fsin_32x16(a: f32x16) -> f32x16 {
-    // CHECK: call fast <16 x float> @llvm.sin.v16f32
+    // CHECK: call <16 x float> @llvm.sin.v16f32
     simd_fsin(a)
 }
 
@@ -73,20 +73,20 @@ pub struct f64x8(pub f64, pub f64, pub f64, pub f64,
 // CHECK-LABEL: @fsin_64x4
 #[no_mangle]
 pub unsafe fn fsin_64x4(a: f64x4) -> f64x4 {
-    // CHECK: call fast <4 x double> @llvm.sin.v4f64
+    // CHECK: call <4 x double> @llvm.sin.v4f64
     simd_fsin(a)
 }
 
 // CHECK-LABEL: @fsin_64x2
 #[no_mangle]
 pub unsafe fn fsin_64x2(a: f64x2) -> f64x2 {
-    // CHECK: call fast <2 x double> @llvm.sin.v2f64
+    // CHECK: call <2 x double> @llvm.sin.v2f64
     simd_fsin(a)
 }
 
 // CHECK-LABEL: @fsin_64x8
 #[no_mangle]
 pub unsafe fn fsin_64x8(a: f64x8) -> f64x8 {
-    // CHECK: call fast <8 x double> @llvm.sin.v8f64
+    // CHECK: call <8 x double> @llvm.sin.v8f64
     simd_fsin(a)
 }
diff --git a/src/test/debuginfo/multi-byte-chars.rs b/src/test/debuginfo/multi-byte-chars.rs
index 5382dd1a323..5c68a88f2fb 100644
--- a/src/test/debuginfo/multi-byte-chars.rs
+++ b/src/test/debuginfo/multi-byte-chars.rs
@@ -2,8 +2,6 @@
 
 // compile-flags:-g
 
-#![feature(non_ascii_idents)]
-
 // This test checks whether debuginfo generation can handle multi-byte UTF-8
 // characters at the end of a block. There's no need to do anything in the
 // debugger -- just make sure that the compiler doesn't crash.
diff --git a/src/test/ui/cast/fat-ptr-cast-rpass.rs b/src/test/ui/cast/fat-ptr-cast-rpass.rs
index 5f5e621d762..9fa2255e1b3 100644
--- a/src/test/ui/cast/fat-ptr-cast-rpass.rs
+++ b/src/test/ui/cast/fat-ptr-cast-rpass.rs
@@ -1,5 +1,8 @@
 // run-pass
 
+// Remove this file when `std::raw` is removed.
+// The replacement pointer metadata APIs are tested in library/core/tests/ptr.rs
+#![allow(deprecated)]
 #![feature(raw)]
 
 use std::mem;
@@ -37,5 +40,4 @@ fn main() {
 
     assert_eq!(b, d);
     assert_eq!(c, d as usize);
-
 }
diff --git a/src/test/ui/codemap_tests/unicode_2.rs b/src/test/ui/codemap_tests/unicode_2.rs
index fa69115b2da..3301e7a18d1 100644
--- a/src/test/ui/codemap_tests/unicode_2.rs
+++ b/src/test/ui/codemap_tests/unicode_2.rs
@@ -1,5 +1,3 @@
-#![feature(non_ascii_idents)]
-
 fn main() {
     let _ = ("a̐éö̲", 0u7); //~ ERROR invalid width
     let _ = ("아あ", 1i42); //~ ERROR invalid width
diff --git a/src/test/ui/codemap_tests/unicode_2.stderr b/src/test/ui/codemap_tests/unicode_2.stderr
index c01942712d4..a776a4a1e7e 100644
--- a/src/test/ui/codemap_tests/unicode_2.stderr
+++ b/src/test/ui/codemap_tests/unicode_2.stderr
@@ -1,5 +1,5 @@
 error: invalid width `7` for integer literal
-  --> $DIR/unicode_2.rs:4:25
+  --> $DIR/unicode_2.rs:2:25
    |
 LL |     let _ = ("a̐éö̲", 0u7);
    |                     ^^^
@@ -7,7 +7,7 @@ LL |     let _ = ("a̐éö̲", 0u7);
    = help: valid widths are 8, 16, 32, 64 and 128
 
 error: invalid width `42` for integer literal
-  --> $DIR/unicode_2.rs:5:20
+  --> $DIR/unicode_2.rs:3:20
    |
 LL |     let _ = ("아あ", 1i42);
    |                      ^^^^
@@ -15,7 +15,7 @@ LL |     let _ = ("아あ", 1i42);
    = help: valid widths are 8, 16, 32, 64 and 128
 
 error[E0425]: cannot find value `a̐é` in this scope
-  --> $DIR/unicode_2.rs:6:13
+  --> $DIR/unicode_2.rs:4:13
    |
 LL |     let _ = a̐é;
    |             ^^ not found in this scope
diff --git a/src/test/ui/bad/bad-expr-lhs.rs b/src/test/ui/destructuring-assignment/bad-expr-lhs.rs
index 39536f12e3b..39536f12e3b 100644
--- a/src/test/ui/bad/bad-expr-lhs.rs
+++ b/src/test/ui/destructuring-assignment/bad-expr-lhs.rs
diff --git a/src/test/ui/bad/bad-expr-lhs.stderr b/src/test/ui/destructuring-assignment/bad-expr-lhs.stderr
index d4b2193d09f..d4b2193d09f 100644
--- a/src/test/ui/bad/bad-expr-lhs.stderr
+++ b/src/test/ui/destructuring-assignment/bad-expr-lhs.stderr
diff --git a/src/test/ui/feature-gates/feature-gate-non_ascii_idents.rs b/src/test/ui/feature-gates/feature-gate-non_ascii_idents.rs
deleted file mode 100644
index 524ad3c83fc..00000000000
--- a/src/test/ui/feature-gates/feature-gate-non_ascii_idents.rs
+++ /dev/null
@@ -1,34 +0,0 @@
-extern crate core as bäz; //~ ERROR non-ascii idents
-
-use föö::bar; //~ ERROR non-ascii idents
-
-mod föö { //~ ERROR non-ascii idents
-    pub fn bar() {}
-}
-
-fn bär( //~ ERROR non-ascii idents
-    bäz: isize //~ ERROR non-ascii idents
-    ) {
-    let _ö: isize; //~ ERROR non-ascii idents
-
-    match (1, 2) {
-        (_ä, _) => {} //~ ERROR non-ascii idents
-    }
-}
-
-struct Föö { //~ ERROR non-ascii idents
-    föö: isize //~ ERROR non-ascii idents
-}
-
-enum Bär { //~ ERROR non-ascii idents
-    Bäz { //~ ERROR non-ascii idents
-        qüx: isize //~ ERROR non-ascii idents
-    }
-}
-
-extern "C" {
-    fn qüx();  //~ ERROR non-ascii idents
-    //~^ ERROR items in `extern` blocks
-}
-
-fn main() {}
diff --git a/src/test/ui/feature-gates/feature-gate-non_ascii_idents.stderr b/src/test/ui/feature-gates/feature-gate-non_ascii_idents.stderr
deleted file mode 100644
index c712acee37f..00000000000
--- a/src/test/ui/feature-gates/feature-gate-non_ascii_idents.stderr
+++ /dev/null
@@ -1,130 +0,0 @@
-error: items in `extern` blocks cannot use non-ascii identifiers
-  --> $DIR/feature-gate-non_ascii_idents.rs:30:8
-   |
-LL | extern "C" {
-   | ---------- in this `extern` block
-LL |     fn qüx();
-   |        ^^^
-   |
-   = note: This limitation may be lifted in the future; see issue #83942 <https://github.com/rust-lang/rust/issues/83942> for more information
-
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/feature-gate-non_ascii_idents.rs:1:22
-   |
-LL | extern crate core as bäz;
-   |                      ^^^
-   |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
-
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/feature-gate-non_ascii_idents.rs:3:5
-   |
-LL | use föö::bar;
-   |     ^^^
-   |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
-
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/feature-gate-non_ascii_idents.rs:5:5
-   |
-LL | mod föö {
-   |     ^^^
-   |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
-
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/feature-gate-non_ascii_idents.rs:9:4
-   |
-LL | fn bär(
-   |    ^^^
-   |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
-
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/feature-gate-non_ascii_idents.rs:10:5
-   |
-LL |     bäz: isize
-   |     ^^^
-   |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
-
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/feature-gate-non_ascii_idents.rs:12:9
-   |
-LL |     let _ö: isize;
-   |         ^^
-   |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
-
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/feature-gate-non_ascii_idents.rs:15:10
-   |
-LL |         (_ä, _) => {}
-   |          ^^
-   |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
-
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/feature-gate-non_ascii_idents.rs:19:8
-   |
-LL | struct Föö {
-   |        ^^^
-   |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
-
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/feature-gate-non_ascii_idents.rs:20:5
-   |
-LL |     föö: isize
-   |     ^^^
-   |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
-
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/feature-gate-non_ascii_idents.rs:23:6
-   |
-LL | enum Bär {
-   |      ^^^
-   |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
-
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/feature-gate-non_ascii_idents.rs:24:5
-   |
-LL |     Bäz {
-   |     ^^^
-   |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
-
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/feature-gate-non_ascii_idents.rs:25:9
-   |
-LL |         qüx: isize
-   |         ^^^
-   |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
-
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/feature-gate-non_ascii_idents.rs:30:8
-   |
-LL |     fn qüx();
-   |        ^^^
-   |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
-
-error: aborting due to 14 previous errors
-
-For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/bad/bad-main.rs b/src/test/ui/fn/bad-main.rs
index 75115996142..75115996142 100644
--- a/src/test/ui/bad/bad-main.rs
+++ b/src/test/ui/fn/bad-main.rs
diff --git a/src/test/ui/bad/bad-main.stderr b/src/test/ui/fn/bad-main.stderr
index 675b66d0578..675b66d0578 100644
--- a/src/test/ui/bad/bad-main.stderr
+++ b/src/test/ui/fn/bad-main.stderr
diff --git a/src/test/ui/bad/bad-mid-path-type-params.rs b/src/test/ui/generics/bad-mid-path-type-params.rs
index c42ce602e99..c42ce602e99 100644
--- a/src/test/ui/bad/bad-mid-path-type-params.rs
+++ b/src/test/ui/generics/bad-mid-path-type-params.rs
diff --git a/src/test/ui/bad/bad-mid-path-type-params.stderr b/src/test/ui/generics/bad-mid-path-type-params.stderr
index dd96856e563..dd96856e563 100644
--- a/src/test/ui/bad/bad-mid-path-type-params.stderr
+++ b/src/test/ui/generics/bad-mid-path-type-params.stderr
diff --git a/src/test/ui/imports/local-modularized-tricky-fail-2.rs b/src/test/ui/imports/local-modularized-tricky-fail-2.rs
index e637edadb00..386de88bc3d 100644
--- a/src/test/ui/imports/local-modularized-tricky-fail-2.rs
+++ b/src/test/ui/imports/local-modularized-tricky-fail-2.rs
@@ -1,48 +1,22 @@
-// `#[macro_export] macro_rules` that doesn't originate from macro expansions can be placed
-// into the root module soon enough to act as usual items and shadow globs and preludes.
+// Crate-local macro expanded `macro_export` macros cannot be accessed with module-relative paths.
 
-#![feature(decl_macro)]
-
-// `macro_export` shadows globs
-use inner1::*;
-
-mod inner1 {
-    pub macro exported() {}
-}
-
-exported!();
-
-mod deep {
-    fn deep() {
-        type Deeper = [u8; {
-            #[macro_export]
-            macro_rules! exported {
-                () => ( struct Б; ) //~ ERROR non-ascii idents are not fully supported
-            }
-
-            0
-        }];
+macro_rules! define_exported { () => {
+    #[macro_export]
+    macro_rules! exported {
+        () => ()
     }
-}
+}}
 
-// `macro_export` shadows std prelude
-fn main() {
-    panic!();
-}
+define_exported!();
 
-mod inner3 {
-    #[macro_export]
-    macro_rules! panic {
-        () => ( struct Г; ) //~ ERROR non-ascii idents are not fully supported
-    }
+mod m {
+    use exported;
+    //~^ ERROR macro-expanded `macro_export` macros from the current crate cannot
+    //~| WARN this was previously accepted
 }
 
-// `macro_export` shadows builtin macros
-include!();
-
-mod inner4 {
-    #[macro_export]
-    macro_rules! include {
-        () => ( struct Д; ) //~ ERROR non-ascii idents are not fully supported
-    }
+fn main() {
+    ::exported!();
+    //~^ ERROR macro-expanded `macro_export` macros from the current crate cannot
+    //~| WARN this was previously accepted
 }
diff --git a/src/test/ui/imports/local-modularized-tricky-fail-2.stderr b/src/test/ui/imports/local-modularized-tricky-fail-2.stderr
index 714c04add5f..5cc6fa1e40a 100644
--- a/src/test/ui/imports/local-modularized-tricky-fail-2.stderr
+++ b/src/test/ui/imports/local-modularized-tricky-fail-2.stderr
@@ -1,42 +1,43 @@
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/local-modularized-tricky-fail-2.rs:20:32
+error: macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths
+  --> $DIR/local-modularized-tricky-fail-2.rs:13:9
    |
-LL | exported!();
-   | ------------ in this macro invocation
-...
-LL |                 () => ( struct Б; )
-   |                                ^
+LL |     use exported;
+   |         ^^^^^^^^
    |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
-   = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
-
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/local-modularized-tricky-fail-2.rs:36:24
+   = note: `#[deny(macro_expanded_macro_exports_accessed_by_absolute_paths)]` on by default
+   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
+   = note: for more information, see issue #52234 <https://github.com/rust-lang/rust/issues/52234>
+note: the macro is defined here
+  --> $DIR/local-modularized-tricky-fail-2.rs:5:5
    |
-LL |     panic!();
-   |     --------- in this macro invocation
+LL | /     macro_rules! exported {
+LL | |         () => ()
+LL | |     }
+   | |_____^
 ...
-LL |         () => ( struct Г; )
-   |                        ^
-   |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
+LL |   define_exported!();
+   |   ------------------- in this macro invocation
    = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/local-modularized-tricky-fail-2.rs:46:24
+error: macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths
+  --> $DIR/local-modularized-tricky-fail-2.rs:19:5
    |
-LL | include!();
-   | ----------- in this macro invocation
-...
-LL |         () => ( struct Д; )
-   |                        ^
+LL |     ::exported!();
+   |     ^^^^^^^^^^
+   |
+   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
+   = note: for more information, see issue #52234 <https://github.com/rust-lang/rust/issues/52234>
+note: the macro is defined here
+  --> $DIR/local-modularized-tricky-fail-2.rs:5:5
    |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
+LL | /     macro_rules! exported {
+LL | |         () => ()
+LL | |     }
+   | |_____^
+...
+LL |   define_exported!();
+   |   ------------------- in this macro invocation
    = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
 
-error: aborting due to 3 previous errors
+error: aborting due to 2 previous errors
 
-For more information about this error, try `rustc --explain E0658`.
diff --git a/src/test/ui/imports/local-modularized-tricky-fail-3.rs b/src/test/ui/imports/local-modularized-tricky-fail-3.rs
deleted file mode 100644
index 386de88bc3d..00000000000
--- a/src/test/ui/imports/local-modularized-tricky-fail-3.rs
+++ /dev/null
@@ -1,22 +0,0 @@
-// Crate-local macro expanded `macro_export` macros cannot be accessed with module-relative paths.
-
-macro_rules! define_exported { () => {
-    #[macro_export]
-    macro_rules! exported {
-        () => ()
-    }
-}}
-
-define_exported!();
-
-mod m {
-    use exported;
-    //~^ ERROR macro-expanded `macro_export` macros from the current crate cannot
-    //~| WARN this was previously accepted
-}
-
-fn main() {
-    ::exported!();
-    //~^ ERROR macro-expanded `macro_export` macros from the current crate cannot
-    //~| WARN this was previously accepted
-}
diff --git a/src/test/ui/imports/local-modularized-tricky-fail-3.stderr b/src/test/ui/imports/local-modularized-tricky-fail-3.stderr
deleted file mode 100644
index 4494a88a5cf..00000000000
--- a/src/test/ui/imports/local-modularized-tricky-fail-3.stderr
+++ /dev/null
@@ -1,43 +0,0 @@
-error: macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths
-  --> $DIR/local-modularized-tricky-fail-3.rs:13:9
-   |
-LL |     use exported;
-   |         ^^^^^^^^
-   |
-   = note: `#[deny(macro_expanded_macro_exports_accessed_by_absolute_paths)]` on by default
-   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
-   = note: for more information, see issue #52234 <https://github.com/rust-lang/rust/issues/52234>
-note: the macro is defined here
-  --> $DIR/local-modularized-tricky-fail-3.rs:5:5
-   |
-LL | /     macro_rules! exported {
-LL | |         () => ()
-LL | |     }
-   | |_____^
-...
-LL |   define_exported!();
-   |   ------------------- in this macro invocation
-   = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
-
-error: macro-expanded `macro_export` macros from the current crate cannot be referred to by absolute paths
-  --> $DIR/local-modularized-tricky-fail-3.rs:19:5
-   |
-LL |     ::exported!();
-   |     ^^^^^^^^^^
-   |
-   = warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
-   = note: for more information, see issue #52234 <https://github.com/rust-lang/rust/issues/52234>
-note: the macro is defined here
-  --> $DIR/local-modularized-tricky-fail-3.rs:5:5
-   |
-LL | /     macro_rules! exported {
-LL | |         () => ()
-LL | |     }
-   | |_____^
-...
-LL |   define_exported!();
-   |   ------------------- in this macro invocation
-   = note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
-
-error: aborting due to 2 previous errors
-
diff --git a/src/test/ui/imports/local-modularized-tricky-pass.rs b/src/test/ui/imports/local-modularized-tricky-pass-1.rs
index b52ddaf8954..b52ddaf8954 100644
--- a/src/test/ui/imports/local-modularized-tricky-pass.rs
+++ b/src/test/ui/imports/local-modularized-tricky-pass-1.rs
diff --git a/src/test/ui/imports/local-modularized-tricky-pass-2.rs b/src/test/ui/imports/local-modularized-tricky-pass-2.rs
new file mode 100644
index 00000000000..d5efbdf78af
--- /dev/null
+++ b/src/test/ui/imports/local-modularized-tricky-pass-2.rs
@@ -0,0 +1,50 @@
+// check-pass
+//
+// `#[macro_export] macro_rules` that doesn't originate from macro expansions can be placed
+// into the root module soon enough to act as usual items and shadow globs and preludes.
+
+#![feature(decl_macro)]
+
+// `macro_export` shadows globs
+use inner1::*;
+
+mod inner1 {
+    pub macro exported() {}
+}
+
+exported!();
+
+mod deep {
+    fn deep() {
+        type Deeper = [u8; {
+            #[macro_export]
+            macro_rules! exported {
+                () => ( struct Б; )
+            }
+
+            0
+        }];
+    }
+}
+
+// `macro_export` shadows std prelude
+fn main() {
+    panic!();
+}
+
+mod inner3 {
+    #[macro_export]
+    macro_rules! panic {
+        () => ( struct Г; )
+    }
+}
+
+// `macro_export` shadows builtin macros
+include!();
+
+mod inner4 {
+    #[macro_export]
+    macro_rules! include {
+        () => ( struct Д; )
+    }
+}
diff --git a/src/test/ui/bad/bad-intrinsic-monomorphization.rs b/src/test/ui/intrinsics/bad-intrinsic-monomorphization.rs
index f36a5f1acc1..f36a5f1acc1 100644
--- a/src/test/ui/bad/bad-intrinsic-monomorphization.rs
+++ b/src/test/ui/intrinsics/bad-intrinsic-monomorphization.rs
diff --git a/src/test/ui/bad/bad-intrinsic-monomorphization.stderr b/src/test/ui/intrinsics/bad-intrinsic-monomorphization.stderr
index c070f018181..c070f018181 100644
--- a/src/test/ui/bad/bad-intrinsic-monomorphization.stderr
+++ b/src/test/ui/intrinsics/bad-intrinsic-monomorphization.stderr
diff --git a/src/test/ui/issues/issue-44023.rs b/src/test/ui/issues/issue-44023.rs
index 4c38ddfcdf1..e4320b7dac5 100644
--- a/src/test/ui/issues/issue-44023.rs
+++ b/src/test/ui/issues/issue-44023.rs
@@ -1,5 +1,3 @@
-#![feature(non_ascii_idents)]
-
 pub fn main () {}
 
 fn საჭმელად_გემრიელი_სადილი ( ) -> isize { //~ ERROR mismatched types
diff --git a/src/test/ui/issues/issue-44023.stderr b/src/test/ui/issues/issue-44023.stderr
index fc54e7c62bb..9e97012416a 100644
--- a/src/test/ui/issues/issue-44023.stderr
+++ b/src/test/ui/issues/issue-44023.stderr
@@ -1,5 +1,5 @@
 error[E0308]: mismatched types
-  --> $DIR/issue-44023.rs:5:36
+  --> $DIR/issue-44023.rs:3:36
    |
 LL | fn საჭმელად_გემრიელი_სადილი ( ) -> isize {
    |    ------------------------        ^^^^^ expected `isize`, found `()`
diff --git a/src/test/ui/bad/bad-extern-link-attrs.rs b/src/test/ui/linkage-attr/bad-extern-link-attrs.rs
index 43fe8c11d7c..43fe8c11d7c 100644
--- a/src/test/ui/bad/bad-extern-link-attrs.rs
+++ b/src/test/ui/linkage-attr/bad-extern-link-attrs.rs
diff --git a/src/test/ui/bad/bad-extern-link-attrs.stderr b/src/test/ui/linkage-attr/bad-extern-link-attrs.stderr
index 525c605a9cf..525c605a9cf 100644
--- a/src/test/ui/bad/bad-extern-link-attrs.stderr
+++ b/src/test/ui/linkage-attr/bad-extern-link-attrs.stderr
diff --git a/src/test/ui/bad/bad-lint-cap.rs b/src/test/ui/lint/bad-lint-cap.rs
index e65c8319d1a..e65c8319d1a 100644
--- a/src/test/ui/bad/bad-lint-cap.rs
+++ b/src/test/ui/lint/bad-lint-cap.rs
diff --git a/src/test/ui/bad/bad-lint-cap.stderr b/src/test/ui/lint/bad-lint-cap.stderr
index f284dbf8479..f284dbf8479 100644
--- a/src/test/ui/bad/bad-lint-cap.stderr
+++ b/src/test/ui/lint/bad-lint-cap.stderr
diff --git a/src/test/ui/bad/bad-lint-cap2.rs b/src/test/ui/lint/bad-lint-cap2.rs
index 8bc8aca2049..8bc8aca2049 100644
--- a/src/test/ui/bad/bad-lint-cap2.rs
+++ b/src/test/ui/lint/bad-lint-cap2.rs
diff --git a/src/test/ui/bad/bad-lint-cap2.stderr b/src/test/ui/lint/bad-lint-cap2.stderr
index 3f3affe5a98..3f3affe5a98 100644
--- a/src/test/ui/bad/bad-lint-cap2.stderr
+++ b/src/test/ui/lint/bad-lint-cap2.stderr
diff --git a/src/test/ui/bad/bad-lint-cap3.rs b/src/test/ui/lint/bad-lint-cap3.rs
index c38105870e4..c38105870e4 100644
--- a/src/test/ui/bad/bad-lint-cap3.rs
+++ b/src/test/ui/lint/bad-lint-cap3.rs
diff --git a/src/test/ui/bad/bad-lint-cap3.stderr b/src/test/ui/lint/bad-lint-cap3.stderr
index 0fb65322f39..0fb65322f39 100644
--- a/src/test/ui/bad/bad-lint-cap3.stderr
+++ b/src/test/ui/lint/bad-lint-cap3.stderr
diff --git a/src/test/ui/lint/issue-83477.rs b/src/test/ui/lint/issue-83477.rs
new file mode 100644
index 00000000000..0eba52acfa3
--- /dev/null
+++ b/src/test/ui/lint/issue-83477.rs
@@ -0,0 +1,16 @@
+// check-pass
+#![warn(rustc::internal)]
+
+#[allow(rustc::foo::bar::default_hash_types)]
+//~^ WARN unknown lint: `rustc::foo::bar::default_hash_types`
+//~| HELP did you mean
+//~| SUGGESTION rustc::default_hash_types
+#[allow(rustc::foo::default_hash_types)]
+//~^ WARN unknown lint: `rustc::foo::default_hash_types`
+//~| HELP did you mean
+//~| SUGGESTION rustc::default_hash_types
+fn main() {
+    let _ = std::collections::HashMap::<String, String>::new();
+    //~^ WARN Prefer FxHashMap over HashMap, it has better performance
+    //~| HELP use
+}
diff --git a/src/test/ui/lint/issue-83477.stderr b/src/test/ui/lint/issue-83477.stderr
new file mode 100644
index 00000000000..dbe0c9e0130
--- /dev/null
+++ b/src/test/ui/lint/issue-83477.stderr
@@ -0,0 +1,30 @@
+warning: unknown lint: `rustc::foo::bar::default_hash_types`
+  --> $DIR/issue-83477.rs:4:9
+   |
+LL | #[allow(rustc::foo::bar::default_hash_types)]
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: did you mean: `rustc::default_hash_types`
+   |
+   = note: `#[warn(unknown_lints)]` on by default
+
+warning: unknown lint: `rustc::foo::default_hash_types`
+  --> $DIR/issue-83477.rs:8:9
+   |
+LL | #[allow(rustc::foo::default_hash_types)]
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: did you mean: `rustc::default_hash_types`
+
+warning: Prefer FxHashMap over HashMap, it has better performance
+  --> $DIR/issue-83477.rs:13:31
+   |
+LL |     let _ = std::collections::HashMap::<String, String>::new();
+   |                               ^^^^^^^ help: use: `FxHashMap`
+   |
+note: the lint level is defined here
+  --> $DIR/issue-83477.rs:2:9
+   |
+LL | #![warn(rustc::internal)]
+   |         ^^^^^^^^^^^^^^^
+   = note: `#[warn(rustc::default_hash_types)]` implied by `#[warn(rustc::internal)]`
+   = note: a `use rustc_data_structures::fx::FxHashMap` may be necessary
+
+warning: 3 warnings emitted
+
diff --git a/src/test/ui/lint/lint-non-snake-case-no-lowercase-equivalent.rs b/src/test/ui/lint/lint-non-snake-case-no-lowercase-equivalent.rs
index 710eebe4b65..9f0c87dcaa6 100644
--- a/src/test/ui/lint/lint-non-snake-case-no-lowercase-equivalent.rs
+++ b/src/test/ui/lint/lint-non-snake-case-no-lowercase-equivalent.rs
@@ -3,7 +3,6 @@
 #![allow(dead_code)]
 // pretty-expanded FIXME #23616
 
-#![feature(non_ascii_idents)]
 #![deny(non_snake_case)]
 
 // This name is neither upper nor lower case
diff --git a/src/test/ui/lint/lint-nonstandard-style-unicode-1.rs b/src/test/ui/lint/lint-nonstandard-style-unicode-1.rs
index 034499145b7..527d0ea9432 100644
--- a/src/test/ui/lint/lint-nonstandard-style-unicode-1.rs
+++ b/src/test/ui/lint/lint-nonstandard-style-unicode-1.rs
@@ -1,7 +1,6 @@
 #![allow(dead_code)]
 
 #![forbid(non_camel_case_types)]
-#![feature(non_ascii_idents)]
 
 // Some scripts (e.g., hiragana) don't have a concept of
 // upper/lowercase
diff --git a/src/test/ui/lint/lint-nonstandard-style-unicode-1.stderr b/src/test/ui/lint/lint-nonstandard-style-unicode-1.stderr
index 37100265659..6c2aa225e60 100644
--- a/src/test/ui/lint/lint-nonstandard-style-unicode-1.stderr
+++ b/src/test/ui/lint/lint-nonstandard-style-unicode-1.stderr
@@ -1,5 +1,5 @@
 error: type `χa` should have an upper camel case name
-  --> $DIR/lint-nonstandard-style-unicode-1.rs:15:8
+  --> $DIR/lint-nonstandard-style-unicode-1.rs:14:8
    |
 LL | struct χa;
    |        ^^ help: convert the identifier to upper camel case: `Χa`
@@ -11,37 +11,37 @@ LL | #![forbid(non_camel_case_types)]
    |           ^^^^^^^^^^^^^^^^^^^^
 
 error: type `__χa` should have an upper camel case name
-  --> $DIR/lint-nonstandard-style-unicode-1.rs:23:8
+  --> $DIR/lint-nonstandard-style-unicode-1.rs:22:8
    |
 LL | struct __χa;
    |        ^^^^ help: convert the identifier to upper camel case: `Χa`
 
 error: type `对__否` should have an upper camel case name
-  --> $DIR/lint-nonstandard-style-unicode-1.rs:28:8
+  --> $DIR/lint-nonstandard-style-unicode-1.rs:27:8
    |
 LL | struct 对__否;
    |        ^^^^^^ help: convert the identifier to upper camel case: `对_否`
 
 error: type `ヒ__χ` should have an upper camel case name
-  --> $DIR/lint-nonstandard-style-unicode-1.rs:31:8
+  --> $DIR/lint-nonstandard-style-unicode-1.rs:30:8
    |
 LL | struct ヒ__χ;
    |        ^^^^^ help: convert the identifier to upper camel case: `ヒΧ`
 
 error: type `Hello_你好` should have an upper camel case name
-  --> $DIR/lint-nonstandard-style-unicode-1.rs:37:8
+  --> $DIR/lint-nonstandard-style-unicode-1.rs:36:8
    |
 LL | struct Hello_你好;
    |        ^^^^^^^^^^ help: convert the identifier to upper camel case: `Hello你好`
 
 error: type `Hello_World` should have an upper camel case name
-  --> $DIR/lint-nonstandard-style-unicode-1.rs:40:8
+  --> $DIR/lint-nonstandard-style-unicode-1.rs:39:8
    |
 LL | struct Hello_World;
    |        ^^^^^^^^^^^ help: convert the identifier to upper camel case: `HelloWorld`
 
 error: type `你_ӟ` should have an upper camel case name
-  --> $DIR/lint-nonstandard-style-unicode-1.rs:43:8
+  --> $DIR/lint-nonstandard-style-unicode-1.rs:42:8
    |
 LL | struct 你_ӟ;
    |        ^^^^ help: convert the identifier to upper camel case: `你Ӟ`
diff --git a/src/test/ui/lint/lint-nonstandard-style-unicode-2.rs b/src/test/ui/lint/lint-nonstandard-style-unicode-2.rs
index 0b52a5fde35..9690be5908b 100644
--- a/src/test/ui/lint/lint-nonstandard-style-unicode-2.rs
+++ b/src/test/ui/lint/lint-nonstandard-style-unicode-2.rs
@@ -1,7 +1,6 @@
 #![allow(dead_code)]
 
 #![forbid(non_snake_case)]
-#![feature(non_ascii_idents)]
 
 // Some scripts (e.g., hiragana) don't have a concept of
 // upper/lowercase
diff --git a/src/test/ui/lint/lint-nonstandard-style-unicode-2.stderr b/src/test/ui/lint/lint-nonstandard-style-unicode-2.stderr
index 0b309e315a4..8eb0654e0a1 100644
--- a/src/test/ui/lint/lint-nonstandard-style-unicode-2.stderr
+++ b/src/test/ui/lint/lint-nonstandard-style-unicode-2.stderr
@@ -1,5 +1,5 @@
 error: function `Ц` should have a snake case name
-  --> $DIR/lint-nonstandard-style-unicode-2.rs:18:4
+  --> $DIR/lint-nonstandard-style-unicode-2.rs:17:4
    |
 LL | fn Ц() {}
    |    ^ help: convert the identifier to snake case: `ц`
@@ -11,7 +11,7 @@ LL | #![forbid(non_snake_case)]
    |           ^^^^^^^^^^^^^^
 
 error: function `分__隔` should have a snake case name
-  --> $DIR/lint-nonstandard-style-unicode-2.rs:23:4
+  --> $DIR/lint-nonstandard-style-unicode-2.rs:22:4
    |
 LL | fn 分__隔() {}
    |    ^^^^^^ help: convert the identifier to snake case: `分_隔`
diff --git a/src/test/ui/lint/lint-nonstandard-style-unicode-3.rs b/src/test/ui/lint/lint-nonstandard-style-unicode-3.rs
index b17c2de39a0..9175be7a0f4 100644
--- a/src/test/ui/lint/lint-nonstandard-style-unicode-3.rs
+++ b/src/test/ui/lint/lint-nonstandard-style-unicode-3.rs
@@ -1,7 +1,6 @@
 #![allow(dead_code)]
 
 #![forbid(non_upper_case_globals)]
-#![feature(non_ascii_idents)]
 
 // Some scripts (e.g., hiragana) don't have a concept of
 // upper/lowercase
diff --git a/src/test/ui/lint/lint-nonstandard-style-unicode-3.stderr b/src/test/ui/lint/lint-nonstandard-style-unicode-3.stderr
index 44bd5ad55ff..970e6b838ad 100644
--- a/src/test/ui/lint/lint-nonstandard-style-unicode-3.stderr
+++ b/src/test/ui/lint/lint-nonstandard-style-unicode-3.stderr
@@ -1,5 +1,5 @@
 error: static variable `τεχ` should have an upper case name
-  --> $DIR/lint-nonstandard-style-unicode-3.rs:18:8
+  --> $DIR/lint-nonstandard-style-unicode-3.rs:17:8
    |
 LL | static τεχ: f32 = 3.14159265;
    |        ^^^ help: convert the identifier to upper case: `ΤΕΧ`
diff --git a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-confusable-idents.rs b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-confusable-idents.rs
index 2c711f99404..e7da825ae36 100644
--- a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-confusable-idents.rs
+++ b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-confusable-idents.rs
@@ -1,4 +1,3 @@
-#![feature(non_ascii_idents)]
 #![deny(confusable_idents)]
 #![allow(uncommon_codepoints, non_upper_case_globals)]
 
diff --git a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-confusable-idents.stderr b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-confusable-idents.stderr
index b9af60963ad..e9906c83d12 100644
--- a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-confusable-idents.stderr
+++ b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-confusable-idents.stderr
@@ -1,5 +1,5 @@
 error: identifier pair considered confusable between `s` and `s`
-  --> $DIR/lint-confusable-idents.rs:9:9
+  --> $DIR/lint-confusable-idents.rs:8:9
    |
 LL | const s: usize = 42;
    |       -- this is where the previous identifier occurred
@@ -8,13 +8,13 @@ LL |     let s = "rust";
    |         ^
    |
 note: the lint level is defined here
-  --> $DIR/lint-confusable-idents.rs:2:9
+  --> $DIR/lint-confusable-idents.rs:1:9
    |
 LL | #![deny(confusable_idents)]
    |         ^^^^^^^^^^^^^^^^^
 
 error: identifier pair considered confusable between `s_s` and `s_s`
-  --> $DIR/lint-confusable-idents.rs:10:9
+  --> $DIR/lint-confusable-idents.rs:9:9
    |
 LL | const s_s: usize = 42;
    |       --- this is where the previous identifier occurred
diff --git a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables-2.rs b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables-2.rs
index a5b45466da5..f62c8a19031 100644
--- a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables-2.rs
+++ b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables-2.rs
@@ -1,5 +1,4 @@
 // check-pass
-#![feature(non_ascii_idents)]
 #![deny(mixed_script_confusables)]
 
 struct ΑctuallyNotLatin;
diff --git a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables.rs b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables.rs
index 4637b03f250..7ee9c41f6a0 100644
--- a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables.rs
+++ b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables.rs
@@ -1,4 +1,3 @@
-#![feature(non_ascii_idents)]
 #![deny(mixed_script_confusables)]
 
 struct ΑctuallyNotLatin;
diff --git a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables.stderr b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables.stderr
index 6f75a1ece37..4018b381fb8 100644
--- a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables.stderr
+++ b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-mixed-script-confusables.stderr
@@ -1,11 +1,11 @@
 error: The usage of Script Group `Greek` in this crate consists solely of mixed script confusables
-  --> $DIR/lint-mixed-script-confusables.rs:4:8
+  --> $DIR/lint-mixed-script-confusables.rs:3:8
    |
 LL | struct ΑctuallyNotLatin;
    |        ^^^^^^^^^^^^^^^^
    |
 note: the lint level is defined here
-  --> $DIR/lint-mixed-script-confusables.rs:2:9
+  --> $DIR/lint-mixed-script-confusables.rs:1:9
    |
 LL | #![deny(mixed_script_confusables)]
    |         ^^^^^^^^^^^^^^^^^^^^^^^^
@@ -13,7 +13,7 @@ LL | #![deny(mixed_script_confusables)]
    = note: Please recheck to make sure their usages are indeed what you want.
 
 error: The usage of Script Group `Cyrillic` in this crate consists solely of mixed script confusables
-  --> $DIR/lint-mixed-script-confusables.rs:11:5
+  --> $DIR/lint-mixed-script-confusables.rs:10:5
    |
 LL | mod роре {
    |     ^^^^
@@ -22,7 +22,7 @@ LL | mod роре {
    = note: Please recheck to make sure their usages are indeed what you want.
 
 error: The usage of Script Group `Japanese, Katakana` in this crate consists solely of mixed script confusables
-  --> $DIR/lint-mixed-script-confusables.rs:13:11
+  --> $DIR/lint-mixed-script-confusables.rs:12:11
    |
 LL |     const エ: &'static str = "アイウ";
    |           ^^
diff --git a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.rs b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.rs
index 20d00cf701a..8ae1744096d 100644
--- a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.rs
+++ b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.rs
@@ -1,4 +1,3 @@
-#![feature(non_ascii_idents)]
 #![deny(non_ascii_idents)]
 
 const חלודה: usize = 2; //~ ERROR identifier contains non-ASCII characters
diff --git a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.stderr b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.stderr
index 048b6ff5d68..8ed7f093ce3 100644
--- a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.stderr
+++ b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-non-ascii-idents.stderr
@@ -1,23 +1,23 @@
 error: identifier contains non-ASCII characters
-  --> $DIR/lint-non-ascii-idents.rs:4:7
+  --> $DIR/lint-non-ascii-idents.rs:3:7
    |
 LL | const חלודה: usize = 2;
    |       ^^^^^
    |
 note: the lint level is defined here
-  --> $DIR/lint-non-ascii-idents.rs:2:9
+  --> $DIR/lint-non-ascii-idents.rs:1:9
    |
 LL | #![deny(non_ascii_idents)]
    |         ^^^^^^^^^^^^^^^^
 
 error: identifier contains non-ASCII characters
-  --> $DIR/lint-non-ascii-idents.rs:6:4
+  --> $DIR/lint-non-ascii-idents.rs:5:4
    |
 LL | fn coöperation() {}
    |    ^^^^^^^^^^^
 
 error: identifier contains non-ASCII characters
-  --> $DIR/lint-non-ascii-idents.rs:9:9
+  --> $DIR/lint-non-ascii-idents.rs:8:9
    |
 LL |     let naïveté = 2;
    |         ^^^^^^^
diff --git a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-uncommon-codepoints.rs b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-uncommon-codepoints.rs
index b5e251e047b..81a3427a102 100644
--- a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-uncommon-codepoints.rs
+++ b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-uncommon-codepoints.rs
@@ -1,4 +1,3 @@
-#![feature(non_ascii_idents)]
 #![deny(uncommon_codepoints)]
 
 const µ: f64 = 0.000001; //~ ERROR identifier contains uncommon Unicode codepoints
diff --git a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-uncommon-codepoints.stderr b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-uncommon-codepoints.stderr
index 05ea3d5de7d..d435282a6e8 100644
--- a/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-uncommon-codepoints.stderr
+++ b/src/test/ui/lint/rfc-2457-non-ascii-idents/lint-uncommon-codepoints.stderr
@@ -1,23 +1,23 @@
 error: identifier contains uncommon Unicode codepoints
-  --> $DIR/lint-uncommon-codepoints.rs:4:7
+  --> $DIR/lint-uncommon-codepoints.rs:3:7
    |
 LL | const µ: f64 = 0.000001;
    |       ^
    |
 note: the lint level is defined here
-  --> $DIR/lint-uncommon-codepoints.rs:2:9
+  --> $DIR/lint-uncommon-codepoints.rs:1:9
    |
 LL | #![deny(uncommon_codepoints)]
    |         ^^^^^^^^^^^^^^^^^^^
 
 error: identifier contains uncommon Unicode codepoints
-  --> $DIR/lint-uncommon-codepoints.rs:6:4
+  --> $DIR/lint-uncommon-codepoints.rs:5:4
    |
 LL | fn dijkstra() {}
    |    ^^^^^^^
 
 error: identifier contains uncommon Unicode codepoints
-  --> $DIR/lint-uncommon-codepoints.rs:9:9
+  --> $DIR/lint-uncommon-codepoints.rs:8:9
    |
 LL |     let ㇻㇲㇳ = "rust";
    |         ^^^^^^
diff --git a/src/test/ui/lint/special-upper-lower-cases.rs b/src/test/ui/lint/special-upper-lower-cases.rs
index 71ebf05dd31..761be61fa07 100644
--- a/src/test/ui/lint/special-upper-lower-cases.rs
+++ b/src/test/ui/lint/special-upper-lower-cases.rs
@@ -5,7 +5,6 @@
 
 // check-pass
 
-#![feature(non_ascii_idents)]
 #![allow(uncommon_codepoints, unused)]
 
 struct 𝕟𝕠𝕥𝕒𝕔𝕒𝕞𝕖𝕝;
diff --git a/src/test/ui/lint/special-upper-lower-cases.stderr b/src/test/ui/lint/special-upper-lower-cases.stderr
index e3b451a15a2..2aa13c33be3 100644
--- a/src/test/ui/lint/special-upper-lower-cases.stderr
+++ b/src/test/ui/lint/special-upper-lower-cases.stderr
@@ -1,5 +1,5 @@
 warning: type `𝕟𝕠𝕥𝕒𝕔𝕒𝕞𝕖𝕝` should have an upper camel case name
-  --> $DIR/special-upper-lower-cases.rs:11:8
+  --> $DIR/special-upper-lower-cases.rs:10:8
    |
 LL | struct 𝕟𝕠𝕥𝕒𝕔𝕒𝕞𝕖𝕝;
    |        ^^^^^^^^^ should have an UpperCamelCase name
@@ -7,13 +7,13 @@ LL | struct 𝕟𝕠𝕥𝕒𝕔𝕒𝕞𝕖𝕝;
    = note: `#[warn(non_camel_case_types)]` on by default
 
 warning: type `𝕟𝕠𝕥_𝕒_𝕔𝕒𝕞𝕖𝕝` should have an upper camel case name
-  --> $DIR/special-upper-lower-cases.rs:15:8
+  --> $DIR/special-upper-lower-cases.rs:14:8
    |
 LL | struct 𝕟𝕠𝕥_𝕒_𝕔𝕒𝕞𝕖𝕝;
    |        ^^^^^^^^^^^ should have an UpperCamelCase name
 
 warning: static variable `𝗻𝗼𝗻𝘂𝗽𝗽𝗲𝗿𝗰𝗮𝘀𝗲` should have an upper case name
-  --> $DIR/special-upper-lower-cases.rs:18:8
+  --> $DIR/special-upper-lower-cases.rs:17:8
    |
 LL | static 𝗻𝗼𝗻𝘂𝗽𝗽𝗲𝗿𝗰𝗮𝘀𝗲: i32 = 1;
    |        ^^^^^^^^^^^^ should have an UPPER_CASE name
@@ -21,7 +21,7 @@ LL | static 𝗻𝗼𝗻𝘂𝗽𝗽𝗲𝗿𝗰𝗮𝘀𝗲: i32 = 1;
    = note: `#[warn(non_upper_case_globals)]` on by default
 
 warning: variable `𝓢𝓝𝓐𝓐𝓐𝓐𝓚𝓔𝓢` should have a snake case name
-  --> $DIR/special-upper-lower-cases.rs:22:9
+  --> $DIR/special-upper-lower-cases.rs:21:9
    |
 LL |     let 𝓢𝓝𝓐𝓐𝓐𝓐𝓚𝓔𝓢 = 1;
    |         ^^^^^^^^^ should have a snake_case name
diff --git a/src/test/ui/never_type/defaulted-never-note.rs b/src/test/ui/never_type/defaulted-never-note.rs
index c96c4784dcf..6979c3ec443 100644
--- a/src/test/ui/never_type/defaulted-never-note.rs
+++ b/src/test/ui/never_type/defaulted-never-note.rs
@@ -26,7 +26,9 @@ fn smeg() {
     foo(_x);
     //~^ ERROR the trait bound
     //~| NOTE the trait `ImplementedForUnitButNotNever` is not implemented
-    //~| NOTE the trait is implemented for `()`
+    //~| NOTE this trait is implemented for `()`
+    //~| NOTE this error might have been caused
+    //~| HELP did you intend
 }
 
 fn main() {
diff --git a/src/test/ui/never_type/defaulted-never-note.stderr b/src/test/ui/never_type/defaulted-never-note.stderr
index 69691883de1..99738375022 100644
--- a/src/test/ui/never_type/defaulted-never-note.stderr
+++ b/src/test/ui/never_type/defaulted-never-note.stderr
@@ -7,7 +7,9 @@ LL | fn foo<T: ImplementedForUnitButNotNever>(_t: T) {}
 LL |     foo(_x);
    |     ^^^ the trait `ImplementedForUnitButNotNever` is not implemented for `!`
    |
-   = note: the trait is implemented for `()`. Possibly this error has been caused by changes to Rust's type-inference algorithm (see issue #48950 <https://github.com/rust-lang/rust/issues/48950> for more information). Consider whether you meant to use the type `()` here instead.
+   = note: this trait is implemented for `()`.
+   = note: this error might have been caused by changes to Rust's type-inference algorithm (see issue #48950 <https://github.com/rust-lang/rust/issues/48950> for more information).
+   = help: did you intend to use the type `()` here instead?
 
 error: aborting due to previous error
 
diff --git a/src/test/ui/bad/bad-crate-name.rs b/src/test/ui/parser/bad-crate-name.rs
index 837d5c35412..837d5c35412 100644
--- a/src/test/ui/bad/bad-crate-name.rs
+++ b/src/test/ui/parser/bad-crate-name.rs
diff --git a/src/test/ui/bad/bad-crate-name.stderr b/src/test/ui/parser/bad-crate-name.stderr
index e015010da13..e015010da13 100644
--- a/src/test/ui/bad/bad-crate-name.stderr
+++ b/src/test/ui/parser/bad-crate-name.stderr
diff --git a/src/test/ui/parser/issue-48508.rs b/src/test/ui/parser/issue-48508.rs
index 8dc9351260e..37d04c5d65f 100644
--- a/src/test/ui/parser/issue-48508.rs
+++ b/src/test/ui/parser/issue-48508.rs
@@ -10,7 +10,6 @@
 // ignore-pretty issue #37195
 // ignore-asmjs wasm2js does not support source maps yet
 
-#![feature(non_ascii_idents)]
 #![allow(uncommon_codepoints)]
 
 #[path = "issue-48508-aux.rs"]
diff --git a/src/test/ui/parser/multibyte-char-use-seperator-issue-80134.rs b/src/test/ui/parser/multibyte-char-use-seperator-issue-80134.rs
index f3ae3aba9b9..7e7995d6724 100644
--- a/src/test/ui/parser/multibyte-char-use-seperator-issue-80134.rs
+++ b/src/test/ui/parser/multibyte-char-use-seperator-issue-80134.rs
@@ -4,9 +4,7 @@ fn main() {
     (()é);
     //~^ ERROR: expected one of `)`, `,`, `.`, `?`, or an operator
     //~| ERROR: cannot find value `é` in this scope
-    //~| ERROR: non-ascii idents are not fully supported
     (()氷);
     //~^ ERROR: expected one of `)`, `,`, `.`, `?`, or an operator
     //~| ERROR: cannot find value `氷` in this scope
-    //~| ERROR: non-ascii idents are not fully supported
 }
diff --git a/src/test/ui/parser/multibyte-char-use-seperator-issue-80134.stderr b/src/test/ui/parser/multibyte-char-use-seperator-issue-80134.stderr
index 892cc92b1bd..21e71aa1215 100644
--- a/src/test/ui/parser/multibyte-char-use-seperator-issue-80134.stderr
+++ b/src/test/ui/parser/multibyte-char-use-seperator-issue-80134.stderr
@@ -8,7 +8,7 @@ LL |     (()é);
    |        help: missing `,`
 
 error: expected one of `)`, `,`, `.`, `?`, or an operator, found `氷`
-  --> $DIR/multibyte-char-use-seperator-issue-80134.rs:8:8
+  --> $DIR/multibyte-char-use-seperator-issue-80134.rs:7:8
    |
 LL |     (()氷);
    |        -^
@@ -23,30 +23,11 @@ LL |     (()é);
    |        ^ not found in this scope
 
 error[E0425]: cannot find value `氷` in this scope
-  --> $DIR/multibyte-char-use-seperator-issue-80134.rs:8:8
+  --> $DIR/multibyte-char-use-seperator-issue-80134.rs:7:8
    |
 LL |     (()氷);
    |        ^^ not found in this scope
 
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/multibyte-char-use-seperator-issue-80134.rs:4:8
-   |
-LL |     (()é);
-   |        ^
-   |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
-
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/multibyte-char-use-seperator-issue-80134.rs:8:8
-   |
-LL |     (()氷);
-   |        ^^
-   |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
-
-error: aborting due to 6 previous errors
+error: aborting due to 4 previous errors
 
-Some errors have detailed explanations: E0425, E0658.
-For more information about an error, try `rustc --explain E0425`.
+For more information about this error, try `rustc --explain E0425`.
diff --git a/src/test/ui/bad/bad-env-capture.rs b/src/test/ui/resolve/bad-env-capture.rs
index 83fd2544fc8..83fd2544fc8 100644
--- a/src/test/ui/bad/bad-env-capture.rs
+++ b/src/test/ui/resolve/bad-env-capture.rs
diff --git a/src/test/ui/bad/bad-env-capture.stderr b/src/test/ui/resolve/bad-env-capture.stderr
index f78a38a3dd4..f78a38a3dd4 100644
--- a/src/test/ui/bad/bad-env-capture.stderr
+++ b/src/test/ui/resolve/bad-env-capture.stderr
diff --git a/src/test/ui/bad/bad-env-capture2.rs b/src/test/ui/resolve/bad-env-capture2.rs
index b04569c9d72..b04569c9d72 100644
--- a/src/test/ui/bad/bad-env-capture2.rs
+++ b/src/test/ui/resolve/bad-env-capture2.rs
diff --git a/src/test/ui/bad/bad-env-capture2.stderr b/src/test/ui/resolve/bad-env-capture2.stderr
index 57c807fd7df..57c807fd7df 100644
--- a/src/test/ui/bad/bad-env-capture2.stderr
+++ b/src/test/ui/resolve/bad-env-capture2.stderr
diff --git a/src/test/ui/bad/bad-env-capture3.rs b/src/test/ui/resolve/bad-env-capture3.rs
index 62f12fd1a6d..62f12fd1a6d 100644
--- a/src/test/ui/bad/bad-env-capture3.rs
+++ b/src/test/ui/resolve/bad-env-capture3.rs
diff --git a/src/test/ui/bad/bad-env-capture3.stderr b/src/test/ui/resolve/bad-env-capture3.stderr
index d6eb4f86e11..d6eb4f86e11 100644
--- a/src/test/ui/bad/bad-env-capture3.stderr
+++ b/src/test/ui/resolve/bad-env-capture3.stderr
diff --git a/src/test/ui/bad/bad-expr-path.rs b/src/test/ui/resolve/bad-expr-path.rs
index 31fc9cf2cb5..31fc9cf2cb5 100644
--- a/src/test/ui/bad/bad-expr-path.rs
+++ b/src/test/ui/resolve/bad-expr-path.rs
diff --git a/src/test/ui/bad/bad-expr-path.stderr b/src/test/ui/resolve/bad-expr-path.stderr
index 77c48c951ac..77c48c951ac 100644
--- a/src/test/ui/bad/bad-expr-path.stderr
+++ b/src/test/ui/resolve/bad-expr-path.stderr
diff --git a/src/test/ui/bad/bad-expr-path2.rs b/src/test/ui/resolve/bad-expr-path2.rs
index eb88edb9071..eb88edb9071 100644
--- a/src/test/ui/bad/bad-expr-path2.rs
+++ b/src/test/ui/resolve/bad-expr-path2.rs
diff --git a/src/test/ui/bad/bad-expr-path2.stderr b/src/test/ui/resolve/bad-expr-path2.stderr
index d06e1027179..d06e1027179 100644
--- a/src/test/ui/bad/bad-expr-path2.stderr
+++ b/src/test/ui/resolve/bad-expr-path2.stderr
diff --git a/src/test/ui/bad/bad-module.rs b/src/test/ui/resolve/bad-module.rs
index b23e97c2cf6..b23e97c2cf6 100644
--- a/src/test/ui/bad/bad-module.rs
+++ b/src/test/ui/resolve/bad-module.rs
diff --git a/src/test/ui/bad/bad-module.stderr b/src/test/ui/resolve/bad-module.stderr
index 581a6619814..581a6619814 100644
--- a/src/test/ui/bad/bad-module.stderr
+++ b/src/test/ui/resolve/bad-module.stderr
diff --git a/src/test/ui/bad/bad-type-env-capture.rs b/src/test/ui/resolve/bad-type-env-capture.rs
index 53dfb13139a..53dfb13139a 100644
--- a/src/test/ui/bad/bad-type-env-capture.rs
+++ b/src/test/ui/resolve/bad-type-env-capture.rs
diff --git a/src/test/ui/bad/bad-type-env-capture.stderr b/src/test/ui/resolve/bad-type-env-capture.stderr
index 6f24c0d8699..6f24c0d8699 100644
--- a/src/test/ui/bad/bad-type-env-capture.stderr
+++ b/src/test/ui/resolve/bad-type-env-capture.stderr
diff --git a/src/test/ui/rfc-2457/crate_name_nonascii_forbidden-1.rs b/src/test/ui/rfc-2457/crate_name_nonascii_forbidden-1.rs
index 310545b92d5..c07ba54af40 100644
--- a/src/test/ui/rfc-2457/crate_name_nonascii_forbidden-1.rs
+++ b/src/test/ui/rfc-2457/crate_name_nonascii_forbidden-1.rs
@@ -1,5 +1,3 @@
-#![feature(non_ascii_idents)]
-
 extern crate ьаг; //~ ERROR cannot load a crate with a non-ascii name `ьаг`
 
 fn main() {}
diff --git a/src/test/ui/rfc-2457/crate_name_nonascii_forbidden-1.stderr b/src/test/ui/rfc-2457/crate_name_nonascii_forbidden-1.stderr
index 11108f2fb86..a8f3abe599e 100644
--- a/src/test/ui/rfc-2457/crate_name_nonascii_forbidden-1.stderr
+++ b/src/test/ui/rfc-2457/crate_name_nonascii_forbidden-1.stderr
@@ -1,5 +1,5 @@
 error: cannot load a crate with a non-ascii name `ьаг`
-  --> $DIR/crate_name_nonascii_forbidden-1.rs:3:1
+  --> $DIR/crate_name_nonascii_forbidden-1.rs:1:1
    |
 LL | extern crate ьаг;
    | ^^^^^^^^^^^^^^^^^
diff --git a/src/test/ui/rfc-2457/crate_name_nonascii_forbidden-2.rs b/src/test/ui/rfc-2457/crate_name_nonascii_forbidden-2.rs
index 0249848b35a..f8e033937c6 100644
--- a/src/test/ui/rfc-2457/crate_name_nonascii_forbidden-2.rs
+++ b/src/test/ui/rfc-2457/crate_name_nonascii_forbidden-2.rs
@@ -1,6 +1,5 @@
 // compile-flags:--extern му_сгате
 // edition:2018
-#![feature(non_ascii_idents)]
 
 use му_сгате::baz; //~  ERROR cannot load a crate with a non-ascii name `му_сгате`
 
diff --git a/src/test/ui/rfc-2457/crate_name_nonascii_forbidden-2.stderr b/src/test/ui/rfc-2457/crate_name_nonascii_forbidden-2.stderr
index 8d3548ed33d..05fc4fb22ad 100644
--- a/src/test/ui/rfc-2457/crate_name_nonascii_forbidden-2.stderr
+++ b/src/test/ui/rfc-2457/crate_name_nonascii_forbidden-2.stderr
@@ -1,5 +1,5 @@
 error: cannot load a crate with a non-ascii name `му_сгате`
-  --> $DIR/crate_name_nonascii_forbidden-2.rs:5:5
+  --> $DIR/crate_name_nonascii_forbidden-2.rs:4:5
    |
 LL | use му_сгате::baz;
    |     ^^^^^^^^
diff --git a/src/test/ui/rfc-2457/extern_block_nonascii_forbidden.rs b/src/test/ui/rfc-2457/extern_block_nonascii_forbidden.rs
index c70ced731d5..ad682540430 100644
--- a/src/test/ui/rfc-2457/extern_block_nonascii_forbidden.rs
+++ b/src/test/ui/rfc-2457/extern_block_nonascii_forbidden.rs
@@ -1,5 +1,4 @@
 #![feature(extern_types)]
-#![feature(non_ascii_idents)]
 
 extern "C" {
     type 一; //~ items in `extern` blocks cannot use non-ascii identifiers
diff --git a/src/test/ui/rfc-2457/extern_block_nonascii_forbidden.stderr b/src/test/ui/rfc-2457/extern_block_nonascii_forbidden.stderr
index 3b18c06ec5c..ab8832e9163 100644
--- a/src/test/ui/rfc-2457/extern_block_nonascii_forbidden.stderr
+++ b/src/test/ui/rfc-2457/extern_block_nonascii_forbidden.stderr
@@ -1,5 +1,5 @@
 error: items in `extern` blocks cannot use non-ascii identifiers
-  --> $DIR/extern_block_nonascii_forbidden.rs:5:10
+  --> $DIR/extern_block_nonascii_forbidden.rs:4:10
    |
 LL | extern "C" {
    | ---------- in this `extern` block
@@ -9,7 +9,7 @@ LL |     type 一;
    = note: This limitation may be lifted in the future; see issue #83942 <https://github.com/rust-lang/rust/issues/83942> for more information
 
 error: items in `extern` blocks cannot use non-ascii identifiers
-  --> $DIR/extern_block_nonascii_forbidden.rs:6:8
+  --> $DIR/extern_block_nonascii_forbidden.rs:5:8
    |
 LL | extern "C" {
    | ---------- in this `extern` block
@@ -20,7 +20,7 @@ LL |     fn 二();
    = note: This limitation may be lifted in the future; see issue #83942 <https://github.com/rust-lang/rust/issues/83942> for more information
 
 error: items in `extern` blocks cannot use non-ascii identifiers
-  --> $DIR/extern_block_nonascii_forbidden.rs:7:12
+  --> $DIR/extern_block_nonascii_forbidden.rs:6:12
    |
 LL | extern "C" {
    | ---------- in this `extern` block
diff --git a/src/test/ui/rfc-2457/idents-normalized.rs b/src/test/ui/rfc-2457/idents-normalized.rs
index 109cec7548e..1023fee37d5 100644
--- a/src/test/ui/rfc-2457/idents-normalized.rs
+++ b/src/test/ui/rfc-2457/idents-normalized.rs
@@ -1,5 +1,4 @@
 // check-pass
-#![feature(non_ascii_idents)]
 
 struct Résumé; // ['LATIN SMALL LETTER E WITH ACUTE']
 
diff --git a/src/test/ui/rfc-2457/mod_file_nonascii_forbidden.rs b/src/test/ui/rfc-2457/mod_file_nonascii_forbidden.rs
index efd2932f152..e949e2319c1 100644
--- a/src/test/ui/rfc-2457/mod_file_nonascii_forbidden.rs
+++ b/src/test/ui/rfc-2457/mod_file_nonascii_forbidden.rs
@@ -1,5 +1,3 @@
-#![feature(non_ascii_idents)]
-
 mod řųśť; //~ trying to load file for
 //~^ file not found for
 
diff --git a/src/test/ui/rfc-2457/mod_file_nonascii_forbidden.stderr b/src/test/ui/rfc-2457/mod_file_nonascii_forbidden.stderr
index 6e06ab737c2..e857a1e60e5 100644
--- a/src/test/ui/rfc-2457/mod_file_nonascii_forbidden.stderr
+++ b/src/test/ui/rfc-2457/mod_file_nonascii_forbidden.stderr
@@ -1,5 +1,5 @@
 error[E0583]: file not found for module `řųśť`
-  --> $DIR/mod_file_nonascii_forbidden.rs:3:1
+  --> $DIR/mod_file_nonascii_forbidden.rs:1:1
    |
 LL | mod řųśť;
    | ^^^^^^^^^
@@ -7,7 +7,7 @@ LL | mod řųśť;
    = help: to create the module `řųśť`, create file "$DIR/řųśť.rs"
 
 error[E0754]: trying to load file for module `řųśť` with non-ascii identifier name
-  --> $DIR/mod_file_nonascii_forbidden.rs:3:5
+  --> $DIR/mod_file_nonascii_forbidden.rs:1:5
    |
 LL | mod řųśť;
    |     ^^^^
diff --git a/src/test/ui/rfc-2457/mod_file_nonascii_with_path_allowed.rs b/src/test/ui/rfc-2457/mod_file_nonascii_with_path_allowed.rs
index e9f3fba2fb0..94327846d61 100644
--- a/src/test/ui/rfc-2457/mod_file_nonascii_with_path_allowed.rs
+++ b/src/test/ui/rfc-2457/mod_file_nonascii_with_path_allowed.rs
@@ -1,5 +1,4 @@
 // check-pass
-#![feature(non_ascii_idents)]
 
 #[path="auxiliary/mod_file_nonascii_with_path_allowed-aux.rs"]
 mod řųśť;
diff --git a/src/test/ui/rfc-2457/mod_inline_nonascii_allowed.rs b/src/test/ui/rfc-2457/mod_inline_nonascii_allowed.rs
index dd27da432ba..e1d836b7c3e 100644
--- a/src/test/ui/rfc-2457/mod_inline_nonascii_allowed.rs
+++ b/src/test/ui/rfc-2457/mod_inline_nonascii_allowed.rs
@@ -1,5 +1,4 @@
 // check-pass
-#![feature(non_ascii_idents)]
 
 mod řųśť {
     const IS_GREAT: bool = true;
diff --git a/src/test/ui/rfc-2457/no_mangle_nonascii_forbidden.rs b/src/test/ui/rfc-2457/no_mangle_nonascii_forbidden.rs
index a408c975716..0325d6436ab 100644
--- a/src/test/ui/rfc-2457/no_mangle_nonascii_forbidden.rs
+++ b/src/test/ui/rfc-2457/no_mangle_nonascii_forbidden.rs
@@ -1,5 +1,3 @@
-#![feature(non_ascii_idents)]
-
 #[no_mangle]
 pub fn řųśť() {}  //~ `#[no_mangle]` requires ASCII identifier
 
diff --git a/src/test/ui/rfc-2457/no_mangle_nonascii_forbidden.stderr b/src/test/ui/rfc-2457/no_mangle_nonascii_forbidden.stderr
index 4ca83e41032..b4b2b0c7ee0 100644
--- a/src/test/ui/rfc-2457/no_mangle_nonascii_forbidden.stderr
+++ b/src/test/ui/rfc-2457/no_mangle_nonascii_forbidden.stderr
@@ -1,5 +1,5 @@
 error[E0754]: `#[no_mangle]` requires ASCII identifier
-  --> $DIR/no_mangle_nonascii_forbidden.rs:4:1
+  --> $DIR/no_mangle_nonascii_forbidden.rs:2:1
    |
 LL | pub fn řųśť() {}
    | ^^^^^^^^^^^^^
diff --git a/src/test/ui/bad/bad-const-type.rs b/src/test/ui/static/bad-const-type.rs
index 934ee353da2..934ee353da2 100644
--- a/src/test/ui/bad/bad-const-type.rs
+++ b/src/test/ui/static/bad-const-type.rs
diff --git a/src/test/ui/bad/bad-const-type.stderr b/src/test/ui/static/bad-const-type.stderr
index a9c84b4b41c..a9c84b4b41c 100644
--- a/src/test/ui/bad/bad-const-type.stderr
+++ b/src/test/ui/static/bad-const-type.stderr
diff --git a/src/test/ui/bad/bad-method-typaram-kind.rs b/src/test/ui/traits/bad-method-typaram-kind.rs
index b088eae1c87..b088eae1c87 100644
--- a/src/test/ui/bad/bad-method-typaram-kind.rs
+++ b/src/test/ui/traits/bad-method-typaram-kind.rs
diff --git a/src/test/ui/bad/bad-method-typaram-kind.stderr b/src/test/ui/traits/bad-method-typaram-kind.stderr
index fd3999ae6fb..fd3999ae6fb 100644
--- a/src/test/ui/bad/bad-method-typaram-kind.stderr
+++ b/src/test/ui/traits/bad-method-typaram-kind.stderr
diff --git a/src/test/ui/bad/bad-sized.rs b/src/test/ui/traits/bad-sized.rs
index a1521967978..a1521967978 100644
--- a/src/test/ui/bad/bad-sized.rs
+++ b/src/test/ui/traits/bad-sized.rs
diff --git a/src/test/ui/bad/bad-sized.stderr b/src/test/ui/traits/bad-sized.stderr
index 768893d6e25..768893d6e25 100644
--- a/src/test/ui/bad/bad-sized.stderr
+++ b/src/test/ui/traits/bad-sized.stderr
diff --git a/src/test/ui/utf8_idents-rpass.rs b/src/test/ui/utf8_idents-rpass.rs
index 582b67bc299..206744a58fd 100644
--- a/src/test/ui/utf8_idents-rpass.rs
+++ b/src/test/ui/utf8_idents-rpass.rs
@@ -2,8 +2,6 @@
 //
 #![allow(non_snake_case)]
 
-#![feature(non_ascii_idents)]
-
 pub fn main() {
     let ε = 0.00001f64;
     let Π = 3.14f64;
diff --git a/src/test/ui/utf8_idents.rs b/src/test/ui/utf8_idents.rs
index 6c54086cc20..1f6326dd94b 100644
--- a/src/test/ui/utf8_idents.rs
+++ b/src/test/ui/utf8_idents.rs
@@ -1,15 +1,16 @@
-#![allow(mixed_script_confusables)]
+// check-pass
+//
+#![allow(mixed_script_confusables, non_camel_case_types)]
 
 fn foo<
-    'β, //~ ERROR non-ascii idents are not fully supported
-    γ  //~ ERROR non-ascii idents are not fully supported
-       //~^ WARN type parameter `γ` should have an upper camel case name
+    'β,
+    γ
 >() {}
 
 struct X {
-    δ: usize //~ ERROR non-ascii idents are not fully supported
+    δ: usize
 }
 
 pub fn main() {
-    let α = 0.00001f64; //~ ERROR non-ascii idents are not fully supported
+    let α = 0.00001f64;
 }
diff --git a/src/test/ui/utf8_idents.stderr b/src/test/ui/utf8_idents.stderr
deleted file mode 100644
index 2fc0b1c39ef..00000000000
--- a/src/test/ui/utf8_idents.stderr
+++ /dev/null
@@ -1,47 +0,0 @@
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/utf8_idents.rs:4:5
-   |
-LL |     'β,
-   |     ^^
-   |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
-
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/utf8_idents.rs:5:5
-   |
-LL |     γ
-   |     ^
-   |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
-
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/utf8_idents.rs:10:5
-   |
-LL |     δ: usize
-   |     ^
-   |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
-
-error[E0658]: non-ascii idents are not fully supported
-  --> $DIR/utf8_idents.rs:14:9
-   |
-LL |     let α = 0.00001f64;
-   |         ^
-   |
-   = note: see issue #55467 <https://github.com/rust-lang/rust/issues/55467> for more information
-   = help: add `#![feature(non_ascii_idents)]` to the crate attributes to enable
-
-warning: type parameter `γ` should have an upper camel case name
-  --> $DIR/utf8_idents.rs:5:5
-   |
-LL |     γ
-   |     ^ help: convert the identifier to upper camel case: `Γ`
-   |
-   = note: `#[warn(non_camel_case_types)]` on by default
-
-error: aborting due to 4 previous errors; 1 warning emitted
-
-For more information about this error, try `rustc --explain E0658`.
diff --git a/src/tools/clippy/tests/ui/filter_methods.rs b/src/tools/clippy/tests/ui/filter_methods.rs
index 51450241619..96121b114ce 100644
--- a/src/tools/clippy/tests/ui/filter_methods.rs
+++ b/src/tools/clippy/tests/ui/filter_methods.rs
@@ -1,5 +1,5 @@
 #![warn(clippy::all, clippy::pedantic)]
-#![allow(clippy::clippy::let_underscore_drop)]
+#![allow(clippy::let_underscore_drop)]
 #![allow(clippy::missing_docs_in_private_items)]
 
 fn main() {
diff --git a/src/tools/clippy/tests/ui/wildcard_enum_match_arm.fixed b/src/tools/clippy/tests/ui/wildcard_enum_match_arm.fixed
index fd754e4c794..129d82652d7 100644
--- a/src/tools/clippy/tests/ui/wildcard_enum_match_arm.fixed
+++ b/src/tools/clippy/tests/ui/wildcard_enum_match_arm.fixed
@@ -77,7 +77,7 @@ fn main() {
     let error_kind = ErrorKind::NotFound;
     match error_kind {
         ErrorKind::NotFound => {},
-        ErrorKind::PermissionDenied | ErrorKind::ConnectionRefused | ErrorKind::ConnectionReset | ErrorKind::ConnectionAborted | ErrorKind::NotConnected | ErrorKind::AddrInUse | ErrorKind::AddrNotAvailable | ErrorKind::BrokenPipe | ErrorKind::AlreadyExists | ErrorKind::WouldBlock | ErrorKind::InvalidInput | ErrorKind::InvalidData | ErrorKind::TimedOut | ErrorKind::WriteZero | ErrorKind::Interrupted | ErrorKind::Other | ErrorKind::UnexpectedEof | _ => {},
+        ErrorKind::PermissionDenied | ErrorKind::ConnectionRefused | ErrorKind::ConnectionReset | ErrorKind::ConnectionAborted | ErrorKind::NotConnected | ErrorKind::AddrInUse | ErrorKind::AddrNotAvailable | ErrorKind::BrokenPipe | ErrorKind::AlreadyExists | ErrorKind::WouldBlock | ErrorKind::InvalidInput | ErrorKind::InvalidData | ErrorKind::TimedOut | ErrorKind::WriteZero | ErrorKind::Interrupted | ErrorKind::Other | ErrorKind::UnexpectedEof | ErrorKind::Unsupported | _ => {},
     }
     match error_kind {
         ErrorKind::NotFound => {},
@@ -98,6 +98,7 @@ fn main() {
         ErrorKind::Interrupted => {},
         ErrorKind::Other => {},
         ErrorKind::UnexpectedEof => {},
+        ErrorKind::Unsupported => {},
         _ => {},
     }
 }
diff --git a/src/tools/clippy/tests/ui/wildcard_enum_match_arm.rs b/src/tools/clippy/tests/ui/wildcard_enum_match_arm.rs
index 2dbf726d5d0..028ecb63e7e 100644
--- a/src/tools/clippy/tests/ui/wildcard_enum_match_arm.rs
+++ b/src/tools/clippy/tests/ui/wildcard_enum_match_arm.rs
@@ -98,6 +98,7 @@ fn main() {
         ErrorKind::Interrupted => {},
         ErrorKind::Other => {},
         ErrorKind::UnexpectedEof => {},
+        ErrorKind::Unsupported => {},
         _ => {},
     }
 }
diff --git a/src/tools/clippy/tests/ui/wildcard_enum_match_arm.stderr b/src/tools/clippy/tests/ui/wildcard_enum_match_arm.stderr
index a513a62c748..fd45cad00d6 100644
--- a/src/tools/clippy/tests/ui/wildcard_enum_match_arm.stderr
+++ b/src/tools/clippy/tests/ui/wildcard_enum_match_arm.stderr
@@ -32,7 +32,7 @@ error: wildcard matches known variants and will also match future added variants
   --> $DIR/wildcard_enum_match_arm.rs:80:9
    |
 LL |         _ => {},
-   |         ^ help: try this: `ErrorKind::PermissionDenied | ErrorKind::ConnectionRefused | ErrorKind::ConnectionReset | ErrorKind::ConnectionAborted | ErrorKind::NotConnected | ErrorKind::AddrInUse | ErrorKind::AddrNotAvailable | ErrorKind::BrokenPipe | ErrorKind::AlreadyExists | ErrorKind::WouldBlock | ErrorKind::InvalidInput | ErrorKind::InvalidData | ErrorKind::TimedOut | ErrorKind::WriteZero | ErrorKind::Interrupted | ErrorKind::Other | ErrorKind::UnexpectedEof | _`
+   |         ^ help: try this: `ErrorKind::PermissionDenied | ErrorKind::ConnectionRefused | ErrorKind::ConnectionReset | ErrorKind::ConnectionAborted | ErrorKind::NotConnected | ErrorKind::AddrInUse | ErrorKind::AddrNotAvailable | ErrorKind::BrokenPipe | ErrorKind::AlreadyExists | ErrorKind::WouldBlock | ErrorKind::InvalidInput | ErrorKind::InvalidData | ErrorKind::TimedOut | ErrorKind::WriteZero | ErrorKind::Interrupted | ErrorKind::Other | ErrorKind::UnexpectedEof | ErrorKind::Unsupported | _`
 
 error: aborting due to 5 previous errors
 
diff --git a/src/tools/tidy/src/ui_tests.rs b/src/tools/tidy/src/ui_tests.rs
index 7cc660454b4..8334bc68ae7 100644
--- a/src/tools/tidy/src/ui_tests.rs
+++ b/src/tools/tidy/src/ui_tests.rs
@@ -7,7 +7,7 @@ use std::path::Path;
 
 const ENTRY_LIMIT: usize = 1000;
 // FIXME: The following limits should be reduced eventually.
-const ROOT_ENTRY_LIMIT: usize = 1390;
+const ROOT_ENTRY_LIMIT: usize = 1388;
 const ISSUES_ENTRY_LIMIT: usize = 2551;
 
 fn check_entries(path: &Path, bad: &mut bool) {