| ... | @@ -20179,8 +20179,29 @@ static Error buf_read_value_bytes(IrAnalyze *ira, AstNode *source_node, uint8_t | ... | @@ -20179,8 +20179,29 @@ static Error buf_read_value_bytes(IrAnalyze *ira, AstNode *source_node, uint8_t |
| 20179 | val->data.x_ptr.data.hard_coded_addr.addr = bigint_as_unsigned(&bn); | 20179 | val->data.x_ptr.data.hard_coded_addr.addr = bigint_as_unsigned(&bn); |
| 20180 | return ErrorNone; | 20180 | return ErrorNone; |
| 20181 | } | 20181 | } |
| 20182 | case ZigTypeIdArray: | 20182 | case ZigTypeIdArray: { |
| 20183 | zig_panic("TODO buf_read_value_bytes array type"); | 20183 | uint64_t elem_size = type_size(ira->codegen, val->type->data.array.child_type); |
| | 20184 | size_t len = val->type->data.array.len; |
| | 20185 | |
| | 20186 | switch (val->data.x_array.special) { |
| | 20187 | case ConstArraySpecialNone: |
| | 20188 | val->data.x_array.data.s_none.elements = create_const_vals(len); |
| | 20189 | for (size_t i = 0; i < len; i++) { |
| | 20190 | ConstExprValue *elem = &val->data.x_array.data.s_none.elements[i]; |
| | 20191 | elem->special = ConstValSpecialStatic; |
| | 20192 | elem->type = val->type->data.array.child_type; |
| | 20193 | if ((err = buf_read_value_bytes(ira, source_node, buf + (elem_size * i), elem))) |
| | 20194 | return err; |
| | 20195 | } |
| | 20196 | break; |
| | 20197 | case ConstArraySpecialUndef: |
| | 20198 | zig_panic("TODO buf_read_value_bytes ConstArraySpecialUndef array type"); |
| | 20199 | case ConstArraySpecialBuf: |
| | 20200 | zig_panic("TODO buf_read_value_bytes ConstArraySpecialBuf array type"); |
| | 20201 | } |
| | 20202 | |
| | 20203 | return ErrorNone; |
| | 20204 | } |
| 20184 | case ZigTypeIdStruct: | 20205 | case ZigTypeIdStruct: |
| 20185 | switch (val->type->data.structure.layout) { | 20206 | switch (val->type->data.structure.layout) { |
| 20186 | case ContainerLayoutAuto: { | 20207 | case ContainerLayoutAuto: { |