On Fri, 26 May 2017 15:35:16 +0000 Joseph Myers wrote: > On Fri, 26 May 2017, Gabriel F. T. Gomes wrote: > > > > /* Macros for min/max. */ > > -#define MIN(a,b) (((a)<(b))?(a):(b)) > > -#define MAX(a,b) (((a)>(b))?(a):(b)) > > +#ifndef MIN > > +# define MIN(a,b) (((a)<(b))?(a):(b)) > > +#endif > > +#ifndef MAX > > +# define MAX(a,b) (((a)>(b))?(a):(b)) > > +#endif > > This seems to have nothing to do with the rest of the patch. > > If you have something that has its own conflicting definitions of MIN and > MAX that ends up including sys/param.h as well, and those definitions of > MIN and MAX are semantically the same as those in sys/param.h, make it > include sys/param.h directly instead of having its own definitions. The file sysdeps/ieee754/ldbl-128/ldbl2mpn.c includes stdlib/gmp-impl.h, which defines MAX and MIN. With the changes to ldbl2mpn.c, the inclusion of float128_private.h will indirectly include sys/param.h, redefining the macros. I attached a new patch which replaces the definition of MAX and MIN in stdlib/gmp-impl.h with an inclusion of sys/param.h. Is the attached patch OK for master? > > +#define __FLOAT128_OVERRIDE > > + > > +#include "../ldbl-128/ldbl2mpn.c" > > Is there a reason you need a sepcial __FLOAT128_OVERRIDE macro, instead of > the approach used by the other float128 files of including > , which defines all relevant macros (e.g. defining > __mpn_extract_long_double to __mpn_extract_float128, and with the > __mpn_extract_long_double definition using _Float128 as the type name and > letting math_ldbl.h redefine that back to long double as needed)? I could not use the same approach, because ldbl2mpn.c includes the header include/gmp.h, which declares both __mpn_extract_long_double and __mpn_extract_float128. I would end up declaring __mpn_extract_float128 twice.