Skip to content

Commit bacc593

Browse files
committed
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
2 parents a1a84af + 1baf4ba commit bacc593

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

src/eval.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -375,7 +375,7 @@ pub fn create_ecx<'tcx>(
375375
});
376376
let main_ret_ty = tcx.fn_sig(entry_id).no_bound_vars().unwrap().output();
377377
let main_ret_ty = main_ret_ty.no_bound_vars().unwrap();
378-
let start_instance = ty::Instance::resolve(
378+
let start_instance = ty::Instance::try_resolve(
379379
tcx,
380380
ty::ParamEnv::reveal_all(),
381381
start_id,

0 commit comments

Comments
 (0)