refactor: use CStore::is_no_builtins
This commit is contained in:
parent
db16909ae3
commit
35eba85c3d
4 changed files with 9 additions and 9 deletions
|
|
@ -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") }
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue