aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorkcbanner <kcbanner@gmail.com>2023-01-21 02:22:40 -0500
committerkcbanner <kcbanner@gmail.com>2023-01-23 13:48:36 -0500
commit0d249e558a5b88cebad0efd4dd06a5b2ac349bcf (patch)
tree7c4e9761c14b9838f92df4d8ccc4ac1d089d8469 /lib
parenta7209e7d1215c025d814d981c83bc15a6ea4a117 (diff)
downloadzig-0d249e558a5b88cebad0efd4dd06a5b2ac349bcf.tar.gz
zig-0d249e558a5b88cebad0efd4dd06a5b2ac349bcf.zip
cbe: fixup handling of c_longdouble for msvc abi
Diffstat (limited to 'lib')
-rw-r--r--lib/zig.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/zig.h b/lib/zig.h
index 510487aff4..dff143e1a3 100644
--- a/lib/zig.h
+++ b/lib/zig.h
@@ -1871,6 +1871,7 @@ typedef zig_i32 zig_f32;
#define zig_bitSizeOf_f64 64
#define zig_libc_name_f64(name) name
#if _MSC_VER
+#define zig_bitSizeOf_c_longdouble 64
#define zig_as_special_constant_f64(sign, name, arg, repr) sign zig_as_f64(zig_msvc_flt_##name, )
#else
#define zig_as_special_constant_f64(sign, name, arg, repr) zig_as_special_f64(sign, name, arg, repr)
@@ -2000,12 +2001,18 @@ typedef zig_i128 zig_c_longdouble;
static inline zig_##Type zig_float_from_repr_##Type(zig_##ReprType repr) { \
return *((zig_##Type*)&repr); \
}
+
zig_float_from_repr(f16, u16)
zig_float_from_repr(f32, u32)
zig_float_from_repr(f64, u64)
zig_float_from_repr(f80, u128)
zig_float_from_repr(f128, u128)
+#if zig_bitSizeOf_c_longdouble == 80
zig_float_from_repr(c_longdouble, u128)
+#else
+#define zig_expand_float_from_repr(Type, ReprType) zig_float_from_repr(Type, ReprType)
+zig_expand_float_from_repr(c_longdouble, zig_expand_concat(u, zig_bitSizeOf_c_longdouble))
+#endif
#endif
#define zig_cast_f16 (zig_f16)