1 use rustc_middle
::mir
::mono
::{Linkage as RLinkage, MonoItem, Visibility}
;
5 pub(crate) fn get_clif_linkage(
6 mono_item
: MonoItem
<'_
>,
8 visibility
: Visibility
,
10 match (linkage
, visibility
) {
11 (RLinkage
::External
, Visibility
::Default
) => Linkage
::Export
,
12 (RLinkage
::Internal
, Visibility
::Default
) => Linkage
::Local
,
13 (RLinkage
::External
, Visibility
::Hidden
) => Linkage
::Hidden
,
14 _
=> panic
!("{:?} = {:?} {:?}", mono_item
, linkage
, visibility
),
18 pub(crate) fn get_static_linkage(tcx
: TyCtxt
<'_
>, def_id
: DefId
) -> Linkage
{
19 let fn_attrs
= tcx
.codegen_fn_attrs(def_id
);
21 if let Some(linkage
) = fn_attrs
.linkage
{
23 RLinkage
::External
=> Linkage
::Export
,
24 RLinkage
::Internal
=> Linkage
::Local
,
25 RLinkage
::ExternalWeak
| RLinkage
::WeakAny
=> Linkage
::Preemptible
,
26 _
=> panic
!("{:?}", linkage
),
28 } else if tcx
.is_reachable_non_generic(def_id
) {