]> git.lizzy.rs Git - rust.git/blobdiff - src/librustc_trans/lib.rs
rustc: Move some attr methods to queries
[rust.git] / src / librustc_trans / lib.rs
index 256200a6e9572f1d10144f1dadbedafe07f6b4c5..42c3e620baa7f39b57f9f77c9831f3d6ca8bc7eb 100644 (file)
 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;
@@ -87,8 +90,6 @@ pub mod back {
     mod rpath;
 }
 
-mod diagnostics;
-
 mod abi;
 mod adt;
 mod allocator;
@@ -247,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);
+}