diff --git a/src/librustc/middle/dependency_format.rs b/src/librustc/middle/dependency_format.rs index e7055827c491fd6eb74f8252e118c07cc566aac2..f7dfc3c33c0a7830f2b14fac2e03b1ba4519c49f 100644 --- a/src/librustc/middle/dependency_format.rs +++ b/src/librustc/middle/dependency_format.rs @@ -94,13 +94,14 @@ pub enum Linkage { pub fn calculate<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>) { let sess = &tcx.sess; - let mut fmts = sess.dependency_formats.borrow_mut(); + let mut fmts = FxHashMap(); for &ty in sess.crate_types.borrow().iter() { let linkage = calculate_type(tcx, ty); verify_ok(tcx, &linkage); fmts.insert(ty, linkage); } sess.abort_if_errors(); + sess.dependency_formats.set(fmts); } fn calculate_type<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs index 499c45e28fe804574301f0aa391563386ebea5f0..55da5b921af0064ce0745ce3fb0d2c0b98815af2 100644 --- a/src/librustc/session/mod.rs +++ b/src/librustc/session/mod.rs @@ -22,7 +22,7 @@ use session::search_paths::PathKind; use session::config::{DebugInfoLevel, OutputType}; use ty::tls; -use util::nodemap::{FxHashMap, FxHashSet}; +use util::nodemap::{FxHashSet}; use util::common::{duration_to_secs_str, ErrorReported}; use util::common::ProfileQueriesMsg; @@ -93,7 +93,7 @@ pub struct Session { pub plugin_llvm_passes: OneThread>>, pub plugin_attributes: OneThread>>, pub crate_types: Once>, - pub dependency_formats: RefCell, + pub dependency_formats: Once, /// The crate_disambiguator is constructed out of all the `-C metadata` /// arguments passed to the compiler. Its value together with the crate-name /// forms a unique global identifier for the crate. It is used to allow @@ -1097,7 +1097,7 @@ pub fn build_session_( plugin_llvm_passes: OneThread::new(RefCell::new(Vec::new())), plugin_attributes: OneThread::new(RefCell::new(Vec::new())), crate_types: Once::new(), - dependency_formats: RefCell::new(FxHashMap()), + dependency_formats: Once::new(), crate_disambiguator: Once::new(), features: Once::new(), recursion_limit: Once::new(),