Merge from mainline
[official-gcc.git] / gcc / testsuite / gcc.dg / dfp / union-init.c
blobfede76ba3289cf03e047f16b4c7a4a9c350adaf6
1 /* { dg-options "-std=gnu99" } */
3 /* Cast to union is a GNU C extension. */
5 extern void abort (void);
7 union u
9 _Decimal128 d128;
10 double d;
13 union n
15 double d;
16 _Decimal64 d64;
19 int main ()
21 static union u u1 = { 0.0dl };
22 static union u u2 = { 4.2dl };
23 static union u u4 = { 0.0 };
25 static union n n1 = { 2.2dd };
26 static union n n2 = { 3.25 };
28 _Decimal128 d128;
29 _Decimal64 d64;
30 double d;
32 if (u1.d128 != 0.0dl)
33 abort ();
35 if (u2.d128 != 4.2dl)
36 abort ();
38 /* cast decimal floating point to union type. */
39 d128 = 1.23dl;
40 d64 = 4.56dd;
41 d = 3.25;
43 u4 = (union u) d128;
44 if (u4.d128 != 1.23dl)
45 abort ();
47 u4 = (union u) d;
48 if (u4.d != 3.25)
49 abort ();
51 n1 = (union n) d64;
52 if (n1.d64 != 4.56dd)
53 abort ();
55 n1 = (union n)d;
56 if (n1.d != 3.25)
57 abort ();
59 return 0;