authorgravatar for topolarity@tapscott.meCody Tapscott <topolarity@tapscott.me> 2022-10-23 23:17:23-07:00
committergravatar for topolarity@tapscott.meCody Tapscott <topolarity@tapscott.me> 2022-10-23 23:18:50-07:00
log4ecc384f99e5f4c5a320714484866fb48699245f
tree3b520a0ef4fe06337a76bee353b70e9df51c46ab
parentc96f85852ed2e1d5b2ecb43770a3c41d7f38f284

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.

1 files changed, 1 insertions(+), 1 deletions(-)

src/type.zig+1-1
...@@ -6827,7 +6827,7 @@ pub const CType = enum {...@@ -6827,7 +6827,7 @@ pub const CType = enum {
6827 },6827 },
6828 .longlong, .ulonglong, .double => return 64,6828 .longlong, .ulonglong, .double => return 64,
6829 .longdouble => switch (target.abi) {6829 .longdouble => switch (target.abi) {
6830 .gnu, .gnuilp32, .cygnus => return 128,6830 .gnu, .gnuilp32, .cygnus => return 80,
6831 else => return 64,6831 else => return 64,
6832 },6832 },
6833 },6833 },