X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flinkage.rs;h=dc1e2107ce712d2cf51032434ddbbfe77316e3a6;hb=7d33e5bf3d3fa9750e84dccd6a3cb717630206f9;hp=6b4c4353964baf829469978e08d42b459ff6cb97;hpb=f288959c00f8f78df21a706c6e6188d4bfb909b4;p=rust.git diff --git a/src/linkage.rs b/src/linkage.rs index 6b4c4353964..dc1e2107ce7 100644 --- a/src/linkage.rs +++ b/src/linkage.rs @@ -1,8 +1,12 @@ -use rustc::mir::mono::{Linkage as RLinkage, MonoItem, Visibility}; +use rustc_middle::mir::mono::{Linkage as RLinkage, MonoItem, Visibility}; use crate::prelude::*; -pub(crate) fn get_clif_linkage(mono_item: MonoItem, linkage: RLinkage, visibility: Visibility) -> Linkage { +pub(crate) fn get_clif_linkage( + mono_item: MonoItem<'_>, + linkage: RLinkage, + visibility: Visibility, +) -> Linkage { match (linkage, visibility) { (RLinkage::External, Visibility::Default) => Linkage::Export, (RLinkage::Internal, Visibility::Default) => Linkage::Local, @@ -11,7 +15,7 @@ pub(crate) fn get_clif_linkage(mono_item: MonoItem, linkage: RLinkage, visibilit } } -pub(crate) fn get_static_ref_linkage(tcx: TyCtxt, def_id: DefId) -> Linkage { +pub(crate) fn get_static_linkage(tcx: TyCtxt<'_>, def_id: DefId) -> Linkage { let fn_attrs = tcx.codegen_fn_attrs(def_id); if let Some(linkage) = fn_attrs.linkage { @@ -21,7 +25,9 @@ pub(crate) fn get_static_ref_linkage(tcx: TyCtxt, def_id: DefId) -> Linkage { RLinkage::ExternalWeak | RLinkage::WeakAny => Linkage::Preemptible, _ => panic!("{:?}", linkage), } + } else if tcx.is_reachable_non_generic(def_id) { + Linkage::Export } else { - Linkage::Import + Linkage::Hidden } }