From: Ralf Jung Date: Thu, 12 May 2022 17:01:04 +0000 (+0200) Subject: rustup X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=19e1c72a778d3f9762d08e90fb41b0afe04a7214;hp=f84a976a771f971d53b980ac3a950e2fe5f85f6e;p=rust.git rustup --- diff --git a/rust-version b/rust-version index 8a247d5ab69..630aee6793f 100644 --- a/rust-version +++ b/rust-version @@ -1 +1 @@ -8fbd92d0b95d847c68948d8dbbfaccb470db4f92 +481db40311cdd241ae4d33f34f2f75732e44d8e8 diff --git a/src/helpers.rs b/src/helpers.rs index 5b820218a9d..30fb2843629 100644 --- a/src/helpers.rs +++ b/src/helpers.rs @@ -13,7 +13,7 @@ layout::{LayoutOf, TyAndLayout}, 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::spec::abi::Abi; @@ -775,6 +775,14 @@ fn mark_immutable(&mut self, mplace: &MemPlace) { this.alloc_mark_immutable(mplace.ptr.into_pointer_or_addr().unwrap().provenance.alloc_id) .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. diff --git a/src/machine.rs b/src/machine.rs index 2ecb583abb2..5facc5327d3 100644 --- a/src/machine.rs +++ b/src/machine.rs @@ -24,7 +24,7 @@ }, }; 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::spec::abi::Abi; @@ -548,11 +548,7 @@ fn extern_static_base_pointer( ecx: &MiriEvalContext<'mir, 'tcx>, def_id: DefId, ) -> InterpResult<'tcx, Pointer> { - let attrs = ecx.tcx.get_attrs(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), - }; + let link_name = ecx.item_link_name(def_id); if let Some(&ptr) = ecx.machine.extern_statics.get(&link_name) { Ok(ptr) } else { diff --git a/src/shims/foreign_items.rs b/src/shims/foreign_items.rs index e9845c53766..bebe77a0219 100644 --- a/src/shims/foreign_items.rs +++ b/src/shims/foreign_items.rs @@ -15,7 +15,7 @@ use rustc_middle::mir; use rustc_middle::ty; use rustc_session::config::CrateType; -use rustc_span::{symbol::sym, Symbol}; +use rustc_span::Symbol; use rustc_target::{ abi::{Align, Size}, spec::abi::Abi, @@ -235,12 +235,7 @@ fn emulate_foreign_item( unwind: StackPopUnwind, ) -> InterpResult<'tcx, Option<(&'mir mir::Body<'tcx>, ty::Instance<'tcx>)>> { let this = self.eval_context_mut(); - let attrs = this.tcx.get_attrs(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 link_name = this.item_link_name(def_id); let tcx = this.tcx.tcx; // First: functions that diverge.