aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Sema.zig7
1 files changed, 6 insertions, 1 deletions
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);