Fix handling of large alignments in write_cvalue_maybe_transmute (#1521)

This commit is contained in:
beetrees 2024-07-21 12:13:58 +01:00 committed by GitHub
parent b70ad2defd
commit 4fb3c4bf86
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -677,8 +677,10 @@ fn transmute_scalar<'tcx>(
let to_addr = to_ptr.get_addr(fx); let to_addr = to_ptr.get_addr(fx);
let src_layout = from.1; let src_layout = from.1;
let size = dst_layout.size.bytes(); let size = dst_layout.size.bytes();
let src_align = src_layout.align.abi.bytes() as u8; // `emit_small_memory_copy` uses `u8` for alignments, just use the maximum
let dst_align = dst_layout.align.abi.bytes() as u8; // alignment that fits in a `u8` if the actual alignment is larger.
let src_align = src_layout.align.abi.bytes().try_into().unwrap_or(128);
let dst_align = dst_layout.align.abi.bytes().try_into().unwrap_or(128);
fx.bcx.emit_small_memory_copy( fx.bcx.emit_small_memory_copy(
fx.target_config, fx.target_config,
to_addr, to_addr,