1 /* { dg-do run } */
2 /* { dg-add-options ieee } */
3 /* { dg-require-effective-target fenv_exceptions } */
4 /* { dg-skip-if "fenv" { powerpc-ibm-aix* } } */
5 
6 #include <fenv.h>
7 
8 int
9 __attribute__ ((noinline, noclone))
f1(float a,float b)10 f1 (float a, float b)
11 {
12   return __builtin_isless (a, b) || __builtin_isgreater (a, b);
13 }
14 
15 int
16 __attribute__ ((noinline, noclone))
f2(float a,float b)17 f2 (float a, float b)
18 {
19   return __builtin_islessgreater (a, b);
20 }
21 
22 int
23 __attribute__ ((noinline, noclone))
f3(float a,float b)24 f3 (float a, float b)
25 {
26   return a < b || a > b;
27 }
28 
29 int
main(void)30 main (void)
31 {
32   volatile int r;
33 
34   float nanf = __builtin_nanf ("");
35   float argf = 1.0f;
36 
37   feclearexcept (FE_INVALID);
38 
39   r = f1 (nanf, argf);
40   if (r != 0 || fetestexcept (FE_INVALID))
41     __builtin_abort ();
42 
43   r = f2 (nanf, argf);
44   if (r != 0 || fetestexcept (FE_INVALID))
45     __builtin_abort ();
46 
47   r = f3 (nanf, argf);
48   if (r != 0 || !fetestexcept (FE_INVALID))
49     __builtin_abort ();
50 
51   return 0;
52 }
53