Add docs, remove code, change subtyper code

This commit is contained in:
ouz-a 2023-08-28 11:19:19 +03:00
parent 4e9e0aae33
commit 8c3406f8bc
2 changed files with 9 additions and 3 deletions

View File

@ -872,13 +872,11 @@ pub(crate) fn codegen_place<'tcx>(
for elem in place.projection { for elem in place.projection {
match elem { match elem {
PlaceElem::Subtype(_) => {
continue;
}
PlaceElem::Deref => { PlaceElem::Deref => {
cplace = cplace.place_deref(fx); cplace = cplace.place_deref(fx);
} }
PlaceElem::OpaqueCast(ty) => bug!("encountered OpaqueCast({ty}) in codegen"), PlaceElem::OpaqueCast(ty) => bug!("encountered OpaqueCast({ty}) in codegen"),
PlaceElem::Subtype(ty) => cplace = cplace.place_transmute_type(fx, ty),
PlaceElem::Field(field, _ty) => { PlaceElem::Field(field, _ty) => {
cplace = cplace.place_field(fx, field); cplace = cplace.place_field(fx, field);
} }

View File

@ -674,6 +674,14 @@ fn transmute_scalar<'tcx>(
} }
} }
pub(crate) fn place_transmute_type(
self,
fx: &mut FunctionCx<'_, '_, 'tcx>,
ty: Ty<'tcx>,
) -> CPlace<'tcx> {
CPlace { inner: self.inner, layout: fx.layout_of(fx.monomorphize(ty)) }
}
pub(crate) fn place_field( pub(crate) fn place_field(
self, self,
fx: &mut FunctionCx<'_, '_, 'tcx>, fx: &mut FunctionCx<'_, '_, 'tcx>,