diff options
Diffstat (limited to 'compiler/rustc_const_eval/src')
| -rw-r--r-- | compiler/rustc_const_eval/src/util/alignment.rs | 4 | 
1 files changed, 3 insertions, 1 deletions
| diff --git a/compiler/rustc_const_eval/src/util/alignment.rs b/compiler/rustc_const_eval/src/util/alignment.rs index 2e0643afb39..bdb08a9828e 100644 --- a/compiler/rustc_const_eval/src/util/alignment.rs +++ b/compiler/rustc_const_eval/src/util/alignment.rs @@ -22,9 +22,11 @@ where let ty = place.ty(local_decls, tcx).ty; match tcx.layout_of(param_env.and(ty)) { - Ok(layout) if layout.align.abi <= pack => { + Ok(layout) if layout.align.abi <= pack && layout.is_sized() => { // If the packed alignment is greater or equal to the field alignment, the type won't be // further disaligned. + // However we need to ensure the field is sized; for unsized fields, `layout.align` is + // just an approximation. debug!( "is_disaligned({:?}) - align = {}, packed = {}; not disaligned", place, | 
