Avoid vacuous Constraint::{VarSubVar,RegSubReg} constraints.

If the two regions are the same, we can skip it. This is a small perf win.
This commit is contained in:
Nicholas Nethercote
2025-07-25 19:52:08 +10:00
parent 606dcc0d2e
commit 75a1f47750

View File

@@ -471,8 +471,10 @@ impl<'tcx> RegionConstraintCollector<'_, 'tcx> {
// all regions are subregions of static, so we can ignore this
}
(ReVar(sub_id), ReVar(sup_id)) => {
if sub_id != sup_id {
self.add_constraint(Constraint::VarSubVar(sub_id, sup_id), origin);
}
}
(_, ReVar(sup_id)) => {
self.add_constraint(Constraint::RegSubVar(sub, sup_id), origin);
}
@@ -480,10 +482,12 @@ impl<'tcx> RegionConstraintCollector<'_, 'tcx> {
self.add_constraint(Constraint::VarSubReg(sub_id, sup), origin);
}
_ => {
if sub != sup {
self.add_constraint(Constraint::RegSubReg(sub, sup), origin);
}
}
}
}
pub(super) fn verify_generic_bound(
&mut self,