diff options
| author | Michael Woerister <michaelwoerister@posteo> | 2017-11-07 15:15:45 +0100 |
|---|---|---|
| committer | Michael Woerister <michaelwoerister@posteo> | 2017-11-07 15:15:45 +0100 |
| commit | faad4ea3b783a6a893797e7f027d35b68323f432 (patch) | |
| tree | 26434b25ac8a06f54cf0e3c4c3ad0f63b9688eea | |
| parent | 102eaa5c107d48b6787279be8d9de6782a565cb8 (diff) | |
incr.comp.: Sort exported symbols list in order to achieve stable incr. comp. hash.
| -rw-r--r-- | src/librustc_trans/back/symbol_export.rs | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/librustc_trans/back/symbol_export.rs b/src/librustc_trans/back/symbol_export.rs index b9519bba2dd..23890905718 100644 --- a/src/librustc_trans/back/symbol_export.rs +++ b/src/librustc_trans/back/symbol_export.rs @@ -125,6 +125,12 @@ pub fn provide_local(providers: &mut Providers) { None, SymbolExportLevel::Rust)); } + + // Sort so we get a stable incr. comp. hash. + local_crate.sort_unstable_by(|&(ref name1, ..), &(ref name2, ..)| { + name1.cmp(name2) + }); + Arc::new(local_crate) }; } @@ -148,7 +154,7 @@ pub fn provide_extern(providers: &mut Providers) { let special_runtime_crate = tcx.is_panic_runtime(cnum) || tcx.is_compiler_builtins(cnum); - let crate_exports = tcx + let mut crate_exports: Vec<_> = tcx .exported_symbol_ids(cnum) .iter() .map(|&def_id| { @@ -176,6 +182,11 @@ pub fn provide_extern(providers: &mut Providers) { }) .collect(); + // Sort so we get a stable incr. comp. hash. + crate_exports.sort_unstable_by(|&(ref name1, ..), &(ref name2, ..)| { + name1.cmp(name2) + }); + Arc::new(crate_exports) }; } |
