about summary refs log tree commit diff
path: root/src/librustc_codegen_ssa
diff options
context:
space:
mode:
authorNathan Corbyn <me@nathancorbyn.com>2020-06-05 16:47:37 +0100
committerNathan Corbyn <me@nathancorbyn.com>2020-06-15 09:40:56 +0100
commitf62903b74a8630fa62e721f69e6621d1d441e7f1 (patch)
treea054cf5352766f8084835cc3f9326a316f83cd96 /src/librustc_codegen_ssa
parentce6d3a73b514e9649e57cee812ad129bb2112016 (diff)
Export `#[inline] #[no_mangle]` fns in cdylibs and staticlibs
Diffstat (limited to 'src/librustc_codegen_ssa')
-rw-r--r--src/librustc_codegen_ssa/back/symbol_export.rs9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/librustc_codegen_ssa/back/symbol_export.rs b/src/librustc_codegen_ssa/back/symbol_export.rs
index 970d13b30c0..bf8693f3547 100644
--- a/src/librustc_codegen_ssa/back/symbol_export.rs
+++ b/src/librustc_codegen_ssa/back/symbol_export.rs
@@ -89,10 +89,11 @@ fn reachable_non_generics_provider(tcx: TyCtxt<'_>, cnum: CrateNum) -> DefIdMap<
                 | Node::ImplItem(&hir::ImplItem { kind: hir::ImplItemKind::Fn(..), .. }) => {
                     let def_id = tcx.hir().local_def_id(hir_id);
                     let generics = tcx.generics_of(def_id);
-                    if !generics.requires_monomorphization(tcx) &&
-                        // Functions marked with #[inline] are only ever codegened
-                        // with "internal" linkage and are never exported.
-                        !Instance::mono(tcx, def_id.to_def_id()).def.generates_cgu_internal_copy(tcx)
+                    if !generics.requires_monomorphization(tcx)
+                        && (!Instance::mono(tcx, def_id.to_def_id())
+                            .def
+                            .generates_cgu_internal_copy(tcx)
+                            || tcx.inline_exportable(def_id.to_def_id()))
                     {
                         Some(def_id)
                     } else {