tree-optimization/111233 - loop splitting miscompile
[official-gcc.git] / gcc / testsuite / gcc.dg / torture / builtin-iseqsig-1.c
blobc66431fff1caa647780402f5940085feae9edf20
1 /* { dg-do run { xfail powerpc*-*-* } } */
2 /* remove the xfail for powerpc when pr58684 is fixed */
3 /* { dg-add-options ieee } */
4 /* { dg-additional-options "-fsignaling-nans" } */
5 /* { dg-require-effective-target fenv_exceptions } */
7 #include <fenv.h>
9 void
10 ftrue (float x, float y)
12 if (!__builtin_iseqsig (x, y))
13 __builtin_abort ();
16 void
17 ffalse (float x, float y)
19 if (__builtin_iseqsig (x, y))
20 __builtin_abort ();
23 int
24 main ()
26 volatile float f1, f2;
28 f1 = 0.f; f2 = 0.f;
29 ftrue (f1, f2);
30 if (fetestexcept (FE_INVALID)) __builtin_abort ();
32 f1 = 0.f; f2 = -0.f;
33 ftrue (f1, f2);
34 if (fetestexcept (FE_INVALID)) __builtin_abort ();
36 f1 = 0.f; f2 = 1.f;
37 ffalse (f1, f2);
38 if (fetestexcept (FE_INVALID)) __builtin_abort ();
40 f1 = -0.f; f2 = 1.f;
41 ffalse (f1, f2);
42 if (fetestexcept (FE_INVALID)) __builtin_abort ();
44 f1 = 0.f; f2 = __builtin_inff();
45 ffalse (f1, f2);
46 if (fetestexcept (FE_INVALID)) __builtin_abort ();
48 f1 = -0.f; f2 = __builtin_inff();
49 ffalse (f1, f2);
50 if (fetestexcept (FE_INVALID)) __builtin_abort ();
52 f1 = 0.f; f2 = __builtin_nanf("");
53 ffalse (f1, f2);
54 if (!fetestexcept (FE_INVALID)) __builtin_abort ();
55 feclearexcept (FE_INVALID);
57 f1 = -0.f; f2 = __builtin_nanf("");
58 ffalse (f1, f2);
59 if (!fetestexcept (FE_INVALID)) __builtin_abort ();
60 feclearexcept (FE_INVALID);
62 f1 = 1.f; f2 = 1.f;
63 ftrue (f1, f2);
64 if (fetestexcept (FE_INVALID)) __builtin_abort ();
66 f1 = 1.f; f2 = 0.f;
67 ffalse (f1, f2);
68 if (fetestexcept (FE_INVALID)) __builtin_abort ();
70 f1 = 1.f; f2 = -0.f;
71 ffalse (f1, f2);
72 if (fetestexcept (FE_INVALID)) __builtin_abort ();
74 f1 = 1.f; f2 = __builtin_inff();
75 ffalse (f1, f2);
76 if (fetestexcept (FE_INVALID)) __builtin_abort ();
78 f1 = 1.f; f2 = __builtin_nanf("");
79 ffalse (f1, f2);
80 if (!fetestexcept (FE_INVALID)) __builtin_abort ();
81 feclearexcept (FE_INVALID);
83 f1 = __builtin_inff(); f2 = __builtin_inff();
84 ftrue (f1, f2);
85 if (fetestexcept (FE_INVALID)) __builtin_abort ();
87 f1 = __builtin_inff(); f2 = __builtin_nanf("");
88 ffalse (f1, f2);
89 if (!fetestexcept (FE_INVALID)) __builtin_abort ();
90 feclearexcept (FE_INVALID);
92 f1 = __builtin_nanf(""); f2 = __builtin_nanf("");
93 ffalse (f1, f2);
94 if (!fetestexcept (FE_INVALID)) __builtin_abort ();
95 feclearexcept (FE_INVALID);
97 f1 = __builtin_nansf(""); f2 = 1.f;
98 ffalse (f1, f2);
99 if (!fetestexcept (FE_INVALID)) __builtin_abort ();
100 feclearexcept (FE_INVALID);
102 f1 = 1.f; f2 = __builtin_nansf("");
103 ffalse (f1, f2);
104 if (!fetestexcept (FE_INVALID)) __builtin_abort ();
105 feclearexcept (FE_INVALID);
107 f1 = __builtin_nansf(""); f2 = __builtin_nansf("");
108 ffalse (f1, f2);
109 if (!fetestexcept (FE_INVALID)) __builtin_abort ();
110 feclearexcept (FE_INVALID);
112 return 0;