1 /* { dg-do run } */
2 /* { dg-options "-O2" } */
3
4 __attribute__((noipa)) int
5 foo (float x, float y)
6 {
7 _Bool cmp1 = x <= y;
8 _Bool cmp2 = x >= y;
9 if (cmp1 && cmp2)
10 return 1;
11 else if (!cmp1 && !cmp2)
12 return -1;
13 return 0;
14 }
15
16 int
17 main ()
18 {
19 if (foo (0.0f, __builtin_nanf ("")) != -1)
20 __builtin_abort ();
21 if (foo (__builtin_nanf (""), -42.0f) != -1)
22 __builtin_abort ();
23 if (foo (0.0f, -0.0f) != 1)
24 __builtin_abort ();
25 if (foo (42.0f, 42.0f) != 1)
26 __builtin_abort ();
27 if (foo (42.0f, -0.0f) != 0)
28 __builtin_abort ();
29 if (foo (0.0f, -42.0f) != 0)
30 __builtin_abort ();
31 return 0;
32 }
33