c: Do not use *_IS_IEC_60559 == 2
A late change for C2x (addressing comments from the second round of editorial review before the CD ballot, postdating the most recent public working draft) removed the value 2 for *_IS_IEC_60559 (a new <float.h> macro added in C2x). Adjust the implementation accordingly not to use this value. Bootstrapped with no regressions for x86_64-pc-linux-gnu. gcc/ * ginclude/float.h (FLT_IS_IEC_60559, DBL_IS_IEC_60559) (LDBL_IS_IEC_60559): Update comment. gcc/c-family/ * c-cppbuiltin.cc (builtin_define_float_constants): Do not use value 2 for *_IS_IEC_60559. gcc/testsuite/ * gcc.dg/c2x-float-10.c: Do not expect value 2 for *_IS_IEC_60559.
This commit is contained in:
parent
781f477a13
commit
e867f6b7e6
3 changed files with 7 additions and 12 deletions
|
@ -319,14 +319,10 @@ builtin_define_float_constants (const char *name_prefix,
|
|||
}
|
||||
|
||||
/* For C2x *_IS_IEC_60559. 0 means the type does not match an IEC
|
||||
60559 format, 1 that it matches a format but not operations and 2
|
||||
that it matches a format and operations (but may not conform to
|
||||
Annex F; we take this as meaning exceptions and rounding modes
|
||||
need not be supported). */
|
||||
60559 format, 1 that it matches a format but not necessarily
|
||||
operations. */
|
||||
sprintf (name, "__%s_IS_IEC_60559__", name_prefix);
|
||||
builtin_define_with_int_value (name,
|
||||
(fmt->ieee_bits == 0
|
||||
? 0 : (fmt->round_towards_zero ? 1 : 2)));
|
||||
builtin_define_with_int_value (name, fmt->ieee_bits != 0);
|
||||
}
|
||||
|
||||
/* Define __DECx__ constants for TYPE using NAME_PREFIX and SUFFIX. */
|
||||
|
|
|
@ -248,8 +248,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
|||
#define DBL_NORM_MAX __DBL_NORM_MAX__
|
||||
#define LDBL_NORM_MAX __LDBL_NORM_MAX__
|
||||
|
||||
/* Whether each type matches an IEC 60559 format (1 for format, 2 for
|
||||
format and operations). */
|
||||
/* Whether each type matches an IEC 60559 format. */
|
||||
#undef FLT_IS_IEC_60559
|
||||
#undef DBL_IS_IEC_60559
|
||||
#undef LDBL_IS_IEC_60559
|
||||
|
|
|
@ -21,13 +21,13 @@ _Static_assert (FLT_IS_IEC_60559 == 0);
|
|||
_Static_assert (DBL_IS_IEC_60559 == 0);
|
||||
_Static_assert (LDBL_IS_IEC_60559 == 0);
|
||||
#else
|
||||
_Static_assert (FLT_IS_IEC_60559 == 2);
|
||||
_Static_assert (DBL_IS_IEC_60559 == 2);
|
||||
_Static_assert (FLT_IS_IEC_60559 == 1);
|
||||
_Static_assert (DBL_IS_IEC_60559 == 1);
|
||||
#if LDBL_MANT_DIG == 106 || LDBL_MIN_EXP == -16382
|
||||
/* IBM long double and m68k extended format do not meet the definition
|
||||
of an IEC 60559 interchange or extended format. */
|
||||
_Static_assert (LDBL_IS_IEC_60559 == 0);
|
||||
#else
|
||||
_Static_assert (LDBL_IS_IEC_60559 == 2);
|
||||
_Static_assert (LDBL_IS_IEC_60559 == 1);
|
||||
#endif
|
||||
#endif
|
||||
|
|
Loading…
Add table
Reference in a new issue