| ... | ... | @@ -34985,7 +34985,15 @@ pub fn resolveStructLayout(sema: *Sema, ty: Type) SemaError!void { |
| 34985 | 34985 | offsets[i] = @intCast(aligns[i].forward(offset)); |
| 34986 | 34986 | offset = offsets[i] + sizes[i]; |
| 34987 | 34987 | } |
| 34988 | | struct_type.setLayoutResolved(ip, @intCast(big_align.forward(offset)), big_align); |
| 34988 | const size = std.math.cast(u32, big_align.forward(offset)) orelse { |
| 34989 | const msg = try sema.errMsg( |
| 34990 | ty.srcLoc(zcu), |
| 34991 | "struct layout requires size {d}, this compiler implementation supports up to {d}", |
| 34992 | .{ big_align.forward(offset), std.math.maxInt(u32) }, |
| 34993 | ); |
| 34994 | return sema.failWithOwnedErrorMsg(null, msg); |
| 34995 | }; |
| 34996 | struct_type.setLayoutResolved(ip, size, big_align); |
| 34989 | 34997 | _ = try ty.comptimeOnlySema(pt); |
| 34990 | 34998 | } |
| 34991 | 34999 | |
| ... | ... | @@ -35260,7 +35268,15 @@ pub fn resolveUnionLayout(sema: *Sema, ty: Type) SemaError!void { |
| 35260 | 35268 | break :layout .{ size, max_align.max(tag_align), padding }; |
| 35261 | 35269 | } else .{ max_align.forward(max_size), max_align, 0 }; |
| 35262 | 35270 | |
| 35263 | | union_type.setHaveLayout(ip, @intCast(size), padding, alignment); |
| 35271 | const casted_size = std.math.cast(u32, size) orelse { |
| 35272 | const msg = try sema.errMsg( |
| 35273 | ty.srcLoc(pt.zcu), |
| 35274 | "union layout requires size {d}, this compiler implementation supports up to {d}", |
| 35275 | .{ size, std.math.maxInt(u32) }, |
| 35276 | ); |
| 35277 | return sema.failWithOwnedErrorMsg(null, msg); |
| 35278 | }; |
| 35279 | union_type.setHaveLayout(ip, casted_size, padding, alignment); |
| 35264 | 35280 | |
| 35265 | 35281 | if (union_type.flagsUnordered(ip).assumed_runtime_bits and !(try ty.hasRuntimeBitsSema(pt))) { |
| 35266 | 35282 | const msg = try sema.errMsg( |