aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.c-torture/compile/pr48641.c
blob: 605d481e257a310e81b3973f4a6ab0cc04b8bbc9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
/* { dg-options "-O -fno-tree-ccp -fno-tree-copy-prop" } */
#define CSF __builtin_copysignf
#define CSD __builtin_copysign
#define CSL __builtin_copysignl
#define MODFF __builtin_modff
#define MODFD __builtin_modf
#define MODFL __builtin_modfl

extern void link_error (void);

void
foo (void)
{
  float iptrf;
  double iptr;
  long double iptrl;
  long long iptrll;
  if ((CSF (1.0F, MODFF (0x1p10F + 0.5f, &iptrf)) != CSF (1.0F, 0.5f))
      || (CSF (1.0F, iptrf) != 0x1p10f))
    link_error ();
  if (MODFD (0x1p10F + 0.5, &iptr) != 0.5
      || (CSD (1.0, MODFD (0x1p10F + 0.5, &iptr)) != CSD (1.0, 0.5))
      || (CSD (1.0, iptr) != CSD (1.0, 0x1p10)))
    link_error ();
  if (MODFL (0x1p10F + 0.5l, &iptrl) != 0.5l
      || (CSL (1.0L, MODFL (0x1p10F + 0.5l, &iptrl)) != CSL (1.0L, 0.5l))
      || (CSL (1.0L, iptrl) != CSL (1.0L, 0x1p10l)))
    link_error ();
  if ((CSF (1.0F, (MODFF (0x1p10F + 0x1p-10f, &iptrf)))
       != CSF (1.0F, 0x1p-10f))
      || (CSF (1.0F, iptrf) != CSF (1.0F, 0x1p10f)))
    link_error ();
  if (MODFD (0x1p10F + 0x1p-10, &iptr) != 0x1p-10
      || (CSD (1.0, (MODFD (0x1p10F + 0x1p-10, &iptr)))
	  != CSD (1.0, 0x1p-10)) || (CSD (1.0, iptr) != CSD (1.0, 0x1p10)))
    link_error ();
  if (MODFL (0x1p10F + 0x1p-10l, &iptrl) != 0x1p-10l
      || (CSL (1.0L, (MODFL (0x1p10F + 0x1p-10l, &iptrl)))
	  != CSL (1.0L, 0x1p-10l))
      || (CSL (1.0L, iptrl) != CSL (1.0L, 0x1p10l)))
    link_error ();
  if ((CSF (1.0F, (MODFF (12345678L / 17.0f, &iptrf)))
       != CSF (1.0F, (-726216L + 12345678L / 17.0f)))
      || (CSF (1.0F, iptrf) != CSF (1.0F, 726216.0f)))
    link_error ();
  if (MODFD (12345678L / 17.0, &iptr) != -726216L + 12345678L / 17.0
      || (CSD (1.0, (MODFD (12345678L / 17.0, &iptr)))
	  != CSD (1.0, (-726216L + 12345678L / 17.0)))
      || (CSD (1.0, iptr) != CSD (1.0, 726216.0)))
    link_error ();
  if ((CSL (1.0L, (MODFL (12345678L / 17.0l, &iptrl)))
       != CSL (1.0L, (-726216L + 12345678L / 17.0l)))
      || (CSL (1.0L, iptrl) != CSL (1.0L, 726216.0l)))
    link_error ();
  if (MODFF (555.555f, &iptrf) != -555 + 555.555f
      || (CSF (1.0F, iptrf) != CSF (1.0F, 555.0f)))
    link_error ();
  if (MODFD (555.555, &iptr) != -555 + 555.555
      || (CSD (1.0, (MODFD (555.555, &iptr))) != CSD (1.0, (-555 + 555.555)))
      || (CSD (1.0, iptr) != CSD (1.0, 555.0)))
    link_error ();
  if (MODFL (555.555l, &iptrl) != -555 + 555.555l
      || (CSL (1.0L, (MODFL (555.555l, &iptrl)))
	  != CSL (1.0L, (-555 + 555.555l)))
      || (CSL (1.0L, iptrl) != CSL (1.0L, 555.0l)))
    link_error ();
  if (MODFF (5000 / 11.0f, &iptrf) != -454 + 5000 / 11.0f
      || (CSF (1.0F, (MODFF (5000 / 11.0f, &iptrf)))
	  != CSF (1.0F, (-454 + 5000 / 11.0f)))
      || (CSF (1.0F, iptrf) != CSF (1.0F, 454.0f)))
    link_error ();
  if (MODFD (5000 / 11.0, &iptr) != -454 + 5000 / 11.0
      || (CSD (1.0, (MODFD (5000 / 11.0, &iptr)))
	  != CSD (1.0, (-454 + 5000 / 11.0)))
      || (CSD (1.0, iptr) != CSD (1.0, 454.0)))
    link_error ();
  if ((CSL (1.0L, (MODFL (5000 / 11.0l, &iptrl)))
       != CSL (1.0L, (-454 + 5000 / 11.0l)))
      || (CSL (1.0L, iptrl) != CSL (1.0L, 454.0l)))
    link_error ();
  if ((CSF (1.0F, (MODFF (1000 / 7.0f, &iptrf)))
       != CSF (1.0F, (-142 + 1000 / 7.0f)))
      || (CSF (1.0F, iptrf) != CSF (1.0F, 142.0f)))
    link_error ();
  if ((CSD (1.0, (MODFD (1000 / 7.0, &iptr)))
       != CSD (1.0, (-142 + 1000 / 7.0)))
      || (CSD (1.0, iptr) != CSD (1.0, 142.0)))
    link_error ();
  if ((CSL (1.0L, (MODFL (1000 / 7.0l, &iptrl)))
       != CSL (1.0L, (-142 + 1000 / 7.0l)))
      || (CSL (1.0L, iptrl) != CSL (1.0L, 142.0l)))
    link_error ();
  if (MODFF (123 / 7.0f, &iptrf) != -17 + 123 / 7.0f
      || (CSF (1.0F, iptrf) != CSF (1.0F, 17.0f)))
    link_error ();
  if (MODFD (123 / 7.0, &iptr) != -17 + 123 / 7.0
      || (CSD (1.0, iptr) != CSD (1.0, 17.0)))
    link_error ();
  if ((CSL (1.0L, (MODFL (123 / 7.0l, &iptrl)))
       != CSL (1.0L, (-17 + 123 / 7.0l)))
      || (CSL (1.0L, iptrl) != CSL (1.0L, 17.0l)))
    link_error ();
  if ((CSF (1.0F, (MODFF (117 / 7.0f, &iptrf)))
       != CSF (1.0F, (-16 + 117 / 7.0f)))
      || (CSF (1.0F, iptrf) != CSF (1.0F, 16.0f)))
    link_error ();
  if ((CSD (1.0, (MODFD (117 / 7.0, &iptr))) != CSD (1.0, (-16 + 117 / 7.0)))
      || (CSD (1.0, iptr) != CSD (1.0, 16.0)))
    link_error ();
  if (MODFL (117 / 7.0l, &iptrl) != -16 + 117 / 7.0l
      || (CSL (1.0L, iptrl) != CSL (1.0L, 16.0l)))
    link_error ();
  if (MODFF (5.5f, &iptrf) != 0.5f || (CSF (1.0F, iptrf) != CSF (1.0F, 5.0f)))
    link_error ();
  if (MODFD (5.5, &iptr) != 0.5 || (CSD (1.0, iptr) != CSD (1.0, 5.0)))
    link_error ();
  if (MODFL (5.5l, &iptrl) != 0.5l || (CSL (1.0L, iptrl) != CSL (1.0L, 5.0l)))
    link_error ();
  if ((CSF (1.0F, (MODFF (1.5f, &iptrf))) != CSF (1.0F, 0.5f))
      || (CSF (1.0F, iptrf) != 1.0f))
    link_error ();
  if ((CSD (1.0, (MODFD (1.5, &iptr))) != CSD (1.0, 0.5))
      || (CSD (1.0, iptr) != 1.0))
    link_error ();
  if (MODFL (1.5l, &iptrl) != iptrl != 1.0l || (CSL (1.0L, iptrl) != 1.0l))
    link_error ();
  if (MODFF (4 / 3.0f, &iptrf) != -1 + 4 / 3.0f
      || (CSF (1.0F, (MODFF (4 / 3.0f, &iptrf)))
	  != CSF (1.0F, (-1 + 4 / 3.0f))) || (CSF (1.0F, iptrf) != (1.0F)))
    link_error ();
  if (MODFD (4 / 3.0, &iptr) != -1 + 4 / 3.0 || (CSD (1.0, iptr) != 1.0))
    link_error ();
  if (MODFL (4 / 3.0l, &iptrl) != iptrl != 1.0l
      || (CSL (1.0L, iptrl) != 1.0l))
    link_error ();
  if ((((MODFF (1.0f, &iptrf)))) || (CSF (1.0F, iptrf) != 1.0f))
    link_error ();
  if ((((MODFD (1.0, &iptr))) != 0.0) || (CSD (1.0, iptr) != 1.0))
    link_error ();
  if ((((MODFL (1.0l, &iptrl))) != 0.0l) || (CSL (1.0L, iptrl) != 1.0l))
    link_error ();
  if (MODFF (0.5f, &iptrf) != 0.5f || (CSF (1.0F, iptrf) != CSF (1.0F, 0.0f)))
    link_error ();
  if (MODFD (0.5, &iptr) != 0.5 || (CSD (1.0, iptr) != CSD (1.0, 0.0)))
    link_error ();
  if ((CSL (1.0L, (MODFL (0.5l, &iptrl))) != CSL (1.0L, 0.5l))
      || (CSL (1.0L, iptrl) != CSL (1.0L, 0.0l)))
    link_error ();
  if (MODFF (4 / 9.0f, &iptrf) != 4 / 9.0f
      != (CSF (1.0F, (MODFF (4 / 9.0f, &iptrf))) != CSF (1.0F, (4 / 9.0f)))
      || (CSF (1.0F, iptrf) != CSF (1.0F, 0.0f)))
    link_error ();
  if (MODFD (4 / 9.0, &iptr) != 4 / 9.0
      || (CSD (1.0, iptr) != CSD (1.0, 0.0)))
    link_error ();
  if (MODFL (4 / 9.0l, &iptrl) != 4 / 9.0l
      || (CSL (1.0L, iptrl) != CSL (1.0L, 0.0l)))
    link_error ();
  if (MODFF (1 / 3.0f, &iptrf) != 1 / 3.0f
      || (CSF (1.0F, iptrf) != CSF (1.0F, 0.0f)))
    link_error ();
  if (MODFD (1 / 3.0, &iptr) != 1 / 3.0
      || (CSD (1.0, iptr) != CSD (1.0, 0.0)))
    link_error ();
  if ((CSL (1.0L, (MODFL (1 / 3.0l, &iptrl))) != CSL (1.0L, (1 / 3.0l)))
      || (CSL (1.0L, iptrl) != CSL (1.0L, 0.0l)))
    link_error ();
  if ((CSF (1.0F, (MODFF (1 / 9.0f, &iptrf))) != CSF (1.0F, (1 / 9.0f)))
      || (CSF (1.0F, iptrf) != CSF (1.0F, 0.0f)))
    link_error ();
  if (MODFD (1 / 9.0, &iptr) != 1 / 9.0
      || (CSD (1.0, iptr) != CSD (1.0, 0.0)))
    link_error ();
  if ((CSL (1.0L, (MODFL (1 / 9.0l, &iptrl))) != CSL (1.0L, (1 / 9.0l)))
      || (CSL (1.0L, iptrl) != CSL (1.0L, 0.0l)))
    link_error ();
  if ((((MODFF (0.0f, &iptrf)))) || (CSF (1.0F, iptrf) != CSF (1.0F, 0.0f)))
    link_error ();
  if ((((MODFD (0.0, &iptr)))) || (CSD (1.0, iptr) != CSD (1.0, 0.0)))
    link_error ();
  if ((((MODFL (0.0l, &iptrl))) != 0.0l)
      || (CSL (1.0L, iptrl) != CSL (1.0L, 0.0l)))
    link_error ();
  if ((((MODFF (-0.0f, &iptrf)))) || (CSF (1.0F, iptrf) != CSF (1.0F, -0.0f)))
    link_error ();
  if ((((MODFD (-0.0, &iptr)))) || (CSD (1.0, iptr) != CSD (1.0, -0.0)))
    link_error ();
  if ((CSL (1.0L, (MODFL (-0.0l, &iptrl))) != CSL (1.0L, -0.0l))
      || (CSL (1.0L, iptrl) != CSL (1.0L, -0.0l)))
    link_error ();
  if (MODFF (-1 / 9.0f, &iptrf) != -1 / 9.0f
      || (CSF (1.0F, (MODFF (-1 / 9.0f, &iptrf))) != CSF (1.0F, (-1 / 9.0f)))
      || (CSF (1.0F, iptrf) != CSF (1.0F, -0.0f)))
    link_error ();
  if (MODFD (-1 / 9.0, &iptr) != -1 / 9.0
      || (CSD (1.0, iptr) != CSD (1.0, -0.0)))
    link_error ();
  if ((CSL (1.0L, (MODFL (-1 / 9.0l, &iptrl))) != CSL (1.0L, (-1 / 9.0l)))
      || (CSL (1.0L, iptrl) != CSL (1.0L, -0.0l)))
    link_error ();
  if ((CSF (1.0F, (MODFF (-1 / 3.0f, &iptrf))) != CSF (1.0F, (-1 / 3.0f)))
      || (CSF (1.0F, iptrf) != CSF (1.0F, -0.0f)))
    link_error ();
  if (MODFD (-1 / 3.0, &iptr) != -1 / 3.0
      || (CSD (1.0, iptr) != CSD (1.0, -0.0)))
    link_error ();
  if ((CSL (1.0L, (MODFL (-1 / 3.0l, &iptrl))) != CSL (1.0L, (-1 / 3.0l)))
      || (CSL (1.0L, iptrl) != CSL (1.0L, -0.0l)))
    link_error ();
  if (MODFF (-4 / 9.0f, &iptrf) != -4 / 9.0f
      || (CSF (1.0F, (MODFF (-4 / 9.0f, &iptrf))) != CSF (1.0F, (-4 / 9.0f)))
      || (CSF (1.0F, iptrf) != CSF (1.0F, -0.0f)))
    link_error ();
  if (MODFD (-4 / 9.0, &iptr) != -4 / 9.0
      || (CSD (1.0, iptr) != CSD (1.0, -0.0)))
    link_error ();
  if (MODFL (-4 / 9.0l, &iptrl) != -4 / 9.0l
      || (CSL (1.0L, (MODFL (-4 / 9.0l, &iptrl))) != CSL (1.0L, (-4 / 9.0l)))
      || (CSL (1.0L, iptrl) != CSL (1.0L, -0.0l)))
    link_error ();
  if (MODFF (-0.5f, &iptrf) != -0.5f
      || (CSF (1.0F, iptrf) != CSF (1.0F, -0.0f)))
    link_error ();
  if (MODFD (-0.5, &iptr) != -0.5
      != (CSD (1.0, (MODFD (-0.5, &iptr))) != CSD (1.0, -0.5))
      || (CSD (1.0, iptr) != CSD (1.0, -0.0)))
    (MODFL (-0.5l, (long double *) &iptrll));
  if ((((MODFF (-1.0f, &iptrf)))) || (CSF (1.0F, iptrf) != -1.0f))
    link_error ();
  if ((((MODFD (-1.0, &iptr))) != -0.0) || (CSD (1.0, iptr) != -1.0))
    link_error ();
  if ((((MODFL (-1.0l, &iptrl)))) || (CSL (1.0L, iptrl) != -1.0l))
    link_error ();
  if ((CSF (1.0F, (MODFF (-4 / 3.0f, &iptrf))) != CSF (1.0F, (1 - 4 / 3.0f)))
      || (CSF (1.0F, iptrf) != -1.0f))
    link_error ();
  if (MODFD (-4 / 3.0, &iptr) != 1 - 4 / 3.0 || (CSD (1.0, iptr) != -1.0))
    link_error ();
  if (MODFL (-4 / 3.0l, &iptrl) != 1 - 4 / 3.0l
      || (CSL (1.0L, (MODFL (-4 / 3.0l, &iptrl)))
	  != CSL (1.0L, (1 - 4 / 3.0l))) || (CSL (1.0L, iptrl) != -1.0l))
    link_error ();
  if ((CSF (1.0F, (MODFF (-1.5f, &iptrf))) != CSF (1.0F, -0.5f))
      || (CSF (1.0F, iptrf) != -1.0f))
    link_error ();
  if ((CSD (1.0, (MODFD (-1.5, &iptr))) != CSD (1.0, -0.5))
      || (CSD (1.0, iptr) != -1.0))
    link_error ();
}