about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/librustc/middle/cstore.rs2
-rw-r--r--src/librustc_metadata/csearch.rs4
-rw-r--r--src/librustc_trans/back/link.rs6
-rw-r--r--src/librustc_trans/back/lto.rs6
4 files changed, 9 insertions, 9 deletions
diff --git a/src/librustc/middle/cstore.rs b/src/librustc/middle/cstore.rs
index f1bb3a37e3c..05cd822c6d6 100644
--- a/src/librustc/middle/cstore.rs
+++ b/src/librustc/middle/cstore.rs
@@ -227,6 +227,7 @@ pub trait CrateStore<'tcx> {
     fn plugin_registrar_fn(&self, cnum: ast::CrateNum) -> Option<DefId>;
     fn native_libraries(&self, cnum: ast::CrateNum) -> Vec<(NativeLibraryKind, String)>;
     fn reachable_ids(&self, cnum: ast::CrateNum) -> Vec<DefId>;
+    fn is_no_builtins(&self, cnum: ast::CrateNum) -> bool;
 
     // resolve
     fn def_index_for_def_key(&self,
@@ -428,6 +429,7 @@ impl<'tcx> CrateStore<'tcx> for DummyCrateStore {
     fn native_libraries(&self, cnum: ast::CrateNum) -> Vec<(NativeLibraryKind, String)>
         { bug!("native_libraries") }
     fn reachable_ids(&self, cnum: ast::CrateNum) -> Vec<DefId> { bug!("reachable_ids") }
+    fn is_no_builtins(&self, cnum: ast::CrateNum) -> bool { bug!("is_no_builtins") }
 
     // resolve
     fn def_key(&self, def: DefId) -> hir_map::DefKey { bug!("def_key") }
diff --git a/src/librustc_metadata/csearch.rs b/src/librustc_metadata/csearch.rs
index 7ee6e54a666..2cdbd1b8601 100644
--- a/src/librustc_metadata/csearch.rs
+++ b/src/librustc_metadata/csearch.rs
@@ -409,6 +409,10 @@ impl<'tcx> CrateStore<'tcx> for cstore::CStore {
         decoder::get_reachable_ids(&cdata)
     }
 
+    fn is_no_builtins(&self, cnum: ast::CrateNum) -> bool {
+        attr::contains_name(&self.crate_attrs(cnum), "no_builtins")
+    }
+
     fn def_index_for_def_key(&self,
                              cnum: ast::CrateNum,
                              def: DefKey)
diff --git a/src/librustc_trans/back/link.rs b/src/librustc_trans/back/link.rs
index d17da74c87f..e7ee9521294 100644
--- a/src/librustc_trans/back/link.rs
+++ b/src/librustc_trans/back/link.rs
@@ -42,7 +42,7 @@ use std::process::Command;
 use std::str;
 use flate;
 use syntax::ast;
-use syntax::attr::{self, AttrMetaMethods};
+use syntax::attr::AttrMetaMethods;
 use syntax_pos::Span;
 
 // RLIB LLVM-BYTECODE OBJECT LAYOUT
@@ -938,10 +938,8 @@ fn add_upstream_rust_crates(cmd: &mut Linker,
             Linkage::NotLinked |
             Linkage::IncludedFromDylib => {}
             Linkage::Static => {
-                let is_a_no_builtins_crate =
-                    attr::contains_name(&sess.cstore.crate_attrs(cnum), "no_builtins");
                 add_static_crate(cmd, sess, tmpdir, crate_type,
-                                 &src.rlib.unwrap().0, is_a_no_builtins_crate)
+                                 &src.rlib.unwrap().0, sess.cstore.is_no_builtins(cnum))
             }
             Linkage::Dynamic => {
                 add_dynamic_crate(cmd, sess, &src.dylib.unwrap().0)
diff --git a/src/librustc_trans/back/lto.rs b/src/librustc_trans/back/lto.rs
index 016eb7c0cfb..522864c6ec3 100644
--- a/src/librustc_trans/back/lto.rs
+++ b/src/librustc_trans/back/lto.rs
@@ -17,7 +17,6 @@ use llvm::{ModuleRef, TargetMachineRef, True, False};
 use rustc::util::common::time;
 use rustc::util::common::path2cstr;
 use back::write::{ModuleConfig, with_llvm_pmb};
-use syntax::attr;
 
 use libc;
 use flate;
@@ -54,11 +53,8 @@ pub fn run(sess: &session::Session, llmod: ModuleRef,
     // load the bitcode from the archive. Then merge it into the current LLVM
     // module that we've got.
     link::each_linked_rlib(sess, &mut |cnum, path| {
-        let is_a_no_builtins_crate =
-            attr::contains_name(&sess.cstore.crate_attrs(cnum), "no_builtins");
-
         // `#![no_builtins]` crates don't participate in LTO.
-        if is_a_no_builtins_crate {
+        if sess.cstore.is_no_builtins(cnum) {
             return;
         }