From 35eba85c3d63579bbe0929dc880caf2be906b767 Mon Sep 17 00:00:00 2001 From: Jorge Aparicio Date: Sun, 14 Aug 2016 21:56:26 -0500 Subject: [PATCH] refactor: use CStore::is_no_builtins --- src/librustc/middle/cstore.rs | 2 ++ src/librustc_metadata/csearch.rs | 4 ++++ src/librustc_trans/back/link.rs | 6 ++---- src/librustc_trans/back/lto.rs | 6 +----- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/librustc/middle/cstore.rs b/src/librustc/middle/cstore.rs index f1bb3a37e3c2..05cd822c6d63 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; fn native_libraries(&self, cnum: ast::CrateNum) -> Vec<(NativeLibraryKind, String)>; fn reachable_ids(&self, cnum: ast::CrateNum) -> Vec; + 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 { 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 7ee6e54a666d..2cdbd1b86012 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 d17da74c87f3..e7ee95212946 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 016eb7c0cfb3..522864c6ec3a 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; }