Add docs, remove code, change subtyper code
This commit is contained in:
parent
4e9e0aae33
commit
8c3406f8bc
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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>,
|
||||||
|
Loading…
Reference in New Issue
Block a user