1
Fork 0

Make UsageMap::get_user_items infallible.

It's nicer this way.
This commit is contained in:
Nicholas Nethercote 2023-07-04 16:29:05 +10:00
parent d9c13cd453
commit 142075a9fb
2 changed files with 16 additions and 16 deletions

View file

@ -231,8 +231,8 @@ impl<'tcx> UsageMap<'tcx> {
assert!(self.used_map.insert(user_item, used_items).is_none()); assert!(self.used_map.insert(user_item, used_items).is_none());
} }
pub fn get_user_items(&self, item: MonoItem<'tcx>) -> Option<&[MonoItem<'tcx>]> { pub fn get_user_items(&self, item: MonoItem<'tcx>) -> &[MonoItem<'tcx>] {
self.user_map.get(&item).map(|items| items.as_slice()) self.user_map.get(&item).map(|items| items.as_slice()).unwrap_or(&[])
} }
/// Internally iterate over all inlined items used by `item`. /// Internally iterate over all inlined items used by `item`.

View file

@ -495,20 +495,20 @@ fn internalize_symbols<'tcx>(
if !single_codegen_unit { if !single_codegen_unit {
debug_assert_eq!(mono_item_placements[item], home_cgu); debug_assert_eq!(mono_item_placements[item], home_cgu);
if let Some(user_items) = cx.usage_map.get_user_items(*item) { if cx
if user_items .usage_map
.iter() .get_user_items(*item)
.filter_map(|user_item| { .iter()
// Some user mono items might not have been .filter_map(|user_item| {
// instantiated. We can safely ignore those. // Some user mono items might not have been
mono_item_placements.get(user_item) // instantiated. We can safely ignore those.
}) mono_item_placements.get(user_item)
.any(|placement| *placement != home_cgu) })
{ .any(|placement| *placement != home_cgu)
// Found a user from another CGU, so skip to the next item {
// without marking this one as internal. // Found a user from another CGU, so skip to the next item
continue; // without marking this one as internal.
} continue;
} }
} }