Merge from mainline
[official-gcc.git] / gcc / testsuite / gcc.dg / dfp / convert-int-saturate.c
blob9aeb1d70c6e054d11177df8130227f76f3cf8c2a
1 /* { dg-options "-std=gnu99" } */
3 /* N1150 5.1 Conversion between decimal floating integer.
4 C99 6.3.1.4(1a) New.
5 Test integer saturation. */
7 #include <decfloat.h>
8 #include <limits.h>
10 extern void abort (void);
12 volatile _Decimal32 d32;
13 volatile _Decimal64 d64;
14 volatile _Decimal128 d128;
16 volatile signed int si;
17 volatile unsigned int usi;
18 volatile unsigned long long udi;
20 int
21 main ()
24 /* Unsigned. */
25 usi = DEC32_MAX; /* { dg-warning "overflow in implicit constant conversion" } */
26 if (usi != UINT_MAX)
27 abort ();
29 usi = DEC64_MAX; /* { dg-warning "overflow in implicit constant conversion" } */
30 if (usi != UINT_MAX)
31 abort ();
33 usi = DEC128_MAX; /* { dg-warning "overflow in implicit constant conversion" } */
34 if (usi != UINT_MAX)
35 abort ();
37 /* Signed. */
38 si = DEC32_MAX; /* { dg-warning "overflow in implicit constant conversion" } */
39 if (si != INT_MAX)
40 abort ();
42 si = DEC64_MAX; /* { dg-warning "overflow in implicit constant conversion" } */
43 if (si != INT_MAX)
44 abort ();
46 si = DEC128_MAX; /* { dg-warning "overflow in implicit constant conversion" } */
47 if (si != INT_MAX)
48 abort ();
50 si = - DEC32_MAX; /* { dg-warning "overflow in implicit constant conversion" } */
51 if (si != INT_MIN)
52 abort ();
54 si = - DEC64_MAX; /* { dg-warning "overflow in implicit constant conversion" } */
55 if (si != INT_MIN)
56 abort ();
58 si = - DEC128_MAX; /* { dg-warning "overflow in implicit constant conversion" } */
59 if (si != INT_MIN)
60 abort ();
62 return 0;