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