X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flibrustc_trans%2Flib.rs;h=42c3e620baa7f39b57f9f77c9831f3d6ca8bc7eb;hb=8821affd1523a719ffb9f6537d53f8725ab00592;hp=babc030b59c9272525d548591e17d4c9da5ab31d;hpb=64a70342e67f09b5326538b08990d1b0d2900a5b;p=rust.git diff --git a/src/librustc_trans/lib.rs b/src/librustc_trans/lib.rs index babc030b59c..42c3e620baa 100644 --- a/src/librustc_trans/lib.rs +++ b/src/librustc_trans/lib.rs @@ -21,7 +21,6 @@ #![feature(box_patterns)] #![feature(box_syntax)] -#![feature(const_fn)] #![feature(custom_attribute)] #![allow(unused_attributes)] #![feature(i128_type)] @@ -31,6 +30,10 @@ #![feature(slice_patterns)] #![feature(conservative_impl_trait)] +#![cfg_attr(stage0, feature(const_fn))] +#![cfg_attr(not(stage0), feature(const_atomic_bool_new))] +#![cfg_attr(not(stage0), feature(const_once_new))] + use rustc::dep_graph::WorkProduct; use syntax_pos::symbol::Symbol; @@ -61,19 +64,23 @@ extern crate gcc; // Used to locate MSVC, not gcc :) pub use base::trans_crate; -pub use back::symbol_names::provide; pub use metadata::LlvmMetadataLoader; pub use llvm_util::{init, target_features, print_version, print_passes, print, enable_llvm_debug}; use std::rc::Rc; +use std::sync::Arc; -use rustc::hir::def_id::CrateNum; +use rustc::hir::def_id::{CrateNum, LOCAL_CRATE}; +use rustc::middle::cstore::{NativeLibrary, CrateSource, LibSource}; +use rustc::ty::maps::Providers; use rustc::util::nodemap::{FxHashSet, FxHashMap}; -use rustc::middle::cstore::NativeLibrary; + +mod diagnostics; pub mod back { mod archive; + mod command; pub(crate) mod linker; pub mod link; mod lto; @@ -83,8 +90,6 @@ pub mod back { mod rpath; } -mod diagnostics; - mod abi; mod adt; mod allocator; @@ -234,8 +239,25 @@ pub struct CrateInfo { sanitizer_runtime: Option, is_no_builtins: FxHashSet, native_libraries: FxHashMap>>, + crate_name: FxHashMap, used_libraries: Rc>, link_args: Rc>, + used_crate_source: FxHashMap>, + used_crates_static: Vec<(CrateNum, LibSource)>, + used_crates_dynamic: Vec<(CrateNum, LibSource)>, } __build_diagnostic_array! { librustc_trans, DIAGNOSTICS } + +pub fn provide_local(providers: &mut Providers) { + back::symbol_names::provide(providers); + base::provide(providers); + providers.exported_symbol_set = |tcx, cnum| { + assert_eq!(cnum, LOCAL_CRATE); + Arc::new(back::symbol_export::compute(tcx)) + }; +} + +pub fn provide_extern(providers: &mut Providers) { + back::symbol_names::provide(providers); +}