zig

fork of https://codeberg.org/ziglang/zig
Log | Files | Refs | README | LICENSE

commit 4ecc384f99e5f4c5a320714484866fb48699245f (tree)
parent c96f85852ed2e1d5b2ecb43770a3c41d7f38f284
Author: Cody Tapscott <topolarity@tapscott.me>
Date:   Sun, 23 Oct 2022 23:17:23 -0700

Fix long double on x86_64-windows

The larger alignment on this platform means that long double reports
a sizeof 16 bytes, but it's underlying size is really just the 10
bytes of `f80`

C doesn't give us a way to see the "underlying" size of a type, so
this has to be caught by hand or by monitoring runtime memory. Luckily,
x86 and x86-64 are the only platforms that seem to use a non-power-of-two
type like this.

Diffstat:
Msrc/type.zig | 2+-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/type.zig b/src/type.zig @@ -6827,7 +6827,7 @@ pub const CType = enum { }, .longlong, .ulonglong, .double => return 64, .longdouble => switch (target.abi) { - .gnu, .gnuilp32, .cygnus => return 128, + .gnu, .gnuilp32, .cygnus => return 80, else => return 64, }, },