Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 4660d7e

Browse files
committedNov 4, 2024
most const intrinsics don't need an explicit rustc_const_unstable any more
1 parent 8eb30fe commit 4660d7e

File tree

3 files changed

+35
-43
lines changed

3 files changed

+35
-43
lines changed
 

‎core/src/intrinsics.rs

+33-41
Original file line numberDiff line numberDiff line change
@@ -2389,7 +2389,7 @@ pub const fn bitreverse<T: Copy>(_x: T) -> T {
23892389
/// large and difficult to optimize.
23902390
///
23912391
/// The stabilized version of this intrinsic is [`Ord::cmp`].
2392-
#[rustc_const_unstable(feature = "const_three_way_compare", issue = "none")]
2392+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "const_three_way_compare", issue = "none"))]
23932393
#[rustc_intrinsic]
23942394
#[rustc_intrinsic_must_be_overridden]
23952395
pub const fn three_way_compare<T: Copy>(_lhs: T, _rhss: T) -> crate::cmp::Ordering {
@@ -2457,7 +2457,7 @@ pub const fn mul_with_overflow<T: Copy>(_x: T, _y: T) -> (T, bool) {
24572457
/// `x % y != 0` or `y == 0` or `x == T::MIN && y == -1`
24582458
///
24592459
/// This intrinsic does not have a stable counterpart.
2460-
#[rustc_const_unstable(feature = "const_exact_div", issue = "none")]
2460+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "const_exact_div", issue = "none"))]
24612461
#[rustc_nounwind]
24622462
#[rustc_intrinsic]
24632463
#[rustc_intrinsic_must_be_overridden]
@@ -2784,7 +2784,7 @@ pub const unsafe fn ptr_offset_from<T>(_ptr: *const T, _base: *const T) -> isize
27842784
}
27852785

