aboutsummaryrefslogtreecommitdiff
path: root/src/type.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/type.zig')
-rw-r--r--src/type.zig8
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;