Skip to content

Commit 6d0c921

Browse files
committed
cbe: revert movement of zig_float_from_repr to before float typedefs
1 parent 2b9478c commit 6d0c921

1 file changed

Lines changed: 15 additions & 12 deletions

File tree

lib/zig.h

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1764,25 +1764,15 @@ static inline zig_i128 zig_bit_reverse_i128(zig_i128 val, zig_u8 bits) {
17641764
#define __builtin_infl() zig_msvc_flt_infl
17651765
#endif
17661766

1767-
1768-
#if (zig_has_builtin(nan) && zig_has_builtin(nans) && zig_has_builtin(inf)) || defined(__GNUC__)
1767+
#define zig_has_float_builtins (zig_has_builtin(nan) && zig_has_builtin(nans) && zig_has_builtin(inf)) || defined(__GNUC__)
1768+
#if zig_has_float_builtins
17691769
#define zig_as_special_f16(sign, name, arg, repr) sign zig_as_f16(__builtin_##name, )(arg)
17701770
#define zig_as_special_f32(sign, name, arg, repr) sign zig_as_f32(__builtin_##name, )(arg)
17711771
#define zig_as_special_f64(sign, name, arg, repr) sign zig_as_f64(__builtin_##name, )(arg)
17721772
#define zig_as_special_f80(sign, name, arg, repr) sign zig_as_f80(__builtin_##name, )(arg)
17731773
#define zig_as_special_f128(sign, name, arg, repr) sign zig_as_f128(__builtin_##name, )(arg)
17741774
#define zig_as_special_c_longdouble(sign, name, arg, repr) sign zig_as_c_longdouble(__builtin_##name, )(arg)
17751775
#else
1776-
#define zig_float_from_repr(Type, ReprType) \
1777-
static inline zig_##Type zig_float_from_repr_##Type(zig_##ReprType repr) { \
1778-
return *((zig_##Type*)&repr); \
1779-
}
1780-
zig_float_from_repr(f16, u16)
1781-
zig_float_from_repr(f32, u32)
1782-
zig_float_from_repr(f64, u64)
1783-
zig_float_from_repr(f80, u128)
1784-
zig_float_from_repr(f128, u128)
1785-
zig_float_from_repr(c_longdouble, u128)
17861776
#define zig_as_special_f16(sign, name, arg, repr) zig_float_from_repr_f16(repr)
17871777
#define zig_as_special_f32(sign, name, arg, repr) zig_float_from_repr_f32(repr)
17881778
#define zig_as_special_f64(sign, name, arg, repr) zig_float_from_repr_f64(repr)
@@ -1984,6 +1974,19 @@ typedef zig_i128 zig_c_longdouble;
19841974
#define zig_as_special_constant_c_longdouble(sign, name, arg, repr) repr
19851975
#endif
19861976

1977+
#if !zig_has_float_builtins
1978+
#define zig_float_from_repr(Type, ReprType) \
1979+
static inline zig_##Type zig_float_from_repr_##Type(zig_##ReprType repr) { \
1980+
return *((zig_##Type*)&repr); \
1981+
}
1982+
zig_float_from_repr(f16, u16)
1983+
zig_float_from_repr(f32, u32)
1984+
zig_float_from_repr(f64, u64)
1985+
zig_float_from_repr(f80, u128)
1986+
zig_float_from_repr(f128, u128)
1987+
zig_float_from_repr(c_longdouble, u128)
1988+
#endif
1989+
19871990
#define zig_cast_f16 (zig_f16)
19881991
#define zig_cast_f32 (zig_f32)
19891992
#define zig_cast_f64 (zig_f64)

0 commit comments

Comments
 (0)