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
|
@ -389,7 +389,7 @@ impl<'tcx> Inliner<'tcx> {
|
|||
// To resolve an instance its args have to be fully normalized.
|
||||
let args = self.tcx.try_normalize_erasing_regions(self.param_env, args).ok()?;
|
||||
let callee =
|
||||
Instance::resolve(self.tcx, self.param_env, def_id, args).ok().flatten()?;
|
||||
Instance::try_resolve(self.tcx, self.param_env, def_id, args).ok().flatten()?;
|
||||
|
||||
if let InstanceKind::Virtual(..) | InstanceKind::Intrinsic(_) = callee.def {
|
||||
return None;
|
||||
|
|
|
@ -53,7 +53,7 @@ pub(crate) fn mir_callgraph_reachable<'tcx>(
|
|||
trace!(?caller, ?param_env, ?args, "cannot normalize, skipping");
|
||||
continue;
|
||||
};
|
||||
let Ok(Some(callee)) = ty::Instance::resolve(tcx, param_env, callee, args) else {
|
||||
let Ok(Some(callee)) = ty::Instance::try_resolve(tcx, param_env, callee, args) else {
|
||||
trace!(?callee, "cannot resolve, skipping");
|
||||
continue;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue