(&ty::Adt(def_a, _), &ty::Adt(def_b, _)) => {
assert_eq!(def_a, def_b);
- for i in 0..def_a.variants[VariantIdx::new(0)].fields.len() {
+ for i in 0..def_a.variant(VariantIdx::new(0)).fields.len() {
let src_f = src.value_field(fx, mir::Field::new(i));
let dst_f = dst.place_field(fx, mir::Field::new(i));
layout: TyAndLayout<'tcx>,
info: Value,
) -> (Value, Value) {
- if !layout.is_unsized() {
- let size = fx.bcx.ins().iconst(fx.pointer_type, layout.size.bytes() as i64);
- let align = fx.bcx.ins().iconst(fx.pointer_type, layout.align.abi.bytes() as i64);
- return (size, align);
- }
+ assert!(layout.is_unsized() || layout.abi == Abi::Uninhabited);
match layout.ty.kind() {
ty::Dynamic(..) => {
// load size/align from vtable
// Packed types ignore the alignment of their fields.
if let ty::Adt(def, _) = layout.ty.kind() {
- if def.repr.packed() {
+ if def.repr().packed() {
unsized_align = sized_align;
}
}