[PATCH 2/6] float128: Add conversion from float128 to mpn

Gabriel F. T. Gomes gftg@linux.vnet.ibm.com
Tue May 30 02:31:00 GMT 2017


On Fri, 26 May 2017 15:35:16 +0000
Joseph Myers <joseph@codesourcery.com> 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 
> <float128_private.h>, 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.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-Include-sys-param.h-in-stdlib-gmp-impl.h-instead-of-.patch
Type: text/x-patch
Size: 1216 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20170530/f4285a23/attachment.bin>


More information about the Libc-alpha mailing list