mirror of
git://git.musl-libc.org/musl
synced 2025-03-04 18:57:38 +00:00
s390x: derive float_t from compiler or default to float
float_t should represent the type that is used to evaluate float expressions internally. On s390x, float_t is currently set to double. In contrast, the isa supports single-precision float operations and compilers by default evaluate float in single precision, which violates the C standard (sections 5.2.4.2.2 and 7.12 in C11/C17, to be precise). With -fexcess-precision=standard, gcc evaluates float in double precision, which aligns with the standard yet at the cost of added conversion instructions. gcc-11 will drop the special case to retrofit double precision behavior for -fexcess-precision=standard so that __FLT_EVAL_METHOD__ will be 0 on s390x in any scenario. To improve standards compliance and compatibility with future compiler direction, this patch changes the definition of float_t to be derived from the compiler's __FLT_EVAL_METHOD__.
This commit is contained in:
parent
821083ac7b
commit
738c4e945c
@ -9,7 +9,11 @@
|
|||||||
TYPEDEF int wchar_t;
|
TYPEDEF int wchar_t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__FLT_EVAL_METHOD__) && __FLT_EVAL_METHOD__ == 1
|
||||||
TYPEDEF double float_t;
|
TYPEDEF double float_t;
|
||||||
|
#else
|
||||||
|
TYPEDEF float float_t;
|
||||||
|
#endif
|
||||||
TYPEDEF double double_t;
|
TYPEDEF double double_t;
|
||||||
|
|
||||||
TYPEDEF struct { long long __ll; long double __ld; } max_align_t;
|
TYPEDEF struct { long long __ll; long double __ld; } max_align_t;
|
||||||
|
@ -1,4 +1,8 @@
|
|||||||
#define FLT_EVAL_METHOD 1
|
#ifdef __FLT_EVAL_METHOD__
|
||||||
|
#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
|
||||||
|
#else
|
||||||
|
#define FLT_EVAL_METHOD 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#define LDBL_TRUE_MIN 6.47517511943802511092443895822764655e-4966L
|
#define LDBL_TRUE_MIN 6.47517511943802511092443895822764655e-4966L
|
||||||
#define LDBL_MIN 3.36210314311209350626267781732175260e-4932L
|
#define LDBL_MIN 3.36210314311209350626267781732175260e-4932L
|
||||||
|
Loading…
Reference in New Issue
Block a user