Eric Blake wrote:
> * tests/test-math.c (main): Test it.
This test fails on IRIX 6.5 with CC="cc -O". The reason is that it inlines
the 'd == d' test. Here is the machine code that the compiler generates:
.ent main
.globl main
main: # 0x0
.frame $sp, 0, $31
.BB1.main: # 0x0
jr $31 # [0]
addiu $2,$0,1 # [1]
.end main
I'm committing this fix:
2008-04-01 Bruno Haible <[EMAIL PROTECTED]>
Fix test to work on IRIX 6.5 with cc.
* tests/test-math.c (numeric_equal): New function.
(main): Use it.
*** tests/test-math.c.orig 2008-04-02 03:29:08.000000000 +0200
--- tests/test-math.c 2008-04-02 03:27:36.000000000 +0200
***************
*** 30,38 ****
static float n = NAN;
#endif
int
main ()
{
double d = NAN;
! return d == d;
}
--- 30,49 ----
static float n = NAN;
#endif
+ /* Compare two numbers with ==.
+ This is a separate function because IRIX 6.5 "cc -O" miscompiles an
+ 'x == x' test. */
+ static int
+ numeric_equal (double x, double y)
+ {
+ return x == y;
+ }
+
int
main ()
{
double d = NAN;
! if (numeric_equal (d, d))
! return 1;
! return 0;
}