Switch master to 1.38

This commit is contained in:
Mark Rousskov
2019-07-04 10:05:50 -04:00
parent b43eb4235a
commit 8a7dded1a2
16 changed files with 17 additions and 98 deletions

View File

@@ -13,7 +13,7 @@ use build_helper::output;
use crate::Build; use crate::Build;
// The version number // The version number
pub const CFG_RELEASE_NUM: &str = "1.37.0"; pub const CFG_RELEASE_NUM: &str = "1.38.0";
pub struct GitInfo { pub struct GitInfo {
inner: Option<Info>, inner: Option<Info>,

View File

@@ -15,8 +15,7 @@ extern "Rust" {
// them from the `#[global_allocator]` attribute if there is one, or uses the // them from the `#[global_allocator]` attribute if there is one, or uses the
// default implementations in libstd (`__rdl_alloc` etc in `src/libstd/alloc.rs`) // default implementations in libstd (`__rdl_alloc` etc in `src/libstd/alloc.rs`)
// otherwise. // otherwise.
#[cfg_attr(bootstrap, allocator)] #[rustc_allocator]
#[cfg_attr(not(bootstrap), rustc_allocator)]
#[rustc_allocator_nounwind] #[rustc_allocator_nounwind]
fn __rust_alloc(size: usize, align: usize) -> *mut u8; fn __rust_alloc(size: usize, align: usize) -> *mut u8;
#[rustc_allocator_nounwind] #[rustc_allocator_nounwind]

View File

@@ -79,7 +79,6 @@
#![feature(coerce_unsized)] #![feature(coerce_unsized)]
#![feature(dispatch_from_dyn)] #![feature(dispatch_from_dyn)]
#![feature(core_intrinsics)] #![feature(core_intrinsics)]
#![cfg_attr(bootstrap, feature(custom_attribute))]
#![feature(dropck_eyepatch)] #![feature(dropck_eyepatch)]
#![feature(exact_size_is_empty)] #![feature(exact_size_is_empty)]
#![feature(fmt_internals)] #![feature(fmt_internals)]

View File

@@ -302,7 +302,6 @@ impl<T> sealed_trait::VaArgSafe for *const T {}
reason = "the `c_variadic` feature has not been properly tested on \ reason = "the `c_variadic` feature has not been properly tested on \
all supported platforms", all supported platforms",
issue = "44930")] issue = "44930")]
#[cfg(not(bootstrap))]
impl<'f> VaListImpl<'f> { impl<'f> VaListImpl<'f> {
/// Advance to the next arg. /// Advance to the next arg.
#[inline] #[inline]
@@ -324,7 +323,6 @@ impl<'f> VaListImpl<'f> {
reason = "the `c_variadic` feature has not been properly tested on \ reason = "the `c_variadic` feature has not been properly tested on \
all supported platforms", all supported platforms",
issue = "44930")] issue = "44930")]
#[cfg(not(bootstrap))]
impl<'f> Clone for VaListImpl<'f> { impl<'f> Clone for VaListImpl<'f> {
#[inline] #[inline]
fn clone(&self) -> Self { fn clone(&self) -> Self {
@@ -340,7 +338,6 @@ impl<'f> Clone for VaListImpl<'f> {
reason = "the `c_variadic` feature has not been properly tested on \ reason = "the `c_variadic` feature has not been properly tested on \
all supported platforms", all supported platforms",
issue = "44930")] issue = "44930")]
#[cfg(not(bootstrap))]
impl<'f> Drop for VaListImpl<'f> { impl<'f> Drop for VaListImpl<'f> {
fn drop(&mut self) { fn drop(&mut self) {
// FIXME: this should call `va_end`, but there's no clean way to // FIXME: this should call `va_end`, but there's no clean way to
@@ -359,15 +356,12 @@ impl<'f> Drop for VaListImpl<'f> {
extern "rust-intrinsic" { extern "rust-intrinsic" {
/// Destroy the arglist `ap` after initialization with `va_start` or /// Destroy the arglist `ap` after initialization with `va_start` or
/// `va_copy`. /// `va_copy`.
#[cfg(not(bootstrap))]
fn va_end(ap: &mut VaListImpl<'_>); fn va_end(ap: &mut VaListImpl<'_>);
/// Copies the current location of arglist `src` to the arglist `dst`. /// Copies the current location of arglist `src` to the arglist `dst`.
#[cfg(not(bootstrap))]
fn va_copy<'f>(dest: *mut VaListImpl<'f>, src: &VaListImpl<'f>); fn va_copy<'f>(dest: *mut VaListImpl<'f>, src: &VaListImpl<'f>);
/// Loads an argument of type `T` from the `va_list` `ap` and increment the /// Loads an argument of type `T` from the `va_list` `ap` and increment the
/// argument `ap` points to. /// argument `ap` points to.
#[cfg(not(bootstrap))]
fn va_arg<T: sealed_trait::VaArgSafe>(ap: &mut VaListImpl<'_>) -> T; fn va_arg<T: sealed_trait::VaArgSafe>(ap: &mut VaListImpl<'_>) -> T;
} }

View File

@@ -25,7 +25,7 @@ use crate::task::{Context, Poll};
#[doc(spotlight)] #[doc(spotlight)]
#[must_use = "futures do nothing unless you `.await` or poll them"] #[must_use = "futures do nothing unless you `.await` or poll them"]
#[stable(feature = "futures_api", since = "1.36.0")] #[stable(feature = "futures_api", since = "1.36.0")]
#[cfg_attr(not(bootstrap), lang = "future_trait")] #[lang = "future_trait"]
pub trait Future { pub trait Future {
/// The type of value produced on completion. /// The type of value produced on completion.
#[stable(feature = "futures_api", since = "1.36.0")] #[stable(feature = "futures_api", since = "1.36.0")]

View File

@@ -1052,16 +1052,12 @@ extern "rust-intrinsic" {
pub fn fabsf64(x: f64) -> f64; pub fn fabsf64(x: f64) -> f64;
/// Returns the minimum of two `f32` values. /// Returns the minimum of two `f32` values.
#[cfg(not(bootstrap))]
pub fn minnumf32(x: f32, y: f32) -> f32; pub fn minnumf32(x: f32, y: f32) -> f32;
/// Returns the minimum of two `f64` values. /// Returns the minimum of two `f64` values.
#[cfg(not(bootstrap))]
pub fn minnumf64(x: f64, y: f64) -> f64; pub fn minnumf64(x: f64, y: f64) -> f64;
/// Returns the maximum of two `f32` values. /// Returns the maximum of two `f32` values.
#[cfg(not(bootstrap))]
pub fn maxnumf32(x: f32, y: f32) -> f32; pub fn maxnumf32(x: f32, y: f32) -> f32;
/// Returns the maximum of two `f64` values. /// Returns the maximum of two `f64` values.
#[cfg(not(bootstrap))]
pub fn maxnumf64(x: f64, y: f64) -> f64; pub fn maxnumf64(x: f64, y: f64) -> f64;
/// Copies the sign from `y` to `x` for `f32` values. /// Copies the sign from `y` to `x` for `f32` values.
@@ -1255,17 +1251,14 @@ extern "rust-intrinsic" {
/// Returns the result of an unchecked addition, resulting in /// Returns the result of an unchecked addition, resulting in
/// undefined behavior when `x + y > T::max_value()` or `x + y < T::min_value()`. /// undefined behavior when `x + y > T::max_value()` or `x + y < T::min_value()`.
#[cfg(not(bootstrap))]
pub fn unchecked_add<T>(x: T, y: T) -> T; pub fn unchecked_add<T>(x: T, y: T) -> T;
/// Returns the result of an unchecked substraction, resulting in /// Returns the result of an unchecked substraction, resulting in
/// undefined behavior when `x - y > T::max_value()` or `x - y < T::min_value()`. /// undefined behavior when `x - y > T::max_value()` or `x - y < T::min_value()`.
#[cfg(not(bootstrap))]
pub fn unchecked_sub<T>(x: T, y: T) -> T; pub fn unchecked_sub<T>(x: T, y: T) -> T;
/// Returns the result of an unchecked multiplication, resulting in /// Returns the result of an unchecked multiplication, resulting in
/// undefined behavior when `x * y > T::max_value()` or `x * y < T::min_value()`. /// undefined behavior when `x * y > T::max_value()` or `x * y < T::min_value()`.
#[cfg(not(bootstrap))]
pub fn unchecked_mul<T>(x: T, y: T) -> T; pub fn unchecked_mul<T>(x: T, y: T) -> T;
/// Performs rotate left. /// Performs rotate left.
@@ -1563,53 +1556,3 @@ pub unsafe fn write_bytes<T>(dst: *mut T, val: u8, count: usize) {
} }
write_bytes(dst, val, count) write_bytes(dst, val, count)
} }
// Simple bootstrap implementations of minnum/maxnum for stage0 compilation.
/// Returns the minimum of two `f32` values.
#[cfg(bootstrap)]
pub fn minnumf32(x: f32, y: f32) -> f32 {
// IEEE754 says: minNum(x, y) is the canonicalized number x if x < y, y if y < x, the
// canonicalized number if one operand is a number and the other a quiet NaN. Otherwise it
// is either x or y, canonicalized (this means results might differ among implementations).
// When either x or y is a signaling NaN, then the result is according to 6.2.
//
// Since we do not support sNaN in Rust yet, we do not need to handle them.
// FIXME(nagisa): due to https://bugs.llvm.org/show_bug.cgi?id=33303 we canonicalize by
// multiplying by 1.0. Should switch to the `canonicalize` when it works.
(if x < y || y != y { x } else { y }) * 1.0
}
/// Returns the minimum of two `f64` values.
#[cfg(bootstrap)]
pub fn minnumf64(x: f64, y: f64) -> f64 {
// Identical to the `f32` case.
(if x < y || y != y { x } else { y }) * 1.0
}
/// Returns the maximum of two `f32` values.
#[cfg(bootstrap)]
pub fn maxnumf32(x: f32, y: f32) -> f32 {
// IEEE754 says: maxNum(x, y) is the canonicalized number y if x < y, x if y < x, the
// canonicalized number if one operand is a number and the other a quiet NaN. Otherwise it
// is either x or y, canonicalized (this means results might differ among implementations).
// When either x or y is a signaling NaN, then the result is according to 6.2.
//
// Since we do not support sNaN in Rust yet, we do not need to handle them.
// FIXME(nagisa): due to https://bugs.llvm.org/show_bug.cgi?id=33303 we canonicalize by
// multiplying by 1.0. Should switch to the `canonicalize` when it works.
(if x < y || x != x { y } else { x }) * 1.0
}
/// Returns the maximum of two `f64` values.
#[cfg(bootstrap)]
pub fn maxnumf64(x: f64, y: f64) -> f64 {
// Identical to the `f32` case.
(if x < y || x != x { y } else { x }) * 1.0
}
/// For bootstrapping, implement unchecked_sub as just wrapping_sub.
#[cfg(bootstrap)]
pub unsafe fn unchecked_sub<T>(x: T, y: T) -> T {
sub_with_overflow(x, y).0
}

View File

@@ -99,7 +99,7 @@
#![feature(staged_api)] #![feature(staged_api)]
#![feature(std_internals)] #![feature(std_internals)]
#![feature(stmt_expr_attributes)] #![feature(stmt_expr_attributes)]
#![cfg_attr(not(bootstrap), feature(transparent_unions))] #![feature(transparent_unions)]
#![feature(unboxed_closures)] #![feature(unboxed_closures)]
#![feature(unsized_locals)] #![feature(unsized_locals)]
#![feature(untagged_unions)] #![feature(untagged_unions)]

View File

@@ -207,7 +207,7 @@ use crate::mem::ManuallyDrop;
#[allow(missing_debug_implementations)] #[allow(missing_debug_implementations)]
#[stable(feature = "maybe_uninit", since = "1.36.0")] #[stable(feature = "maybe_uninit", since = "1.36.0")]
#[derive(Copy)] #[derive(Copy)]
#[cfg_attr(not(bootstrap), repr(transparent))] #[repr(transparent)]
pub union MaybeUninit<T> { pub union MaybeUninit<T> {
uninit: (), uninit: (),
value: ManuallyDrop<T>, value: ManuallyDrop<T>,

View File

@@ -50,7 +50,7 @@ assert_eq!(size_of::<Option<core::num::", stringify!($Ty), ">>(), size_of::<", s
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)] #[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash)]
#[repr(transparent)] #[repr(transparent)]
#[rustc_layout_scalar_valid_range_start(1)] #[rustc_layout_scalar_valid_range_start(1)]
#[cfg_attr(not(bootstrap), rustc_nonnull_optimization_guaranteed)] #[rustc_nonnull_optimization_guaranteed]
pub struct $Ty($Int); pub struct $Ty($Int);
} }

View File

@@ -38,7 +38,7 @@ use crate::cmp::Ordering;
#[stable(feature = "nonnull", since = "1.25.0")] #[stable(feature = "nonnull", since = "1.25.0")]
#[repr(transparent)] #[repr(transparent)]
#[rustc_layout_scalar_valid_range_start(1)] #[rustc_layout_scalar_valid_range_start(1)]
#[cfg_attr(not(bootstrap), rustc_nonnull_optimization_guaranteed)] #[rustc_nonnull_optimization_guaranteed]
pub struct NonNull<T: ?Sized> { pub struct NonNull<T: ?Sized> {
pointer: *const T, pointer: *const T,
} }

View File

@@ -1,7 +1,6 @@
/// A simple static assertion macro. /// A simple static assertion macro.
#[macro_export] #[macro_export]
#[cfg_attr(bootstrap, allow_internal_unstable(type_ascription, underscore_const_names))] #[allow_internal_unstable(type_ascription)]
#[cfg_attr(not(bootstrap), allow_internal_unstable(type_ascription))]
macro_rules! static_assert { macro_rules! static_assert {
($test:expr) => { ($test:expr) => {
// Use the bool to access an array such that if the bool is false, the access // Use the bool to access an array such that if the bool is false, the access
@@ -13,7 +12,6 @@ macro_rules! static_assert {
/// Type size assertion. The first argument is a type and the second argument is its expected size. /// Type size assertion. The first argument is a type and the second argument is its expected size.
#[macro_export] #[macro_export]
#[cfg_attr(bootstrap, allow_internal_unstable(underscore_const_names))]
macro_rules! static_assert_size { macro_rules! static_assert_size {
($ty:ty, $size:expr) => { ($ty:ty, $size:expr) => {
const _: [(); $size] = [(); ::std::mem::size_of::<$ty>()]; const _: [(); $size] = [(); ::std::mem::size_of::<$ty>()];

View File

@@ -7,7 +7,6 @@
#![feature(mem_take)] #![feature(mem_take)]
#![feature(nll)] #![feature(nll)]
#![feature(rustc_diagnostic_macros)] #![feature(rustc_diagnostic_macros)]
#![cfg_attr(bootstrap, feature(type_alias_enum_variants))]
#![recursion_limit="256"] #![recursion_limit="256"]

View File

@@ -59,17 +59,6 @@ where
TokenStream: Send + Sync, TokenStream: Send + Sync,
{} {}
// These are safe since we ensure that they hold for all fields in the `_dummy` function.
//
// These impls are only here because the compiler takes forever to compute the Send and Sync
// bounds without them.
// FIXME: Remove these impls when the compiler can compute the bounds quickly again.
// See https://github.com/rust-lang/rust/issues/60846
#[cfg(all(bootstrap, parallel_compiler))]
unsafe impl Send for TokenTree {}
#[cfg(all(bootstrap, parallel_compiler))]
unsafe impl Sync for TokenTree {}
impl TokenTree { impl TokenTree {
/// Use this token tree as a matcher to parse given tts. /// Use this token tree as a matcher to parse given tts.
pub fn parse(cx: &base::ExtCtxt<'_>, mtch: &[quoted::TokenTree], tts: TokenStream) pub fn parse(cx: &base::ExtCtxt<'_>, mtch: &[quoted::TokenTree], tts: TokenStream)

View File

@@ -4,13 +4,11 @@ fn main() {
println!("cargo:rerun-if-changed=build.rs"); println!("cargo:rerun-if-changed=build.rs");
let target = env::var("TARGET").expect("TARGET was not set"); let target = env::var("TARGET").expect("TARGET was not set");
// FIXME: the not(bootstrap) part is needed because of the issue addressed by #62286, if cfg!(feature = "llvm-libunwind") &&
// and could be removed once that change is in beta.
if cfg!(all(not(bootstrap), feature = "llvm-libunwind")) &&
(target.contains("linux") || (target.contains("linux") ||
target.contains("fuchsia")) { target.contains("fuchsia")) {
// Build the unwinding from libunwind C/C++ source code. // Build the unwinding from libunwind C/C++ source code.
#[cfg(all(not(bootstrap), feature = "llvm-libunwind"))] #[cfg(feature = "llvm-libunwind")]
llvm_libunwind::compile(); llvm_libunwind::compile();
} else if target.contains("linux") { } else if target.contains("linux") {
if target.contains("musl") { if target.contains("musl") {
@@ -44,7 +42,7 @@ fn main() {
} }
} }
#[cfg(all(not(bootstrap), feature = "llvm-libunwind"))] #[cfg(feature = "llvm-libunwind")]
mod llvm_libunwind { mod llvm_libunwind {
use std::env; use std::env;
use std::path::Path; use std::path::Path;

View File

@@ -67,7 +67,7 @@ pub enum _Unwind_Context {}
pub type _Unwind_Exception_Cleanup_Fn = extern "C" fn(unwind_code: _Unwind_Reason_Code, pub type _Unwind_Exception_Cleanup_Fn = extern "C" fn(unwind_code: _Unwind_Reason_Code,
exception: *mut _Unwind_Exception); exception: *mut _Unwind_Exception);
#[cfg_attr(all(not(bootstrap), feature = "llvm-libunwind"), #[cfg_attr(feature = "llvm-libunwind",
link(name = "unwind", kind = "static"))] link(name = "unwind", kind = "static"))]
extern "C" { extern "C" {
#[unwind(allowed)] #[unwind(allowed)]
@@ -93,7 +93,7 @@ if #[cfg(all(any(target_os = "ios", target_os = "netbsd", not(target_arch = "arm
} }
pub use _Unwind_Action::*; pub use _Unwind_Action::*;
#[cfg_attr(all(not(bootstrap), feature = "llvm-libunwind"), #[cfg_attr(feature = "llvm-libunwind",
link(name = "unwind", kind = "static"))] link(name = "unwind", kind = "static"))]
extern "C" { extern "C" {
pub fn _Unwind_GetGR(ctx: *mut _Unwind_Context, reg_index: c_int) -> _Unwind_Word; pub fn _Unwind_GetGR(ctx: *mut _Unwind_Context, reg_index: c_int) -> _Unwind_Word;
@@ -148,7 +148,7 @@ if #[cfg(all(any(target_os = "ios", target_os = "netbsd", not(target_arch = "arm
pub const UNWIND_POINTER_REG: c_int = 12; pub const UNWIND_POINTER_REG: c_int = 12;
pub const UNWIND_IP_REG: c_int = 15; pub const UNWIND_IP_REG: c_int = 15;
#[cfg_attr(all(not(bootstrap), feature = "llvm-libunwind"), #[cfg_attr(feature = "llvm-libunwind",
link(name = "unwind", kind = "static"))] link(name = "unwind", kind = "static"))]
extern "C" { extern "C" {
fn _Unwind_VRS_Get(ctx: *mut _Unwind_Context, fn _Unwind_VRS_Get(ctx: *mut _Unwind_Context,
@@ -212,7 +212,7 @@ if #[cfg(all(any(target_os = "ios", target_os = "netbsd", not(target_arch = "arm
cfg_if::cfg_if! { cfg_if::cfg_if! {
if #[cfg(not(all(target_os = "ios", target_arch = "arm")))] { if #[cfg(not(all(target_os = "ios", target_arch = "arm")))] {
// Not 32-bit iOS // Not 32-bit iOS
#[cfg_attr(all(not(bootstrap), feature = "llvm-libunwind"), #[cfg_attr(feature = "llvm-libunwind",
link(name = "unwind", kind = "static"))] link(name = "unwind", kind = "static"))]
extern "C" { extern "C" {
#[unwind(allowed)] #[unwind(allowed)]
@@ -223,7 +223,7 @@ if #[cfg(not(all(target_os = "ios", target_arch = "arm")))] {
} }
} else { } else {
// 32-bit iOS uses SjLj and does not provide _Unwind_Backtrace() // 32-bit iOS uses SjLj and does not provide _Unwind_Backtrace()
#[cfg_attr(all(not(bootstrap), feature = "llvm-libunwind"), #[cfg_attr(feature = "llvm-libunwind",
link(name = "unwind", kind = "static"))] link(name = "unwind", kind = "static"))]
extern "C" { extern "C" {
#[unwind(allowed)] #[unwind(allowed)]

View File

@@ -12,7 +12,7 @@
# source tarball for a stable release you'll likely see `1.x.0` for rustc and # source tarball for a stable release you'll likely see `1.x.0` for rustc and
# `0.x.0` for Cargo where they were released on `date`. # `0.x.0` for Cargo where they were released on `date`.
date: 2019-05-23 date: 2019-07-04
rustc: beta rustc: beta
cargo: beta cargo: beta