PATCH: New test for breakage from real.c rewrite on i386-unknown-freebsd

Richard Henderson rth@redhat.com
Wed Sep 18 22:03:00 GMT 2002


On Wed, Sep 18, 2002 at 11:35:16PM -0500, Loren James Rittle wrote:
> Before recent real change:
> 
> (gdb) print epsilon
> $1 = 2.2204460492503130808472633361816406e-16
> (gdb) print/x (long double)1
> $2 = 0x082a3fff8000000000000000
> (gdb) print/x (1+epsilon)
> $3 = 0x082a3fff8000000000000800
> (gdb) print extrema_max
> $4 = 1.7976931348623157081452742373170436e+308
> (gdb) print/x extrema_max
> $5 = 0x000043fefffffffffffff800

These values are only correct for 64-bit double, not 80-bit long double.
The compiler is completely unprepared for you to do

#define __glibcpp_long_double_bits __glibcpp_double_bits

without doing

#define LONG_DOUBLE_TYPE_SIZE 64

I.e. you've got a mismatch here in your definition of long double.
Address that (one way or the other) and things will work.


r~



More information about the Libstdc++ mailing list