From f254e28068abc85b722f9af2f2a0770d95e2baaa Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 10 Oct 2026 15:27:18 +0100 Subject: [PATCH] Zero the extra bytes when widening a value in `OdinLLVMBuildTransmute` --- src/llvm_backend_general.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index 504a22ee9..d6593a85a 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -3885,6 +3885,10 @@ general_end:; max_align = gb_max(max_align, 16); LLVMValueRef ptr = llvm_alloca(p, dst_type, max_align); + if (dst_size > src_size) { + // NOTE(bill): the bytes past `src` are padding and must read as zero + LLVMBuildStore(p->builder, LLVMConstNull(dst_type), ptr); + } LLVMValueRef nptr = LLVMBuildPointerCast(p->builder, ptr, LLVMPointerType(src_type, 0), ""); LLVMBuildStore(p->builder, val, nptr);