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]

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



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;
  }


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