| ... | @@ -34985,7 +34985,15 @@ pub fn resolveStructLayout(sema: *Sema, ty: Type) SemaError!void { | ... | @@ -34985,7 +34985,15 @@ pub fn resolveStructLayout(sema: *Sema, ty: Type) SemaError!void { |
| 34985 | offsets[i] = @intCast(aligns[i].forward(offset)); | 34985 | offsets[i] = @intCast(aligns[i].forward(offset)); |
| 34986 | offset = offsets[i] + sizes[i]; | 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 | _ = try ty.comptimeOnlySema(pt); | 34997 | _ = try ty.comptimeOnlySema(pt); |
| 34990 | } | 34998 | } |
| 34991 | | 34999 | |
| ... | @@ -35260,7 +35268,15 @@ pub fn resolveUnionLayout(sema: *Sema, ty: Type) SemaError!void { | ... | @@ -35260,7 +35268,15 @@ pub fn resolveUnionLayout(sema: *Sema, ty: Type) SemaError!void { |
| 35260 | break :layout .{ size, max_align.max(tag_align), padding }; | 35268 | break :layout .{ size, max_align.max(tag_align), padding }; |
| 35261 | } else .{ max_align.forward(max_size), max_align, 0 }; | 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 | if (union_type.flagsUnordered(ip).assumed_runtime_bits and !(try ty.hasRuntimeBitsSema(pt))) { | 35281 | if (union_type.flagsUnordered(ip).assumed_runtime_bits and !(try ty.hasRuntimeBitsSema(pt))) { |
| 35266 | const msg = try sema.errMsg( | 35282 | const msg = try sema.errMsg( |