X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flinkage.rs;h=dc1e2107ce712d2cf51032434ddbbfe77316e3a6;hb=7d33e5bf3d3fa9750e84dccd6a3cb717630206f9;hp=bf5c295622268215cb2f52e5ccc09e3063a6e100;hpb=52f90c6308fbad7212a461686287a50152d50780;p=rust.git diff --git a/src/linkage.rs b/src/linkage.rs index bf5c2956222..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 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 fn get_clif_linkage(mono_item: MonoItem, linkage: RLinkage, visibility: Visi } } -pub 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 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 } }