| ... | ... | @@ -28617,7 +28617,8 @@ fn tupleFieldPtr( |
| 28617 | 28617 | const pt = sema.pt; |
| 28618 | 28618 | const zcu = pt.zcu; |
| 28619 | 28619 | const tuple_ptr_ty = sema.typeOf(tuple_ptr); |
| 28620 | | const tuple_ty = tuple_ptr_ty.childType(zcu); |
| 28620 | const tuple_ptr_info = tuple_ptr_ty.ptrInfo(zcu); |
| 28621 | const tuple_ty: Type = .fromInterned(tuple_ptr_info.child); |
| 28621 | 28622 | try tuple_ty.resolveFields(pt); |
| 28622 | 28623 | const field_count = tuple_ty.structFieldCount(zcu); |
| 28623 | 28624 | |
| ... | ... | @@ -28635,9 +28636,16 @@ fn tupleFieldPtr( |
| 28635 | 28636 | const ptr_field_ty = try pt.ptrTypeSema(.{ |
| 28636 | 28637 | .child = field_ty.toIntern(), |
| 28637 | 28638 | .flags = .{ |
| 28638 | | .is_const = !tuple_ptr_ty.ptrIsMutable(zcu), |
| 28639 | | .is_volatile = tuple_ptr_ty.isVolatilePtr(zcu), |
| 28640 | | .address_space = tuple_ptr_ty.ptrAddressSpace(zcu), |
| 28639 | .is_const = tuple_ptr_info.flags.is_const, |
| 28640 | .is_volatile = tuple_ptr_info.flags.is_volatile, |
| 28641 | .address_space = tuple_ptr_info.flags.address_space, |
| 28642 | .alignment = a: { |
| 28643 | if (tuple_ptr_info.flags.alignment == .none) break :a .none; |
| 28644 | // The tuple pointer isn't naturally aligned, so the field pointer might be underaligned. |
| 28645 | const tuple_align = tuple_ptr_info.flags.alignment; |
| 28646 | const field_align = try field_ty.abiAlignmentSema(pt); |
| 28647 | break :a tuple_align.min(field_align); |
| 28648 | }, |
| 28641 | 28649 | }, |
| 28642 | 28650 | }); |
| 28643 | 28651 | |