mirror of
https://github.com/rust-lang/rust.git
synced 2025-05-14 02:49:40 +00:00
![]() Re-implement a type-size based limit r? lcnr This PR reintroduces the type length limit added in #37789, which was accidentally made practically useless by the caching changes to `Ty::walk` in #72412, which caused the `walk` function to no longer walk over identical elements. Hitting this length limit is not fatal unless we are in codegen -- so it shouldn't affect passes like the mir inliner which creates potentially very large types (which we observed, for example, when the new trait solver compiles `itertools` in `--release` mode). This also increases the type length limit from `1048576 == 2 ** 20` to `2 ** 24`, which covers all of the code that can be reached with craterbot-check. Individual crates can increase the length limit further if desired. Perf regression is mild and I think we should accept it -- reinstating this limit is important for the new trait solver and to make sure we don't accidentally hit more type-size related regressions in the future. Fixes #125460 |
||
---|---|---|
.. | ||
error_reporting | ||
query | ||
select | ||
specialize | ||
auto_trait.rs | ||
coherence.rs | ||
const_evaluatable.rs | ||
engine.rs | ||
fulfill.rs | ||
misc.rs | ||
mod.rs | ||
normalize.rs | ||
object_safety.rs | ||
outlives_bounds.rs | ||
project.rs | ||
structural_match.rs | ||
structural_normalize.rs | ||
util.rs | ||
vtable.rs | ||
wf.rs |