Skip to content

Commit 96d4137

Browse files
committed
Only normalize once in mir validator typechecker
Before, it called `normalize_erasing_regions` twice since `equal_up_to_regions` called it as well for both types.
1 parent 81a583c commit 96d4137

File tree

1 file changed

+10
-15
lines changed

1 file changed

+10
-15
lines changed

compiler/rustc_const_eval/src/transform/validate.rs

+10-15
Original file line numberDiff line numberDiff line change
@@ -182,27 +182,22 @@ impl<'a, 'tcx> TypeChecker<'a, 'tcx> {
182182
return true;
183183
}
184184

185-
let try_equal_with_param_env = |param_env| {
186-
let src = self.tcx.normalize_erasing_regions(param_env, src);
187-
let dest = self.tcx.normalize_erasing_regions(param_env, dest);
188-
// Type-changing assignments can happen when subtyping is used. While
189-
// all normal lifetimes are erased, higher-ranked types with their
190-
// late-bound lifetimes are still around and can lead to type
191-
// differences. So we compare ignoring lifetimes.
192-
equal_up_to_regions(self.tcx, param_env, src, dest)
193-
};
194-
195185
// Normalize projections and things like that.
186+
// Type-changing assignments can happen when subtyping is used. While
187+
// all normal lifetimes are erased, higher-ranked types with their
188+
// late-bound lifetimes are still around and can lead to type
189+
// differences. So we compare ignoring lifetimes.
190+
196191
// First, try with reveal_all. This might not work in some cases, as the predicates
197192
// can be cleared in reveal_all mode. We try the reveal first anyways as it is used
198193
// by some other passes like inlining as well.
199194
let param_env = self.param_env.with_reveal_all_normalized(self.tcx);
200-
if try_equal_with_param_env(param_env) {
201-
true
202-
} else {
203-
// If this fails, we can try it without the reveal.
204-
try_equal_with_param_env(self.param_env)
195+
if equal_up_to_regions(self.tcx, param_env, src, dest) {
196+
return true;
205197
}
198+
199+
// If this fails, we can try it without the reveal.
200+
equal_up_to_regions(self.tcx, self.param_env, src, dest)
206201
}
207202
}
208203

0 commit comments

Comments
 (0)