OSDN Git Service

* gcc.dg/dfp/convert-int.c: Remove dg-do compile, fix comment.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / dfp / convert-int.c
1 /* { dg-options "-std=gnu99 -O0" } */
2
3 /* N1150 5.1 Conversion between decimal floating types and integer.
4    C99 6.3.1.4(1a) New.  */
5
6 extern void abort (void);
7
8 _Decimal32 d32;
9 _Decimal64 d64;
10 _Decimal128 d128;
11 unsigned int ui;
12 unsigned long ul;
13 unsigned long long ull;
14 int si;
15 long sl;
16 long long sll;
17 _Bool b;
18
19 void
20 init_dfp_1 (void)
21 {
22   d32 = 456.789df;
23   d64 = 23.456789dd;
24   d128 = 1234.5678dl;
25 }
26 void
27 init_dfp_2 (void)
28 {
29   d32 = 1.23df;
30   d64 = -3.4dd;
31   d128 = 0.00003dl;
32 }
33
34 void
35 init_dfp_3 (void)
36 {
37   d32 = 0.0DF;
38   d64 = 0.0DD;
39   d128 = 0.0DL;
40 }
41
42 void
43 init_unsigned_int (void)
44 {
45   ui = 987U;
46   ul = 345678UL;
47   ull = 1234567ULL;
48 }
49
50 void
51 init_signed_int (void)
52 {
53   si = -987;
54   sl = -345678;
55   sll = -1234567;
56 }
57
58 int
59 main ()
60 {
61   /* C99 Section 6.7.2 Type specifiers.  Type _Bool is 
62      mentioned in this section.  Conversions between 
63      _Bool and DFP types.  */
64
65   /* Decimal float to unsigned integer.  */
66   init_dfp_1 ();
67
68   ui = d32;
69   if (ui != 456U)
70     abort ();
71   ul = d32;
72   if (ul != 456UL)
73     abort ();
74   ull = d32;
75   if (ull != 456ULL)
76     abort ();
77
78   ui = d64;
79   if (ui != 23U)
80     abort ();
81   ul = d64;
82   if (ul != 23UL)
83     abort ();
84   ull = d64;
85   if (ull != 23ULL)
86     abort ();
87
88   ui = d128;
89   if (ui != 1234U)
90     abort ();
91   ul = d128;
92   if (ul != 1234UL)
93     abort ();
94   ull = d128;
95   if (ull != 1234ULL)
96     abort ();
97
98   /* Decimal float to signed integer.  */
99
100   /* Decimal float to _Bool.  */
101   init_dfp_2 ();
102
103   b = d32;
104   if (!b)
105     abort ();
106   b = d64;
107   if (!b)
108     abort ();
109   b = d128;
110   if (!b)
111     abort ();
112
113   /* Unsigned integer to decimal float.  */
114   init_unsigned_int ();
115
116   d32 = ui;
117   if (d32 != 987.0df)
118     abort ();
119   d32 = ul;
120   if (d32 != 345678.0df)
121     abort ();
122   d32 = ull;
123   if (d32 != 1234567.df)
124     abort ();
125
126   d64 = ui;
127   if (d64 != 987.0dd)
128     abort ();
129   d64 = ul;
130   if (d64 != 345678.0dd)
131     abort ();
132   d64 = ull;
133   if (d64 != 1234567.dd)
134     abort ();
135
136   d128 = ui;
137   if (d128 != 987.0dl)
138     abort ();
139   d128 = ul;
140   if (d128 != 345678.0dl)
141     abort ();
142   d128 = ull;
143   if (d128 != 1234567.dl)
144     abort ();
145
146   /* Signed integer to decimal float.  */
147   init_signed_int ();
148
149   d32 = si;
150   if (d32 != -987.0df)
151     abort ();
152   d32 = sl;
153   if (d32 != -345678.0df)
154     abort ();
155   d32 = sll;
156   if (d32 != -1234567.df)
157     abort ();
158
159   d64 = si;
160   if (d64 != -987.0dd)
161     abort ();
162   d64 = sl;
163   if (d64 != -345678.0dd)
164     abort ();
165   d64 = sll;
166   if (d64 != -1234567.dd)
167     abort ();
168
169   d128 = si;
170   if (d128 != -987.0dl)
171     abort ();
172   d128 = sl;
173   if (d128 != -345678.0dl)
174     abort ();
175   d128 = sll;
176   if (d128 != -1234567.dl)
177     abort ();
178
179   /* _Bool to decimal float.  */
180   init_dfp_3 ();
181   
182   b = d32;
183   if (b)
184     abort ();
185   b = d64;
186   if (b)
187     abort ();
188   b = d128;
189   if (b)
190     abort ();
191
192   return 0;
193 }