This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: RFA: don't try to compare IEEE NaN's


Approved.

Jim Blandy wrote:
> 
> 2001-06-05  Jim Blandy  <jimb@redhat.com>
> 
>         * gdb.base/return2.exp (main): Use values to test float and double
>         returns that are not NaN's, to avoid being confused by IEEE
>         comparison rules.
> 
> Index: gdb/testsuite/gdb.base/return2.c
> ===================================================================
> RCS file: /cvs/cvsfiles/devo/gdb/testsuite/gdb.base/return2.c,v
> retrieving revision 1.2
> diff -c -r1.2 return2.c
> *** gdb/testsuite/gdb.base/return2.c    2000/12/20 14:34:27     1.2
> --- gdb/testsuite/gdb.base/return2.c    2001/06/06 03:39:25
> ***************
> *** 84,91 ****
>     int_resultval       = int_func ();          /* short_checkpoint */
>     long_resultval      = long_func ();         /* int_checkpoint */
>     long_long_resultval = long_long_func ();    /* long_checkpoint */
> !   float_resultval     = float_func ();                /* long_long_checkpoint */
> !   double_resultval    = double_func ();               /* float_checkpoint */
>     main_test = 1;                              /* double_checkpoint */
>     return 0;
>   }
> --- 84,110 ----
>     int_resultval       = int_func ();          /* short_checkpoint */
>     long_resultval      = long_func ();         /* int_checkpoint */
>     long_long_resultval = long_long_func ();    /* long_checkpoint */
> !
> !   /* On machines using IEEE floating point, the test pattern of all
> !      1-bits established above turns out to be a floating-point NaN
> !      ("Not a Number").  According to the IEEE rules, NaN's aren't even
> !      equal to themselves.  This can lead to stupid conversations with
> !      GDB like:
> !
> !        (gdb) p testval.float_testval == testval.float_testval
> !        $7 = 0
> !        (gdb)
> !
> !      This is the correct answer, but it's not the sort of thing
> !      return2.exp wants to see.  So to make things work the way they
> !      ought, we'll set aside the `union' cleverness and initialize the
> !      test values explicitly here.  These values have interesting bits
> !      throughout the value, so we'll still detect truncated values.  */
> !
> !   testval.float_testval = 2.7182818284590452354;/* long_long_checkpoint */
> !   float_resultval     = float_func ();
> !   testval.double_testval = 3.14159265358979323846; /* float_checkpoint */
> !   double_resultval    = double_func ();
>     main_test = 1;                              /* double_checkpoint */
>     return 0;
>   }

-- 
Fernando Nasser
Red Hat Canada Ltd.                     E-Mail:  fnasser@redhat.com
2323 Yonge Street, Suite #300
Toronto, Ontario   M4P 2C9


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]