On 10/26/20 6:44 PM, Joseph Myers wrote: > C2x adds macros for NaNs and infinities to <float.h>, some of them > previously in <math.h> (and some still in <math.h> as well in C2x as > an obsolescent feature). Add these macros to GCC's <float.h> > implementation. > > This omits the macros for DFP signaling NaNs, leaving those to be > added in a separate patch which will also need to add corresponding > built-in functions (GCC doesn't currently have built-in functions for > DFP signaling NaNs, only quiet ones). However, it includes the > _FloatN / _FloatNx macros (conditional on > __STDC_WANT_IEC_60559_TYPES_EXT__) in the current draft version of the > integration of TS 18661-3 into C2x as an Annex. > > As GCC allows duplicate macro definitions with different expansions in > system headers, it should be OK if <math.h> defines INFINITY or NAN > with a slightly different expansion (e.g. different choice of whether > there is whitespace between tokens); tests are added including > <float.h> and <math.h> in either order. Because <float.h> uses #undef > on all macros before defining them, even with -Wsystem-headers there > could only ever be issues when <math.h> is included after <float.h>. > > Bootstrapped with no regressions on x86_64-pc-linux-gnu. OK to > commit? > > gcc/ > 2020-10-27 Joseph Myers <jos...@codesourcery.com> > > * ginclude/float.h (INFINITY, NAN, FLT_SNAN, DBL_SNAN, LDBL_SNAN) > (FLT16_SNAN, FLT32_SNAN, FLT64_SNAN, FLT128_SNAN, FLT32X_SNAN) > (FLT64X_SNAN, FLT128X_SNAN, DEC_INFINITY, DEC_NAN): New C2x > macros. > * doc/sourcebuild.texi (Effective-Target Keywords): Document inff. > > gcc/testsuite/ > 2020-10-27 Joseph Myers <jos...@codesourcery.com> > > * lib/target-supports.exp (check_effective_target_inff): New. > * gcc.dg/c11-float-4.c, gcc.dg/c11-float-5.c, > gcc.dg/c11-float-dfp-2.c, gcc.dg/c2x-float-2.c, > gcc.dg/c2x-float-3.c, gcc.dg/c2x-float-4.c, gcc.dg/c2x-float-5.c, > gcc.dg/c2x-float-6.c, gcc.dg/c2x-float-7.c, gcc.dg/c2x-float-8.c, > gcc.dg/c2x-float-9.c, gcc.dg/c2x-float-no-dfp-3.c, > gcc.dg/c2x-float-no-dfp-4.c, gcc.dg/dfp/c2x-float-dfp-4.c, > gcc.dg/dfp/c2x-float-dfp-5.c, gcc.dg/dfp/c2x-float-dfp-6.c, > gcc.dg/torture/float128-nan-floath.c, > gcc.dg/torture/float128x-nan-floath.c, > gcc.dg/torture/float16-nan-floath.c, > gcc.dg/torture/float32-nan-floath.c, > gcc.dg/torture/float32x-nan-floath.c, > gcc.dg/torture/float64-nan-floath.c, > gcc.dg/torture/float64x-nan-floath.c, > gcc.dg/torture/floatn-nan-floath.h: New tests. > > diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
OK Jeff