diff options
| author | bors <bors@rust-lang.org> | 2019-11-13 00:42:19 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2019-11-13 00:42:19 +0000 |
| commit | 0f12bad718bb8b1fb2b1b7267a02fffaef6e1e3c (patch) | |
| tree | 74dbcc9dbde2f0d8bcbe1aead405c51193bf3b33 /src/libcore | |
| parent | a333eed7fc0c903df9d6befcfb40af02148bf255 (diff) | |
| parent | 994d83666defc0cc6b0fde305d164fbf23433114 (diff) | |
| download | rust-0f12bad718bb8b1fb2b1b7267a02fffaef6e1e3c.tar.gz rust-0f12bad718bb8b1fb2b1b7267a02fffaef6e1e3c.zip | |
Auto merge of #66156 - Mark-Simulacrum:stage0-step, r=pietroalbini
Stage0 step r? @pietroalbini
Diffstat (limited to 'src/libcore')
| -rw-r--r-- | src/libcore/array/mod.rs | 2 | ||||
| -rw-r--r-- | src/libcore/convert.rs | 1 | ||||
| -rw-r--r-- | src/libcore/intrinsics.rs | 2 | ||||
| -rw-r--r-- | src/libcore/lib.rs | 1 | ||||
| -rw-r--r-- | src/libcore/macros.rs | 24 | ||||
| -rw-r--r-- | src/libcore/marker.rs | 4 | ||||
| -rw-r--r-- | src/libcore/ops/try.rs | 17 | ||||
| -rw-r--r-- | src/libcore/panic.rs | 2 | ||||
| -rw-r--r-- | src/libcore/panicking.rs | 59 | ||||
| -rw-r--r-- | src/libcore/ptr/mod.rs | 16 | ||||
| -rw-r--r-- | src/libcore/sync/atomic.rs | 64 |
11 files changed, 32 insertions, 160 deletions
diff --git a/src/libcore/array/mod.rs b/src/libcore/array/mod.rs index 74a7d062d3f..901c1ee33cd 100644 --- a/src/libcore/array/mod.rs +++ b/src/libcore/array/mod.rs @@ -14,10 +14,8 @@ use crate::hash::{Hash, self}; use crate::marker::Unsize; use crate::slice::{Iter, IterMut}; -#[cfg(not(bootstrap))] mod iter; -#[cfg(not(bootstrap))] #[unstable(feature = "array_value_iter", issue = "65798")] pub use iter::IntoIter; diff --git a/src/libcore/convert.rs b/src/libcore/convert.rs index 5058e58d0eb..e16c3840260 100644 --- a/src/libcore/convert.rs +++ b/src/libcore/convert.rs @@ -557,7 +557,6 @@ impl<T> From<T> for T { /// /// [#64715]: https://github.com/rust-lang/rust/issues/64715 #[stable(feature = "convert_infallible", since = "1.34.0")] -#[cfg(not(bootstrap))] #[rustc_reservation_impl="permitting this impl would forbid us from adding \ `impl<T> From<!> for T` later; see rust-lang/rust#64715 for details"] impl<T> From<!> for T { diff --git a/src/libcore/intrinsics.rs b/src/libcore/intrinsics.rs index 686d0bbefc8..6de20418bb2 100644 --- a/src/libcore/intrinsics.rs +++ b/src/libcore/intrinsics.rs @@ -697,7 +697,6 @@ extern "rust-intrinsic" { pub fn panic_if_uninhabited<T>(); /// Gets a reference to a static `Location` indicating where it was called. - #[cfg(not(bootstrap))] pub fn caller_location() -> &'static crate::panic::Location<'static>; /// Creates a value initialized to zero. @@ -1346,7 +1345,6 @@ extern "rust-intrinsic" { pub fn nontemporal_store<T>(ptr: *mut T, val: T); /// See documentation of `<*const T>::offset_from` for details. - #[cfg(not(bootstrap))] pub fn ptr_offset_from<T>(ptr: *const T, base: *const T) -> isize; /// Internal hook used by Miri to implement unwinding. diff --git a/src/libcore/lib.rs b/src/libcore/lib.rs index ca431627147..ea5536eb50c 100644 --- a/src/libcore/lib.rs +++ b/src/libcore/lib.rs @@ -121,7 +121,6 @@ #![feature(hexagon_target_feature)] #![feature(const_int_conversion)] #![feature(const_transmute)] -#![cfg_attr(bootstrap, feature(non_exhaustive))] #![feature(structural_match)] #![feature(abi_unadjusted)] #![feature(adx_target_feature)] diff --git a/src/libcore/macros.rs b/src/libcore/macros.rs index 726d187d2e9..d6b6e26436f 100644 --- a/src/libcore/macros.rs +++ b/src/libcore/macros.rs @@ -1,30 +1,6 @@ /// Panics the current thread. /// /// For details, see `std::macros`. -#[cfg(bootstrap)] -#[macro_export] -#[allow_internal_unstable(core_panic, panic_internals)] -#[stable(feature = "core", since = "1.6.0")] -macro_rules! panic { - () => ( - $crate::panic!("explicit panic") - ); - ($msg:expr) => ({ - $crate::panicking::panic(&($msg, $crate::file!(), $crate::line!(), $crate::column!())) - }); - ($msg:expr,) => ( - $crate::panic!($msg) - ); - ($fmt:expr, $($arg:tt)+) => ({ - $crate::panicking::panic_fmt($crate::format_args!($fmt, $($arg)+), - &($crate::file!(), $crate::line!(), $crate::column!())) - }); -} - -/// Panics the current thread. -/// -/// For details, see `std::macros`. -#[cfg(not(bootstrap))] #[macro_export] #[allow_internal_unstable(core_panic, // FIXME(anp, eddyb) `core_intrinsics` is used here to allow calling diff --git a/src/libcore/marker.rs b/src/libcore/marker.rs index a25573feabb..2d2fc4102e1 100644 --- a/src/libcore/marker.rs +++ b/src/libcore/marker.rs @@ -146,7 +146,6 @@ pub trait Unsize<T: ?Sized> { /// /// [RFC1445]: https://github.com/rust-lang/rfcs/blob/master/text/1445-restrict-constants-in-patterns.md /// [issue 63438]: https://github.com/rust-lang/rust/issues/63438 -#[cfg(not(bootstrap))] #[unstable(feature = "structural_match", issue = "31434")] #[rustc_on_unimplemented(message="the type `{Self}` does not `#[derive(PartialEq)]`")] #[lang = "structural_peq"] @@ -197,7 +196,6 @@ pub trait StructuralPartialEq { /// As a hack to work around this, we use two separate traits injected by each /// of the two derives (`#[derive(PartialEq)]` and `#[derive(Eq)]`) and check /// that both of them are present as part of structural-match checking. -#[cfg(not(bootstrap))] #[unstable(feature = "structural_match", issue = "31434")] #[rustc_on_unimplemented(message="the type `{Self}` does not `#[derive(Eq)]`")] #[lang = "structural_teq"] @@ -517,11 +515,9 @@ macro_rules! impls{ } } - #[cfg(not(bootstrap))] #[unstable(feature = "structural_match", issue = "31434")] impl<T: ?Sized> StructuralPartialEq for $t<T> { } - #[cfg(not(bootstrap))] #[unstable(feature = "structural_match", issue = "31434")] impl<T: ?Sized> StructuralEq for $t<T> { } ) diff --git a/src/libcore/ops/try.rs b/src/libcore/ops/try.rs index e8f35f8cf24..4f4652084a8 100644 --- a/src/libcore/ops/try.rs +++ b/src/libcore/ops/try.rs @@ -5,20 +5,7 @@ /// extracting those success or failure values from an existing instance and /// creating a new instance from a success or failure value. #[unstable(feature = "try_trait", issue = "42327")] -#[cfg_attr(bootstrap, rustc_on_unimplemented( - on(all( - any(from_method="from_error", from_method="from_ok"), - from_desugaring="QuestionMark"), - message="the `?` operator can only be used in a \ - function that returns `Result` or `Option` \ - (or another type that implements `{Try}`)", - label="cannot use the `?` operator in a function that returns `{Self}`"), - on(all(from_method="into_result", from_desugaring="QuestionMark"), - message="the `?` operator can only be applied to values \ - that implement `{Try}`", - label="the `?` operator cannot be applied to type `{Self}`") -))] -#[cfg_attr(not(bootstrap), rustc_on_unimplemented( +#[rustc_on_unimplemented( on(all( any(from_method="from_error", from_method="from_ok"), from_desugaring="QuestionMark"), @@ -30,7 +17,7 @@ on(all(from_method="into_result", from_desugaring="QuestionMark"), message="the `?` operator can only be applied to values \ that implement `{Try}`", label="the `?` operator cannot be applied to type `{Self}`") -))] +)] #[doc(alias = "?")] pub trait Try { /// The type of this value when viewed as successful. diff --git a/src/libcore/panic.rs b/src/libcore/panic.rs index 51bbf3a8fd2..cdd38449a1b 100644 --- a/src/libcore/panic.rs +++ b/src/libcore/panic.rs @@ -167,7 +167,7 @@ impl fmt::Display for PanicInfo<'_> { /// /// panic!("Normal panic"); /// ``` -#[cfg_attr(not(bootstrap), lang = "panic_location")] +#[lang = "panic_location"] #[derive(Debug)] #[stable(feature = "panic_hooks", since = "1.10.0")] pub struct Location<'a> { diff --git a/src/libcore/panicking.rs b/src/libcore/panicking.rs index b88dc336097..8a6ab99c65a 100644 --- a/src/libcore/panicking.rs +++ b/src/libcore/panicking.rs @@ -31,28 +31,6 @@ use crate::fmt; use crate::panic::{Location, PanicInfo}; -#[cfg(bootstrap)] -#[cold] -// never inline unless panic_immediate_abort to avoid code -// bloat at the call sites as much as possible -#[cfg_attr(not(feature="panic_immediate_abort"),inline(never))] -#[lang = "panic"] -pub fn panic(expr_file_line_col: &(&'static str, &'static str, u32, u32)) -> ! { - if cfg!(feature = "panic_immediate_abort") { - unsafe { super::intrinsics::abort() } - } - - // Use Arguments::new_v1 instead of format_args!("{}", expr) to potentially - // reduce size overhead. The format_args! macro uses str's Display trait to - // write expr, which calls Formatter::pad, which must accommodate string - // truncation and padding (even though none is used here). Using - // Arguments::new_v1 may allow the compiler to omit Formatter::pad from the - // output binary, saving up to a few kilobytes. - let (expr, file, line, col) = *expr_file_line_col; - panic_fmt(fmt::Arguments::new_v1(&[expr], &[]), &(file, line, col)) -} - -#[cfg(not(bootstrap))] #[cold] // never inline unless panic_immediate_abort to avoid code // bloat at the call sites as much as possible @@ -72,21 +50,6 @@ pub fn panic(expr: &str, location: &Location<'_>) -> ! { panic_fmt(fmt::Arguments::new_v1(&[expr], &[]), location) } -#[cfg(bootstrap)] -#[cold] -#[cfg_attr(not(feature="panic_immediate_abort"),inline(never))] -#[lang = "panic_bounds_check"] -fn panic_bounds_check(file_line_col: &(&'static str, u32, u32), - index: usize, len: usize) -> ! { - if cfg!(feature = "panic_immediate_abort") { - unsafe { super::intrinsics::abort() } - } - - panic_fmt(format_args!("index out of bounds: the len is {} but the index is {}", - len, index), file_line_col) -} - -#[cfg(not(bootstrap))] #[cold] #[cfg_attr(not(feature="panic_immediate_abort"),inline(never))] #[lang = "panic_bounds_check"] @@ -101,28 +64,6 @@ fn panic_bounds_check(location: &Location<'_>, index: usize, len: usize) -> ! { ) } -#[cfg(bootstrap)] -#[cold] -#[cfg_attr(not(feature="panic_immediate_abort"),inline(never))] -#[cfg_attr( feature="panic_immediate_abort" ,inline)] -pub fn panic_fmt(fmt: fmt::Arguments<'_>, file_line_col: &(&'static str, u32, u32)) -> ! { - if cfg!(feature = "panic_immediate_abort") { - unsafe { super::intrinsics::abort() } - } - - // NOTE This function never crosses the FFI boundary; it's a Rust-to-Rust call - extern "Rust" { - #[lang = "panic_impl"] - fn panic_impl(pi: &PanicInfo<'_>) -> !; - } - - let (file, line, col) = *file_line_col; - let location = Location::internal_constructor(file, line, col); - let pi = PanicInfo::internal_constructor(Some(&fmt), &location); - unsafe { panic_impl(&pi) } -} - -#[cfg(not(bootstrap))] #[cold] #[cfg_attr(not(feature="panic_immediate_abort"),inline(never))] #[cfg_attr( feature="panic_immediate_abort" ,inline)] diff --git a/src/libcore/ptr/mod.rs b/src/libcore/ptr/mod.rs index 5a75730cf2b..39d56958f5d 100644 --- a/src/libcore/ptr/mod.rs +++ b/src/libcore/ptr/mod.rs @@ -1301,7 +1301,6 @@ impl<T: ?Sized> *const T { /// } /// ``` #[unstable(feature = "ptr_offset_from", issue = "41079")] - #[cfg(not(bootstrap))] #[rustc_const_unstable(feature = "const_ptr_offset_from")] #[inline] pub const unsafe fn offset_from(self, origin: *const T) -> isize where T: Sized { @@ -1313,21 +1312,6 @@ impl<T: ?Sized> *const T { intrinsics::ptr_offset_from(self, origin) } - #[unstable(feature = "ptr_offset_from", issue = "41079")] - #[inline] - #[cfg(bootstrap)] - /// bootstrap - pub unsafe fn offset_from(self, origin: *const T) -> isize where T: Sized { - let pointee_size = mem::size_of::<T>(); - assert!(0 < pointee_size && pointee_size <= isize::max_value() as usize); - - // This is the same sequence that Clang emits for pointer subtraction. - // It can be neither `nsw` nor `nuw` because the input is treated as - // unsigned but then the output is treated as signed, so neither works. - let d = isize::wrapping_sub(self as _, origin as _); - intrinsics::exact_div(d, pointee_size as _) - } - /// Calculates the distance between two pointers. The returned value is in /// units of T: the distance in bytes is divided by `mem::size_of::<T>()`. /// diff --git a/src/libcore/sync/atomic.rs b/src/libcore/sync/atomic.rs index d311cb16b64..820c1edf930 100644 --- a/src/libcore/sync/atomic.rs +++ b/src/libcore/sync/atomic.rs @@ -162,14 +162,14 @@ pub fn spin_loop_hint() { /// This type has the same in-memory representation as a [`bool`]. /// /// [`bool`]: ../../../std/primitive.bool.html -#[cfg(any(bootstrap, target_has_atomic_load_store = "8"))] +#[cfg(target_has_atomic_load_store = "8")] #[stable(feature = "rust1", since = "1.0.0")] #[repr(C, align(1))] pub struct AtomicBool { v: UnsafeCell<u8>, } -#[cfg(any(bootstrap, target_has_atomic_load_store = "8"))] +#[cfg(target_has_atomic_load_store = "8")] #[stable(feature = "rust1", since = "1.0.0")] impl Default for AtomicBool { /// Creates an `AtomicBool` initialized to `false`. @@ -179,14 +179,14 @@ impl Default for AtomicBool { } // Send is implicitly implemented for AtomicBool. -#[cfg(any(bootstrap, target_has_atomic_load_store = "8"))] +#[cfg(target_has_atomic_load_store = "8")] #[stable(feature = "rust1", since = "1.0.0")] unsafe impl Sync for AtomicBool {} /// A raw pointer type which can be safely shared between threads. /// /// This type has the same in-memory representation as a `*mut T`. -#[cfg(any(bootstrap, target_has_atomic_load_store = "ptr"))] +#[cfg(target_has_atomic_load_store = "ptr")] #[stable(feature = "rust1", since = "1.0.0")] #[cfg_attr(target_pointer_width = "16", repr(C, align(2)))] #[cfg_attr(target_pointer_width = "32", repr(C, align(4)))] @@ -195,7 +195,7 @@ pub struct AtomicPtr<T> { p: UnsafeCell<*mut T>, } -#[cfg(any(bootstrap, target_has_atomic_load_store = "ptr"))] +#[cfg(target_has_atomic_load_store = "ptr")] #[stable(feature = "rust1", since = "1.0.0")] impl<T> Default for AtomicPtr<T> { /// Creates a null `AtomicPtr<T>`. @@ -204,10 +204,10 @@ impl<T> Default for AtomicPtr<T> { } } -#[cfg(any(bootstrap, target_has_atomic_load_store = "ptr"))] +#[cfg(target_has_atomic_load_store = "ptr")] #[stable(feature = "rust1", since = "1.0.0")] unsafe impl<T> Send for AtomicPtr<T> {} -#[cfg(any(bootstrap, target_has_atomic_load_store = "ptr"))] +#[cfg(target_has_atomic_load_store = "ptr")] #[stable(feature = "rust1", since = "1.0.0")] unsafe impl<T> Sync for AtomicPtr<T> {} @@ -308,7 +308,7 @@ pub enum Ordering { /// An [`AtomicBool`] initialized to `false`. /// /// [`AtomicBool`]: struct.AtomicBool.html -#[cfg(any(bootstrap, target_has_atomic_load_store = "8"))] +#[cfg(target_has_atomic_load_store = "8")] #[stable(feature = "rust1", since = "1.0.0")] #[rustc_deprecated( since = "1.34.0", @@ -317,7 +317,7 @@ pub enum Ordering { )] pub const ATOMIC_BOOL_INIT: AtomicBool = AtomicBool::new(false); -#[cfg(any(bootstrap, target_has_atomic_load_store = "8"))] +#[cfg(target_has_atomic_load_store = "8")] impl AtomicBool { /// Creates a new `AtomicBool`. /// @@ -804,7 +804,7 @@ impl AtomicBool { } } -#[cfg(any(bootstrap, target_has_atomic_load_store = "ptr"))] +#[cfg(target_has_atomic_load_store = "ptr")] impl<T> AtomicPtr<T> { /// Creates a new `AtomicPtr`. /// @@ -1114,7 +1114,7 @@ impl<T> AtomicPtr<T> { } } -#[cfg(any(bootstrap, target_has_atomic_load_store = "8"))] +#[cfg(target_has_atomic_load_store = "8")] #[stable(feature = "atomic_bool_from", since = "1.24.0")] impl From<bool> for AtomicBool { /// Converts a `bool` into an `AtomicBool`. @@ -1130,14 +1130,14 @@ impl From<bool> for AtomicBool { fn from(b: bool) -> Self { Self::new(b) } } -#[cfg(any(bootstrap, target_has_atomic_load_store = "ptr"))] +#[cfg(target_has_atomic_load_store = "ptr")] #[stable(feature = "atomic_from", since = "1.23.0")] impl<T> From<*mut T> for AtomicPtr<T> { #[inline] fn from(p: *mut T) -> Self { Self::new(p) } } -#[cfg(any(bootstrap, target_has_atomic_load_store = "8"))] +#[cfg(target_has_atomic_load_store = "8")] macro_rules! atomic_int { ($cfg_cas:meta, $stable:meta, @@ -1895,7 +1895,7 @@ assert_eq!(min_foo, 12); } } -#[cfg(any(bootstrap, target_has_atomic_load_store = "8"))] +#[cfg(target_has_atomic_load_store = "8")] atomic_int! { cfg(target_has_atomic = "8"), stable(feature = "integer_atomics_stable", since = "1.34.0"), @@ -1912,7 +1912,7 @@ atomic_int! { "AtomicI8::new(0)", i8 AtomicI8 ATOMIC_I8_INIT } -#[cfg(any(bootstrap, target_has_atomic_load_store = "8"))] +#[cfg(target_has_atomic_load_store = "8")] atomic_int! { cfg(target_has_atomic = "8"), stable(feature = "integer_atomics_stable", since = "1.34.0"), @@ -1929,7 +1929,7 @@ atomic_int! { "AtomicU8::new(0)", u8 AtomicU8 ATOMIC_U8_INIT } -#[cfg(any(bootstrap, target_has_atomic_load_store = "16"))] +#[cfg(target_has_atomic_load_store = "16")] atomic_int! { cfg(target_has_atomic = "16"), stable(feature = "integer_atomics_stable", since = "1.34.0"), @@ -1946,7 +1946,7 @@ atomic_int! { "AtomicI16::new(0)", i16 AtomicI16 ATOMIC_I16_INIT } -#[cfg(any(bootstrap, target_has_atomic_load_store = "16"))] +#[cfg(target_has_atomic_load_store = "16")] atomic_int! { cfg(target_has_atomic = "16"), stable(feature = "integer_atomics_stable", since = "1.34.0"), @@ -1963,7 +1963,7 @@ atomic_int! { "AtomicU16::new(0)", u16 AtomicU16 ATOMIC_U16_INIT } -#[cfg(any(bootstrap, target_has_atomic_load_store = "32"))] +#[cfg(target_has_atomic_load_store = "32")] atomic_int! { cfg(target_has_atomic = "32"), stable(feature = "integer_atomics_stable", since = "1.34.0"), @@ -1980,7 +1980,7 @@ atomic_int! { "AtomicI32::new(0)", i32 AtomicI32 ATOMIC_I32_INIT } -#[cfg(any(bootstrap, target_has_atomic_load_store = "32"))] +#[cfg(target_has_atomic_load_store = "32")] atomic_int! { cfg(target_has_atomic = "32"), stable(feature = "integer_atomics_stable", since = "1.34.0"), @@ -1997,10 +1997,7 @@ atomic_int! { "AtomicU32::new(0)", u32 AtomicU32 ATOMIC_U32_INIT } -#[cfg(any( - all(bootstrap, target_has_atomic = "64"), - target_has_atomic_load_store = "64" -))] +#[cfg(target_has_atomic_load_store = "64")] atomic_int! { cfg(target_has_atomic = "64"), stable(feature = "integer_atomics_stable", since = "1.34.0"), @@ -2017,10 +2014,7 @@ atomic_int! { "AtomicI64::new(0)", i64 AtomicI64 ATOMIC_I64_INIT } -#[cfg(any( - all(bootstrap, target_has_atomic = "64"), - target_has_atomic_load_store = "64" -))] +#[cfg(target_has_atomic_load_store = "64")] atomic_int! { cfg(target_has_atomic = "64"), stable(feature = "integer_atomics_stable", since = "1.34.0"), @@ -2071,22 +2065,22 @@ atomic_int! { "AtomicU128::new(0)", u128 AtomicU128 ATOMIC_U128_INIT } -#[cfg(any(bootstrap, target_has_atomic_load_store = "ptr"))] +#[cfg(target_has_atomic_load_store = "ptr")] #[cfg(target_pointer_width = "16")] macro_rules! ptr_width { () => { 2 } } -#[cfg(any(bootstrap, target_has_atomic_load_store = "ptr"))] +#[cfg(target_has_atomic_load_store = "ptr")] #[cfg(target_pointer_width = "32")] macro_rules! ptr_width { () => { 4 } } -#[cfg(any(bootstrap, target_has_atomic_load_store = "ptr"))] +#[cfg(target_has_atomic_load_store = "ptr")] #[cfg(target_pointer_width = "64")] macro_rules! ptr_width { () => { 8 } } -#[cfg(any(bootstrap, target_has_atomic_load_store = "ptr"))] +#[cfg(target_has_atomic_load_store = "ptr")] atomic_int!{ cfg(target_has_atomic = "ptr"), stable(feature = "rust1", since = "1.0.0"), @@ -2103,7 +2097,7 @@ atomic_int!{ "AtomicIsize::new(0)", isize AtomicIsize ATOMIC_ISIZE_INIT } -#[cfg(any(bootstrap, target_has_atomic_load_store = "ptr"))] +#[cfg(target_has_atomic_load_store = "ptr")] atomic_int!{ cfg(target_has_atomic = "ptr"), stable(feature = "rust1", since = "1.0.0"), @@ -2530,7 +2524,7 @@ pub fn compiler_fence(order: Ordering) { } -#[cfg(any(bootstrap, target_has_atomic_load_store = "8"))] +#[cfg(target_has_atomic_load_store = "8")] #[stable(feature = "atomic_debug", since = "1.3.0")] impl fmt::Debug for AtomicBool { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { @@ -2538,7 +2532,7 @@ impl fmt::Debug for AtomicBool { } } -#[cfg(any(bootstrap, target_has_atomic_load_store = "ptr"))] +#[cfg(target_has_atomic_load_store = "ptr")] #[stable(feature = "atomic_debug", since = "1.3.0")] impl<T> fmt::Debug for AtomicPtr<T> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { @@ -2546,7 +2540,7 @@ impl<T> fmt::Debug for AtomicPtr<T> { } } -#[cfg(any(bootstrap, target_has_atomic_load_store = "ptr"))] +#[cfg(target_has_atomic_load_store = "ptr")] #[stable(feature = "atomic_pointer", since = "1.24.0")] impl<T> fmt::Pointer for AtomicPtr<T> { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { |
