| ... | @@ -6901,6 +6901,10 @@ fn airAggFieldVal(cg: *CodeGen, inst: Air.Inst.Index) !?Id { | ... | @@ -6901,6 +6901,10 @@ fn airAggFieldVal(cg: *CodeGen, inst: Air.Inst.Index) !?Id { |
| 6901 | const pl_ptr_ty_id = try cg.ptrType(layout_payload_ty_id, .function); | 6901 | const pl_ptr_ty_id = try cg.ptrType(layout_payload_ty_id, .function); |
| 6902 | const pl_ptr_id = try cg.accessChain(pl_ptr_ty_id, tmp_id, &.{layout.payload_index}); | 6902 | const pl_ptr_id = try cg.accessChain(pl_ptr_ty_id, tmp_id, &.{layout.payload_index}); |
| 6903 | | 6903 | |
| | 6904 | if (field_ty.toIntern() == layout.payload_ty.toIntern()) { |
| | 6905 | return try cg.load(field_ty, pl_ptr_id, .{}); |
| | 6906 | } |
| | 6907 | |
| 6904 | const field_ty_id = try cg.resolveType(field_ty, .indirect); | 6908 | const field_ty_id = try cg.resolveType(field_ty, .indirect); |
| 6905 | const active_pl_ptr_ty_id = try cg.ptrType(field_ty_id, .function); | 6909 | const active_pl_ptr_ty_id = try cg.ptrType(field_ty_id, .function); |
| 6906 | const active_pl_ptr_id = cg.allocId(); | 6910 | const active_pl_ptr_id = cg.allocId(); |
| ... | @@ -7013,6 +7017,12 @@ fn structFieldPtr( | ... | @@ -7013,6 +7017,12 @@ fn structFieldPtr( |
| 7013 | } | 7017 | } |
| 7014 | | 7018 | |
| 7015 | const storage_class = cg.storageClass(object_ptr_ty.ptrAddressSpace(zcu)); | 7019 | const storage_class = cg.storageClass(object_ptr_ty.ptrAddressSpace(zcu)); |
| | 7020 | const field_ty = result_ptr_ty.childType(zcu); |
| | 7021 | if (field_ty.toIntern() == layout.payload_ty.toIntern()) { |
| | 7022 | if (object_ty.containerLayout(zcu) == .@"packed") return object_ptr; |
| | 7023 | return try cg.accessChain(result_ty_id, object_ptr, &.{layout.payload_index}); |
| | 7024 | } |
| | 7025 | |
| 7016 | const layout_payload_ty_id = try cg.resolveType(layout.payload_ty, .indirect); | 7026 | const layout_payload_ty_id = try cg.resolveType(layout.payload_ty, .indirect); |
| 7017 | const pl_ptr_ty_id = try cg.ptrType(layout_payload_ty_id, storage_class); | 7027 | const pl_ptr_ty_id = try cg.ptrType(layout_payload_ty_id, storage_class); |
| 7018 | const pl_ptr_id = blk: { | 7028 | const pl_ptr_id = blk: { |