27862786
/// See documentation of `<*const T>::sub_ptr` for details.
2787-
#[rustc_const_unstable(feature = "const_ptr_sub_ptr", issue = "95892")]
2787+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "const_ptr_sub_ptr", issue = "95892"))]
27882788
#[rustc_nounwind]
27892789
#[rustc_intrinsic]
27902790
#[rustc_intrinsic_must_be_overridden]
@@ -2796,8 +2796,7 @@ pub const unsafe fn ptr_offset_from_unsigned<T>(_ptr: *const T, _base: *const T)
27962796
/// Returns `2` if the result is unknown.
27972797
/// Returns `1` if the pointers are guaranteed equal
27982798
/// Returns `0` if the pointers are guaranteed inequal
2799-
#[rustc_const_unstable(feature = "const_raw_ptr_comparison", issue = "53020")]
2800-
#[unstable(feature = "core_intrinsics", issue = "none")]
2799+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "const_raw_ptr_comparison", issue = "53020"))]
28012800
#[rustc_intrinsic]
28022801
#[rustc_nounwind]
28032802
#[rustc_do_not_const_check]
@@ -2830,7 +2829,7 @@ pub const fn ptr_guaranteed_cmp<T>(ptr: *const T, other: *const T) -> u8 {
28302829
///
28312830
/// (The implementation is allowed to branch on the results of comparisons,
28322831
/// which is UB if any of their inputs are `undef`.)
2833-
#[rustc_const_unstable(feature = "const_intrinsic_raw_eq", issue = "none")]
2832+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "const_intrinsic_raw_eq", issue = "none"))]
28342833
#[rustc_nounwind]
28352834
#[rustc_intrinsic]
28362835
#[rustc_intrinsic_must_be_overridden]
@@ -2852,7 +2851,10 @@ pub const unsafe fn raw_eq<T>(_a: &T, _b: &T) -> bool {
28522851
/// that differs. That allows optimizations that can read in large chunks.
28532852
///
28542853
/// [valid]: crate::ptr#safety
2855-
#[rustc_const_unstable(feature = "const_intrinsic_compare_bytes", issue = "none")]
2854+
#[cfg_attr(
2855+
bootstrap,
2856+
rustc_const_unstable(feature = "const_intrinsic_compare_bytes", issue = "none")
2857+
)]
28562858
#[rustc_nounwind]
28572859
#[rustc_intrinsic]
28582860
#[rustc_intrinsic_must_be_overridden]
@@ -2863,7 +2865,7 @@ pub const unsafe fn compare_bytes(_left: *const u8, _right: *const u8, _bytes: u
28632865
/// See documentation of [`std::hint::black_box`] for details.
28642866
///
28652867
/// [`std::hint::black_box`]: crate::hint::black_box
2866-
#[rustc_const_unstable(feature = "const_black_box", issue = "none")]
2868+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "const_black_box", issue = "none"))]
28672869
#[rustc_nounwind]
28682870
#[rustc_intrinsic]
28692871
#[rustc_intrinsic_must_be_overridden]
@@ -3036,7 +3038,7 @@ pub const fn is_val_statically_known<T: Copy>(_arg: T) -> bool {
30363038
#[rustc_nounwind]
30373039
#[inline]
30383040
#[rustc_intrinsic]
3039-
// This has fallback `const fn` MIR, so shouldn't need stability, see #122652
3041+
// Const-unstable because `swap_nonoverlapping` is const-unstable.
30403042
#[rustc_const_unstable(feature = "const_typed_swap", issue = "none")]
30413043
pub const unsafe fn typed_swap<T>(x: *mut T, y: *mut T) {
30423044
// SAFETY: The caller provided single non-overlapping items behind
@@ -3059,7 +3061,6 @@ pub const unsafe fn typed_swap<T>(x: *mut T, y: *mut T) {
30593061
/// primarily used by [`ub_checks::assert_unsafe_precondition`].
30603062
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "const_ub_checks", issue = "none"))]
30613063
#[cfg_attr(not(bootstrap), rustc_const_stable_intrinsic)] // just for UB checks
3062-
#[unstable(feature = "core_intrinsics", issue = "none")]
30633064
#[inline(always)]
30643065
#[rustc_intrinsic]
30653066
pub const fn ub_checks() -> bool {
@@ -3075,7 +3076,6 @@ pub const fn ub_checks() -> bool {
30753076
/// - At compile time, a compile error occurs if this constraint is violated.
30763077
/// - At runtime, it is not checked.
30773078
#[rustc_const_unstable(feature = "const_heap", issue = "79597")]
3078-
#[unstable(feature = "core_intrinsics", issue = "none")]
30793079
#[rustc_nounwind]
30803080
#[rustc_intrinsic]
30813081
#[miri::intrinsic_fallback_is_spec]
@@ -3175,7 +3175,7 @@ pub const fn min_align_of<T>() -> usize {
31753175
/// It's "tracking issue" is [#91971](https://github.com/rust-lang/rust/issues/91971).
31763176
#[rustc_nounwind]
31773177
#[unstable(feature = "core_intrinsics", issue = "none")]
3178-
#[rustc_const_unstable(feature = "const_pref_align_of", issue = "91971")]
3178+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "const_pref_align_of", issue = "91971"))]
31793179
#[rustc_intrinsic]
31803180
#[rustc_intrinsic_must_be_overridden]
31813181
pub const unsafe fn pref_align_of<T>() -> usize {
@@ -3193,7 +3193,7 @@ pub const unsafe fn pref_align_of<T>() -> usize {
31933193
/// The to-be-stabilized version of this intrinsic is [`crate::mem::variant_count`].
31943194
#[rustc_nounwind]
31953195
#[unstable(feature = "core_intrinsics", issue = "none")]
3196-
#[rustc_const_unstable(feature = "variant_count", issue = "73662")]
3196+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "variant_count", issue = "73662"))]
31973197
#[rustc_intrinsic]
31983198
#[rustc_intrinsic_must_be_overridden]
31993199
pub const fn variant_count<T>() -> usize {
@@ -3209,7 +3209,7 @@ pub const fn variant_count<T>() -> usize {
32093209
/// See [`crate::mem::size_of_val_raw`] for safety conditions.
32103210
#[rustc_nounwind]
32113211
#[unstable(feature = "core_intrinsics", issue = "none")]
3212-
#[rustc_const_unstable(feature = "const_size_of_val", issue = "46571")]
3212+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "const_size_of_val", issue = "46571"))]
32133213
#[rustc_intrinsic]
32143214
#[rustc_intrinsic_must_be_overridden]
32153215
pub const unsafe fn size_of_val<T: ?Sized>(_ptr: *const T) -> usize {
@@ -3225,7 +3225,7 @@ pub const unsafe fn size_of_val<T: ?Sized>(_ptr: *const T) -> usize {
32253225
/// See [`crate::mem::align_of_val_raw`] for safety conditions.
32263226
#[rustc_nounwind]
32273227
#[unstable(feature = "core_intrinsics", issue = "none")]
3228-
#[rustc_const_unstable(feature = "const_align_of_val", issue = "46571")]
3228+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "const_align_of_val", issue = "46571"))]
32293229
#[rustc_intrinsic]
32303230
#[rustc_intrinsic_must_be_overridden]
32313231
pub const unsafe fn min_align_of_val<T: ?Sized>(_ptr: *const T) -> usize {
@@ -3242,7 +3242,7 @@ pub const unsafe fn min_align_of_val<T: ?Sized>(_ptr: *const T) -> usize {
32423242
/// The stabilized version of this intrinsic is [`core::any::type_name`].
32433243
#[rustc_nounwind]
32443244
#[unstable(feature = "core_intrinsics", issue = "none")]
3245-
#[rustc_const_unstable(feature = "const_type_name", issue = "63084")]
3245+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "const_type_name", issue = "63084"))]
32463246
#[rustc_intrinsic]
32473247
#[rustc_intrinsic_must_be_overridden]
32483248
pub const fn type_name<T: ?Sized>() -> &'static str {
@@ -3261,7 +3261,7 @@ pub const fn type_name<T: ?Sized>() -> &'static str {
32613261
/// The stabilized version of this intrinsic is [`core::any::TypeId::of`].
32623262
#[rustc_nounwind]
32633263
#[unstable(feature = "core_intrinsics", issue = "none")]
3264-
#[rustc_const_unstable(feature = "const_type_id", issue = "77125")]
3264+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "const_type_id", issue = "77125"))]
32653265
#[rustc_intrinsic]
32663266
#[rustc_intrinsic_must_be_overridden]
32673267
pub const fn type_id<T: ?Sized + 'static>() -> u128 {
@@ -3636,8 +3636,7 @@ pub const unsafe fn write_bytes<T>(dst: *mut T, val: u8, count: usize) {
36363636
/// The stabilized version of this intrinsic is
36373637
/// [`f16::min`]
36383638
#[rustc_nounwind]
3639-
// #[rustc_const_unstable(feature = "const_float_methods", issue = "130843")]
3640-
#[rustc_const_unstable(feature = "f16", issue = "116909")]
3639+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "f16", issue = "116909"))]
36413640
#[rustc_intrinsic]
36423641
#[rustc_intrinsic_must_be_overridden]
36433642
pub const fn minnumf16(_x: f16, _y: f16) -> f16 {
@@ -3654,7 +3653,7 @@ pub const fn minnumf16(_x: f16, _y: f16) -> f16 {
36543653
/// The stabilized version of this intrinsic is
36553654
/// [`f32::min`]
36563655
#[rustc_nounwind]
3657-
#[rustc_const_unstable(feature = "const_float_methods", issue = "130843")]
3656+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "const_float_methods", issue = "130843"))]
36583657
#[rustc_intrinsic]
36593658
#[rustc_intrinsic_must_be_overridden]
36603659
pub const fn minnumf32(_x: f32, _y: f32) -> f32 {
@@ -3671,7 +3670,7 @@ pub const fn minnumf32(_x: f32, _y: f32) -> f32 {
36713670
/// The stabilized version of this intrinsic is
36723671
/// [`f64::min`]
36733672
#[rustc_nounwind]
3674-
#[rustc_const_unstable(feature = "const_float_methods", issue = "130843")]
3673+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "const_float_methods", issue = "130843"))]
36753674
#[rustc_intrinsic]
36763675
#[rustc_intrinsic_must_be_overridden]
36773676
pub const fn minnumf64(_x: f64, _y: f64) -> f64 {
@@ -3688,8 +3687,7 @@ pub const fn minnumf64(_x: f64, _y: f64) -> f64 {
36883687
/// The stabilized version of this intrinsic is
36893688
/// [`f128::min`]
36903689
#[rustc_nounwind]
3691-
// #[rustc_const_unstable(feature = "const_float_methods", issue = "130843")]
3692-
#[rustc_const_unstable(feature = "f128", issue = "116909")]
3690+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "f128", issue = "116909"))]
36933691
#[rustc_intrinsic]
36943692
#[rustc_intrinsic_must_be_overridden]
36953693
pub const fn minnumf128(_x: f128, _y: f128) -> f128 {
@@ -3706,8 +3704,7 @@ pub const fn minnumf128(_x: f128, _y: f128) -> f128 {
37063704
/// The stabilized version of this intrinsic is
37073705
/// [`f16::max`]
37083706
#[rustc_nounwind]
3709-
// #[rustc_const_unstable(feature = "const_float_methods", issue = "130843")]
3710-
#[rustc_const_unstable(feature = "f16", issue = "116909")]
3707+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "f16", issue = "116909"))]
37113708
#[rustc_intrinsic]
37123709
#[rustc_intrinsic_must_be_overridden]
37133710
pub const fn maxnumf16(_x: f16, _y: f16) -> f16 {
@@ -3724,7 +3721,7 @@ pub const fn maxnumf16(_x: f16, _y: f16) -> f16 {
37243721
/// The stabilized version of this intrinsic is
37253722
/// [`f32::max`]
37263723
#[rustc_nounwind]
3727-
#[rustc_const_unstable(feature = "const_float_methods", issue = "130843")]
3724+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "const_float_methods", issue = "130843"))]
37283725
#[rustc_intrinsic]
37293726
#[rustc_intrinsic_must_be_overridden]
37303727
pub const fn maxnumf32(_x: f32, _y: f32) -> f32 {
@@ -3741,7 +3738,7 @@ pub const fn maxnumf32(_x: f32, _y: f32) -> f32 {
37413738
/// The stabilized version of this intrinsic is
37423739
/// [`f64::max`]
37433740
#[rustc_nounwind]
3744-
#[rustc_const_unstable(feature = "const_float_methods", issue = "130843")]
3741+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "const_float_methods", issue = "130843"))]
37453742
#[rustc_intrinsic]
37463743
#[rustc_intrinsic_must_be_overridden]
37473744
pub const fn maxnumf64(_x: f64, _y: f64) -> f64 {
@@ -3758,8 +3755,7 @@ pub const fn maxnumf64(_x: f64, _y: f64) -> f64 {
37583755
/// The stabilized version of this intrinsic is
37593756
/// [`f128::max`]
37603757
#[rustc_nounwind]
3761-
// #[rustc_const_unstable(feature = "const_float_methods", issue = "130843")]
3762-
#[rustc_const_unstable(feature = "f128", issue = "116909")]
3758+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "f128", issue = "116909"))]
37633759
#[rustc_intrinsic]
37643760
#[rustc_intrinsic_must_be_overridden]
37653761
pub const fn maxnumf128(_x: f128, _y: f128) -> f128 {
@@ -3771,8 +3767,7 @@ pub const fn maxnumf128(_x: f128, _y: f128) -> f128 {
37713767
/// The stabilized version of this intrinsic is
37723768
/// [`f16::abs`](../../std/primitive.f16.html#method.abs)
37733769
#[rustc_nounwind]
3774-
// #[rustc_const_unstable(feature = "const_float_methods", issue = "130843")]
3775-
#[rustc_const_unstable(feature = "f16", issue = "116909")]
3770+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "f16", issue = "116909"))]
37763771
#[rustc_intrinsic]
37773772
#[rustc_intrinsic_must_be_overridden]
37783773
pub const unsafe fn fabsf16(_x: f16) -> f16 {
@@ -3784,7 +3779,7 @@ pub const unsafe fn fabsf16(_x: f16) -> f16 {
37843779
/// The stabilized version of this intrinsic is
37853780
/// [`f32::abs`](../../std/primitive.f32.html#method.abs)
37863781
#[rustc_nounwind]
3787-
#[rustc_const_unstable(feature = "const_float_methods", issue = "130843")]
3782+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "const_float_methods", issue = "130843"))]
37883783
#[rustc_intrinsic]
37893784
#[rustc_intrinsic_must_be_overridden]
37903785
pub const unsafe fn fabsf32(_x: f32) -> f32 {
@@ -3796,7 +3791,7 @@ pub const unsafe fn fabsf32(_x: f32) -> f32 {
37963791
/// The stabilized version of this intrinsic is
37973792
/// [`f64::abs`](../../std/primitive.f64.html#method.abs)
37983793
#[rustc_nounwind]
3799-
#[rustc_const_unstable(feature = "const_float_methods", issue = "130843")]
3794+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "const_float_methods", issue = "130843"))]
38003795
#[rustc_intrinsic]
38013796
#[rustc_intrinsic_must_be_overridden]
38023797
pub const unsafe fn fabsf64(_x: f64) -> f64 {
@@ -3808,8 +3803,7 @@ pub const unsafe fn fabsf64(_x: f64) -> f64 {
38083803
/// The stabilized version of this intrinsic is
38093804
/// [`f128::abs`](../../std/primitive.f128.html#method.abs)
38103805
#[rustc_nounwind]
3811-
// #[rustc_const_unstable(feature = "const_float_methods", issue = "130843")]
3812-
#[rustc_const_unstable(feature = "f128", issue = "116909")]
3806+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "f128", issue = "116909"))]
38133807
#[rustc_intrinsic]
38143808
#[rustc_intrinsic_must_be_overridden]
38153809
pub const unsafe fn fabsf128(_x: f128) -> f128 {
@@ -3821,8 +3815,7 @@ pub const unsafe fn fabsf128(_x: f128) -> f128 {
38213815
/// The stabilized version of this intrinsic is
38223816
/// [`f16::copysign`](../../std/primitive.f16.html#method.copysign)
38233817
#[rustc_nounwind]
3824-
// #[rustc_const_unstable(feature = "const_float_methods", issue = "130843")]
3825-
#[rustc_const_unstable(feature = "f16", issue = "116909")]
3818+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "f16", issue = "116909"))]
38263819
#[rustc_intrinsic]
38273820
#[rustc_intrinsic_must_be_overridden]
38283821
pub const unsafe fn copysignf16(_x: f16, _y: f16) -> f16 {
@@ -3834,7 +3827,7 @@ pub const unsafe fn copysignf16(_x: f16, _y: f16) -> f16 {
38343827
/// The stabilized version of this intrinsic is
38353828
/// [`f32::copysign`](../../std/primitive.f32.html#method.copysign)
38363829
#[rustc_nounwind]
3837-
#[rustc_const_unstable(feature = "const_float_methods", issue = "130843")]
3830+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "const_float_methods", issue = "130843"))]
38383831
#[rustc_intrinsic]
38393832
#[rustc_intrinsic_must_be_overridden]
38403833
pub const unsafe fn copysignf32(_x: f32, _y: f32) -> f32 {
@@ -3845,7 +3838,7 @@ pub const unsafe fn copysignf32(_x: f32, _y: f32) -> f32 {
38453838
/// The stabilized version of this intrinsic is
38463839
/// [`f64::copysign`](../../std/primitive.f64.html#method.copysign)
38473840
#[rustc_nounwind]
3848-
#[rustc_const_unstable(feature = "const_float_methods", issue = "130843")]
3841+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "const_float_methods", issue = "130843"))]
38493842
#[rustc_intrinsic]
38503843
#[rustc_intrinsic_must_be_overridden]
38513844
pub const unsafe fn copysignf64(_x: f64, _y: f64) -> f64 {
@@ -3857,8 +3850,7 @@ pub const unsafe fn copysignf64(_x: f64, _y: f64) -> f64 {
38573850
/// The stabilized version of this intrinsic is
38583851
/// [`f128::copysign`](../../std/primitive.f128.html#method.copysign)
38593852
#[rustc_nounwind]
3860-
// #[rustc_const_unstable(feature = "const_float_methods", issue = "130843")]
3861-
#[rustc_const_unstable(feature = "f128", issue = "116909")]
3853+
#[cfg_attr(bootstrap, rustc_const_unstable(feature = "f128", issue = "116909"))]
38623854
#[rustc_intrinsic]
38633855
#[rustc_intrinsic_must_be_overridden]
38643856
pub const unsafe fn copysignf128(_x: f128, _y: f128) -> f128 {

‎core/src/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@
107107
//
108108
// Library features:
109109
// tidy-alphabetical-start
110+
#![cfg_attr(bootstrap, feature(const_exact_div))]
110111
#![cfg_attr(bootstrap, feature(const_fmt_arguments_new))]
111112
#![feature(array_ptr_get)]
112113
#![feature(asm_experimental_arch)]
@@ -116,7 +117,6 @@
116117
#![feature(const_black_box)]
117118
#![feature(const_char_encode_utf16)]
118119
#![feature(const_eval_select)]
119-
#![feature(const_exact_div)]
120120
#![feature(const_float_methods)]
121121
#![feature(const_heap)]
122122
#![feature(const_nonnull_new)]

‎core/tests/lib.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
// tidy-alphabetical-start
2+
#![cfg_attr(bootstrap, feature(const_three_way_compare))]
23
#![cfg_attr(bootstrap, feature(strict_provenance))]
34
#![cfg_attr(not(bootstrap), feature(strict_provenance_lints))]
45
#![cfg_attr(target_has_atomic = "128", feature(integer_atomics))]
@@ -22,7 +23,6 @@
2223
#![feature(const_nonnull_new)]
2324
#![feature(const_option_ext)]
2425
#![feature(const_pin_2)]
25-
#![feature(const_three_way_compare)]
2626
#![feature(const_trait_impl)]
2727
#![feature(core_intrinsics)]
2828
#![feature(core_io_borrowed_buf)]

0 commit comments

Comments
 (0)
Failed to load comments.