Deduplicate tcx.instance_mir(instance)
calls in try_instance_mir
This commit is contained in:
parent
af88f7db51
commit
da4ec6ffa7
1 changed files with 10 additions and 15 deletions
|
@ -1027,21 +1027,16 @@ fn try_instance_mir<'tcx>(
|
||||||
tcx: TyCtxt<'tcx>,
|
tcx: TyCtxt<'tcx>,
|
||||||
instance: InstanceDef<'tcx>,
|
instance: InstanceDef<'tcx>,
|
||||||
) -> Result<&'tcx Body<'tcx>, &'static str> {
|
) -> Result<&'tcx Body<'tcx>, &'static str> {
|
||||||
match instance {
|
if let ty::InstanceDef::DropGlue(_, Some(ty)) = instance
|
||||||
ty::InstanceDef::DropGlue(_, Some(ty)) => match ty.kind() {
|
&& let ty::Adt(def, args) = ty.kind()
|
||||||
ty::Adt(def, args) => {
|
{
|
||||||
let fields = def.all_fields();
|
let fields = def.all_fields();
|
||||||
for field in fields {
|
for field in fields {
|
||||||
let field_ty = field.ty(tcx, args);
|
let field_ty = field.ty(tcx, args);
|
||||||
if field_ty.has_param() && field_ty.has_projections() {
|
if field_ty.has_param() && field_ty.has_projections() {
|
||||||
return Err("cannot build drop shim for polymorphic type");
|
return Err("cannot build drop shim for polymorphic type");
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Ok(tcx.instance_mir(instance))
|
|
||||||
}
|
}
|
||||||
_ => Ok(tcx.instance_mir(instance)),
|
}
|
||||||
},
|
|
||||||
_ => Ok(tcx.instance_mir(instance)),
|
|
||||||
}
|
}
|
||||||
|
Ok(tcx.instance_mir(instance))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue