mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-21 14:23:45 +00:00
rename rustc_const_stable_intrinsic -> rustc_intrinsic_const_stable_indirect
This commit is contained in:
parent
3fb7e441ae
commit
9d4b1b2db4
@ -403,7 +403,7 @@ const_eval_uninhabited_enum_variant_written =
|
||||
const_eval_unmarked_const_fn_exposed = `{$def_path}` cannot be (indirectly) exposed to stable
|
||||
.help = either mark the callee as `#[rustc_const_stable_indirect]`, or the caller as `#[rustc_const_unstable]`
|
||||
const_eval_unmarked_intrinsic_exposed = intrinsic `{$def_path}` cannot be (indirectly) exposed to stable
|
||||
.help = mark the caller as `#[rustc_const_unstable]`, or mark the intrinsic `#[rustc_const_stable_intrinsic]` (but this requires team approval)
|
||||
.help = mark the caller as `#[rustc_const_unstable]`, or mark the intrinsic `#[rustc_intrinsic_const_stable_indirect]` (but this requires team approval)
|
||||
|
||||
const_eval_unreachable = entering unreachable code
|
||||
const_eval_unreachable_unwind =
|
||||
|
@ -760,7 +760,7 @@ impl<'tcx> Visitor<'tcx> for Checker<'_, 'tcx> {
|
||||
Some(ConstStability { level: StabilityLevel::Stable { .. }, .. }) => {
|
||||
// All good. Note that a `#[rustc_const_stable]` intrinsic (meaning it
|
||||
// can be *directly* invoked from stable const code) does not always
|
||||
// have the `#[rustc_const_stable_intrinsic]` attribute (which controls
|
||||
// have the `#[rustc_intrinsic_const_stable_indirect]` attribute (which controls
|
||||
// exposing an intrinsic indirectly); we accept this call anyway.
|
||||
}
|
||||
}
|
||||
|
@ -838,7 +838,7 @@ pub const BUILTIN_ATTRIBUTES: &[BuiltinAttribute] = &[
|
||||
template!(Word), WarnFollowing, EncodeCrossCrate::No, IMPL_DETAIL,
|
||||
),
|
||||
rustc_attr!(
|
||||
rustc_const_stable_intrinsic, Normal,
|
||||
rustc_intrinsic_const_stable_indirect, Normal,
|
||||
template!(Word), WarnFollowing, EncodeCrossCrate::No, IMPL_DETAIL,
|
||||
),
|
||||
gated!(
|
||||
|
@ -1793,7 +1793,7 @@ pub fn intrinsic_raw(tcx: TyCtxt<'_>, def_id: LocalDefId) -> Option<ty::Intrinsi
|
||||
Some(ty::IntrinsicDef {
|
||||
name: tcx.item_name(def_id.into()),
|
||||
must_be_overridden: tcx.has_attr(def_id, sym::rustc_intrinsic_must_be_overridden),
|
||||
const_stable: tcx.has_attr(def_id, sym::rustc_const_stable_intrinsic),
|
||||
const_stable: tcx.has_attr(def_id, sym::rustc_intrinsic_const_stable_indirect),
|
||||
})
|
||||
} else {
|
||||
None
|
||||
|
@ -1666,7 +1666,6 @@ symbols! {
|
||||
rustc_const_panic_str,
|
||||
rustc_const_stable,
|
||||
rustc_const_stable_indirect,
|
||||
rustc_const_stable_intrinsic,
|
||||
rustc_const_unstable,
|
||||
rustc_conversion_suggestion,
|
||||
rustc_deallocator,
|
||||
@ -1696,6 +1695,7 @@ symbols! {
|
||||
rustc_inherit_overflow_checks,
|
||||
rustc_insignificant_dtor,
|
||||
rustc_intrinsic,
|
||||
rustc_intrinsic_const_stable_indirect,
|
||||
rustc_intrinsic_must_be_overridden,
|
||||
rustc_layout,
|
||||
rustc_layout_scalar_valid_range_end,
|
||||
|
@ -15,7 +15,7 @@
|
||||
//! and make the intrinsic declaration a `const fn`.
|
||||
//!
|
||||
//! If an intrinsic is supposed to be used from a `const fn` with a `rustc_const_stable` attribute,
|
||||
//! `#[rustc_const_stable_intrinsic]` needs to be added to the intrinsic. Such a change requires
|
||||
//! `#[rustc_intrinsic_const_stable_indirect]` needs to be added to the intrinsic. Such a change requires
|
||||
//! T-lang approval, because it may bake a feature into the language that cannot be replicated in
|
||||
//! user code without compiler support.
|
||||
//!
|
||||
@ -1435,7 +1435,7 @@ pub fn abort() -> ! {
|
||||
bootstrap,
|
||||
rustc_const_stable(feature = "const_unreachable_unchecked", since = "1.57.0")
|
||||
)]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -1454,7 +1454,7 @@ pub const unsafe fn unreachable() -> ! {
|
||||
///
|
||||
/// The stabilized version of this intrinsic is [`core::hint::assert_unchecked`].
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_assume", since = "1.77.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[unstable(feature = "core_intrinsics", issue = "none")]
|
||||
#[rustc_intrinsic]
|
||||
@ -1571,7 +1571,7 @@ pub fn select_unpredictable<T>(b: bool, true_val: T, false_val: T) -> T {
|
||||
///
|
||||
/// This intrinsic does not have a stable counterpart.
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_assert_type", since = "1.59.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -1584,7 +1584,7 @@ pub const fn assert_inhabited<T>() {
|
||||
///
|
||||
/// This intrinsic does not have a stable counterpart.
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_assert_type2", since = "1.75.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -1596,7 +1596,7 @@ pub const fn assert_zero_valid<T>() {
|
||||
///
|
||||
/// This intrinsic does not have a stable counterpart.
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_assert_type2", since = "1.75.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -1613,7 +1613,7 @@ pub const fn assert_mem_uninitialized_valid<T>() {
|
||||
///
|
||||
/// Consider using [`core::panic::Location::caller`] instead.
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_caller_location", since = "1.79.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -1631,7 +1631,7 @@ pub const fn caller_location() -> &'static crate::panic::Location<'static> {
|
||||
/// Therefore, implementations must not require the user to uphold
|
||||
/// any safety invariants.
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_intrinsic_forget", since = "1.83.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -1945,7 +1945,7 @@ pub const unsafe fn transmute<Src, Dst>(_src: Src) -> Dst {
|
||||
/// This is not expected to ever be exposed directly to users, rather it
|
||||
/// may eventually be exposed through some more-constrained API.
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_transmute", since = "1.56.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -1967,7 +1967,7 @@ pub const unsafe fn transmute_unchecked<Src, Dst>(_src: Src) -> Dst {
|
||||
///
|
||||
/// The stabilized version of this intrinsic is [`mem::needs_drop`](crate::mem::needs_drop).
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_needs_drop", since = "1.40.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -1993,7 +1993,7 @@ pub const fn needs_drop<T: ?Sized>() -> bool {
|
||||
/// The stabilized version of this intrinsic is [`pointer::offset`].
|
||||
#[must_use = "returns a new pointer rather than modifying its argument"]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_ptr_offset", since = "1.61.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -2016,7 +2016,7 @@ pub const unsafe fn offset<Ptr, Delta>(_dst: Ptr, _offset: Delta) -> Ptr {
|
||||
/// The stabilized version of this intrinsic is [`pointer::wrapping_offset`].
|
||||
#[must_use = "returns a new pointer rather than modifying its argument"]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_ptr_offset", since = "1.61.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -2724,7 +2724,7 @@ pub fn frem_algebraic<T: Copy>(_a: T, _b: T) -> T {
|
||||
/// primitives via the `count_ones` method. For example,
|
||||
/// [`u32::count_ones`]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_ctpop", since = "1.40.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -2769,7 +2769,7 @@ pub const fn ctpop<T: Copy>(_x: T) -> u32 {
|
||||
/// assert_eq!(num_leading, 16);
|
||||
/// ```
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_ctlz", since = "1.40.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -2795,7 +2795,7 @@ pub const fn ctlz<T: Copy>(_x: T) -> u32 {
|
||||
/// assert_eq!(num_leading, 3);
|
||||
/// ```
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "constctlz", since = "1.50.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -2840,7 +2840,7 @@ pub const unsafe fn ctlz_nonzero<T: Copy>(_x: T) -> u32 {
|
||||
/// assert_eq!(num_trailing, 16);
|
||||
/// ```
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_cttz", since = "1.40.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -2866,7 +2866,7 @@ pub const fn cttz<T: Copy>(_x: T) -> u32 {
|
||||
/// assert_eq!(num_trailing, 3);
|
||||
/// ```
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_cttz_nonzero", since = "1.53.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -2885,7 +2885,7 @@ pub const unsafe fn cttz_nonzero<T: Copy>(_x: T) -> u32 {
|
||||
/// primitives via the `swap_bytes` method. For example,
|
||||
/// [`u32::swap_bytes`]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_bswap", since = "1.40.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -2904,7 +2904,7 @@ pub const fn bswap<T: Copy>(_x: T) -> T {
|
||||
/// primitives via the `reverse_bits` method. For example,
|
||||
/// [`u32::reverse_bits`]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_bitreverse", since = "1.40.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -2937,7 +2937,7 @@ pub const fn three_way_compare<T: Copy>(_lhs: T, _rhss: T) -> crate::cmp::Orderi
|
||||
/// primitives via the `overflowing_add` method. For example,
|
||||
/// [`u32::overflowing_add`]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_int_overflow", since = "1.40.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -2956,7 +2956,7 @@ pub const fn add_with_overflow<T: Copy>(_x: T, _y: T) -> (T, bool) {
|
||||
/// primitives via the `overflowing_sub` method. For example,
|
||||
/// [`u32::overflowing_sub`]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_int_overflow", since = "1.40.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -2975,7 +2975,7 @@ pub const fn sub_with_overflow<T: Copy>(_x: T, _y: T) -> (T, bool) {
|
||||
/// primitives via the `overflowing_mul` method. For example,
|
||||
/// [`u32::overflowing_mul`]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_int_overflow", since = "1.40.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -3002,7 +3002,7 @@ pub const unsafe fn exact_div<T: Copy>(_x: T, _y: T) -> T {
|
||||
/// primitives via the `checked_div` method. For example,
|
||||
/// [`u32::checked_div`]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_int_unchecked_div", since = "1.52.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -3016,7 +3016,7 @@ pub const unsafe fn unchecked_div<T: Copy>(_x: T, _y: T) -> T {
|
||||
/// primitives via the `checked_rem` method. For example,
|
||||
/// [`u32::checked_rem`]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_int_unchecked_rem", since = "1.52.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -3031,7 +3031,7 @@ pub const unsafe fn unchecked_rem<T: Copy>(_x: T, _y: T) -> T {
|
||||
/// primitives via the `checked_shl` method. For example,
|
||||
/// [`u32::checked_shl`]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_int_unchecked", since = "1.40.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -3045,7 +3045,7 @@ pub const unsafe fn unchecked_shl<T: Copy, U: Copy>(_x: T, _y: U) -> T {
|
||||
/// primitives via the `checked_shr` method. For example,
|
||||
/// [`u32::checked_shr`]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_int_unchecked", since = "1.40.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -3059,7 +3059,7 @@ pub const unsafe fn unchecked_shr<T: Copy, U: Copy>(_x: T, _y: U) -> T {
|
||||
/// The stable counterpart of this intrinsic is `unchecked_add` on the various
|
||||
/// integer types, such as [`u16::unchecked_add`] and [`i64::unchecked_add`].
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "unchecked_math", since = "1.79.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -3073,7 +3073,7 @@ pub const unsafe fn unchecked_add<T: Copy>(_x: T, _y: T) -> T {
|
||||
/// The stable counterpart of this intrinsic is `unchecked_sub` on the various
|
||||
/// integer types, such as [`u16::unchecked_sub`] and [`i64::unchecked_sub`].
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "unchecked_math", since = "1.79.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -3087,7 +3087,7 @@ pub const unsafe fn unchecked_sub<T: Copy>(_x: T, _y: T) -> T {
|
||||
/// The stable counterpart of this intrinsic is `unchecked_mul` on the various
|
||||
/// integer types, such as [`u16::unchecked_mul`] and [`i64::unchecked_mul`].
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "unchecked_math", since = "1.79.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -3106,7 +3106,7 @@ pub const unsafe fn unchecked_mul<T: Copy>(_x: T, _y: T) -> T {
|
||||
/// primitives via the `rotate_left` method. For example,
|
||||
/// [`u32::rotate_left`]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_int_rotate", since = "1.40.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -3125,7 +3125,7 @@ pub const fn rotate_left<T: Copy>(_x: T, _shift: u32) -> T {
|
||||
/// primitives via the `rotate_right` method. For example,
|
||||
/// [`u32::rotate_right`]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_int_rotate", since = "1.40.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -3144,7 +3144,7 @@ pub const fn rotate_right<T: Copy>(_x: T, _shift: u32) -> T {
|
||||
/// primitives via the `wrapping_add` method. For example,
|
||||
/// [`u32::wrapping_add`]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_int_wrapping", since = "1.40.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -3162,7 +3162,7 @@ pub const fn wrapping_add<T: Copy>(_a: T, _b: T) -> T {
|
||||
/// primitives via the `wrapping_sub` method. For example,
|
||||
/// [`u32::wrapping_sub`]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_int_wrapping", since = "1.40.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -3180,7 +3180,7 @@ pub const fn wrapping_sub<T: Copy>(_a: T, _b: T) -> T {
|
||||
/// primitives via the `wrapping_mul` method. For example,
|
||||
/// [`u32::wrapping_mul`]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_int_wrapping", since = "1.40.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -3199,7 +3199,7 @@ pub const fn wrapping_mul<T: Copy>(_a: T, _b: T) -> T {
|
||||
/// primitives via the `saturating_add` method. For example,
|
||||
/// [`u32::saturating_add`]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_int_saturating", since = "1.40.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -3217,7 +3217,7 @@ pub const fn saturating_add<T: Copy>(_a: T, _b: T) -> T {
|
||||
/// primitives via the `saturating_sub` method. For example,
|
||||
/// [`u32::saturating_sub`]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_int_saturating", since = "1.40.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -3232,7 +3232,7 @@ pub const fn saturating_sub<T: Copy>(_a: T, _b: T) -> T {
|
||||
/// projections (`read_via_copy(ptr)`, not `read_via_copy(*ptr)`) so that it
|
||||
/// trivially obeys runtime-MIR rules about derefs in operands.
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_ptr_read", since = "1.71.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -3247,7 +3247,7 @@ pub const unsafe fn read_via_copy<T>(_ptr: *const T) -> T {
|
||||
/// projections (`write_via_move(ptr, x)`, not `write_via_move(*ptr, x)`) so
|
||||
/// that it trivially obeys runtime-MIR rules about derefs in operands.
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_ptr_write", since = "1.83.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -3265,7 +3265,7 @@ pub const unsafe fn write_via_move<T>(_ptr: *mut T, _value: T) {
|
||||
///
|
||||
/// The stabilized version of this intrinsic is [`core::mem::discriminant`].
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_discriminant", since = "1.75.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -3305,7 +3305,7 @@ extern "rust-intrinsic" {
|
||||
|
||||
/// See documentation of `<*const T>::offset_from` for details.
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_ptr_offset_from", since = "1.65.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -3674,7 +3674,7 @@ pub const unsafe fn typed_swap<T>(x: *mut T, y: *mut T) {
|
||||
/// user has UB checks disabled, the checks will still get optimized out. This intrinsic is
|
||||
/// primarily used by [`ub_checks::assert_unsafe_precondition`].
|
||||
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "const_ub_checks", issue = "none"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)] // just for UB checks
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)] // just for UB checks
|
||||
#[inline(always)]
|
||||
#[rustc_intrinsic]
|
||||
pub const fn ub_checks() -> bool {
|
||||
@ -3758,7 +3758,7 @@ pub unsafe fn vtable_align(_ptr: *const ()) -> usize {
|
||||
#[rustc_nounwind]
|
||||
#[unstable(feature = "core_intrinsics", issue = "none")]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_size_of", since = "1.40.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
pub const fn size_of<T>() -> usize {
|
||||
@ -3776,7 +3776,7 @@ pub const fn size_of<T>() -> usize {
|
||||
#[rustc_nounwind]
|
||||
#[unstable(feature = "core_intrinsics", issue = "none")]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_min_align_of", since = "1.40.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
pub const fn min_align_of<T>() -> usize {
|
||||
@ -3890,7 +3890,7 @@ pub const fn type_id<T: ?Sized + 'static>() -> u128 {
|
||||
#[rustc_nounwind]
|
||||
#[unstable(feature = "core_intrinsics", issue = "none")]
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "ptr_metadata_const", since = "1.83.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
pub const fn aggregate_raw_ptr<P: AggregateRawPtr<D, Metadata = M>, D, M>(_data: D, _meta: M) -> P {
|
||||
@ -3919,7 +3919,7 @@ impl<P: ?Sized, T: ptr::Thin> AggregateRawPtr<*mut T> for *mut P {
|
||||
bootstrap,
|
||||
cfg_attr(bootstrap, rustc_const_stable(feature = "ptr_metadata_const", since = "1.83.0"))
|
||||
)]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
pub const fn ptr_metadata<P: ptr::Pointee<Metadata = M> + ?Sized, M>(_ptr: *const P) -> M {
|
||||
@ -4026,7 +4026,7 @@ pub const fn ptr_metadata<P: ptr::Pointee<Metadata = M> + ?Sized, M>(_ptr: *cons
|
||||
#[rustc_diagnostic_item = "ptr_copy_nonoverlapping"]
|
||||
pub const unsafe fn copy_nonoverlapping<T>(src: *const T, dst: *mut T, count: usize) {
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_intrinsic_copy", since = "1.83.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -4133,7 +4133,7 @@ pub const unsafe fn copy_nonoverlapping<T>(src: *const T, dst: *mut T, count: us
|
||||
#[rustc_diagnostic_item = "ptr_copy"]
|
||||
pub const unsafe fn copy<T>(src: *const T, dst: *mut T, count: usize) {
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_intrinsic_copy", since = "1.83.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
@ -4217,7 +4217,7 @@ pub const unsafe fn copy<T>(src: *const T, dst: *mut T, count: usize) {
|
||||
#[rustc_diagnostic_item = "ptr_write_bytes"]
|
||||
pub const unsafe fn write_bytes<T>(dst: *mut T, val: u8, count: usize) {
|
||||
#[cfg_attr(bootstrap, rustc_const_stable(feature = "const_ptr_write", since = "1.83.0"))]
|
||||
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)]
|
||||
#[cfg_attr(not(bootstrap), rustc_intrinsic_const_stable_indirect)]
|
||||
#[rustc_nounwind]
|
||||
#[rustc_intrinsic]
|
||||
#[rustc_intrinsic_must_be_overridden]
|
||||
|
@ -74,7 +74,7 @@ error: intrinsic `copy::copy` cannot be (indirectly) exposed to stable
|
||||
LL | unsafe { copy(src, dst, count) }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: mark the caller as `#[rustc_const_unstable]`, or mark the intrinsic `#[rustc_const_stable_intrinsic]` (but this requires team approval)
|
||||
= help: mark the caller as `#[rustc_const_unstable]`, or mark the intrinsic `#[rustc_intrinsic_const_stable_indirect]` (but this requires team approval)
|
||||
|
||||
error: const function that might be (indirectly) exposed to stable cannot use `#[feature(local)]`
|
||||
--> $DIR/const-unstable-intrinsic.rs:61:9
|
||||
|
Loading…
Reference in New Issue
Block a user