const_eval and codegen: audit uses of is_zst
This commit is contained in:
parent
bf91321e0f
commit
b2ebf1c23f
12 changed files with 42 additions and 29 deletions
|
@ -88,7 +88,8 @@ fn unsize_ptr<'tcx>(
|
|||
let src_f = src_layout.field(fx, i);
|
||||
assert_eq!(src_layout.fields.offset(i).bytes(), 0);
|
||||
assert_eq!(dst_layout.fields.offset(i).bytes(), 0);
|
||||
if src_f.is_zst() {
|
||||
if src_f.is_1zst() {
|
||||
// We are looking for the one non-1-ZST field; this is not it.
|
||||
continue;
|
||||
}
|
||||
assert_eq!(src_layout.size, src_f.size);
|
||||
|
@ -151,6 +152,7 @@ pub(crate) fn coerce_unsized_into<'tcx>(
|
|||
let dst_f = dst.place_field(fx, FieldIdx::new(i));
|
||||
|
||||
if dst_f.layout().is_zst() {
|
||||
// No data here, nothing to copy/coerce.
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -51,8 +51,8 @@ pub(crate) fn get_ptr_and_method_ref<'tcx>(
|
|||
'descend_newtypes: while !arg.layout().ty.is_unsafe_ptr() && !arg.layout().ty.is_ref() {
|
||||
for i in 0..arg.layout().fields.count() {
|
||||
let field = arg.value_field(fx, FieldIdx::new(i));
|
||||
if !field.layout().is_zst() {
|
||||
// we found the one non-zero-sized field that is allowed
|
||||
if !field.layout().is_1zst() {
|
||||
// we found the one non-1-ZST field that is allowed
|
||||
// now find *its* non-zero-sized field, or stop if it's a
|
||||
// pointer
|
||||
arg = field;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue