diff options
Diffstat (limited to 'src/type.zig')
| -rw-r--r-- | src/type.zig | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/type.zig b/src/type.zig index 64a85aaa2d..067deecfea 100644 --- a/src/type.zig +++ b/src/type.zig @@ -1607,8 +1607,12 @@ pub const Type = struct { .type_info => unreachable, }, .struct_type => |struct_type| { - if (struct_type.layout == .Packed) { - if (opt_sema) |sema| try sema.resolveTypeLayout(ty); + const is_packed = struct_type.layout == .Packed; + if (opt_sema) |sema| { + try sema.resolveTypeFields(ty); + if (is_packed) try sema.resolveTypeLayout(ty); + } + if (is_packed) { return try Type.fromInterned(struct_type.backingIntType(ip).*).bitSizeAdvanced(mod, opt_sema); } return (try ty.abiSizeAdvanced(mod, strat)).scalar * 8; |
