Auto merge of #125507 - compiler-errors:type-length-limit, r=lcnr
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
This commit is contained in:
commit
c872a1418a
54 changed files with 360 additions and 268 deletions
|
@ -6,7 +6,7 @@ use rustc_middle::bug;
|
|||
use rustc_middle::query::Providers;
|
||||
use rustc_middle::ty::{self, GenericParamDefKind, Ty, TyCtxt, Upcast, VtblEntry};
|
||||
use rustc_middle::ty::{GenericArgs, TypeVisitableExt};
|
||||
use rustc_span::{sym, Span};
|
||||
use rustc_span::{sym, Span, DUMMY_SP};
|
||||
use smallvec::{smallvec, SmallVec};
|
||||
|
||||
use std::fmt::Debug;
|
||||
|
@ -285,13 +285,14 @@ fn vtable_entries<'tcx>(
|
|||
return VtblEntry::Vacant;
|
||||
}
|
||||
|
||||
let instance = ty::Instance::resolve_for_vtable(
|
||||
let instance = ty::Instance::expect_resolve_for_vtable(
|
||||
tcx,
|
||||
ty::ParamEnv::reveal_all(),
|
||||
def_id,
|
||||
args,
|
||||
)
|
||||
.expect("resolution failed during building vtable representation");
|
||||
DUMMY_SP,
|
||||
);
|
||||
|
||||
VtblEntry::Method(instance)
|
||||
});
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue