| ... | @@ -5331,17 +5331,17 @@ fn airAggregateInit(func: *CodeGen, inst: Air.Inst.Index) InnerError!void { | ... | @@ -5331,17 +5331,17 @@ fn airAggregateInit(func: *CodeGen, inst: Air.Inst.Index) InnerError!void { |
| 5331 | else => { | 5331 | else => { |
| 5332 | const result = try func.allocStack(result_ty); | 5332 | const result = try func.allocStack(result_ty); |
| 5333 | const offset = try func.buildPointerOffset(result, 0, .new); // pointer to offset | 5333 | const offset = try func.buildPointerOffset(result, 0, .new); // pointer to offset |
| | 5334 | var prev_field_offset: u64 = 0; |
| 5334 | for (elements, 0..) |elem, elem_index| { | 5335 | for (elements, 0..) |elem, elem_index| { |
| 5335 | if ((try result_ty.structFieldValueComptime(mod, elem_index)) != null) continue; | 5336 | if ((try result_ty.structFieldValueComptime(mod, elem_index)) != null) continue; |
| 5336 | | 5337 | |
| 5337 | const elem_ty = result_ty.structFieldType(elem_index, mod); | 5338 | const elem_ty = result_ty.structFieldType(elem_index, mod); |
| 5338 | const elem_size: u32 = @intCast(elem_ty.abiSize(mod)); | 5339 | const field_offset = result_ty.structFieldOffset(elem_index, mod); |
| | 5340 | _ = try func.buildPointerOffset(offset, @intCast(field_offset - prev_field_offset), .modify); |
| | 5341 | prev_field_offset = field_offset; |
| | 5342 | |
| 5339 | const value = try func.resolveInst(elem); | 5343 | const value = try func.resolveInst(elem); |
| 5340 | try func.store(offset, value, elem_ty, 0); | 5344 | try func.store(offset, value, elem_ty, 0); |
| 5341 | | | |
| 5342 | if (elem_index < elements.len - 1) { | | |
| 5343 | _ = try func.buildPointerOffset(offset, elem_size, .modify); | | |
| 5344 | } | | |
| 5345 | } | 5345 | } |
| 5346 | | 5346 | |
| 5347 | break :result_value result; | 5347 | break :result_value result; |