6f929a81fd6cd0de0093be57a50cbb6d1cfeee46
2 /* { dg-options "-O2 -funsafe-math-optimizations -fno-finite-math-only" } */
3 /* { dg-options "-mieee -O2 -funsafe-math-optimizations -fno-finite-math-only" { target alpha*-*-* } } */
5 extern void abort (void);
7 void __attribute__ ((__noinline__
))
8 foo_1 (float f
, double d
, long double ld
,
9 int res_unord
, int res_isnan
, int res_isinf
, int res_isfin
)
11 if (__builtin_isunordered (f
, 0) != res_unord
)
13 if (__builtin_isunordered (0, f
) != res_unord
)
15 if (__builtin_isunordered (d
, 0) != res_unord
)
17 if (__builtin_isunordered (0, d
) != res_unord
)
19 if (__builtin_isunordered (ld
, 0) != res_unord
)
21 if (__builtin_isunordered (0, ld
) != res_unord
)
24 if (__builtin_isnan (f
) != res_isnan
)
26 if (__builtin_isnan (d
) != res_isnan
)
28 if (__builtin_isnan (ld
) != res_isnan
)
30 if (__builtin_isnanf (f
) != res_isnan
)
32 if (__builtin_isnanl (ld
) != res_isnan
)
35 if (__builtin_isinf (f
) != res_isinf
)
37 if (__builtin_isinf (d
) != res_isinf
)
39 if (__builtin_isinf (ld
) != res_isinf
)
41 if (__builtin_isinff (f
) != res_isinf
)
43 if (__builtin_isinfl (ld
) != res_isinf
)
46 if (__builtin_isfinite (f
) != res_isfin
)
48 if (__builtin_isfinite (d
) != res_isfin
)
50 if (__builtin_isfinite (ld
) != res_isfin
)
53 if (__builtin_finitef (f
) != res_isfin
)
55 if (__builtin_finite (f
) != res_isfin
)
57 if (__builtin_finite (d
) != res_isfin
)
59 if (__builtin_finitel (d
) != res_isfin
)
61 if (__builtin_finitel (ld
) != res_isfin
)
65 void __attribute__ ((__noinline__
))
66 foo (float f
, double d
, long double ld
,
67 int res_unord
, int res_isnan
, int res_isinf
, int res_isfin
)
69 foo_1 (f
, d
, ld
, res_unord
, res_isnan
, res_isinf
, res_isfin
);
70 foo_1 (-f
, -d
, -ld
, res_unord
, res_isnan
, res_isinf
, res_isfin
);
79 f
= __builtin_nanf(""); d
= __builtin_nan(""); ld
= __builtin_nanl("");
80 foo(f
, d
, ld
, /*unord=*/ 1, /*isnan=*/ 1, /*isinf=*/ 0, /*isfin=*/ 0);
82 f
= __builtin_inff(); d
= __builtin_inf(); ld
= __builtin_infl();
83 foo(f
, d
, ld
, /*unord=*/ 0, /*isnan=*/ 0, /*isinf=*/ 1, /*isfin=*/ 0);
86 foo(f
, d
, ld
, /*unord=*/ 0, /*isnan=*/ 0, /*isinf=*/ 0, /*isfin=*/ 1);
88 f
= __FLT_MIN__
; d
= __DBL_MIN__
; ld
= __LDBL_MIN__
;
89 foo(f
, d
, ld
, /*unord=*/ 0, /*isnan=*/ 0, /*isinf=*/ 0, /*isfin=*/ 1);
91 f
= __FLT_MAX__
; d
= __DBL_MAX__
; ld
= __LDBL_MAX__
;
92 foo(f
, d
, ld
, /*unord=*/ 0, /*isnan=*/ 0, /*isinf=*/ 0, /*isfin=*/ 1);