From fc066992d912186da08ac9250b3772103aafbbe8 Mon Sep 17 00:00:00 2001 From: Veikka Tuominen Date: Tue, 17 Jan 2023 20:06:41 +0200 Subject: [PATCH] Sema: do not create slices with undefined pointers The undef pointer ended up being zero on wasm32. --- src/Sema.zig | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Sema.zig b/src/Sema.zig index 943f0adf6b..dcc38e4c0a 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -24822,8 +24822,13 @@ fn coerceExtra( // empty tuple to zero-length slice // note that this allows coercing to a mutable slice. if (inst_child_ty.structFieldCount() == 0) { + // Optional slice is represented with a null pointer so + // we use a dummy pointer value with the required alignment. const slice_val = try Value.Tag.slice.create(sema.arena, .{ - .ptr = Value.undef, + .ptr = if (dest_info.@"align" != 0) + try Value.Tag.int_u64.create(sema.arena, dest_info.@"align") + else + try inst_child_ty.lazyAbiAlignment(target, sema.arena), .len = Value.zero, }); return sema.addConstant(dest_ty, slice_val);