X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flibrustc_trans%2Flib.rs;h=42c3e620baa7f39b57f9f77c9831f3d6ca8bc7eb;hb=8821affd1523a719ffb9f6537d53f8725ab00592;hp=63fd37c2b98bf62816b9f61cf23cca78b02937f8;hpb=a0b34199ba6f7c922e7832160328c2a4e90b6ac6;p=rust.git diff --git a/src/librustc_trans/lib.rs b/src/librustc_trans/lib.rs index 63fd37c2b98..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,16 +64,19 @@ 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::util::nodemap::{FxHashSet, FxHashMap}; +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}; + +mod diagnostics; pub mod back { mod archive; @@ -84,8 +90,6 @@ pub mod back { mod rpath; } -mod diagnostics; - mod abi; mod adt; mod allocator; @@ -244,3 +248,16 @@ pub struct CrateInfo { } __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); +}