Commit 4ecc384f99

Cody Tapscott <topolarity@tapscott.me>
2022-10-24 08:17:23
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 parent c96f858
Changed files (1)
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,
                     },
                 },