]> git.lizzy.rs Git - rust.git/commitdiff
Only export #[no_mangle] extern symbols during LTO
authorWesley Wiser <wwiser@gmail.com>
Tue, 26 Jul 2016 01:44:57 +0000 (21:44 -0400)
committerWesley Wiser <wwiser@gmail.com>
Wed, 27 Jul 2016 17:58:22 +0000 (13:58 -0400)
Previously, all extern symbols were exported even when performing LTO.
Now, we only export symbols that are also marked #[no_mangle].

Fixes #34985

src/librustc_metadata/decoder.rs

index 409cec282bce93de82457834f12ad5e479c33d57..062bbc3be40f79b888448441daca36dfdc482e52 100644 (file)
@@ -55,7 +55,6 @@
 use syntax::attr;
 use syntax::parse::token;
 use syntax::ast;
-use syntax::abi::Abi;
 use syntax::codemap;
 use syntax::print::pprust;
 use syntax::ptr::P;
@@ -1542,13 +1541,9 @@ pub fn is_extern_item<'a, 'tcx>(cdata: Cmd,
     let applicable = match item_family(item_doc) {
         ImmStatic | MutStatic => true,
         Fn => {
-            let ty::TypeScheme { generics, ty } = get_type(cdata, id, tcx);
+            let ty::TypeScheme { generics, .. } = get_type(cdata, id, tcx);
             let no_generics = generics.types.is_empty();
-            match ty.sty {
-                ty::TyFnDef(_, _, fn_ty) | ty::TyFnPtr(fn_ty)
-                    if fn_ty.abi != Abi::Rust => return no_generics,
-                _ => no_generics,
-            }
+            no_generics
         },
         _ => false,
     };