diff --git a/src/stage1/codegen.cpp b/src/stage1/codegen.cpp index 5e9b84d25a..b8ac867082 100644 --- a/src/stage1/codegen.cpp +++ b/src/stage1/codegen.cpp @@ -1645,11 +1645,13 @@ static void gen_assign_raw(CodeGen *g, LLVMValueRef ptr, ZigType *ptr_type, ZigType *usize = g->builtin_types.entry_usize; uint64_t size_bytes = LLVMStoreSizeOfType(g->target_data_ref, get_llvm_type(g, child_type)); - uint64_t align_bytes = get_ptr_align(g, ptr_type); + uint64_t src_align_bytes = get_abi_alignment(g, child_type); + uint64_t dest_align_bytes = get_ptr_align(g, ptr_type); assert(size_bytes > 0); - assert(align_bytes > 0); + assert(src_align_bytes > 0); + assert(dest_align_bytes > 0); - ZigLLVMBuildMemCpy(g->builder, dest_ptr, align_bytes, src_ptr, align_bytes, + ZigLLVMBuildMemCpy(g->builder, dest_ptr, dest_align_bytes, src_ptr, src_align_bytes, LLVMConstInt(usize->llvm_type, size_bytes, false), ptr_type->data.pointer.is_volatile); return;