]> git.lizzy.rs Git - rust.git/commitdiff
Snap cfgs
authorMark Rousskov <mark.simulacrum@gmail.com>
Wed, 6 Nov 2019 13:09:55 +0000 (08:09 -0500)
committerMark Rousskov <mark.simulacrum@gmail.com>
Tue, 12 Nov 2019 21:36:57 +0000 (16:36 -0500)
17 files changed:
src/libcore/array/mod.rs
src/libcore/convert.rs
src/libcore/intrinsics.rs
src/libcore/lib.rs
src/libcore/macros.rs
src/libcore/marker.rs
src/libcore/ops/try.rs
src/libcore/panic.rs
src/libcore/panicking.rs
src/libcore/ptr/mod.rs
src/libcore/sync/atomic.rs
src/libpanic_unwind/seh.rs
src/libproc_macro/lib.rs
src/librustc/lib.rs
src/libstd/lib.rs
src/libstd/panic.rs
src/libsyntax_pos/lib.rs

index 74a7d062d3f4afe37dede82858bdd864c05671da..901c1ee33cda42082903f8c96249c040aa8a3216 100644 (file)
 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;
 
index 5058e58d0eb9cb6fb1f4c5384342a457d58e748c..e16c3840260454bd765fb0d63b257351bc17a2ce 100644 (file)
@@ -557,7 +557,6 @@ fn from(t: T) -> T { 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 {
index 3db85d05d7a986b0da42dc2f00cab35947678f7a..ffddee89ce55e98f60846827ef24be63023529ea 100644 (file)
     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 @@ pub fn volatile_copy_nonoverlapping_memory<T>(dst: *mut T, src: *const T,
     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;
 }
 
index ca431627147a8a8ff519fdcf4aec0bab2ae66bd7..ea5536eb50caec8eaf6290c22fd18625e97ccb7a 100644 (file)
 #![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)]
index 726d187d2e98130bbed1df5ab3fc5019e24a8844..d6b6e26436f31d3af34acc46a3f2729b547023ee 100644 (file)
@@ -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
index a25573feabb2bb02b7366d52d04f886b39ac56cd..2d2fc4102e190a4918af1b376048cea86e73f9be 100644 (file)
@@ -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 @@ fn default() -> $t<T> {
             }
         }
 
-        #[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> { }
         )
index e8f35f8cf245025925decf4771c869b8213923d6..4f4652084a80133e7e9d79f76995131cbbe29760 100644 (file)
@@ -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 @@
 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.
index 51bbf3a8fd221bf4cb2f120a6db4f45a9550433b..cdd38449a1be277d80bb1e02d21b8c7f0261aba9 100644 (file)
@@ -167,7 +167,7 @@ fn fmt(&self, formatter: &mut fmt::Formatter<'_>) -> fmt::Result {
 ///
 /// 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> {
index b88dc336097f33ce5739aac3d5811b90b3264ba3..8a6ab99c65a3c4d5cb9689869857ac6a5fcfe8f5 100644 (file)
 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)]
