Auto merge of #77306 - lcnr:inline-ok, r=eddyb
normalize substs while inlining fixes #68347 or more precisely, this fixes the same ICE in rust analyser as veloren is pinned to a specific nightly and had an error with the current one. I didn't look into creating an MVCE here as that seems fairly annoying, will spend a few minutes doing so rn. (failed) r? `@eddyb` cc `@bjorn3`
This commit is contained in:
commit
4d247ad7d3
5 changed files with 91 additions and 7 deletions
|
@ -201,9 +201,13 @@ impl Inliner<'tcx> {
|
|||
let terminator = bb_data.terminator();
|
||||
if let TerminatorKind::Call { func: ref op, .. } = terminator.kind {
|
||||
if let ty::FnDef(callee_def_id, substs) = *op.ty(caller_body, self.tcx).kind() {
|
||||
let instance = Instance::resolve(self.tcx, self.param_env, callee_def_id, substs)
|
||||
.ok()
|
||||
.flatten()?;
|
||||
// To resolve an instance its substs have to be fully normalized, so
|
||||
// we do this here.
|
||||
let normalized_substs = self.tcx.normalize_erasing_regions(self.param_env, substs);
|
||||
let instance =
|
||||
Instance::resolve(self.tcx, self.param_env, callee_def_id, normalized_substs)
|
||||
.ok()
|
||||
.flatten()?;
|
||||
|
||||
if let InstanceDef::Virtual(..) = instance.def {
|
||||
return None;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue