isn't that some sort of IEEE-754 software floating point switch?
On 8/9/2016 3:46 AM, Martin Storsjö wrote:
> This fixes printf of floats/doubles with -D__USE_MINGW_ANSI_STDIO=1,
> on arm.
> ---
> Using __fpclassify instead of __fpclassifyl for the 64 bit long
> double case, as suggested by Kai.
> ---
> mingw-w64-crt/stdio/mingw_pformat.c | 25 ++++++++++++++++++++++++-
> 1 file changed, 24 insertions(+), 1 deletion(-)
>
> diff --git a/mingw-w64-crt/stdio/mingw_pformat.c
> b/mingw-w64-crt/stdio/mingw_pformat.c
> index d193519..0438112 100644
> --- a/mingw-w64-crt/stdio/mingw_pformat.c
> +++ b/mingw-w64-crt/stdio/mingw_pformat.c
> @@ -1111,9 +1111,32 @@ char *__pformat_cvt( int mode, __pformat_fpreg_t x,
> int nd, int *dp, int *sign )
> int k; unsigned int e = 0; char *ep;
> static FPI fpi = { 64, 1-16383-64+1, 32766-16383-64+1, FPI_Round_near, 0,
> 14 /* Int_max */ };
>
> + if( sizeof( double ) == sizeof( long double ) )
> + {
> + /* The caller has written into x.__pformat_fpreg_ldouble_t, which
> + * actually isn't laid out in the way the rest of the union expects it.
> + */
> + int exp = (x.__pformat_fpreg_mantissa >> 52) & 0x7ff;
> + unsigned long long mant = x.__pformat_fpreg_mantissa &
> 0x000fffffffffffffULL;
> + int integer = exp ? 1 : 0;
> + int signbit = x.__pformat_fpreg_mantissa >> 63;
> +
> + k = __fpclassify( x.__pformat_fpreg_double_t );
> +
> + if (exp == 0x7ff)
> + exp = 0x7fff;
> + else if (exp != 0)
> + exp = exp - 1023 + 16383;
> + x.__pformat_fpreg_mantissa = (mant << 11) | ((unsigned long long)integer
> << 63);
> + x.__pformat_fpreg_exponent = exp | (signbit << 15);
> + }
> + else
> + k = __fpclassifyl( x.__pformat_fpreg_ldouble_t );
> +
> +
> /* Classify the argument into an appropriate `__gdtoa()' category...
> */
> - if( (k = __fpclassifyl( x.__pformat_fpreg_ldouble_t )) & FP_NAN )
> + if( k & FP_NAN )
> /*
> * identifying infinities or not-a-number...
> */
------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are
consuming the most bandwidth. Provides multi-vendor support for NetFlow,
J-Flow, sFlow and other flows. Make informed decisions using capacity
planning reports. http://sdm.link/zohodev2dev
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public