| ... | @@ -3574,15 +3574,13 @@ pub const Type = extern union { | ... | @@ -3574,15 +3574,13 @@ pub const Type = extern union { |
| 3574 | .u128, .i128, .f128 => return 128, | 3574 | .u128, .i128, .f128 => return 128, |
| 3575 | | 3575 | |
| 3576 | .@"struct" => { | 3576 | .@"struct" => { |
| 3577 | if (sema_kit) |sk| _ = try sk.sema.resolveTypeFields(sk.block, sk.src, ty); | 3577 | const struct_obj = ty.castTag(.@"struct").?.data; |
| 3578 | if (ty.containerLayout() != .Packed) { | 3578 | if (struct_obj.layout != .Packed) { |
| 3579 | return (try ty.abiSizeAdvanced(target, if (sema_kit) |sk| .{ .sema_kit = sk } else .eager)).scalar * 8; | 3579 | return (try ty.abiSizeAdvanced(target, if (sema_kit) |sk| .{ .sema_kit = sk } else .eager)).scalar * 8; |
| 3580 | } | 3580 | } |
| 3581 | var total: u64 = 0; | 3581 | if (sema_kit) |sk| _ = try sk.sema.resolveTypeLayout(sk.block, sk.src, ty); |
| 3582 | for (ty.structFields().values()) |field| { | 3582 | assert(struct_obj.haveLayout()); |
| 3583 | total += try bitSizeAdvanced(field.ty, target, sema_kit); | 3583 | return try struct_obj.backing_int_ty.bitSizeAdvanced(target, sema_kit); |
| 3584 | } | | |
| 3585 | return total; | | |
| 3586 | }, | 3584 | }, |
| 3587 | | 3585 | |
| 3588 | .tuple, .anon_struct => { | 3586 | .tuple, .anon_struct => { |