@@ -16,9 +16,10 @@ use crate::{CachedModuleCodegen, CompiledModule, CrateInfo, MemFlags, ModuleCode
1616
1717use rustc_ast:: expand:: allocator:: { global_fn_name, AllocatorKind , ALLOCATOR_METHODS } ;
1818use rustc_attr as attr;
19- use rustc_data_structures:: fx:: { FxHashMap , FxHashSet } ;
19+ use rustc_data_structures:: fx:: { FxHashMap , FxIndexSet } ;
2020use rustc_data_structures:: profiling:: { get_resident_set_size, print_time_passes_entry} ;
2121use rustc_data_structures:: sync:: par_map;
22+ use rustc_data_structures:: unord:: UnordMap ;
2223use rustc_hir as hir;
2324use rustc_hir:: def_id:: { DefId , LOCAL_CRATE } ;
2425use rustc_hir:: lang_items:: LangItem ;
@@ -851,6 +852,8 @@ impl CrateInfo {
851852 // `compiler_builtins` are always placed last to ensure that they're linked correctly.
852853 used_crates. extend ( compiler_builtins) ;
853854
855+ let crates = tcx. crates ( ( ) ) ;
856+ let n_crates = crates. len ( ) ;
854857 let mut info = CrateInfo {
855858 target_cpu,
856859 crate_types,
@@ -862,19 +865,15 @@ impl CrateInfo {
862865 is_no_builtins : Default :: default ( ) ,
863866 native_libraries : Default :: default ( ) ,
864867 used_libraries : tcx. native_libraries ( LOCAL_CRATE ) . iter ( ) . map ( Into :: into) . collect ( ) ,
865- crate_name : Default :: default ( ) ,
868+ crate_name : UnordMap :: with_capacity ( n_crates ) ,
866869 used_crates,
867- used_crate_source : Default :: default ( ) ,
870+ used_crate_source : UnordMap :: with_capacity ( n_crates ) ,
868871 dependency_formats : tcx. dependency_formats ( ( ) ) . clone ( ) ,
869872 windows_subsystem,
870873 natvis_debugger_visualizers : Default :: default ( ) ,
871874 } ;
872- let crates = tcx. crates ( ( ) ) ;
873875
874- let n_crates = crates. len ( ) ;
875876 info. native_libraries . reserve ( n_crates) ;
876- info. crate_name . reserve ( n_crates) ;
877- info. used_crate_source . reserve ( n_crates) ;
878877
879878 for & cnum in crates. iter ( ) {
880879 info. native_libraries
@@ -901,7 +900,7 @@ impl CrateInfo {
901900 // by the compiler, but that's ok because all this stuff is unstable anyway.
902901 let target = & tcx. sess . target ;
903902 if !are_upstream_rust_objects_already_included ( tcx. sess ) {
904- let missing_weak_lang_items: FxHashSet < Symbol > = info
903+ let missing_weak_lang_items: FxIndexSet < Symbol > = info
905904 . used_crates
906905 . iter ( )
907906 . flat_map ( |& cnum| tcx. missing_lang_items ( cnum) )
@@ -915,7 +914,6 @@ impl CrateInfo {
915914
916915 // This loop only adds new items to values of the hash map, so the order in which we
917916 // iterate over the values is not important.
918- #[ allow( rustc:: potential_query_instability) ]
919917 info. linked_symbols
920918 . iter_mut ( )
921919 . filter ( |( crate_type, _) | {
0 commit comments