[WIP] Support param bounds on non-lifetime binders by compiler-errors · Pull Request #115362 · rust-lang/rust (original) (raw)

I did some perf runs locally and it seems like most is inlining changes around type folders:

// nalgebra
10,911,801,289  ty::util::fold_list::<RegionEraserVisitor, &RawList<TypeInfo, Clause>, Clause, <&RawList<ty::list::TypeInfo, Clause> as TypeFoldable>::try_fold_with<RegionEraserVisitor>>::closure
-7,774,259,348  <Clause as TypeFoldable>::try_fold_with::<RegionEraserVisitor>

Similarly OpportunisticVarResolver and ArgFolder show up diesel, but they look like inlining changes.

While I can see us playing inliner golf, that's something we could have done before to find some more local optima. So 👍 on landing this and taking the perf hit (most of it is in instructions anyway, cycles is more on the 1% maximum regression side).