authorgravatar for 124872+jedisct1@users.noreply.github.comFrank Denis <124872+jedisct1@users.noreply.github.com> 2025-09-18 16:19:56+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-09-21 05:01:41-07:00
logbdc31c95611de8611a13e3dde9e091ef3a719476
tree47cdb0141e8a265ba03531fb17a91bb3e2d4de5c
parent594cb38fcb6c2edccee6b2fd74adec81b3be547a

aarch64/zonCast: don't return a pointer to a stack element

Elements are computed at comptime, so don't declare them as "var".

1 files changed, 5 insertions(+), 2 deletions(-)

src/codegen/aarch64/Assemble.zig+5-2
...@@ -42,8 +42,11 @@ fn zonCast(comptime Result: type, zon_value: anytype, symbols: anytype) Result {...@@ -42,8 +42,11 @@ fn zonCast(comptime Result: type, zon_value: anytype, symbols: anytype) Result {
42 .@"struct" => |zon_struct| switch (@typeInfo(Result)) {42 .@"struct" => |zon_struct| switch (@typeInfo(Result)) {
43 .pointer => |result_pointer| {43 .pointer => |result_pointer| {
44 comptime assert(result_pointer.size == .slice and result_pointer.is_const);44 comptime assert(result_pointer.size == .slice and result_pointer.is_const);
45 var elems: [zon_value.len]result_pointer.child = undefined;45 const elems = comptime blk: {
46 inline for (&elems, zon_value) |*elem, zon_elem| elem.* = zonCast(result_pointer.child, zon_elem, symbols);46 var temp_elems: [zon_value.len]result_pointer.child = undefined;
47 for (&temp_elems, zon_value) |*elem, zon_elem| elem.* = zonCast(result_pointer.child, zon_elem, symbols);
48 break :blk temp_elems;
49 };
47 return &elems;50 return &elems;
48 },51 },
49 .@"struct" => |result_struct| {52 .@"struct" => |result_struct| {