index 5a75730cf2bd4e14e43834e13835ba8ffda8f647..39d56958f5de03167dc25d14e19897cff778c42d 100644 (file)
@@ -1301,7 +1301,6 @@ pub fn wrapping_offset(self, count: isize) -> *const T where T: Sized {
     /// }
     /// ```
     #[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 @@ pub fn wrapping_offset(self, count: isize) -> *const T where T: Sized {
         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>()`.
     ///
index d311cb16b64d37250f66d9bbd56b2a83a3dd87db..820c1edf930d77c959ebf406cf3814f776a3cdc8 100644 (file)
@@ -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 @@ fn default() -> Self {
 }
 
 // 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 @@ fn default() -> 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 @@ pub fn fetch_xor(&self, val: bool, order: Ordering) -> bool {
     }
 }
 
-#[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 @@ pub fn compare_exchange_weak(&self,
     }
 }
 
-#[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 @@ pub fn fetch_min(&self, val: $int_type, order: Ordering) -> $int_type {
     }
 }
 
-#[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 @@ pub fn fetch_min(&self, val: $int_type, order: Ordering) -> $int_type {
     "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 @@ pub fn fetch_min(&self, val: $int_type, order: Ordering) -> $int_type {
     "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 @@ pub fn fetch_min(&self, val: $int_type, order: Ordering) -> $int_type {
     "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 @@ pub fn fetch_min(&self, val: $int_type, order: Ordering) -> $int_type {
     "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 @@ pub fn fetch_min(&self, val: $int_type, order: Ordering) -> $int_type {
     "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 @@ pub fn fetch_min(&self, val: $int_type, order: Ordering) -> $int_type {
     "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 @@ pub fn fetch_min(&self, val: $int_type, order: Ordering) -> $int_type {
     "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 @@ pub fn fetch_min(&self, val: $int_type, order: Ordering) -> $int_type {
     "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 @@ macro_rules! ptr_width {
     "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 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
     }
 }
 
-#[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 @@ fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
     }
 }
 
-#[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 {
index 621813a2fee9550bccf5e8124ac7d5c9f04514c4..2bddcbc4422fd7940fdd845fca91c44feea40aa6 100644 (file)
@@ -98,9 +98,6 @@
 mod imp {
     pub type ptr_t = *mut u8;
 
-    #[cfg(bootstrap)]
-    pub const NAME1: [u8; 7] = [b'.', b'P', b'A', b'_', b'K', 0, 0];
-
     macro_rules! ptr {
         (0) => (core::ptr::null_mut());
         ($e:expr) => ($e as *mut u8);
@@ -112,9 +109,6 @@ macro_rules! ptr {
 mod imp {
     pub type ptr_t = u32;
 
-    #[cfg(bootstrap)]
-    pub const NAME1: [u8; 7] = [b'.', b'P', b'E', b'A', b'_', b'K', 0];
-
     extern "C" {
         pub static __ImageBase: u8;
     }
@@ -161,17 +155,11 @@ pub struct _PMD {
 pub struct _TypeDescriptor {
     pub pVFTable: *const u8,
     pub spare: *mut u8,
-    #[cfg(bootstrap)]
-    pub name: [u8; 7],
-    #[cfg(not(bootstrap))]
     pub name: [u8; 11],
 }
 
 // Note that we intentionally ignore name mangling rules here: we don't want C++
 // to be able to catch Rust panics by simply declaring a `struct rust_panic`.
-#[cfg(bootstrap)]
-use imp::NAME1 as TYPE_NAME;
-#[cfg(not(bootstrap))]
 const TYPE_NAME: [u8; 11] = *b"rust_panic\0";
 
 static mut THROW_INFO: _ThrowInfo = _ThrowInfo {
@@ -194,9 +182,6 @@ pub struct _TypeDescriptor {
         pdisp: -1,
         vdisp: 0,
     },
-    #[cfg(bootstrap)]
-    sizeOrOffset: mem::size_of::<*mut u64>() as c_int,
-    #[cfg(not(bootstrap))]
     sizeOrOffset: mem::size_of::<[u64; 2]>() as c_int,
     copy_function: ptr!(0),
 };
@@ -218,8 +203,7 @@ pub struct _TypeDescriptor {
 // an argument to the C++ personality function.
 //
 // Again, I'm not entirely sure what this is describing, it just seems to work.
-#[cfg_attr(bootstrap, lang = "msvc_try_filter")]
-#[cfg_attr(not(any(test, bootstrap)), lang = "eh_catch_typeinfo")]
+#[cfg_attr(not(test), lang = "eh_catch_typeinfo")]
 static mut TYPE_DESCRIPTOR: _TypeDescriptor = _TypeDescriptor {
     pVFTable: unsafe { &TYPE_INFO_VTABLE } as *const _ as *const _,
     spare: core::ptr::null_mut(),
@@ -239,11 +223,7 @@ pub unsafe fn panic(data: Box<dyn Any + Send>) -> u32 {
     let ptrs = mem::transmute::<_, raw::TraitObject>(data);
     let mut ptrs = [ptrs.data as u64, ptrs.vtable as u64];
     let mut ptrs_ptr = ptrs.as_mut_ptr();
-    let throw_ptr = if cfg!(bootstrap) {
-        &mut ptrs_ptr as *mut _ as *mut _
-    } else {
-        ptrs_ptr as *mut _
-    };
+    let throw_ptr = ptrs_ptr as *mut _;
 
     // This... may seems surprising, and justifiably so. On 32-bit MSVC the
     // pointers between these structure are just that, pointers. On 64-bit MSVC,
index 6166561d87f15a8ef4075a2338a49cd79ab091b3..87cd8fcb14385490c9bf560cd79d928e10f63ba5 100644 (file)
@@ -25,7 +25,6 @@
 #![feature(extern_types)]
 #![feature(in_band_lifetimes)]
 #![feature(optin_builtin_traits)]
-#![cfg_attr(bootstrap, feature(non_exhaustive))]
 #![feature(rustc_attrs)]
 #![feature(specialization)]
 
index 996f5b1241263e7397e29ee93cc2c95c0e5a9aac..0ea33d725f1e71ff1fbe120c1d936e29a2ef5807 100644 (file)
@@ -41,7 +41,6 @@
 #![feature(overlapping_marker_traits)]
 #![feature(extern_types)]
 #![feature(nll)]
-#![cfg_attr(bootstrap, feature(non_exhaustive))]
 #![feature(optin_builtin_traits)]
 #![feature(option_expect_none)]
 #![feature(range_is_empty)]
@@ -57,7 +56,6 @@
 #![feature(test)]
 #![feature(in_band_lifetimes)]
 #![feature(crate_visibility_modifier)]
-#![cfg_attr(bootstrap, feature(proc_macro_hygiene))]
 #![feature(log_syntax)]
 #![feature(associated_type_bounds)]
 #![feature(rustc_attrs)]
index 927fd2a6b0bc6f2005dc8cd739124acb8c15505a..72d998de9c4b71ad7242dddd93ecc25587416cbb 100644 (file)
 #![feature(needs_panic_runtime)]
 #![feature(never_type)]
 #![feature(nll)]
-#![cfg_attr(bootstrap, feature(non_exhaustive))]
 #![cfg_attr(bootstrap, feature(on_unimplemented))]
 #![feature(optin_builtin_traits)]
 #![feature(panic_info_message)]
index 577673b7e405b6e3e3de3e86f6636823e366aaed..e36496d4c1c0d6df9944335c86e1bd36eafe44c9 100644 (file)
@@ -13,7 +13,6 @@
 use crate::ptr::{Unique, NonNull};
 use crate::rc::Rc;
 use crate::sync::{Arc, Mutex, RwLock};
-#[cfg(not(bootstrap))]
 use crate::sync::atomic;
 use crate::task::{Context, Poll};
 use crate::thread::Result;
index dc29b189639ce409625a39fa380161d1493616de..a762d8af49a21149d10c03e7bfc7dae70c7081d4 100644 (file)
@@ -9,10 +9,8 @@
 #![feature(const_fn)]
 #![feature(crate_visibility_modifier)]
 #![feature(nll)]
-#![cfg_attr(bootstrap, feature(non_exhaustive))]
 #![feature(optin_builtin_traits)]
 #![feature(rustc_attrs)]
-#![cfg_attr(bootstrap, feature(proc_macro_hygiene))]
 #![feature(specialization)]
 #![feature(step_trait)]