Rollup merge of #36811 - brson:bootstrap, r=alexcrichton
Update bootstrap compiler
This commit is contained in:
commit
02c050644b
@ -104,8 +104,7 @@ fn main() {
|
|||||||
let is_panic_abort = args.windows(2).any(|a| {
|
let is_panic_abort = args.windows(2).any(|a| {
|
||||||
&*a[0] == "--crate-name" && &*a[1] == "panic_abort"
|
&*a[0] == "--crate-name" && &*a[1] == "panic_abort"
|
||||||
});
|
});
|
||||||
// FIXME(stage0): remove this `stage != "0"` condition
|
if is_panic_abort {
|
||||||
if is_panic_abort && stage != "0" {
|
|
||||||
cmd.arg("-C").arg("panic=abort");
|
cmd.arg("-C").arg("panic=abort");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
use build_helper::output;
|
use build_helper::output;
|
||||||
use filetime::FileTime;
|
use filetime::FileTime;
|
||||||
|
|
||||||
use util::{exe, staticlib, libdir, mtime, is_dylib, copy};
|
use util::{exe, libdir, mtime, is_dylib, copy};
|
||||||
use {Build, Compiler, Mode};
|
use {Build, Compiler, Mode};
|
||||||
|
|
||||||
/// Build the standard library.
|
/// Build the standard library.
|
||||||
@ -40,20 +40,6 @@ pub fn std<'a>(build: &'a Build, target: &str, compiler: &Compiler<'a>) {
|
|||||||
let libdir = build.sysroot_libdir(compiler, target);
|
let libdir = build.sysroot_libdir(compiler, target);
|
||||||
let _ = fs::remove_dir_all(&libdir);
|
let _ = fs::remove_dir_all(&libdir);
|
||||||
t!(fs::create_dir_all(&libdir));
|
t!(fs::create_dir_all(&libdir));
|
||||||
// FIXME(stage0) remove this `if` after the next snapshot
|
|
||||||
// The stage0 compiler still passes the `-lcompiler-rt` flag to the linker but now `bootstrap`
|
|
||||||
// never builds a `libcopmiler-rt.a`! We'll fill the hole by simply copying stage0's
|
|
||||||
// `libcompiler-rt.a` to where the stage1's one is expected (though we could as well just use
|
|
||||||
// an empty `.a` archive). Note that the symbols of that stage0 `libcompiler-rt.a` won't make
|
|
||||||
// it to the final binary because now `libcore.rlib` also contains the symbols that
|
|
||||||
// `libcompiler-rt.a` provides. Since that rlib appears first in the linker arguments, its
|
|
||||||
// symbols are used instead of `libcompiler-rt.a`'s.
|
|
||||||
if compiler.stage == 0 {
|
|
||||||
let rtlib = &staticlib("compiler-rt", target);
|
|
||||||
let src = build.rustc.parent().unwrap().parent().unwrap().join("lib").join("rustlib")
|
|
||||||
.join(target).join("lib").join(rtlib);
|
|
||||||
copy(&src, &libdir.join(rtlib));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Some platforms have startup objects that may be required to produce the
|
// Some platforms have startup objects that may be required to produce the
|
||||||
// libstd dynamic library, for example.
|
// libstd dynamic library, for example.
|
||||||
|
@ -127,7 +127,6 @@
|
|||||||
/// }
|
/// }
|
||||||
/// ```
|
/// ```
|
||||||
|
|
||||||
#[cfg_attr(stage0, unsafe_no_drop_flag)]
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
pub struct Arc<T: ?Sized> {
|
pub struct Arc<T: ?Sized> {
|
||||||
ptr: Shared<ArcInner<T>>,
|
ptr: Shared<ArcInner<T>>,
|
||||||
@ -153,7 +152,6 @@ impl<T: ?Sized + Unsize<U>, U: ?Sized> CoerceUnsized<Arc<U>> for Arc<T> {}
|
|||||||
/// nodes behind strong `Arc<T>` pointers, and then storing the parent pointers
|
/// nodes behind strong `Arc<T>` pointers, and then storing the parent pointers
|
||||||
/// as `Weak<T>` pointers.
|
/// as `Weak<T>` pointers.
|
||||||
|
|
||||||
#[cfg_attr(stage0, unsafe_no_drop_flag)]
|
|
||||||
#[stable(feature = "arc_weak", since = "1.4.0")]
|
#[stable(feature = "arc_weak", since = "1.4.0")]
|
||||||
pub struct Weak<T: ?Sized> {
|
pub struct Weak<T: ?Sized> {
|
||||||
ptr: Shared<ArcInner<T>>,
|
ptr: Shared<ArcInner<T>>,
|
||||||
|
@ -88,7 +88,6 @@
|
|||||||
#![feature(staged_api)]
|
#![feature(staged_api)]
|
||||||
#![feature(unboxed_closures)]
|
#![feature(unboxed_closures)]
|
||||||
#![feature(unique)]
|
#![feature(unique)]
|
||||||
#![cfg_attr(stage0, feature(unsafe_no_drop_flag))]
|
|
||||||
#![feature(unsize)]
|
#![feature(unsize)]
|
||||||
|
|
||||||
#![cfg_attr(not(test), feature(fused, fn_traits, placement_new_protocol))]
|
#![cfg_attr(not(test), feature(fused, fn_traits, placement_new_protocol))]
|
||||||
|
@ -44,7 +44,6 @@
|
|||||||
/// `shrink_to_fit`, and `from_box` will actually set RawVec's private capacity
|
/// `shrink_to_fit`, and `from_box` will actually set RawVec's private capacity
|
||||||
/// field. This allows zero-sized types to not be special-cased by consumers of
|
/// field. This allows zero-sized types to not be special-cased by consumers of
|
||||||
/// this type.
|
/// this type.
|
||||||
#[cfg_attr(stage0, unsafe_no_drop_flag)]
|
|
||||||
pub struct RawVec<T> {
|
pub struct RawVec<T> {
|
||||||
ptr: Unique<T>,
|
ptr: Unique<T>,
|
||||||
cap: usize,
|
cap: usize,
|
||||||
|
@ -252,7 +252,6 @@ struct RcBox<T: ?Sized> {
|
|||||||
/// that you have to call them as e.g. `Rc::get_mut(&value)` instead of
|
/// that you have to call them as e.g. `Rc::get_mut(&value)` instead of
|
||||||
/// `value.get_mut()`. This avoids conflicts with methods of the inner
|
/// `value.get_mut()`. This avoids conflicts with methods of the inner
|
||||||
/// type `T`.
|
/// type `T`.
|
||||||
#[cfg_attr(stage0, unsafe_no_drop_flag)]
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
pub struct Rc<T: ?Sized> {
|
pub struct Rc<T: ?Sized> {
|
||||||
ptr: Shared<RcBox<T>>,
|
ptr: Shared<RcBox<T>>,
|
||||||
@ -873,7 +872,6 @@ fn from(t: T) -> Self {
|
|||||||
///
|
///
|
||||||
/// [rc]: struct.Rc.html
|
/// [rc]: struct.Rc.html
|
||||||
/// [downgrade]: struct.Rc.html#method.downgrade
|
/// [downgrade]: struct.Rc.html#method.downgrade
|
||||||
#[cfg_attr(stage0, unsafe_no_drop_flag)]
|
|
||||||
#[stable(feature = "rc_weak", since = "1.4.0")]
|
#[stable(feature = "rc_weak", since = "1.4.0")]
|
||||||
pub struct Weak<T: ?Sized> {
|
pub struct Weak<T: ?Sized> {
|
||||||
ptr: Shared<RcBox<T>>,
|
ptr: Shared<RcBox<T>>,
|
||||||
|
@ -52,7 +52,6 @@
|
|||||||
#![feature(step_by)]
|
#![feature(step_by)]
|
||||||
#![feature(unicode)]
|
#![feature(unicode)]
|
||||||
#![feature(unique)]
|
#![feature(unique)]
|
||||||
#![cfg_attr(stage0, feature(unsafe_no_drop_flag))]
|
|
||||||
#![cfg_attr(test, feature(rand, test))]
|
#![cfg_attr(test, feature(rand, test))]
|
||||||
|
|
||||||
#![no_std]
|
#![no_std]
|
||||||
|
@ -268,7 +268,6 @@
|
|||||||
/// Vec does not currently guarantee the order in which elements are dropped
|
/// Vec does not currently guarantee the order in which elements are dropped
|
||||||
/// (the order has changed in the past, and may change again).
|
/// (the order has changed in the past, and may change again).
|
||||||
///
|
///
|
||||||
#[cfg_attr(stage0, unsafe_no_drop_flag)]
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
pub struct Vec<T> {
|
pub struct Vec<T> {
|
||||||
buf: RawVec<T>,
|
buf: RawVec<T>,
|
||||||
|
@ -8,9 +8,9 @@
|
|||||||
// option. This file may not be copied, modified, or distributed
|
// option. This file may not be copied, modified, or distributed
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
#![cfg_attr(not(stage0), feature(compiler_builtins))]
|
#![feature(compiler_builtins)]
|
||||||
#![no_std]
|
#![no_std]
|
||||||
#![cfg_attr(not(stage0), compiler_builtins)]
|
#![compiler_builtins]
|
||||||
#![unstable(feature = "compiler_builtins_lib",
|
#![unstable(feature = "compiler_builtins_lib",
|
||||||
reason = "internal implementation detail of rustc right now",
|
reason = "internal implementation detail of rustc right now",
|
||||||
issue = "0")]
|
issue = "0")]
|
||||||
|
@ -129,13 +129,6 @@ pub struct AssertParamIsClone<T: Clone + ?Sized> { _field: ::marker::PhantomData
|
|||||||
reason = "deriving hack, should not be public",
|
reason = "deriving hack, should not be public",
|
||||||
issue = "0")]
|
issue = "0")]
|
||||||
pub struct AssertParamIsCopy<T: Copy + ?Sized> { _field: ::marker::PhantomData<T> }
|
pub struct AssertParamIsCopy<T: Copy + ?Sized> { _field: ::marker::PhantomData<T> }
|
||||||
#[cfg(stage0)]
|
|
||||||
#[doc(hidden)]
|
|
||||||
#[inline(always)]
|
|
||||||
#[unstable(feature = "derive_clone_copy",
|
|
||||||
reason = "deriving hack, should not be public",
|
|
||||||
issue = "0")]
|
|
||||||
pub fn assert_receiver_is_clone<T: Clone + ?Sized>(_: &T) {}
|
|
||||||
|
|
||||||
#[stable(feature = "rust1", since = "1.0.0")]
|
#[stable(feature = "rust1", since = "1.0.0")]
|
||||||
impl<'a, T: ?Sized> Clone for &'a T {
|
impl<'a, T: ?Sized> Clone for &'a T {
|
||||||
|
@ -194,14 +194,12 @@
|
|||||||
/// own, or if it does not enable any significant optimizations.
|
/// own, or if it does not enable any significant optimizations.
|
||||||
pub fn assume(b: bool);
|
pub fn assume(b: bool);
|
||||||
|
|
||||||
#[cfg(not(stage0))]
|
|
||||||
/// Hints to the compiler that branch condition is likely to be true.
|
/// Hints to the compiler that branch condition is likely to be true.
|
||||||
/// Returns the value passed to it.
|
/// Returns the value passed to it.
|
||||||
///
|
///
|
||||||
/// Any use other than with `if` statements will probably not have an effect.
|
/// Any use other than with `if` statements will probably not have an effect.
|
||||||
pub fn likely(b: bool) -> bool;
|
pub fn likely(b: bool) -> bool;
|
||||||
|
|
||||||
#[cfg(not(stage0))]
|
|
||||||
/// Hints to the compiler that branch condition is likely to be false.
|
/// Hints to the compiler that branch condition is likely to be false.
|
||||||
/// Returns the value passed to it.
|
/// Returns the value passed to it.
|
||||||
///
|
///
|
||||||
|
@ -59,7 +59,6 @@
|
|||||||
/// around just the "table" part of the hashtable. It enforces some
|
/// around just the "table" part of the hashtable. It enforces some
|
||||||
/// invariants at the type level and employs some performance trickery,
|
/// invariants at the type level and employs some performance trickery,
|
||||||
/// but in general is just a tricked out `Vec<Option<u64, K, V>>`.
|
/// but in general is just a tricked out `Vec<Option<u64, K, V>>`.
|
||||||
#[cfg_attr(stage0, unsafe_no_drop_flag)]
|
|
||||||
pub struct RawTable<K, V> {
|
pub struct RawTable<K, V> {
|
||||||
capacity: usize,
|
capacity: usize,
|
||||||
size: usize,
|
size: usize,
|
||||||
|
@ -278,7 +278,6 @@
|
|||||||
#![feature(unboxed_closures)]
|
#![feature(unboxed_closures)]
|
||||||
#![feature(unicode)]
|
#![feature(unicode)]
|
||||||
#![feature(unique)]
|
#![feature(unique)]
|
||||||
#![cfg_attr(stage0, feature(unsafe_no_drop_flag))]
|
|
||||||
#![feature(unwind_attributes)]
|
#![feature(unwind_attributes)]
|
||||||
#![feature(vec_push_all)]
|
#![feature(vec_push_all)]
|
||||||
#![feature(zero_one)]
|
#![feature(zero_one)]
|
||||||
|
@ -12,6 +12,6 @@
|
|||||||
# tarball for a stable release you'll likely see `1.x.0-$date` where `1.x.0` was
|
# tarball for a stable release you'll likely see `1.x.0-$date` where `1.x.0` was
|
||||||
# released on `$date`
|
# released on `$date`
|
||||||
|
|
||||||
rustc: beta-2016-08-17
|
rustc: beta-2016-09-28
|
||||||
rustc_key: 195e6261
|
rustc_key: 62b3e239
|
||||||
cargo: nightly-2016-08-21
|
cargo: nightly-2016-09-26
|
||||||
|
Loading…
Reference in New Issue
Block a user