Message ID | 1478716859-3246-5-git-send-email-gftg@linux.vnet.ibm.com |
---|---|
State | New |
Headers | show |
On Wed, 9 Nov 2016, Gabriel F. T. Gomes wrote: > This will also implicitly enforce a minimum GCC 4.9. Given > the standard is a C11 derivative, it would seem reasonable > to assume a C11 compiler with _Generic support. This allows > for much simpler type classification macros which in theory > should be supported on any C11 compiler. I don't think that's appropriate. The aim should be to minimize the number of conditionals (on versions, supported types, etc.) in the individual headers with type-generic macros, at the expense of more complexity somewhere defining infrastructure for such macros. Also, __USE_ISOC11 relates purely to library facilities. It says nothing about availability of language support.
diff --git a/bits/libc-header-start.h b/bits/libc-header-start.h index ee6a876..251ff05 100644 --- a/bits/libc-header-start.h +++ b/bits/libc-header-start.h @@ -59,3 +59,18 @@ #else # define __GLIBC_USE_IEC_60559_FUNCS_EXT 0 #endif + +/* ISO/IEC TS 18661-3:2014 defines the + __STDC_WANT_IEC_60559_TYPES_EXT__ macro. + + Note, as a tradeoff for keeping the headers simple, this will + require C11 Generic support. Thus, GCC 4.9 is mandated when + requesting this support and using GCC. */ +#undef __GLIBC_USE_IEC_60559_TYPES_EXT +#if (defined __STDC_WANT_IEC_60559_TYPES_EXT__ || defined __USE_GNU) \ + && defined __USE_ISOC11 \ + && ((defined __GNUC__ && __GNUC_PREREQ (4, 9)) || !defined __GNUC__) +# define __GLIBC_USE_IEC_60559_TYPES_EXT 1 +#else +# define __GLIBC_USE_IEC_60559_TYPES_EXT 0 +#endif
From: "Paul E. Murphy" <murphyp@linux.vnet.ibm.com> This is defined by TS 18661-3 for supporting the _FloatN and _FloatNx types. This will also implicitly enforce a minimum GCC 4.9. Given the standard is a C11 derivative, it would seem reasonable to assume a C11 compiler with _Generic support. This allows for much simpler type classification macros which in theory should be supported on any C11 compiler. * bits/libc-header-start.h: (__GLIBC_USR_IEC_60559_TYPES_EXT): New macro. --- bits/libc-header-start.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+)