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:
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,
},
},