OSDN Git Service

PR debug/54694
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / pr55019.c
1 /* { dg-do run } */
2 /* { dg-options "-O1 -funroll-loops" } */
3 /* { dg-add-options ieee } */
4
5 extern void exit (int);
6 extern void abort (void);
7
8 void
9 compare (double a, double b)
10 {
11   do
12     {
13       double s1 = __builtin_copysign ((double) 1.0, a);
14       double s2 = __builtin_copysign ((double) 1.0, b);
15
16       if (s1 != s2)
17         abort ();
18
19       if ((__builtin_isnan (a) != 0) != (__builtin_isnan (b) != 0))
20         abort ();
21
22       if ((a != b) != (__builtin_isnan (a) != 0))
23         abort ();
24     } while (0);
25 }
26
27 int
28 main ()
29 {
30   double a = 0.0;
31   double b = 0.0;
32   _Complex double cr = __builtin_complex (a, b);
33   static _Complex double cs = __builtin_complex (0.0, 0.0);
34
35   compare (__real__ cr, 0.0);
36   compare (__imag__ cr, 0.0);
37   compare (__real__ cs, 0.0);
38   compare (__imag__ cs, 0.0);
39
40   exit (0);
41 }