This is the mail archive of the
gdb-patches@sources.redhat.com
mailing list for the GDB project.
Re: RFA: don't try to compare IEEE NaN's
Michael Meissner wrote:
>
> On Wed, Jun 06, 2001 at 09:15:58AM +0300, Eli Zaretskii wrote:
> > > From: Jim Blandy <jimb@zwingli.cygnus.com>
> > > Date: Tue, 5 Jun 2001 22:41:45 -0500 (EST)
> > >
> > > ! testval.float_testval = 2.7182818284590452354;/* long_long_checkpoint */
> > > ! float_resultval = float_func ();
> > > ! testval.double_testval = 3.14159265358979323846; /* float_checkpoint */
> > > ! double_resultval = double_func ();
> >
> > I think it is better to initialize the integral members of the union
> > with an explicit bit pattern, just not a pattern which gets
> > interpreted as a NaN of an Inf. With initialization such as above,
> > you risk losing due to subtleties of compile-time conversion of a
> > literal constant to a floating-point value. This is a GDB test suite,
> > so we are not interested in testing the compiler.
>
> Which means the test suite will break if you ever run it on a machine that
> doesn't have IEEE floating point, such as the VAX if anybody still builds gdb
> for that machine. There are also mixed endian machines, where the bytes are
> ordered one way, but the order of the words is different. In supporting
> embedded processors, we occasionally run into machines with weird floating
> point formats, or that use IEEE formats, but don't support infinities,
> denormals, or nans. Also, there are a number of embedded targets that only
> have single precision hardware floating point, and want sizeof(float) ==
> sizeof(double).
>
This is the point in favor of Jim's patch. It is more portable. The
compiler will convert the literal to whatever format is used in that
system.
I think Michael Meissner just gave a definitive reason for Jim's patch
to go in as is.
--
Fernando Nasser
Red Hat Canada Ltd. E-Mail: fnasser@redhat.com
2323 Yonge Street, Suite #300
Toronto, Ontario M4P 2C9