commit b93fa9833e6d2f7959eabb2417a154152a8d2d1c (tree)
parent 061d99285d5a73a71a97ed7bbb45f0a7f65acf2d
Author: Luuk de Gram <luuk@degram.dev>
Date: Tue, 16 May 2023 19:33:19 +0200
wasm: memset - correctly load the ptr for slices
Previously we would use the address of the slice itself, which would
result in miscompilations and accidently setting the memory region
of the slice itself, rather than based on the `ptr` field.
Diffstat:
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/arch/wasm/CodeGen.zig b/src/arch/wasm/CodeGen.zig
@@ -4464,7 +4464,9 @@ fn airMemset(func: *CodeGen, inst: Air.Inst.Index, safety: bool) InnerError!void
.One => @as(WValue, .{ .imm32 = @intCast(u32, ptr_ty.childType().arrayLen()) }),
.C, .Many => unreachable,
};
- try func.memset(ptr, len, value);
+
+ const dst_ptr = try func.sliceOrArrayPtr(ptr, ptr_ty);
+ try func.memset(dst_ptr, len, value);
func.finishAir(inst, .none, &.{ bin_op.lhs, bin_op.rhs });
}