Stabilize const_intrinsic_copy

This commit is contained in:
Yuki Okushi 2022-05-22 21:29:54 +09:00
parent e45d9973b2
commit 2b58e6314a
No known key found for this signature in database
GPG Key ID: 379CEEFDD63E5DD7
10 changed files with 19 additions and 22 deletions

View File

@ -7,7 +7,6 @@
#![feature(const_convert)] #![feature(const_convert)]
#![feature(const_cow_is_borrowed)] #![feature(const_cow_is_borrowed)]
#![feature(const_heap)] #![feature(const_heap)]
#![feature(const_intrinsic_copy)]
#![feature(const_mut_refs)] #![feature(const_mut_refs)]
#![feature(const_nonnull_slice_from_raw_parts)] #![feature(const_nonnull_slice_from_raw_parts)]
#![feature(const_ptr_write)] #![feature(const_ptr_write)]

View File

@ -2118,11 +2118,11 @@ pub(crate) fn is_nonoverlapping<T>(src: *const T, dst: *const T, count: usize) -
/// [`Vec::append`]: ../../std/vec/struct.Vec.html#method.append /// [`Vec::append`]: ../../std/vec/struct.Vec.html#method.append
#[doc(alias = "memcpy")] #[doc(alias = "memcpy")]
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_unstable(feature = "const_intrinsic_copy", issue = "80697")] #[rustc_const_stable(feature = "const_intrinsic_copy", since = "1.63.0")]
#[inline] #[inline]
pub const unsafe fn copy_nonoverlapping<T>(src: *const T, dst: *mut T, count: usize) { pub const unsafe fn copy_nonoverlapping<T>(src: *const T, dst: *mut T, count: usize) {
extern "rust-intrinsic" { extern "rust-intrinsic" {
#[rustc_const_unstable(feature = "const_intrinsic_copy", issue = "80697")] #[rustc_const_stable(feature = "const_intrinsic_copy", since = "1.63.0")]
pub fn copy_nonoverlapping<T>(src: *const T, dst: *mut T, count: usize); pub fn copy_nonoverlapping<T>(src: *const T, dst: *mut T, count: usize);
} }
@ -2200,11 +2200,11 @@ pub const unsafe fn copy_nonoverlapping<T>(src: *const T, dst: *mut T, count: us
/// ``` /// ```
#[doc(alias = "memmove")] #[doc(alias = "memmove")]
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_unstable(feature = "const_intrinsic_copy", issue = "80697")] #[rustc_const_stable(feature = "const_intrinsic_copy", since = "1.63.0")]
#[inline] #[inline]
pub const unsafe fn copy<T>(src: *const T, dst: *mut T, count: usize) { pub const unsafe fn copy<T>(src: *const T, dst: *mut T, count: usize) {
extern "rust-intrinsic" { extern "rust-intrinsic" {
#[rustc_const_unstable(feature = "const_intrinsic_copy", issue = "80697")] #[rustc_const_stable(feature = "const_intrinsic_copy", since = "1.63.0")]
fn copy<T>(src: *const T, dst: *mut T, count: usize); fn copy<T>(src: *const T, dst: *mut T, count: usize);
} }

View File

@ -114,7 +114,6 @@
#![feature(const_convert)] #![feature(const_convert)]
#![feature(const_inherent_unchecked_arith)] #![feature(const_inherent_unchecked_arith)]
#![feature(const_int_unchecked_arith)] #![feature(const_int_unchecked_arith)]
#![feature(const_intrinsic_copy)]
#![feature(const_intrinsic_forget)] #![feature(const_intrinsic_forget)]
#![feature(const_likely)] #![feature(const_likely)]
#![feature(const_maybe_uninit_uninit_array)] #![feature(const_maybe_uninit_uninit_array)]

View File

@ -1199,7 +1199,7 @@ impl<T: ?Sized> *const T {
/// See [`ptr::copy`] for safety concerns and examples. /// See [`ptr::copy`] for safety concerns and examples.
/// ///
/// [`ptr::copy`]: crate::ptr::copy() /// [`ptr::copy`]: crate::ptr::copy()
#[rustc_const_unstable(feature = "const_intrinsic_copy", issue = "80697")] #[rustc_const_stable(feature = "const_intrinsic_copy", since = "1.63.0")]
#[stable(feature = "pointer_methods", since = "1.26.0")] #[stable(feature = "pointer_methods", since = "1.26.0")]
#[inline] #[inline]
pub const unsafe fn copy_to(self, dest: *mut T, count: usize) pub const unsafe fn copy_to(self, dest: *mut T, count: usize)
@ -1218,7 +1218,7 @@ impl<T: ?Sized> *const T {
/// See [`ptr::copy_nonoverlapping`] for safety concerns and examples. /// See [`ptr::copy_nonoverlapping`] for safety concerns and examples.
/// ///
/// [`ptr::copy_nonoverlapping`]: crate::ptr::copy_nonoverlapping() /// [`ptr::copy_nonoverlapping`]: crate::ptr::copy_nonoverlapping()
#[rustc_const_unstable(feature = "const_intrinsic_copy", issue = "80697")] #[rustc_const_stable(feature = "const_intrinsic_copy", since = "1.63.0")]
#[stable(feature = "pointer_methods", since = "1.26.0")] #[stable(feature = "pointer_methods", since = "1.26.0")]
#[inline] #[inline]
pub const unsafe fn copy_to_nonoverlapping(self, dest: *mut T, count: usize) pub const unsafe fn copy_to_nonoverlapping(self, dest: *mut T, count: usize)

View File

@ -1136,7 +1136,7 @@ pub const unsafe fn read<T>(src: *const T) -> T {
// We are calling the intrinsics directly to avoid function calls in the generated code // We are calling the intrinsics directly to avoid function calls in the generated code
// as `intrinsics::copy_nonoverlapping` is a wrapper function. // as `intrinsics::copy_nonoverlapping` is a wrapper function.
extern "rust-intrinsic" { extern "rust-intrinsic" {
#[rustc_const_unstable(feature = "const_intrinsic_copy", issue = "80697")] #[rustc_const_stable(feature = "const_intrinsic_copy", since = "1.63.0")]
fn copy_nonoverlapping<T>(src: *const T, dst: *mut T, count: usize); fn copy_nonoverlapping<T>(src: *const T, dst: *mut T, count: usize);
} }
@ -1331,7 +1331,7 @@ pub const unsafe fn write<T>(dst: *mut T, src: T) {
// We are calling the intrinsics directly to avoid function calls in the generated code // We are calling the intrinsics directly to avoid function calls in the generated code
// as `intrinsics::copy_nonoverlapping` is a wrapper function. // as `intrinsics::copy_nonoverlapping` is a wrapper function.
extern "rust-intrinsic" { extern "rust-intrinsic" {
#[rustc_const_unstable(feature = "const_intrinsic_copy", issue = "80697")] #[rustc_const_stable(feature = "const_intrinsic_copy", since = "1.63.0")]
fn copy_nonoverlapping<T>(src: *const T, dst: *mut T, count: usize); fn copy_nonoverlapping<T>(src: *const T, dst: *mut T, count: usize);
} }

View File

@ -1311,7 +1311,7 @@ impl<T: ?Sized> *mut T {
/// See [`ptr::copy`] for safety concerns and examples. /// See [`ptr::copy`] for safety concerns and examples.
/// ///
/// [`ptr::copy`]: crate::ptr::copy() /// [`ptr::copy`]: crate::ptr::copy()
#[rustc_const_unstable(feature = "const_intrinsic_copy", issue = "80697")] #[rustc_const_stable(feature = "const_intrinsic_copy", since = "1.63.0")]
#[stable(feature = "pointer_methods", since = "1.26.0")] #[stable(feature = "pointer_methods", since = "1.26.0")]
#[inline(always)] #[inline(always)]
pub const unsafe fn copy_to(self, dest: *mut T, count: usize) pub const unsafe fn copy_to(self, dest: *mut T, count: usize)
@ -1330,7 +1330,7 @@ impl<T: ?Sized> *mut T {
/// See [`ptr::copy_nonoverlapping`] for safety concerns and examples. /// See [`ptr::copy_nonoverlapping`] for safety concerns and examples.
/// ///
/// [`ptr::copy_nonoverlapping`]: crate::ptr::copy_nonoverlapping() /// [`ptr::copy_nonoverlapping`]: crate::ptr::copy_nonoverlapping()
#[rustc_const_unstable(feature = "const_intrinsic_copy", issue = "80697")] #[rustc_const_stable(feature = "const_intrinsic_copy", since = "1.63.0")]
#[stable(feature = "pointer_methods", since = "1.26.0")] #[stable(feature = "pointer_methods", since = "1.26.0")]
#[inline(always)] #[inline(always)]
pub const unsafe fn copy_to_nonoverlapping(self, dest: *mut T, count: usize) pub const unsafe fn copy_to_nonoverlapping(self, dest: *mut T, count: usize)
@ -1349,7 +1349,7 @@ impl<T: ?Sized> *mut T {
/// See [`ptr::copy`] for safety concerns and examples. /// See [`ptr::copy`] for safety concerns and examples.
/// ///
/// [`ptr::copy`]: crate::ptr::copy() /// [`ptr::copy`]: crate::ptr::copy()
#[rustc_const_unstable(feature = "const_intrinsic_copy", issue = "80697")] #[rustc_const_stable(feature = "const_intrinsic_copy", since = "1.63.0")]
#[stable(feature = "pointer_methods", since = "1.26.0")] #[stable(feature = "pointer_methods", since = "1.26.0")]
#[inline(always)] #[inline(always)]
pub const unsafe fn copy_from(self, src: *const T, count: usize) pub const unsafe fn copy_from(self, src: *const T, count: usize)
@ -1368,7 +1368,7 @@ impl<T: ?Sized> *mut T {
/// See [`ptr::copy_nonoverlapping`] for safety concerns and examples. /// See [`ptr::copy_nonoverlapping`] for safety concerns and examples.
/// ///
/// [`ptr::copy_nonoverlapping`]: crate::ptr::copy_nonoverlapping() /// [`ptr::copy_nonoverlapping`]: crate::ptr::copy_nonoverlapping()
#[rustc_const_unstable(feature = "const_intrinsic_copy", issue = "80697")] #[rustc_const_stable(feature = "const_intrinsic_copy", since = "1.63.0")]
#[stable(feature = "pointer_methods", since = "1.26.0")] #[stable(feature = "pointer_methods", since = "1.26.0")]
#[inline(always)] #[inline(always)]
pub const unsafe fn copy_from_nonoverlapping(self, src: *const T, count: usize) pub const unsafe fn copy_from_nonoverlapping(self, src: *const T, count: usize)

View File

@ -84,7 +84,6 @@
#![feature(const_option)] #![feature(const_option)]
#![feature(const_option_ext)] #![feature(const_option_ext)]
#![feature(const_result)] #![feature(const_result)]
#![feature(const_intrinsic_copy)]
#![feature(integer_atomics)] #![feature(integer_atomics)]
#![feature(int_roundings)] #![feature(int_roundings)]
#![feature(slice_group_by)] #![feature(slice_group_by)]

View File

@ -2,14 +2,14 @@
// ignore-tidy-linelength // ignore-tidy-linelength
#![feature(intrinsics, staged_api)] #![feature(intrinsics, staged_api)]
#![feature(const_mut_refs, const_intrinsic_copy)] #![feature(const_mut_refs)]
use std::mem; use std::mem;
extern "rust-intrinsic" { extern "rust-intrinsic" {
#[rustc_const_unstable(feature = "const_intrinsic_copy", issue = "80697")] #[rustc_const_stable(feature = "const_intrinsic_copy", since = "1.63.0")]
fn copy_nonoverlapping<T>(src: *const T, dst: *mut T, count: usize); fn copy_nonoverlapping<T>(src: *const T, dst: *mut T, count: usize);
#[rustc_const_unstable(feature = "const_intrinsic_copy", issue = "80697")] #[rustc_const_stable(feature = "const_intrinsic_copy", since = "1.63.0")]
fn copy<T>(src: *const T, dst: *mut T, count: usize); fn copy<T>(src: *const T, dst: *mut T, count: usize);
} }

View File

@ -1,8 +1,8 @@
#![feature(intrinsics, staged_api, const_intrinsic_copy)] #![feature(intrinsics, staged_api)]
#![stable(feature = "core", since = "1.6.0")] #![stable(feature = "core", since = "1.6.0")]
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_unstable(feature = "const_intrinsic_copy", issue = "80697")] #[rustc_const_stable(feature = "const_intrinsic_copy", since = "1.63.0")]
#[inline] #[inline]
pub const unsafe fn copy<T>(src: *const T, dst: *mut T, count: usize) { pub const unsafe fn copy<T>(src: *const T, dst: *mut T, count: usize) {
// Const stability attributes are not inherited from parent items. // Const stability attributes are not inherited from parent items.

View File

@ -1,4 +1,4 @@
#![feature(intrinsics, staged_api, const_intrinsic_copy)] #![feature(intrinsics, staged_api)]
#![stable(feature = "core", since = "1.6.0")] #![stable(feature = "core", since = "1.6.0")]
extern "rust-intrinsic" { extern "rust-intrinsic" {
@ -6,7 +6,7 @@ extern "rust-intrinsic" {
} }
#[stable(feature = "rust1", since = "1.0.0")] #[stable(feature = "rust1", since = "1.0.0")]
#[rustc_const_unstable(feature = "const_intrinsic_copy", issue = "80697")] #[rustc_const_stable(feature = "const_intrinsic_copy", since = "1.63.0")]
#[inline] #[inline]
pub const unsafe fn stuff<T>(src: *const T, dst: *mut T, count: usize) { pub const unsafe fn stuff<T>(src: *const T, dst: *mut T, count: usize) {
unsafe { copy(src, dst, count) } //~ ERROR cannot call non-const fn unsafe { copy(src, dst, count) } //~ ERROR cannot call non-const fn