mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-02 18:12:51 +00:00
Rustup to rustc 1.45.0-nightly (56daaf669
2020-06-03)
This commit is contained in:
parent
1e70c51f60
commit
648b634e21
4
build_sysroot/Cargo.lock
generated
4
build_sysroot/Cargo.lock
generated
@ -67,9 +67,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "compiler_builtins"
|
name = "compiler_builtins"
|
||||||
version = "0.1.28"
|
version = "0.1.32"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "439a6fab343b1dab347823537734a5cd4ae6ae2000b465ab886f64cdb723bd14"
|
checksum = "7bc4ac2c824d2bfc612cba57708198547e9a26943af0632aff033e0693074d5c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"rustc-std-workspace-core",
|
"rustc-std-workspace-core",
|
||||||
]
|
]
|
||||||
|
@ -401,7 +401,7 @@ pub trait FnMut<Args>: FnOnce<Args> {
|
|||||||
|
|
||||||
#[lang = "panic"]
|
#[lang = "panic"]
|
||||||
#[track_caller]
|
#[track_caller]
|
||||||
pub fn panic(msg: &str) -> ! {
|
pub fn panic(_msg: &str) -> ! {
|
||||||
unsafe {
|
unsafe {
|
||||||
libc::puts("Panicking\n\0" as *const str as *const u8);
|
libc::puts("Panicking\n\0" as *const str as *const u8);
|
||||||
intrinsics::abort();
|
intrinsics::abort();
|
||||||
|
@ -414,10 +414,10 @@ pub enum E2<X> {
|
|||||||
|
|
||||||
fn check_niche_behavior () {
|
fn check_niche_behavior () {
|
||||||
if let E1::V2 { .. } = (E1::V1 { f: true }) {
|
if let E1::V2 { .. } = (E1::V1 { f: true }) {
|
||||||
unsafe { intrinsics::abort(); }
|
intrinsics::abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
if let E2::V1 { .. } = E2::V3::<Infallible> {
|
if let E2::V1 { .. } = E2::V3::<Infallible> {
|
||||||
unsafe { intrinsics::abort(); }
|
intrinsics::abort();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,9 +6,7 @@ extern {}
|
|||||||
|
|
||||||
#[panic_handler]
|
#[panic_handler]
|
||||||
fn panic_handler(_: &core::panic::PanicInfo) -> ! {
|
fn panic_handler(_: &core::panic::PanicInfo) -> ! {
|
||||||
unsafe {
|
core::intrinsics::abort();
|
||||||
core::intrinsics::abort();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[lang="eh_personality"]
|
#[lang="eh_personality"]
|
||||||
@ -32,6 +30,6 @@ fn main(_argc: isize, _argv: *const *const u8) -> isize {
|
|||||||
#[inline(never)]
|
#[inline(never)]
|
||||||
fn black_box(i: u32) {
|
fn black_box(i: u32) {
|
||||||
if i != 1 {
|
if i != 1 {
|
||||||
unsafe { core::intrinsics::abort(); }
|
core::intrinsics::abort();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1 +1 @@
|
|||||||
nightly-2020-05-25
|
nightly-2020-06-04
|
||||||
|
@ -309,6 +309,7 @@ fn codegen_fn_content(fx: &mut FunctionCx<'_, '_, impl Backend>) {
|
|||||||
operands,
|
operands,
|
||||||
options: _,
|
options: _,
|
||||||
destination,
|
destination,
|
||||||
|
line_spans: _,
|
||||||
} => {
|
} => {
|
||||||
match template {
|
match template {
|
||||||
&[] => {
|
&[] => {
|
||||||
@ -396,6 +397,10 @@ fn trans_stmt<'tcx>(
|
|||||||
let place = trans_place(fx, *place);
|
let place = trans_place(fx, *place);
|
||||||
place.write_place_ref(fx, lval);
|
place.write_place_ref(fx, lval);
|
||||||
}
|
}
|
||||||
|
Rvalue::ThreadLocalRef(def_id) => {
|
||||||
|
let val = crate::constant::codegen_tls_ref(fx, *def_id, lval.layout());
|
||||||
|
lval.write_cvalue(fx, val);
|
||||||
|
}
|
||||||
Rvalue::BinaryOp(bin_op, lhs, rhs) => {
|
Rvalue::BinaryOp(bin_op, lhs, rhs) => {
|
||||||
let lhs = trans_operand(fx, lhs);
|
let lhs = trans_operand(fx, lhs);
|
||||||
let rhs = trans_operand(fx, rhs);
|
let rhs = trans_operand(fx, rhs);
|
||||||
@ -708,7 +713,7 @@ pub(crate) fn trans_place<'tcx>(
|
|||||||
let mut cplace = fx.get_local_place(place.local);
|
let mut cplace = fx.get_local_place(place.local);
|
||||||
|
|
||||||
for elem in place.projection {
|
for elem in place.projection {
|
||||||
match *elem {
|
match elem {
|
||||||
PlaceElem::Deref => {
|
PlaceElem::Deref => {
|
||||||
cplace = cplace.place_deref(fx);
|
cplace = cplace.place_deref(fx);
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ use rustc_middle::ty::{Const, ConstKind};
|
|||||||
use rustc_target::abi::Align;
|
use rustc_target::abi::Align;
|
||||||
use rustc_data_structures::fx::FxHashSet;
|
use rustc_data_structures::fx::FxHashSet;
|
||||||
|
|
||||||
use cranelift_codegen::ir::GlobalValue;
|
use cranelift_codegen::ir::GlobalValueData;
|
||||||
use cranelift_module::*;
|
use cranelift_module::*;
|
||||||
|
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
@ -38,6 +38,20 @@ pub(crate) fn codegen_static(constants_cx: &mut ConstantCx, def_id: DefId) {
|
|||||||
constants_cx.todo.push(TodoItem::Static(def_id));
|
constants_cx.todo.push(TodoItem::Static(def_id));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub(crate) fn codegen_tls_ref<'tcx>(
|
||||||
|
fx: &mut FunctionCx<'_, 'tcx, impl Backend>,
|
||||||
|
def_id: DefId,
|
||||||
|
layout: TyAndLayout<'tcx>,
|
||||||
|
) -> CValue<'tcx> {
|
||||||
|
let linkage = crate::linkage::get_static_ref_linkage(fx.tcx, def_id);
|
||||||
|
let data_id = data_id_for_static(fx.tcx, fx.module, def_id, linkage);
|
||||||
|
let local_data_id = fx.module.declare_data_in_func(data_id, &mut fx.bcx.func);
|
||||||
|
#[cfg(debug_assertions)]
|
||||||
|
fx.add_comment(local_data_id, format!("tls {:?}", def_id));
|
||||||
|
let tls_ptr = fx.bcx.ins().tls_value(fx.pointer_type, local_data_id);
|
||||||
|
CValue::by_val(tls_ptr, layout)
|
||||||
|
}
|
||||||
|
|
||||||
fn codegen_static_ref<'tcx>(
|
fn codegen_static_ref<'tcx>(
|
||||||
fx: &mut FunctionCx<'_, 'tcx, impl Backend>,
|
fx: &mut FunctionCx<'_, 'tcx, impl Backend>,
|
||||||
def_id: DefId,
|
def_id: DefId,
|
||||||
@ -48,7 +62,10 @@ fn codegen_static_ref<'tcx>(
|
|||||||
let local_data_id = fx.module.declare_data_in_func(data_id, &mut fx.bcx.func);
|
let local_data_id = fx.module.declare_data_in_func(data_id, &mut fx.bcx.func);
|
||||||
#[cfg(debug_assertions)]
|
#[cfg(debug_assertions)]
|
||||||
fx.add_comment(local_data_id, format!("{:?}", def_id));
|
fx.add_comment(local_data_id, format!("{:?}", def_id));
|
||||||
cplace_for_dataid(fx, layout, local_data_id)
|
let global_ptr = fx.bcx.ins().global_value(fx.pointer_type, local_data_id);
|
||||||
|
assert!(!layout.is_unsized(), "unsized statics aren't supported");
|
||||||
|
assert!(matches!(fx.bcx.func.global_values[local_data_id], GlobalValueData::Symbol { tls: false, ..}), "tls static referenced without Rvalue::ThreadLocalRef");
|
||||||
|
CPlace::for_ptr(crate::pointer::Pointer::new(global_ptr), layout)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn trans_constant<'tcx>(
|
pub(crate) fn trans_constant<'tcx>(
|
||||||
@ -245,16 +262,6 @@ fn data_id_for_static(
|
|||||||
data_id
|
data_id
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cplace_for_dataid<'tcx>(
|
|
||||||
fx: &mut FunctionCx<'_, 'tcx, impl Backend>,
|
|
||||||
layout: TyAndLayout<'tcx>,
|
|
||||||
local_data_id: GlobalValue,
|
|
||||||
) -> CPlace<'tcx> {
|
|
||||||
let global_ptr = fx.bcx.ins().global_value(fx.pointer_type, local_data_id);
|
|
||||||
assert!(!layout.is_unsized(), "unsized statics aren't supported");
|
|
||||||
CPlace::for_ptr(crate::pointer::Pointer::new(global_ptr), layout)
|
|
||||||
}
|
|
||||||
|
|
||||||
fn define_all_allocs(tcx: TyCtxt<'_>, module: &mut Module<impl Backend>, cx: &mut ConstantCx) {
|
fn define_all_allocs(tcx: TyCtxt<'_>, module: &mut Module<impl Backend>, cx: &mut ConstantCx) {
|
||||||
while let Some(todo_item) = cx.todo.pop() {
|
while let Some(todo_item) = cx.todo.pop() {
|
||||||
let (data_id, alloc) = match todo_item {
|
let (data_id, alloc) = match todo_item {
|
||||||
|
@ -59,7 +59,7 @@ fn line_program_add_file(
|
|||||||
) -> FileId {
|
) -> FileId {
|
||||||
match &file.name {
|
match &file.name {
|
||||||
FileName::Real(path) => {
|
FileName::Real(path) => {
|
||||||
let (dir_path, file_name) = split_path_dir_and_file(path);
|
let (dir_path, file_name) = split_path_dir_and_file(path.stable_name());
|
||||||
let dir_name = osstr_as_utf8_bytes(dir_path.as_os_str());
|
let dir_name = osstr_as_utf8_bytes(dir_path.as_os_str());
|
||||||
let file_name = osstr_as_utf8_bytes(file_name);
|
let file_name = osstr_as_utf8_bytes(file_name);
|
||||||
|
|
||||||
|
@ -4,8 +4,6 @@ mod unwind;
|
|||||||
|
|
||||||
use crate::prelude::*;
|
use crate::prelude::*;
|
||||||
|
|
||||||
use rustc_span::FileName;
|
|
||||||
|
|
||||||
use cranelift_codegen::ir::{StackSlots, ValueLabel, ValueLoc};
|
use cranelift_codegen::ir::{StackSlots, ValueLabel, ValueLoc};
|
||||||
use cranelift_codegen::isa::TargetIsa;
|
use cranelift_codegen::isa::TargetIsa;
|
||||||
use cranelift_codegen::ValueLocRange;
|
use cranelift_codegen::ValueLocRange;
|
||||||
@ -66,12 +64,7 @@ impl<'tcx> DebugContext<'tcx> {
|
|||||||
let (name, file_info) = match tcx.sess.local_crate_source_file.clone() {
|
let (name, file_info) = match tcx.sess.local_crate_source_file.clone() {
|
||||||
Some(path) => {
|
Some(path) => {
|
||||||
let name = path.to_string_lossy().into_owned();
|
let name = path.to_string_lossy().into_owned();
|
||||||
let info = tcx.sess
|
(name, None)
|
||||||
.source_map()
|
|
||||||
.get_source_file(&FileName::Real(path))
|
|
||||||
.map(|f| f.src_hash)
|
|
||||||
.and_then(line_info::make_file_info);
|
|
||||||
(name, info)
|
|
||||||
},
|
},
|
||||||
None => (tcx.crate_name(LOCAL_CRATE).to_string(), None),
|
None => (tcx.crate_name(LOCAL_CRATE).to_string(), None),
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user