Auto merge of #2117 - RalfJung:rustup, r=RalfJung
rustup Cc https://github.com/rust-lang/rust/issues/96975
This commit is contained in:
commit
d33e7fc31c
@ -1 +1 @@
|
|||||||
8fbd92d0b95d847c68948d8dbbfaccb470db4f92
|
481db40311cdd241ae4d33f34f2f75732e44d8e8
|
||||||
|
@ -13,7 +13,7 @@ use rustc_middle::ty::{
|
|||||||
layout::{LayoutOf, TyAndLayout},
|
layout::{LayoutOf, TyAndLayout},
|
||||||
List, TyCtxt,
|
List, TyCtxt,
|
||||||
};
|
};
|
||||||
use rustc_span::{def_id::CrateNum, Symbol};
|
use rustc_span::{def_id::CrateNum, sym, Symbol};
|
||||||
use rustc_target::abi::{Align, FieldsShape, Size, Variants};
|
use rustc_target::abi::{Align, FieldsShape, Size, Variants};
|
||||||
use rustc_target::spec::abi::Abi;
|
use rustc_target::spec::abi::Abi;
|
||||||
|
|
||||||
@ -775,6 +775,14 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
|
|||||||
this.alloc_mark_immutable(mplace.ptr.into_pointer_or_addr().unwrap().provenance.alloc_id)
|
this.alloc_mark_immutable(mplace.ptr.into_pointer_or_addr().unwrap().provenance.alloc_id)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn item_link_name(&self, def_id: DefId) -> Symbol {
|
||||||
|
let tcx = self.eval_context_ref().tcx;
|
||||||
|
match tcx.get_attrs(def_id, sym::link_name).filter_map(|a| a.value_str()).next() {
|
||||||
|
Some(name) => name,
|
||||||
|
None => tcx.item_name(def_id),
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Check that the number of args is what we expect.
|
/// Check that the number of args is what we expect.
|
||||||
|
@ -24,7 +24,7 @@ use rustc_middle::{
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
use rustc_span::def_id::{CrateNum, DefId};
|
use rustc_span::def_id::{CrateNum, DefId};
|
||||||
use rustc_span::symbol::{sym, Symbol};
|
use rustc_span::Symbol;
|
||||||
use rustc_target::abi::Size;
|
use rustc_target::abi::Size;
|
||||||
use rustc_target::spec::abi::Abi;
|
use rustc_target::spec::abi::Abi;
|
||||||
|
|
||||||
@ -548,11 +548,7 @@ impl<'mir, 'tcx> Machine<'mir, 'tcx> for Evaluator<'mir, 'tcx> {
|
|||||||
ecx: &MiriEvalContext<'mir, 'tcx>,
|
ecx: &MiriEvalContext<'mir, 'tcx>,
|
||||||
def_id: DefId,
|
def_id: DefId,
|
||||||
) -> InterpResult<'tcx, Pointer<Tag>> {
|
) -> InterpResult<'tcx, Pointer<Tag>> {
|
||||||
let attrs = ecx.tcx.get_attrs(def_id);
|
let link_name = ecx.item_link_name(def_id);
|
||||||
let link_name = match ecx.tcx.sess.first_attr_value_str_by_name(attrs, sym::link_name) {
|
|
||||||
Some(name) => name,
|
|
||||||
None => ecx.tcx.item_name(def_id),
|
|
||||||
};
|
|
||||||
if let Some(&ptr) = ecx.machine.extern_statics.get(&link_name) {
|
if let Some(&ptr) = ecx.machine.extern_statics.get(&link_name) {
|
||||||
Ok(ptr)
|
Ok(ptr)
|
||||||
} else {
|
} else {
|
||||||
|
@ -15,7 +15,7 @@ use rustc_middle::middle::{
|
|||||||
use rustc_middle::mir;
|
use rustc_middle::mir;
|
||||||
use rustc_middle::ty;
|
use rustc_middle::ty;
|
||||||
use rustc_session::config::CrateType;
|
use rustc_session::config::CrateType;
|
||||||
use rustc_span::{symbol::sym, Symbol};
|
use rustc_span::Symbol;
|
||||||
use rustc_target::{
|
use rustc_target::{
|
||||||
abi::{Align, Size},
|
abi::{Align, Size},
|
||||||
spec::abi::Abi,
|
spec::abi::Abi,
|
||||||
@ -236,12 +236,7 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
|
|||||||
unwind: StackPopUnwind,
|
unwind: StackPopUnwind,
|
||||||
) -> InterpResult<'tcx, Option<(&'mir mir::Body<'tcx>, ty::Instance<'tcx>)>> {
|
) -> InterpResult<'tcx, Option<(&'mir mir::Body<'tcx>, ty::Instance<'tcx>)>> {
|
||||||
let this = self.eval_context_mut();
|
let this = self.eval_context_mut();
|
||||||
let attrs = this.tcx.get_attrs(def_id);
|
let link_name = this.item_link_name(def_id);
|
||||||
let link_name = this
|
|
||||||
.tcx
|
|
||||||
.sess
|
|
||||||
.first_attr_value_str_by_name(attrs, sym::link_name)
|
|
||||||
.unwrap_or_else(|| this.tcx.item_name(def_id));
|
|
||||||
let tcx = this.tcx.tcx;
|
let tcx = this.tcx.tcx;
|
||||||
|
|
||||||
// First: functions that diverge.
|
// First: functions that diverge.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user