| ... | @@ -35540,7 +35540,15 @@ pub fn resolveStructLayout(sema: *Sema, ty: Type) SemaError!void { | ... | @@ -35540,7 +35540,15 @@ pub fn resolveStructLayout(sema: *Sema, ty: Type) SemaError!void { |
| 35540 | offsets[i] = @intCast(aligns[i].forward(offset)); | 35540 | offsets[i] = @intCast(aligns[i].forward(offset)); |
| 35541 | offset = offsets[i] + sizes[i]; | 35541 | offset = offsets[i] + sizes[i]; |
| 35542 | } | 35542 | } |
| 35543 | struct_type.setLayoutResolved(ip, @intCast(big_align.forward(offset)), big_align); | 35543 | const size = std.math.cast(u32, big_align.forward(offset)) orelse { |
| | 35544 | const msg = try sema.errMsg( |
| | 35545 | ty.srcLoc(zcu), |
| | 35546 | "struct layout requires size {d}, this compiler implementation supports up to {d}", |
| | 35547 | .{ big_align.forward(offset), std.math.maxInt(u32) }, |
| | 35548 | ); |
| | 35549 | return sema.failWithOwnedErrorMsg(null, msg); |
| | 35550 | }; |
| | 35551 | struct_type.setLayoutResolved(ip, size, big_align); |
| 35544 | _ = try ty.comptimeOnlySema(pt); | 35552 | _ = try ty.comptimeOnlySema(pt); |
| 35545 | } | 35553 | } |
| 35546 | | 35554 | |
| ... | @@ -35815,7 +35823,15 @@ pub fn resolveUnionLayout(sema: *Sema, ty: Type) SemaError!void { | ... | @@ -35815,7 +35823,15 @@ pub fn resolveUnionLayout(sema: *Sema, ty: Type) SemaError!void { |
| 35815 | break :layout .{ size, max_align.max(tag_align), padding }; | 35823 | break :layout .{ size, max_align.max(tag_align), padding }; |
| 35816 | } else .{ max_align.forward(max_size), max_align, 0 }; | 35824 | } else .{ max_align.forward(max_size), max_align, 0 }; |
| 35817 | | 35825 | |
| 35818 | union_type.setHaveLayout(ip, @intCast(size), padding, alignment); | 35826 | const casted_size = std.math.cast(u32, size) orelse { |
| | 35827 | const msg = try sema.errMsg( |
| | 35828 | ty.srcLoc(pt.zcu), |
| | 35829 | "union layout requires size {d}, this compiler implementation supports up to {d}", |
| | 35830 | .{ size, std.math.maxInt(u32) }, |
| | 35831 | ); |
| | 35832 | return sema.failWithOwnedErrorMsg(null, msg); |
| | 35833 | }; |
| | 35834 | union_type.setHaveLayout(ip, casted_size, padding, alignment); |
| 35819 | | 35835 | |
| 35820 | if (union_type.flagsUnordered(ip).assumed_runtime_bits and !(try ty.hasRuntimeBitsSema(pt))) { | 35836 | if (union_type.flagsUnordered(ip).assumed_runtime_bits and !(try ty.hasRuntimeBitsSema(pt))) { |
| 35821 | const msg = try sema.errMsg( | 35837 | const msg = try sema.errMsg( |