Skip to content

Commit e27c3e9

Browse files
authored
Rollup merge of #115762 - oli-obk:early_const_prop_lint2, r=compiler-errors
Explain revealing of opaque types in layout_of ParamEnv r? `@compiler-errors` ~~I feel like `layout_of` is doing too many things at once, and I don't really know why. It could allow us to if callers could decide whether to reveal opaque types.~~ Looks like this also exists as a performance optimization. While we could probably figure out a way to do this, all the ones I came up with are fragile as `layout_of` callers now suddenly need to be careful what ParamEnv they pass in.
2 parents 0d0f4fd + ee59531 commit e27c3e9

File tree

1 file changed

+3
-0
lines changed

1 file changed

+3
-0
lines changed

compiler/rustc_ty_utils/src/layout.rs

+3
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ fn layout_of<'tcx>(
3636
let (param_env, ty) = query.into_parts();
3737
debug!(?ty);
3838

39+
// Optimization: We convert to RevealAll and convert opaque types in the where bounds
40+
// to their hidden types. This reduces overall uncached invocations of `layout_of` and
41+
// is thus a small performance improvement.
3942
let param_env = param_env.with_reveal_all_normalized(tcx);
4043
let unnormalized_ty = ty;
4144

0 commit comments

Comments
 (0)