about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Woerister <michaelwoerister@posteo>2017-11-07 16:41:42 +0100
committerMichael Woerister <michaelwoerister@posteo>2017-11-07 16:41:42 +0100
commitd141abfda7edb3db1613c0f9efd0b1382f5eeb84 (patch)
tree017d3eb99b3da853a0be84fed8a0f5567a3ade0d
parent8fcf3e33e4f27fa56ac3c9dee150f6eb4a91f213 (diff)
downloadrust-d141abfda7edb3db1613c0f9efd0b1382f5eeb84.tar.gz
rust-d141abfda7edb3db1613c0f9efd0b1382f5eeb84.zip
Always treat #[rustc_std_internal_symbol]s as root TransItems.
-rw-r--r--src/librustc_trans_utils/collector.rs6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/librustc_trans_utils/collector.rs b/src/librustc_trans_utils/collector.rs
index 918c97774bc..429471221c6 100644
--- a/src/librustc_trans_utils/collector.rs
+++ b/src/librustc_trans_utils/collector.rs
@@ -211,6 +211,8 @@ use trans_item::{TransItemExt, DefPathBasedNames, InstantiationMode};
 
 use rustc_data_structures::bitvec::BitVector;
 
+use syntax::attr;
+
 #[derive(PartialEq, Eq, Hash, Clone, Copy, Debug)]
 pub enum TransItemCollectionMode {
     Eager,
@@ -981,7 +983,9 @@ impl<'b, 'a, 'v> RootCollector<'b, 'a, 'v> {
             }
             TransItemCollectionMode::Lazy => {
                 self.entry_fn == Some(def_id) ||
-                self.tcx.is_exported_symbol(def_id)
+                self.tcx.is_exported_symbol(def_id) ||
+                attr::contains_name(&self.tcx.get_attrs(def_id),
+                                    "rustc_std_internal_symbol")
             }
         }
     }