| ... | ... | @@ -6852,17 +6852,35 @@ fn airAggregateInit(f: *Function, inst: Air.Inst.Index) !CValue { |
| 6852 | 6852 | switch (inst_ty.zigTypeTag()) { |
| 6853 | 6853 | .Array, .Vector => { |
| 6854 | 6854 | const elem_ty = inst_ty.childType(); |
| 6855 | | for (resolved_elements, 0..) |element, i| { |
| 6856 | | try f.writeCValue(writer, local, .Other); |
| 6857 | | try writer.print("[{d}] = ", .{i}); |
| 6858 | | try f.writeCValue(writer, element, .Other); |
| 6859 | | try writer.writeAll(";\n"); |
| 6860 | | } |
| 6861 | | if (inst_ty.sentinel()) |sentinel| { |
| 6862 | | try f.writeCValue(writer, local, .Other); |
| 6863 | | try writer.print("[{d}] = ", .{resolved_elements.len}); |
| 6864 | | try f.object.dg.renderValue(writer, elem_ty, sentinel, .Other); |
| 6865 | | try writer.writeAll(";\n"); |
| 6855 | |
| 6856 | const is_array = lowersToArray(elem_ty, target); |
| 6857 | const need_memcpy = is_array; |
| 6858 | if (need_memcpy) { |
| 6859 | for (resolved_elements, 0..) |element, i| { |
| 6860 | try writer.writeAll("memcpy("); |
| 6861 | try f.writeCValue(writer, local, .Other); |
| 6862 | try writer.print("[{d}]", .{i}); |
| 6863 | try writer.writeAll(", "); |
| 6864 | try f.writeCValue(writer, element, .Other); |
| 6865 | try writer.writeAll(", sizeof("); |
| 6866 | try f.renderType(writer, elem_ty); |
| 6867 | try writer.writeAll("))"); |
| 6868 | try writer.writeAll(";\n"); |
| 6869 | } |
| 6870 | assert(inst_ty.sentinel() == null); |
| 6871 | } else { |
| 6872 | for (resolved_elements, 0..) |element, i| { |
| 6873 | try f.writeCValue(writer, local, .Other); |
| 6874 | try writer.print("[{d}] = ", .{i}); |
| 6875 | try f.writeCValue(writer, element, .Other); |
| 6876 | try writer.writeAll(";\n"); |
| 6877 | } |
| 6878 | if (inst_ty.sentinel()) |sentinel| { |
| 6879 | try f.writeCValue(writer, local, .Other); |
| 6880 | try writer.print("[{d}] = ", .{resolved_elements.len}); |
| 6881 | try f.object.dg.renderValue(writer, elem_ty, sentinel, .Other); |
| 6882 | try writer.writeAll(";\n"); |
| 6883 | } |
| 6866 | 6884 | } |
| 6867 | 6885 | }, |
| 6868 | 6886 | .Struct => switch (inst_ty.containerLayout()) { |