authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2023-11-12 14:31:23-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-11-12 17:30:24-07:00
log0dbaa8d3ae8f2892b60751d5a3c528ddb3b4fc3b
treeae8d38fd92729bbe39078db398b640c240c903d3
parentf45aac49033c1660be21301843e4aa950924899d

zig.h: workaround for gcc `f128` miscompilations


2 files changed, 24 insertions(+), 12 deletions(-)

lib/zig.h+12-6
......@@ -61,6 +61,12 @@ typedef char bool;
6161#define zig_gnuc
6262#endif
6363
64#if defined(zig_gnuc) && (defined(__i386__) || defined(__x86_64__))
65#define zig_f128_has_miscompilations 1
66#else
67#define zig_f128_has_miscompilations 0
68#endif
69
6470#if _MSC_VER
6571#define zig_const_arr
6672#define zig_callconv(c) __##c
......@@ -3155,22 +3161,22 @@ typedef zig_u128 zig_f80;
31553161#define zig_has_f128 1
31563162#define zig_libc_name_f128(name) name##q
31573163#define zig_init_special_f128(sign, name, arg, repr) zig_make_special_f128(sign, name, arg, repr)
3158#if FLT_MANT_DIG == 113
3164#if !zig_f128_has_miscompilations && FLT_MANT_DIG == 113
31593165typedef float zig_f128;
31603166#define zig_make_f128(fp, repr) fp##f
3161#elif DBL_MANT_DIG == 113
3167#elif !zig_f128_has_miscompilations && DBL_MANT_DIG == 113
31623168typedef double zig_f128;
31633169#define zig_make_f128(fp, repr) fp
3164#elif LDBL_MANT_DIG == 113
3170#elif !zig_f128_has_miscompilations && LDBL_MANT_DIG == 113
31653171typedef long double zig_f128;
31663172#define zig_make_f128(fp, repr) fp##l
3167#elif FLT128_MANT_DIG == 113
3173#elif !zig_f128_has_miscompilations && FLT128_MANT_DIG == 113
31683174typedef _Float128 zig_f128;
31693175#define zig_make_f128(fp, repr) fp##f128
3170#elif FLT64X_MANT_DIG == 113
3176#elif !zig_f128_has_miscompilations && FLT64X_MANT_DIG == 113
31713177typedef _Float64x zig_f128;
31723178#define zig_make_f128(fp, repr) fp##f64x
3173#elif defined(__SIZEOF_FLOAT128__)
3179#elif !zig_f128_has_miscompilations && defined(__SIZEOF_FLOAT128__)
31743180typedef __float128 zig_f128;
31753181#define zig_make_f128(fp, repr) fp##q
31763182#undef zig_make_special_f128
stage1/zig.h+12-6
......@@ -61,6 +61,12 @@ typedef char bool;
6161#define zig_gnuc
6262#endif
6363
64#if defined(zig_gnuc) && (defined(__i386__) || defined(__x86_64__))
65#define zig_f128_has_miscompilations 1
66#else
67#define zig_f128_has_miscompilations 0
68#endif
69
6470#if _MSC_VER
6571#define zig_const_arr
6672#define zig_callconv(c) __##c
......@@ -3155,22 +3161,22 @@ typedef zig_u128 zig_f80;
31553161#define zig_has_f128 1
31563162#define zig_libc_name_f128(name) name##q
31573163#define zig_init_special_f128(sign, name, arg, repr) zig_make_special_f128(sign, name, arg, repr)
3158#if FLT_MANT_DIG == 113
3164#if !zig_f128_has_miscompilations && FLT_MANT_DIG == 113
31593165typedef float zig_f128;
31603166#define zig_make_f128(fp, repr) fp##f
3161#elif DBL_MANT_DIG == 113
3167#elif !zig_f128_has_miscompilations && DBL_MANT_DIG == 113
31623168typedef double zig_f128;
31633169#define zig_make_f128(fp, repr) fp
3164#elif LDBL_MANT_DIG == 113
3170#elif !zig_f128_has_miscompilations && LDBL_MANT_DIG == 113
31653171typedef long double zig_f128;
31663172#define zig_make_f128(fp, repr) fp##l
3167#elif FLT128_MANT_DIG == 113
3173#elif !zig_f128_has_miscompilations && FLT128_MANT_DIG == 113
31683174typedef _Float128 zig_f128;
31693175#define zig_make_f128(fp, repr) fp##f128
3170#elif FLT64X_MANT_DIG == 113
3176#elif !zig_f128_has_miscompilations && FLT64X_MANT_DIG == 113
31713177typedef _Float64x zig_f128;
31723178#define zig_make_f128(fp, repr) fp##f64x
3173#elif defined(__SIZEOF_FLOAT128__)
3179#elif !zig_f128_has_miscompilations && defined(__SIZEOF_FLOAT128__)
31743180typedef __float128 zig_f128;
31753181#define zig_make_f128(fp, repr) fp##q
31763182#undef zig_make_special_f128