Auto merge of #72957 - Mark-Simulacrum:bootstrap-bump, r=sfackler
Bump bootstrap compiler to 1.45 Pretty standard update.
This commit is contained in:
commit
84ec8238b1
|
@ -13,7 +13,7 @@ use build_helper::output;
|
|||
use crate::Build;
|
||||
|
||||
// The version number
|
||||
pub const CFG_RELEASE_NUM: &str = "1.45.0";
|
||||
pub const CFG_RELEASE_NUM: &str = "1.46.0";
|
||||
|
||||
pub struct GitInfo {
|
||||
inner: Option<Info>,
|
||||
|
|
|
@ -2035,12 +2035,8 @@ trait RcBoxPtr<T: ?Sized> {
|
|||
// nevertheless, we insert an abort here to hint LLVM at
|
||||
// an otherwise missed optimization.
|
||||
if strong == 0 || strong == usize::max_value() {
|
||||
// remove `unsafe` on bootstrap bump
|
||||
#[cfg_attr(not(bootstrap), allow(unused_unsafe))]
|
||||
unsafe {
|
||||
abort();
|
||||
}
|
||||
}
|
||||
self.inner().strong.set(strong + 1);
|
||||
}
|
||||
|
||||
|
@ -2063,12 +2059,8 @@ trait RcBoxPtr<T: ?Sized> {
|
|||
// nevertheless, we insert an abort here to hint LLVM at
|
||||
// an otherwise missed optimization.
|
||||
if weak == 0 || weak == usize::max_value() {
|
||||
// remove `unsafe` on bootstrap bump
|
||||
#[cfg_attr(not(bootstrap), allow(unused_unsafe))]
|
||||
unsafe {
|
||||
abort();
|
||||
}
|
||||
}
|
||||
self.inner().weak.set(weak + 1);
|
||||
}
|
||||
|
||||
|
|
|
@ -1093,12 +1093,8 @@ impl<T: ?Sized> Clone for Arc<T> {
|
|||
// We abort because such a program is incredibly degenerate, and we
|
||||
// don't care to support it.
|
||||
if old_size > MAX_REFCOUNT {
|
||||
// remove `unsafe` on bootstrap bump
|
||||
#[cfg_attr(not(bootstrap), allow(unused_unsafe))]
|
||||
unsafe {
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
Self::from_inner(self.ptr)
|
||||
}
|
||||
|
@ -1616,12 +1612,8 @@ impl<T: ?Sized> Weak<T> {
|
|||
|
||||
// See comments in `Arc::clone` for why we do this (for `mem::forget`).
|
||||
if n > MAX_REFCOUNT {
|
||||
// remove `unsafe` on bootstrap bump
|
||||
#[cfg_attr(not(bootstrap), allow(unused_unsafe))]
|
||||
unsafe {
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
// Relaxed is valid for the same reason it is on Arc's Clone impl
|
||||
match inner.strong.compare_exchange_weak(n, n + 1, Relaxed, Relaxed) {
|
||||
|
@ -1767,11 +1759,8 @@ impl<T: ?Sized> Clone for Weak<T> {
|
|||
|
||||
// See comments in Arc::clone() for why we do this (for mem::forget).
|
||||
if old_size > MAX_REFCOUNT {
|
||||
#[cfg_attr(not(bootstrap), allow(unused_unsafe))] // remove `unsafe` on bootstrap bump
|
||||
unsafe {
|
||||
abort();
|
||||
}
|
||||
}
|
||||
|
||||
Weak { ptr: self.ptr }
|
||||
}
|
||||
|
|
|
@ -54,7 +54,6 @@
|
|||
)]
|
||||
#![allow(missing_docs)]
|
||||
|
||||
#[cfg(not(bootstrap))]
|
||||
use crate::marker::DiscriminantKind;
|
||||
use crate::mem;
|
||||
|
||||
|
@ -1916,11 +1915,7 @@ extern "rust-intrinsic" {
|
|||
/// The stabilized version of this intrinsic is
|
||||
/// [`std::mem::discriminant`](../../std/mem/fn.discriminant.html)
|
||||
#[rustc_const_unstable(feature = "const_discriminant", issue = "69821")]
|
||||
#[cfg(not(bootstrap))]
|
||||
pub fn discriminant_value<T>(v: &T) -> <T as DiscriminantKind>::Discriminant;
|
||||
#[rustc_const_unstable(feature = "const_discriminant", issue = "69821")]
|
||||
#[cfg(bootstrap)]
|
||||
pub fn discriminant_value<T>(v: &T) -> u64;
|
||||
|
||||
/// Rust's "try catch" construct which invokes the function pointer `try_fn`
|
||||
/// with the data pointer `data`.
|
||||
|
|
|
@ -692,25 +692,13 @@ mod impls {
|
|||
issue = "none",
|
||||
reason = "this trait is unlikely to ever be stabilized, use `mem::discriminant` instead"
|
||||
)]
|
||||
#[cfg_attr(not(bootstrap), lang = "discriminant_kind")]
|
||||
#[lang = "discriminant_kind"]
|
||||
pub trait DiscriminantKind {
|
||||
/// The type of the dicriminant, which must satisfy the trait
|
||||
/// bounds required by `mem::Discriminant`.
|
||||
type Discriminant: Clone + Copy + Debug + Eq + PartialEq + Hash + Send + Sync + Unpin;
|
||||
}
|
||||
|
||||
// Manually implement `DiscriminantKind` for all types during bootstrap
|
||||
// to reduce the required amount of conditional compilation.
|
||||
#[unstable(
|
||||
feature = "discriminant_kind",
|
||||
issue = "none",
|
||||
reason = "this trait is unlikely to ever be stabilized, use `mem::discriminant` instead"
|
||||
)]
|
||||
#[cfg(bootstrap)]
|
||||
impl<T: ?Sized> DiscriminantKind for T {
|
||||
type Discriminant = u64;
|
||||
}
|
||||
|
||||
/// Compiler-internal trait used to determine whether a type contains
|
||||
/// any `UnsafeCell` internally, but not through an indirection.
|
||||
/// This affects, for example, whether a `static` of that type is
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
)
|
||||
)]
|
||||
#[doc(alias = "?")]
|
||||
#[cfg_attr(not(bootstrap), lang = "try")]
|
||||
#[lang = "try"]
|
||||
pub trait Try {
|
||||
/// The type of this value when viewed as successful.
|
||||
#[unstable(feature = "try_trait", issue = "42327")]
|
||||
|
|
|
@ -39,13 +39,8 @@ use crate::panic::{Location, PanicInfo};
|
|||
#[lang = "panic"] // needed by codegen for panic on overflow and other `Assert` MIR terminators
|
||||
pub fn panic(expr: &str) -> ! {
|
||||
if cfg!(feature = "panic_immediate_abort") {
|
||||
// remove `unsafe` (and safety comment) on bootstrap bump
|
||||
#[cfg_attr(not(bootstrap), allow(unused_unsafe))]
|
||||
// SAFETY: the `abort` intrinsic has no requirements to be called.
|
||||
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
|
||||
|
@ -62,13 +57,8 @@ pub fn panic(expr: &str) -> ! {
|
|||
#[lang = "panic_bounds_check"] // needed by codegen for panic on OOB array/slice access
|
||||
fn panic_bounds_check(index: usize, len: usize) -> ! {
|
||||
if cfg!(feature = "panic_immediate_abort") {
|
||||
// remove `unsafe` (and safety comment) on bootstrap bump
|
||||
#[cfg_attr(not(bootstrap), allow(unused_unsafe))]
|
||||
// SAFETY: the `abort` intrinsic has no requirements to be called.
|
||||
unsafe {
|
||||
super::intrinsics::abort()
|
||||
}
|
||||
}
|
||||
|
||||
panic!("index out of bounds: the len is {} but the index is {}", len, index)
|
||||
}
|
||||
|
@ -80,13 +70,8 @@ fn panic_bounds_check(index: usize, len: usize) -> ! {
|
|||
#[track_caller]
|
||||
pub fn panic_fmt(fmt: fmt::Arguments<'_>) -> ! {
|
||||
if cfg!(feature = "panic_immediate_abort") {
|
||||
// remove `unsafe` (and safety comment) on bootstrap bump
|
||||
#[cfg_attr(not(bootstrap), allow(unused_unsafe))]
|
||||
// SAFETY: the `abort` intrinsic has no requirements to be called.
|
||||
unsafe {
|
||||
super::intrinsics::abort()
|
||||
}
|
||||
}
|
||||
|
||||
// NOTE This function never crosses the FFI boundary; it's a Rust-to-Rust call
|
||||
// that gets resolved to the `#[panic_handler]` function.
|
||||
|
|
|
@ -327,8 +327,5 @@ pub unsafe fn cleanup(payload: *mut u8) -> Box<dyn Any + Send> {
|
|||
#[lang = "eh_personality"]
|
||||
#[cfg(not(test))]
|
||||
fn rust_eh_personality() {
|
||||
#[cfg_attr(not(bootstrap), allow(unused_unsafe))] // remove `unsafe` on bootstrap bump
|
||||
unsafe {
|
||||
core::intrinsics::abort()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -332,11 +332,8 @@ pub fn panicking() -> bool {
|
|||
#[cfg_attr(feature = "panic_immediate_abort", inline)]
|
||||
pub fn begin_panic_fmt(msg: &fmt::Arguments<'_>) -> ! {
|
||||
if cfg!(feature = "panic_immediate_abort") {
|
||||
#[cfg_attr(not(bootstrap), allow(unused_unsafe))] // remove `unsafe` on bootstrap bump
|
||||
unsafe {
|
||||
intrinsics::abort()
|
||||
}
|
||||
}
|
||||
|
||||
let info = PanicInfo::internal_constructor(Some(msg), Location::caller());
|
||||
begin_panic_handler(&info)
|
||||
|
@ -401,11 +398,8 @@ pub fn begin_panic_handler(info: &PanicInfo<'_>) -> ! {
|
|||
#[track_caller]
|
||||
pub fn begin_panic<M: Any + Send>(msg: M) -> ! {
|
||||
if cfg!(feature = "panic_immediate_abort") {
|
||||
#[cfg_attr(not(bootstrap), allow(unused_unsafe))] // remove `unsafe` on bootstrap bump
|
||||
unsafe {
|
||||
intrinsics::abort()
|
||||
}
|
||||
}
|
||||
|
||||
rust_panic_with_hook(&mut PanicPayload::new(msg), None, Location::caller());
|
||||
|
||||
|
@ -464,11 +458,8 @@ fn rust_panic_with_hook(
|
|||
"thread panicked while processing \
|
||||
panic. aborting.\n"
|
||||
));
|
||||
#[cfg_attr(not(bootstrap), allow(unused_unsafe))] // remove `unsafe` on bootstrap bump
|
||||
unsafe {
|
||||
intrinsics::abort()
|
||||
}
|
||||
}
|
||||
|
||||
unsafe {
|
||||
let mut info = PanicInfo::internal_constructor(message, location);
|
||||
|
@ -502,11 +493,8 @@ fn rust_panic_with_hook(
|
|||
"thread panicked while panicking. \
|
||||
aborting.\n"
|
||||
));
|
||||
#[cfg_attr(not(bootstrap), allow(unused_unsafe))] // remove `unsafe` on bootstrap bump
|
||||
unsafe {
|
||||
intrinsics::abort()
|
||||
}
|
||||
}
|
||||
|
||||
rust_panic(payload)
|
||||
}
|
||||
|
|
|
@ -354,13 +354,9 @@ impl<T> Packet<T> {
|
|||
|
||||
// See comments on Arc::clone() on why we do this (for `mem::forget`).
|
||||
if old_count > MAX_REFCOUNT {
|
||||
// remove `unsafe` on bootstrap bump
|
||||
#[cfg_attr(not(bootstrap), allow(unused_unsafe))]
|
||||
unsafe {
|
||||
abort();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Decrement the reference count on a channel. This is called whenever a
|
||||
// Chan is dropped and may end up waking up a receiver. It's the receiver's
|
||||
|
|
|
@ -358,13 +358,9 @@ impl<T> Packet<T> {
|
|||
|
||||
// See comments on Arc::clone() on why we do this (for `mem::forget`).
|
||||
if old_count > MAX_REFCOUNT {
|
||||
// remove `unsafe` on bootstrap bump
|
||||
#[cfg_attr(not(bootstrap), allow(unused_unsafe))]
|
||||
unsafe {
|
||||
abort();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn drop_chan(&self) {
|
||||
// Only flag the channel as disconnected if we're the last channel
|
||||
|
|
|
@ -52,11 +52,8 @@ pub fn decode_error_kind(errno: i32) -> ErrorKind {
|
|||
}
|
||||
|
||||
pub fn abort_internal() -> ! {
|
||||
#[cfg_attr(not(bootstrap), allow(unused_unsafe))] // remove `unsafe` on bootstrap bump
|
||||
unsafe {
|
||||
core::intrinsics::abort();
|
||||
}
|
||||
}
|
||||
|
||||
pub use libc::strlen;
|
||||
|
||||
|
|
|
@ -314,8 +314,5 @@ pub fn abort_internal() -> ! {
|
|||
llvm_asm!("int $$0x29" :: "{ecx}"(7) ::: volatile); // 7 is FAST_FAIL_FATAL_APP_EXIT
|
||||
crate::intrinsics::unreachable();
|
||||
}
|
||||
#[cfg_attr(not(bootstrap), allow(unused_unsafe))] // remove `unsafe` on bootstrap bump
|
||||
unsafe {
|
||||
crate::intrinsics::abort();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
# source tarball for a stable release you'll likely see `1.x.0` for rustc and
|
||||
# `0.(x+1).0` for Cargo where they were released on `date`.
|
||||
|
||||
date: 2020-04-22
|
||||
date: 2020-06-03
|
||||
rustc: beta
|
||||
cargo: beta
|
||||
|
||||
|
|
|
@ -279,13 +279,13 @@ impl EarlyLintPass for Write {
|
|||
if let (Some(fmt_str), expr) = self.check_tts(cx, &mac.args.inner_tokens(), true) {
|
||||
if fmt_str.symbol == Symbol::intern("") {
|
||||
let mut applicability = Applicability::MachineApplicable;
|
||||
let suggestion = expr.map_or_else(
|
||||
move || {
|
||||
let suggestion = match expr {
|
||||
Some(expr) => snippet_with_applicability(cx, expr.span, "v", &mut applicability),
|
||||
None => {
|
||||
applicability = Applicability::HasPlaceholders;
|
||||
Cow::Borrowed("v")
|
||||
},
|
||||
move |expr| snippet_with_applicability(cx, expr.span, "v", &mut applicability),
|
||||
);
|
||||
};
|
||||
|
||||
span_lint_and_sugg(
|
||||
cx,
|
||||
|
|
Loading…
Reference in New Issue