Merge the two loops in internalize_symbols
.
Because they have a lot of overlap.
This commit is contained in:
parent
392045b7e7
commit
fe3b646565
1 changed files with 18 additions and 29 deletions
|
@ -486,21 +486,7 @@ fn internalize_symbols<'tcx>(
|
|||
mono_item_placements: FxHashMap<MonoItem<'tcx>, MonoItemPlacement>,
|
||||
internalization_candidates: FxHashSet<MonoItem<'tcx>>,
|
||||
) {
|
||||
if codegen_units.len() == 1 {
|
||||
// Fast path for when there is only one codegen unit. In this case we
|
||||
// can internalize all candidates, since there is nowhere else they
|
||||
// could be used from.
|
||||
for cgu in codegen_units {
|
||||
for (item, linkage_and_visibility) in cgu.items_mut() {
|
||||
if !internalization_candidates.contains(item) {
|
||||
// This item is no candidate for internalizing, so skip it.
|
||||
continue;
|
||||
}
|
||||
*linkage_and_visibility = (Linkage::Internal, Visibility::Default);
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
let single_codegen_unit = codegen_units.len() == 1;
|
||||
|
||||
// For each internalization candidates in each codegen unit, check if it is
|
||||
// used from outside its defining codegen unit.
|
||||
|
@ -512,6 +498,8 @@ fn internalize_symbols<'tcx>(
|
|||
// This item is no candidate for internalizing, so skip it.
|
||||
continue;
|
||||
}
|
||||
|
||||
if !single_codegen_unit {
|
||||
debug_assert_eq!(mono_item_placements[item], home_cgu);
|
||||
|
||||
if let Some(user_items) = cx.usage_map.get_user_items(*item) {
|
||||
|
@ -529,6 +517,7 @@ fn internalize_symbols<'tcx>(
|
|||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If we got here, we did not find any uses from other CGUs, so
|
||||
// it's fine to make this monomorphization internal.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue