Trim the places that will not be used.
This commit is contained in:
parent
38fa676330
commit
2b0bf3cf59
@ -675,6 +675,15 @@ fn register_with_filter<'tcx>(
|
|||||||
self.cache_preorder_invoke(place);
|
self.cache_preorder_invoke(place);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Trim useless places.
|
||||||
|
for opt_place in self.locals.iter_mut() {
|
||||||
|
if let Some(place) = *opt_place && self.inner_values[place].is_empty() {
|
||||||
|
*opt_place = None;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#[allow(rustc::potential_query_instability)]
|
||||||
|
self.projections.retain(|_, child| !self.inner_values[*child].is_empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Potentially register the (local, projection) place and its fields, recursively.
|
/// Potentially register the (local, projection) place and its fields, recursively.
|
||||||
@ -803,7 +812,7 @@ fn for_each_aliasing_place(
|
|||||||
tail_elem: Option<TrackElem>,
|
tail_elem: Option<TrackElem>,
|
||||||
f: &mut impl FnMut(ValueIndex),
|
f: &mut impl FnMut(ValueIndex),
|
||||||
) {
|
) {
|
||||||
if place.is_indirect() {
|
if place.has_deref() {
|
||||||
// We do not track indirect places.
|
// We do not track indirect places.
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user