1 | // RUN: %clang_cc1 -triple x86_64-apple-darwin12 -S -o - -emit-llvm %s | FileCheck %s -check-prefix=CHECK-NOERRNO |
2 | // RUN: %clang_cc1 -triple x86_64-linux-gnu -S -o - -emit-llvm -fmath-errno %s | FileCheck %s -check-prefix=CHECK-ERRNO |
3 | // RUN: %clang_cc1 -triple x86_64-apple-darwin12 -S -o - -emit-llvm -x c++ %s | FileCheck %s -check-prefix=CHECK-NOERRNO |
4 | // RUN: %clang_cc1 -triple x86_64-linux-gnu -S -o - -emit-llvm -x c++ -fmath-errno %s | FileCheck %s -check-prefix=CHECK-ERRNO |
5 | |
6 | // Prototypes. |
7 | #ifdef __cplusplus |
8 | extern "C" { |
9 | #endif |
10 | double atan2(double, double); |
11 | float atan2f(float, float); |
12 | long double atan2l(long double, long double); |
13 | int abs(int); |
14 | long int labs(long int); |
15 | long long int llabs(long long int); |
16 | double copysign(double, double); |
17 | float copysignf(float, float); |
18 | long double copysignl(long double, long double); |
19 | double fabs(double); |
20 | float fabsf(float); |
21 | long double fabsl(long double); |
22 | double fmod(double, double); |
23 | float fmodf(float, float); |
24 | long double fmodl(long double, long double); |
25 | double frexp(double, int *); |
26 | float frexpf(float, int *); |
27 | long double frexpl(long double, int *); |
28 | double ldexp(double, int); |
29 | float ldexpf(float, int); |
30 | long double ldexpl(long double, int); |
31 | double modf(double, double *); |
32 | float modff(float, float *); |
33 | long double modfl(long double, long double *); |
34 | double nan(const char *); |
35 | float nanf(const char *); |
36 | long double nanl(const char *); |
37 | double pow(double, double); |
38 | float powf(float, float); |
39 | long double powl(long double, long double); |
40 | double acos(double); |
41 | float acosf(float); |
42 | long double acosl(long double); |
43 | double acosh(double); |
44 | float acoshf(float); |
45 | long double acoshl(long double); |
46 | double asin(double); |
47 | float asinf(float); |
48 | long double asinl(long double); |
49 | double asinh(double); |
50 | float asinhf(float); |
51 | long double asinhl(long double); |
52 | double atan(double); |
53 | float atanf(float); |
54 | long double atanl( long double); |
55 | double atanh(double); |
56 | float atanhf(float); |
57 | long double atanhl(long double); |
58 | double cbrt(double); |
59 | float cbrtf(float); |
60 | long double cbrtl(long double); |
61 | double ceil(double); |
62 | float ceilf(float); |
63 | long double ceill(long double); |
64 | double cos(double); |
65 | float cosf(float); |
66 | long double cosl(long double); |
67 | double cosh(double); |
68 | float coshf(float); |
69 | long double coshl(long double); |
70 | double erf(double); |
71 | float erff(float); |
72 | long double erfl(long double); |
73 | double erfc(double); |
74 | float erfcf(float); |
75 | long double erfcl(long double); |
76 | double exp(double); |
77 | float expf(float); |
78 | long double expl(long double); |
79 | double exp2(double); |
80 | float exp2f(float); |
81 | long double exp2l(long double); |
82 | double expm1(double); |
83 | float expm1f(float); |
84 | long double expm1l(long double); |
85 | double fdim(double, double); |
86 | float fdimf(float, float); |
87 | long double fdiml(long double, long double); |
88 | double floor(double); |
89 | float floorf(float); |
90 | long double floorl(long double); |
91 | double fma(double, double, double); |
92 | float fmaf(float, float, float); |
93 | long double fmal(long double, long double, long double); |
94 | double fmax(double, double); |
95 | float fmaxf(float, float); |
96 | long double fmaxl(long double, long double); |
97 | double fmin(double, double); |
98 | float fminf(float, float); |
99 | long double fminl(long double, long double); |
100 | double hypot(double, double); |
101 | float hypotf(float, float); |
102 | long double hypotl(long double, long double); |
103 | int ilogb(double); |
104 | int ilogbf(float); |
105 | int ilogbl(long double); |
106 | double lgamma(double); |
107 | float lgammaf(float); |
108 | long double lgammal(long double); |
109 | long long int llrint(double); |
110 | long long int llrintf(float); |
111 | long long int llrintl(long double); |
112 | long long int llround(double); |
113 | long long int llroundf(float); |
114 | long long int llroundl(long double); |
115 | double log(double); |
116 | float logf(float); |
117 | long double logl(long double); |
118 | double log10(double); |
119 | float log10f(float); |
120 | long double log10l(long double); |
121 | double log1p(double); |
122 | float log1pf(float); |
123 | long double log1pl(long double); |
124 | double log2(double); |
125 | float log2f(float); |
126 | long double log2l(long double); |
127 | double logb(double); |
128 | float logbf(float); |
129 | long double logbl(long double); |
130 | long int lrint(double); |
131 | long int lrintf(float); |
132 | long int lrintl(long double); |
133 | long int lround(double); |
134 | long int lroundf(float); |
135 | long int lroundl(long double); |
136 | double nearbyint(double); |
137 | float nearbyintf(float); |
138 | long double nearbyintl(long double); |
139 | double nextafter(double, double); |
140 | float nextafterf(float, float); |
141 | long double nextafterl(long double, long double); |
142 | double nexttoward(double, long double); |
143 | float nexttowardf(float, long double); |
144 | long double nexttowardl(long double, long double); |
145 | double remainder(double, double); |
146 | float remainderf(float, float); |
147 | long double remainderl(long double, long double); |
148 | double rint(double); |
149 | float rintf(float); |
150 | long double rintl(long double); |
151 | double round(double); |
152 | float roundf(float); |
153 | long double roundl(long double); |
154 | double scalbln(double, long int exp); |
155 | float scalblnf(float, long int exp); |
156 | long double scalblnl(long double, long int exp); |
157 | double scalbn(double, int exp); |
158 | float scalbnf(float, int exp); |
159 | long double scalbnl(long double, int exp); |
160 | double sin(double); |
161 | float sinf(float); |
162 | long double sinl(long double); |
163 | double sinh(double); |
164 | float sinhf(float); |
165 | long double sinhl(long double); |
166 | double sqrt(double); |
167 | float sqrtf(float); |
168 | long double sqrtl(long double); |
169 | double tan(double); |
170 | float tanf(float); |
171 | long double tanl(long double); |
172 | double tanh(double); |
173 | float tanhf(float); |
174 | long double tanhl(long double); |
175 | double tgamma(double); |
176 | float tgammaf(float); |
177 | long double tgammal(long double); |
178 | double trunc(double); |
179 | float truncf(float); |
180 | long double truncl(long double); |
181 | double cabs(double _Complex); |
182 | float cabsf(float _Complex); |
183 | long double cabsl(long double _Complex); |
184 | double _Complex cacos(double _Complex); |
185 | float _Complex cacosf(float _Complex); |
186 | long double _Complex cacosl(long double _Complex); |
187 | double _Complex cacosh(double _Complex); |
188 | float _Complex cacoshf(float _Complex); |
189 | long double _Complex cacoshl(long double _Complex); |
190 | double carg(double _Complex); |
191 | float cargf(float _Complex); |
192 | long double cargl(long double _Complex); |
193 | double _Complex casin(double _Complex); |
194 | float _Complex casinf(float _Complex); |
195 | long double _Complex casinl(long double _Complex); |
196 | double _Complex casinh(double _Complex); |
197 | float _Complex casinhf(float _Complex); |
198 | long double _Complex casinhl(long double _Complex); |
199 | double _Complex catan(double _Complex); |
200 | float _Complex catanf(float _Complex); |
201 | long double _Complex catanl(long double _Complex); |
202 | double _Complex catanh(double _Complex); |
203 | float _Complex catanhf(float _Complex); |
204 | long double _Complex catanhl(long double _Complex); |
205 | double _Complex ccos(double _Complex); |
206 | float _Complex ccosf(float _Complex); |
207 | long double _Complex ccosl(long double _Complex); |
208 | double _Complex ccosh(double _Complex); |
209 | float _Complex ccoshf(float _Complex); |
210 | long double _Complex ccoshl(long double _Complex); |
211 | double _Complex cexp(double _Complex); |
212 | float _Complex cexpf(float _Complex); |
213 | long double _Complex cexpl(long double _Complex); |
214 | double cimag(double _Complex); |
215 | float cimagf(float _Complex); |
216 | long double cimagl(long double _Complex); |
217 | double _Complex conj(double _Complex); |
218 | float _Complex conjf(float _Complex); |
219 | long double _Complex conjl(long double _Complex); |
220 | double _Complex clog(double _Complex); |
221 | float _Complex clogf(float _Complex); |
222 | long double _Complex clogl(long double _Complex); |
223 | double _Complex cproj(double _Complex); |
224 | float _Complex cprojf(float _Complex); |
225 | long double _Complex cprojl(long double _Complex); |
226 | double _Complex cpow(double _Complex, _Complex double); |
227 | float _Complex cpowf(float _Complex, _Complex float); |
228 | long double _Complex cpowl(long double _Complex, _Complex long double); |
229 | double creal(double _Complex); |
230 | float crealf(float _Complex); |
231 | long double creall(long double _Complex); |
232 | double _Complex csin(double _Complex); |
233 | float _Complex csinf(float _Complex); |
234 | long double _Complex csinl(long double _Complex); |
235 | double _Complex csinh(double _Complex); |
236 | float _Complex csinhf(float _Complex); |
237 | long double _Complex csinhl(long double _Complex); |
238 | double _Complex csqrt(double _Complex); |
239 | float _Complex csqrtf(float _Complex); |
240 | long double _Complex csqrtl(long double _Complex); |
241 | double _Complex ctan(double _Complex); |
242 | float _Complex ctanf(float _Complex); |
243 | long double _Complex ctanl(long double _Complex); |
244 | double _Complex ctanh(double _Complex); |
245 | float _Complex ctanhf(float _Complex); |
246 | long double _Complex ctanhl(long double _Complex); |
247 | |
248 | double __sinpi(double); |
249 | float __sinpif(float); |
250 | double __cospi(double); |
251 | float __cospif(float); |
252 | double __tanpi(double); |
253 | float __tanpif(float); |
254 | |
255 | double __exp10(double); |
256 | float __exp10f(float); |
257 | #ifdef __cplusplus |
258 | } |
259 | #endif |
260 | |
261 | // Force emission of the declare statements. |
262 | #define F(x) ((void*)x) |
263 | void *use[] = { |
264 | F(atan2), F(atan2f), F(atan2l), F(abs), F(labs), |
265 | F(llabs), F(copysign), F(copysignf), F(copysignl), F(fabs), |
266 | F(fabsf), F(fabsl), F(fmod), F(fmodf), F(fmodl), |
267 | F(frexp), F(frexpf), F(frexpl), F(ldexp), F(ldexpf), |
268 | F(ldexpl), F(modf), F(modff), F(modfl), F(nan), |
269 | F(nanf), F(nanl), F(pow), F(powf), F(powl), |
270 | F(acos), F(acosf), F(acosl), F(acosh), F(acoshf), |
271 | F(acoshl), F(asin), F(asinf), F(asinl), F(asinh), |
272 | F(asinhf), F(asinhl), F(atan), F(atanf), F(atanl), |
273 | F(atanh), F(atanhf), F(atanhl), F(cbrt), F(cbrtf), |
274 | F(cbrtl), F(ceil), F(ceilf), F(ceill), F(cos), |
275 | F(cosf), F(cosl), F(cosh), F(coshf), F(coshl), |
276 | F(erf), F(erff), F(erfl), F(erfc), F(erfcf), |
277 | F(erfcl), F(exp), F(expf), F(expl), F(exp2), |
278 | F(exp2f), F(exp2l), F(expm1), F(expm1f), F(expm1l), |
279 | F(fdim), F(fdimf), F(fdiml), F(floor), F(floorf), |
280 | F(floorl), F(fma), F(fmaf), F(fmal), F(fmax), |
281 | F(fmaxf), F(fmaxl), F(fmin), F(fminf), F(fminl), |
282 | F(hypot), F(hypotf), F(hypotl), F(ilogb), F(ilogbf), |
283 | F(ilogbl), F(lgamma), F(lgammaf), F(lgammal), F(llrint), |
284 | F(llrintf), F(llrintl), F(llround), F(llroundf), F(llroundl), |
285 | F(log), F(logf), F(logl), F(log10), F(log10f), |
286 | F(log10l), F(log1p), F(log1pf), F(log1pl), F(log2), |
287 | F(log2f), F(log2l), F(logb), F(logbf), F(logbl), |
288 | F(lrint), F(lrintf), F(lrintl), F(lround), F(lroundf), |
289 | F(lroundl), F(nearbyint), F(nearbyintf), F(nearbyintl), F(nextafter), |
290 | F(nextafterf), F(nextafterl), F(nexttoward), F(nexttowardf), F(nexttowardl), |
291 | F(remainder), F(remainderf), F(remainderl), F(rint), F(rintf), |
292 | F(rintl), F(round), F(roundf), F(roundl), F(scalbln), |
293 | F(scalblnf), F(scalblnl), F(scalbn), F(scalbnf), F(scalbnl), |
294 | F(sin), F(sinf), F(sinl), F(sinh), F(sinhf), |
295 | F(sinhl), F(sqrt), F(sqrtf), F(sqrtl), F(tan), |
296 | F(tanf), F(tanl), F(tanh), F(tanhf), F(tanhl), |
297 | F(tgamma), F(tgammaf), F(tgammal), F(trunc), F(truncf), |
298 | F(truncl), F(cabs), F(cabsf), F(cabsl), F(cacos), |
299 | F(cacosf), F(cacosl), F(cacosh), F(cacoshf), F(cacoshl), |
300 | F(carg), F(cargf), F(cargl), F(casin), F(casinf), |
301 | F(casinl), F(casinh), F(casinhf), F(casinhl), F(catan), |
302 | F(catanf), F(catanl), F(catanh), F(catanhf), F(catanhl), |
303 | F(ccos), F(ccosf), F(ccosl), F(ccosh), F(ccoshf), |
304 | F(ccoshl), F(cexp), F(cexpf), F(cexpl), F(cimag), |
305 | F(cimagf), F(cimagl), F(conj), F(conjf), F(conjl), |
306 | F(clog), F(clogf), F(clogl), F(cproj), F(cprojf), |
307 | F(cprojl), F(cpow), F(cpowf), F(cpowl), F(creal), |
308 | F(crealf), F(creall), F(csin), F(csinf), F(csinl), |
309 | F(csinh), F(csinhf), F(csinhl), F(csqrt), F(csqrtf), |
310 | F(csqrtl), F(ctan), F(ctanf), F(ctanl), F(ctanh), |
311 | F(ctanhf), F(ctanhl), F(__sinpi), F(__sinpif), F(__cospi), |
312 | F(__cospif), F(__tanpi), F(__tanpif), F(__exp10), F(__exp10f) |
313 | }; |
314 | |
315 | // CHECK-NOERRNO: declare double @atan2(double, double) [[NUWRN:#[0-9]+]] |
316 | // CHECK-NOERRNO: declare float @atan2f(float, float) [[NUWRN]] |
317 | // CHECK-NOERRNO: declare x86_fp80 @atan2l(x86_fp80, x86_fp80) [[NUWRN]] |
318 | // CHECK-NOERRNO: declare i32 @abs(i32) [[NUWRN]] |
319 | // CHECK-NOERRNO: declare i64 @labs(i64) [[NUWRN]] |
320 | // CHECK-NOERRNO: declare i64 @llabs(i64) [[NUWRN]] |
321 | // CHECK-NOERRNO: declare double @copysign(double, double) [[NUWRN]] |
322 | // CHECK-NOERRNO: declare float @copysignf(float, float) [[NUWRN]] |
323 | // CHECK-NOERRNO: declare x86_fp80 @copysignl(x86_fp80, x86_fp80) [[NUWRN]] |
324 | // CHECK-NOERRNO: declare double @fabs(double) [[NUWRN]] |
325 | // CHECK-NOERRNO: declare float @fabsf(float) [[NUWRN]] |
326 | // CHECK-NOERRNO: declare x86_fp80 @fabsl(x86_fp80) [[NUWRN]] |
327 | // CHECK-NOERRNO: declare double @fmod(double, double) [[NUWRN]] |
328 | // CHECK-NOERRNO: declare float @fmodf(float, float) [[NUWRN]] |
329 | // CHECK-NOERRNO: declare x86_fp80 @fmodl(x86_fp80, x86_fp80) [[NUWRN]] |
330 | // CHECK-NOERRNO: declare double @ldexp(double, i32) [[NUWRN]] |
331 | // CHECK-NOERRNO: declare float @ldexpf(float, i32) [[NUWRN]] |
332 | // CHECK-NOERRNO: declare x86_fp80 @ldexpl(x86_fp80, i32) [[NUWRN]] |
333 | // CHECK-NOERRNO: declare double @nan(i8*) [[NUWRO:#[0-9]+]] |
334 | // CHECK-NOERRNO: declare float @nanf(i8*) [[NUWRO]] |
335 | // CHECK-NOERRNO: declare x86_fp80 @nanl(i8*) [[NUWRO]] |
336 | // CHECK-NOERRNO: declare double @pow(double, double) [[NUWRN]] |
337 | // CHECK-NOERRNO: declare float @powf(float, float) [[NUWRN]] |
338 | // CHECK-NOERRNO: declare x86_fp80 @powl(x86_fp80, x86_fp80) [[NUWRN]] |
339 | // CHECK-NOERRNO: declare double @acos(double) [[NUWRN]] |
340 | // CHECK-NOERRNO: declare float @acosf(float) [[NUWRN]] |
341 | // CHECK-NOERRNO: declare x86_fp80 @acosl(x86_fp80) [[NUWRN]] |
342 | // CHECK-NOERRNO: declare double @acosh(double) [[NUWRN]] |
343 | // CHECK-NOERRNO: declare float @acoshf(float) [[NUWRN]] |
344 | // CHECK-NOERRNO: declare x86_fp80 @acoshl(x86_fp80) [[NUWRN]] |
345 | // CHECK-NOERRNO: declare double @asin(double) [[NUWRN]] |
346 | // CHECK-NOERRNO: declare float @asinf(float) [[NUWRN]] |
347 | // CHECK-NOERRNO: declare x86_fp80 @asinl(x86_fp80) [[NUWRN]] |
348 | // CHECK-NOERRNO: declare double @asinh(double) [[NUWRN]] |
349 | // CHECK-NOERRNO: declare float @asinhf(float) [[NUWRN]] |
350 | // CHECK-NOERRNO: declare x86_fp80 @asinhl(x86_fp80) [[NUWRN]] |
351 | // CHECK-NOERRNO: declare double @atan(double) [[NUWRN]] |
352 | // CHECK-NOERRNO: declare float @atanf(float) [[NUWRN]] |
353 | // CHECK-NOERRNO: declare x86_fp80 @atanl(x86_fp80) [[NUWRN]] |
354 | // CHECK-NOERRNO: declare double @atanh(double) [[NUWRN]] |
355 | // CHECK-NOERRNO: declare float @atanhf(float) [[NUWRN]] |
356 | // CHECK-NOERRNO: declare x86_fp80 @atanhl(x86_fp80) [[NUWRN]] |
357 | // CHECK-NOERRNO: declare double @cbrt(double) [[NUWRN]] |
358 | // CHECK-NOERRNO: declare float @cbrtf(float) [[NUWRN]] |
359 | // CHECK-NOERRNO: declare x86_fp80 @cbrtl(x86_fp80) [[NUWRN]] |
360 | // CHECK-NOERRNO: declare double @ceil(double) [[NUWRN]] |
361 | // CHECK-NOERRNO: declare float @ceilf(float) [[NUWRN]] |
362 | // CHECK-NOERRNO: declare x86_fp80 @ceill(x86_fp80) [[NUWRN]] |
363 | // CHECK-NOERRNO: declare double @cos(double) [[NUWRN]] |
364 | // CHECK-NOERRNO: declare float @cosf(float) [[NUWRN]] |
365 | // CHECK-NOERRNO: declare x86_fp80 @cosl(x86_fp80) [[NUWRN]] |
366 | // CHECK-NOERRNO: declare double @cosh(double) [[NUWRN]] |
367 | // CHECK-NOERRNO: declare float @coshf(float) [[NUWRN]] |
368 | // CHECK-NOERRNO: declare x86_fp80 @coshl(x86_fp80) [[NUWRN]] |
369 | // CHECK-NOERRNO: declare double @erf(double) [[NUWRN]] |
370 | // CHECK-NOERRNO: declare float @erff(float) [[NUWRN]] |
371 | // CHECK-NOERRNO: declare x86_fp80 @erfl(x86_fp80) [[NUWRN]] |
372 | // CHECK-NOERRNO: declare double @erfc(double) [[NUWRN]] |
373 | // CHECK-NOERRNO: declare float @erfcf(float) [[NUWRN]] |
374 | // CHECK-NOERRNO: declare x86_fp80 @erfcl(x86_fp80) [[NUWRN]] |
375 | // CHECK-NOERRNO: declare double @exp(double) [[NUWRN]] |
376 | // CHECK-NOERRNO: declare float @expf(float) [[NUWRN]] |
377 | // CHECK-NOERRNO: declare x86_fp80 @expl(x86_fp80) [[NUWRN]] |
378 | // CHECK-NOERRNO: declare double @exp2(double) [[NUWRN]] |
379 | // CHECK-NOERRNO: declare float @exp2f(float) [[NUWRN]] |
380 | // CHECK-NOERRNO: declare x86_fp80 @exp2l(x86_fp80) [[NUWRN]] |
381 | // CHECK-NOERRNO: declare double @expm1(double) [[NUWRN]] |
382 | // CHECK-NOERRNO: declare float @expm1f(float) [[NUWRN]] |
383 | // CHECK-NOERRNO: declare x86_fp80 @expm1l(x86_fp80) [[NUWRN]] |
384 | // CHECK-NOERRNO: declare double @fdim(double, double) [[NUWRN]] |
385 | // CHECK-NOERRNO: declare float @fdimf(float, float) [[NUWRN]] |
386 | // CHECK-NOERRNO: declare x86_fp80 @fdiml(x86_fp80, x86_fp80) [[NUWRN]] |
387 | // CHECK-NOERRNO: declare double @floor(double) [[NUWRN]] |
388 | // CHECK-NOERRNO: declare float @floorf(float) [[NUWRN]] |
389 | // CHECK-NOERRNO: declare x86_fp80 @floorl(x86_fp80) [[NUWRN]] |
390 | // CHECK-NOERRNO: declare double @fma(double, double, double) [[NUWRN]] |
391 | // CHECK-NOERRNO: declare float @fmaf(float, float, float) [[NUWRN]] |
392 | // CHECK-NOERRNO: declare x86_fp80 @fmal(x86_fp80, x86_fp80, x86_fp80) [[NUWRN]] |
393 | // CHECK-NOERRNO: declare double @fmax(double, double) [[NUWRN]] |
394 | // CHECK-NOERRNO: declare float @fmaxf(float, float) [[NUWRN]] |
395 | // CHECK-NOERRNO: declare x86_fp80 @fmaxl(x86_fp80, x86_fp80) [[NUWRN]] |
396 | // CHECK-NOERRNO: declare double @fmin(double, double) [[NUWRN]] |
397 | // CHECK-NOERRNO: declare float @fminf(float, float) [[NUWRN]] |
398 | // CHECK-NOERRNO: declare x86_fp80 @fminl(x86_fp80, x86_fp80) [[NUWRN]] |
399 | // CHECK-NOERRNO: declare double @hypot(double, double) [[NUWRN]] |
400 | // CHECK-NOERRNO: declare float @hypotf(float, float) [[NUWRN]] |
401 | // CHECK-NOERRNO: declare x86_fp80 @hypotl(x86_fp80, x86_fp80) [[NUWRN]] |
402 | // CHECK-NOERRNO: declare i32 @ilogb(double) [[NUWRN]] |
403 | // CHECK-NOERRNO: declare i32 @ilogbf(float) [[NUWRN]] |
404 | // CHECK-NOERRNO: declare i32 @ilogbl(x86_fp80) [[NUWRN]] |
405 | // CHECK-NOERRNO: declare double @lgamma(double) [[NONCONST:#[0-9]+]] |
406 | // CHECK-NOERRNO: declare float @lgammaf(float) [[NONCONST]] |
407 | // CHECK-NOERRNO: declare x86_fp80 @lgammal(x86_fp80) [[NONCONST]] |
408 | // CHECK-NOERRNO: declare i64 @llrint(double) [[NUWRN]] |
409 | // CHECK-NOERRNO: declare i64 @llrintf(float) [[NUWRN]] |
410 | // CHECK-NOERRNO: declare i64 @llrintl(x86_fp80) [[NUWRN]] |
411 | // CHECK-NOERRNO: declare i64 @llround(double) [[NUWRN]] |
412 | // CHECK-NOERRNO: declare i64 @llroundf(float) [[NUWRN]] |
413 | // CHECK-NOERRNO: declare i64 @llroundl(x86_fp80) [[NUWRN]] |
414 | // CHECK-NOERRNO: declare double @log(double) [[NUWRN]] |
415 | // CHECK-NOERRNO: declare float @logf(float) [[NUWRN]] |
416 | // CHECK-NOERRNO: declare x86_fp80 @logl(x86_fp80) [[NUWRN]] |
417 | // CHECK-NOERRNO: declare double @log10(double) [[NUWRN]] |
418 | // CHECK-NOERRNO: declare float @log10f(float) [[NUWRN]] |
419 | // CHECK-NOERRNO: declare x86_fp80 @log10l(x86_fp80) [[NUWRN]] |
420 | // CHECK-NOERRNO: declare double @log1p(double) [[NUWRN]] |
421 | // CHECK-NOERRNO: declare float @log1pf(float) [[NUWRN]] |
422 | // CHECK-NOERRNO: declare x86_fp80 @log1pl(x86_fp80) [[NUWRN]] |
423 | // CHECK-NOERRNO: declare double @log2(double) [[NUWRN]] |
424 | // CHECK-NOERRNO: declare float @log2f(float) [[NUWRN]] |
425 | // CHECK-NOERRNO: declare x86_fp80 @log2l(x86_fp80) [[NUWRN]] |
426 | // CHECK-NOERRNO: declare double @logb(double) [[NUWRN]] |
427 | // CHECK-NOERRNO: declare float @logbf(float) [[NUWRN]] |
428 | // CHECK-NOERRNO: declare x86_fp80 @logbl(x86_fp80) [[NUWRN]] |
429 | // CHECK-NOERRNO: declare i64 @lrint(double) [[NUWRN]] |
430 | // CHECK-NOERRNO: declare i64 @lrintf(float) [[NUWRN]] |
431 | // CHECK-NOERRNO: declare i64 @lrintl(x86_fp80) [[NUWRN]] |
432 | // CHECK-NOERRNO: declare i64 @lround(double) [[NUWRN]] |
433 | // CHECK-NOERRNO: declare i64 @lroundf(float) [[NUWRN]] |
434 | // CHECK-NOERRNO: declare i64 @lroundl(x86_fp80) [[NUWRN]] |
435 | // CHECK-NOERRNO: declare double @nearbyint(double) [[NUWRN]] |
436 | // CHECK-NOERRNO: declare float @nearbyintf(float) [[NUWRN]] |
437 | // CHECK-NOERRNO: declare x86_fp80 @nearbyintl(x86_fp80) [[NUWRN]] |
438 | // CHECK-NOERRNO: declare double @nextafter(double, double) [[NUWRN]] |
439 | // CHECK-NOERRNO: declare float @nextafterf(float, float) [[NUWRN]] |
440 | // CHECK-NOERRNO: declare x86_fp80 @nextafterl(x86_fp80, x86_fp80) [[NUWRN]] |
441 | // CHECK-NOERRNO: declare double @nexttoward(double, x86_fp80) [[NUWRN]] |
442 | // CHECK-NOERRNO: declare float @nexttowardf(float, x86_fp80) [[NUWRN]] |
443 | // CHECK-NOERRNO: declare x86_fp80 @nexttowardl(x86_fp80, x86_fp80) [[NUWRN]] |
444 | // CHECK-NOERRNO: declare double @remainder(double, double) [[NUWRN]] |
445 | // CHECK-NOERRNO: declare float @remainderf(float, float) [[NUWRN]] |
446 | // CHECK-NOERRNO: declare x86_fp80 @remainderl(x86_fp80, x86_fp80) [[NUWRN]] |
447 | // CHECK-NOERRNO: declare double @rint(double) [[NUWRN]] |
448 | // CHECK-NOERRNO: declare float @rintf(float) [[NUWRN]] |
449 | // CHECK-NOERRNO: declare x86_fp80 @rintl(x86_fp80) [[NUWRN]] |
450 | // CHECK-NOERRNO: declare double @round(double) [[NUWRN]] |
451 | // CHECK-NOERRNO: declare float @roundf(float) [[NUWRN]] |
452 | // CHECK-NOERRNO: declare x86_fp80 @roundl(x86_fp80) [[NUWRN]] |
453 | // CHECK-NOERRNO: declare double @scalbln(double, i64) [[NUWRN]] |
454 | // CHECK-NOERRNO: declare float @scalblnf(float, i64) [[NUWRN]] |
455 | // CHECK-NOERRNO: declare x86_fp80 @scalblnl(x86_fp80, i64) [[NUWRN]] |
456 | // CHECK-NOERRNO: declare double @scalbn(double, i32) [[NUWRN]] |
457 | // CHECK-NOERRNO: declare float @scalbnf(float, i32) [[NUWRN]] |
458 | // CHECK-NOERRNO: declare x86_fp80 @scalbnl(x86_fp80, i32) [[NUWRN]] |
459 | // CHECK-NOERRNO: declare double @sin(double) [[NUWRN]] |
460 | // CHECK-NOERRNO: declare float @sinf(float) [[NUWRN]] |
461 | // CHECK-NOERRNO: declare x86_fp80 @sinl(x86_fp80) [[NUWRN]] |
462 | // CHECK-NOERRNO: declare double @sinh(double) [[NUWRN]] |
463 | // CHECK-NOERRNO: declare float @sinhf(float) [[NUWRN]] |
464 | // CHECK-NOERRNO: declare x86_fp80 @sinhl(x86_fp80) [[NUWRN]] |
465 | // CHECK-NOERRNO: declare double @sqrt(double) [[NUWRN]] |
466 | // CHECK-NOERRNO: declare float @sqrtf(float) [[NUWRN]] |
467 | // CHECK-NOERRNO: declare x86_fp80 @sqrtl(x86_fp80) [[NUWRN]] |
468 | // CHECK-NOERRNO: declare double @tan(double) [[NUWRN]] |
469 | // CHECK-NOERRNO: declare float @tanf(float) [[NUWRN]] |
470 | // CHECK-NOERRNO: declare x86_fp80 @tanl(x86_fp80) [[NUWRN]] |
471 | // CHECK-NOERRNO: declare double @tanh(double) [[NUWRN]] |
472 | // CHECK-NOERRNO: declare float @tanhf(float) [[NUWRN]] |
473 | // CHECK-NOERRNO: declare x86_fp80 @tanhl(x86_fp80) [[NUWRN]] |
474 | // CHECK-NOERRNO: declare double @tgamma(double) [[NUWRN]] |
475 | // CHECK-NOERRNO: declare float @tgammaf(float) [[NUWRN]] |
476 | // CHECK-NOERRNO: declare x86_fp80 @tgammal(x86_fp80) [[NUWRN]] |
477 | // CHECK-NOERRNO: declare double @trunc(double) [[NUWRN]] |
478 | // CHECK-NOERRNO: declare float @truncf(float) [[NUWRN]] |
479 | // CHECK-NOERRNO: declare x86_fp80 @truncl(x86_fp80) [[NUWRN]] |
480 | // CHECK-NOERRNO: declare double @cabs(double, double) [[NUWRN]] |
481 | // CHECK-NOERRNO: declare float @cabsf(<2 x float>) [[NUWRN]] |
482 | // CHECK-NOERRNO: declare { double, double } @cacos(double, double) [[NUWRN]] |
483 | // CHECK-NOERRNO: declare <2 x float> @cacosf(<2 x float>) [[NUWRN]] |
484 | // CHECK-NOERRNO: declare { double, double } @cacosh(double, double) [[NUWRN]] |
485 | // CHECK-NOERRNO: declare <2 x float> @cacoshf(<2 x float>) [[NUWRN]] |
486 | // CHECK-NOERRNO: declare double @carg(double, double) [[NUWRN]] |
487 | // CHECK-NOERRNO: declare float @cargf(<2 x float>) [[NUWRN]] |
488 | // CHECK-NOERRNO: declare { double, double } @casin(double, double) [[NUWRN]] |
489 | // CHECK-NOERRNO: declare <2 x float> @casinf(<2 x float>) [[NUWRN]] |
490 | // CHECK-NOERRNO: declare { double, double } @casinh(double, double) [[NUWRN]] |
491 | // CHECK-NOERRNO: declare <2 x float> @casinhf(<2 x float>) [[NUWRN]] |
492 | // CHECK-NOERRNO: declare { double, double } @catan(double, double) [[NUWRN]] |
493 | // CHECK-NOERRNO: declare <2 x float> @catanf(<2 x float>) [[NUWRN]] |
494 | // CHECK-NOERRNO: declare { double, double } @catanh(double, double) [[NUWRN]] |
495 | // CHECK-NOERRNO: declare <2 x float> @catanhf(<2 x float>) [[NUWRN]] |
496 | // CHECK-NOERRNO: declare { double, double } @ccos(double, double) [[NUWRN]] |
497 | // CHECK-NOERRNO: declare <2 x float> @ccosf(<2 x float>) [[NUWRN]] |
498 | // CHECK-NOERRNO: declare { double, double } @ccosh(double, double) [[NUWRN]] |
499 | // CHECK-NOERRNO: declare <2 x float> @ccoshf(<2 x float>) [[NUWRN]] |
500 | // CHECK-NOERRNO: declare { double, double } @cexp(double, double) [[NUWRN]] |
501 | // CHECK-NOERRNO: declare <2 x float> @cexpf(<2 x float>) [[NUWRN]] |
502 | // CHECK-NOERRNO: declare double @cimag(double, double) [[NUWRN]] |
503 | // CHECK-NOERRNO: declare float @cimagf(<2 x float>) [[NUWRN]] |
504 | // CHECK-NOERRNO: declare { double, double } @conj(double, double) [[NUWRN]] |
505 | // CHECK-NOERRNO: declare <2 x float> @conjf(<2 x float>) [[NUWRN]] |
506 | // CHECK-NOERRNO: declare { double, double } @clog(double, double) [[NUWRN]] |
507 | // CHECK-NOERRNO: declare <2 x float> @clogf(<2 x float>) [[NUWRN]] |
508 | // CHECK-NOERRNO: declare { double, double } @cproj(double, double) [[NUWRN]] |
509 | // CHECK-NOERRNO: declare <2 x float> @cprojf(<2 x float>) [[NUWRN]] |
510 | // CHECK-NOERRNO: declare { double, double } @cpow(double, double, double, double) [[NUWRN]] |
511 | // CHECK-NOERRNO: declare <2 x float> @cpowf(<2 x float>, <2 x float>) [[NUWRN]] |
512 | // CHECK-NOERRNO: declare double @creal(double, double) [[NUWRN]] |
513 | // CHECK-NOERRNO: declare float @crealf(<2 x float>) [[NUWRN]] |
514 | // CHECK-NOERRNO: declare { double, double } @csin(double, double) [[NUWRN]] |
515 | // CHECK-NOERRNO: declare <2 x float> @csinf(<2 x float>) [[NUWRN]] |
516 | // CHECK-NOERRNO: declare { double, double } @csinh(double, double) [[NUWRN]] |
517 | // CHECK-NOERRNO: declare <2 x float> @csinhf(<2 x float>) [[NUWRN]] |
518 | // CHECK-NOERRNO: declare { double, double } @csqrt(double, double) [[NUWRN]] |
519 | // CHECK-NOERRNO: declare <2 x float> @csqrtf(<2 x float>) [[NUWRN]] |
520 | // CHECK-NOERRNO: declare { double, double } @ctan(double, double) [[NUWRN]] |
521 | // CHECK-NOERRNO: declare <2 x float> @ctanf(<2 x float>) [[NUWRN]] |
522 | // CHECK-NOERRNO: declare { double, double } @ctanh(double, double) [[NUWRN]] |
523 | // CHECK-NOERRNO: declare <2 x float> @ctanhf(<2 x float>) [[NUWRN]] |
524 | // CHECK-NOERRNO: declare double @__sinpi(double) [[NUWRN]] |
525 | // CHECK-NOERRNO: declare float @__sinpif(float) [[NUWRN]] |
526 | // CHECK-NOERRNO: declare double @__cospi(double) [[NUWRN]] |
527 | // CHECK-NOERRNO: declare float @__cospif(float) [[NUWRN]] |
528 | // CHECK-NOERRNO: declare double @__tanpi(double) [[NUWRN]] |
529 | // CHECK-NOERRNO: declare float @__tanpif(float) [[NUWRN]] |
530 | // CHECK-NOERRNO: declare double @__exp10(double) [[NUWRN]] |
531 | // CHECK-NOERRNO: declare float @__exp10f(float) [[NUWRN]] |
532 | |
533 | // CHECK-ERRNO: declare i32 @abs(i32) [[NUWRN:#[0-9]+]] |
534 | // CHECK-ERRNO: declare i64 @labs(i64) [[NUWRN]] |
535 | // CHECK-ERRNO: declare i64 @llabs(i64) [[NUWRN]] |
536 | // CHECK-ERRNO: declare double @copysign(double, double) [[NUWRN]] |
537 | // CHECK-ERRNO: declare float @copysignf(float, float) [[NUWRN]] |
538 | // CHECK-ERRNO: declare x86_fp80 @copysignl(x86_fp80, x86_fp80) [[NUWRN]] |
539 | // CHECK-ERRNO: declare double @fabs(double) [[NUWRN]] |
540 | // CHECK-ERRNO: declare float @fabsf(float) [[NUWRN]] |
541 | // CHECK-ERRNO: declare x86_fp80 @fabsl(x86_fp80) [[NUWRN]] |
542 | // CHECK-ERRNO: declare double @nan(i8*) [[NUWRO:#[0-9]+]] |
543 | // CHECK-ERRNO: declare float @nanf(i8*) [[NUWRO]] |
544 | // CHECK-ERRNO: declare x86_fp80 @nanl(i8*) [[NUWRO]] |
545 | // CHECK-ERRNO: declare double @ceil(double) [[NUWRN]] |
546 | // CHECK-ERRNO: declare float @ceilf(float) [[NUWRN]] |
547 | // CHECK-ERRNO: declare x86_fp80 @ceill(x86_fp80) [[NUWRN]] |
548 | // CHECK-ERRNO: declare double @floor(double) [[NUWRN]] |
549 | // CHECK-ERRNO: declare float @floorf(float) [[NUWRN]] |
550 | // CHECK-ERRNO: declare x86_fp80 @floorl(x86_fp80) [[NUWRN]] |
551 | // CHECK-ERRNO: declare double @fmax(double, double) [[NUWRN]] |
552 | // CHECK-ERRNO: declare float @fmaxf(float, float) [[NUWRN]] |
553 | // CHECK-ERRNO: declare x86_fp80 @fmaxl(x86_fp80, x86_fp80) [[NUWRN]] |
554 | // CHECK-ERRNO: declare double @fmin(double, double) [[NUWRN]] |
555 | // CHECK-ERRNO: declare float @fminf(float, float) [[NUWRN]] |
556 | // CHECK-ERRNO: declare x86_fp80 @fminl(x86_fp80, x86_fp80) [[NUWRN]] |
557 | // CHECK-ERRNO: declare double @lgamma(double) [[NONCONST:#[0-9]+]] |
558 | // CHECK-ERRNO: declare float @lgammaf(float) [[NONCONST]] |
559 | // CHECK-ERRNO: declare x86_fp80 @lgammal(x86_fp80) [[NONCONST]] |
560 | // CHECK-ERRNO: declare double @nearbyint(double) [[NUWRN]] |
561 | // CHECK-ERRNO: declare float @nearbyintf(float) [[NUWRN]] |
562 | // CHECK-ERRNO: declare x86_fp80 @nearbyintl(x86_fp80) [[NUWRN]] |
563 | // CHECK-ERRNO: declare double @rint(double) [[NUWRN]] |
564 | // CHECK-ERRNO: declare float @rintf(float) [[NUWRN]] |
565 | // CHECK-ERRNO: declare x86_fp80 @rintl(x86_fp80) [[NUWRN]] |
566 | // CHECK-ERRNO: declare double @round(double) [[NUWRN]] |
567 | // CHECK-ERRNO: declare float @roundf(float) [[NUWRN]] |
568 | // CHECK-ERRNO: declare x86_fp80 @roundl(x86_fp80) [[NUWRN]] |
569 | // CHECK-ERRNO: declare double @trunc(double) [[NUWRN]] |
570 | // CHECK-ERRNO: declare float @truncf(float) [[NUWRN]] |
571 | // CHECK-ERRNO: declare x86_fp80 @truncl(x86_fp80) [[NUWRN]] |
572 | // CHECK-ERRNO: declare double @cabs(double, double) [[NONCONST]] |
573 | // CHECK-ERRNO: declare float @cabsf(<2 x float>) [[NONCONST]] |
574 | // CHECK-ERRNO: declare { double, double } @cacos(double, double) [[NONCONST]] |
575 | // CHECK-ERRNO: declare <2 x float> @cacosf(<2 x float>) [[NONCONST]] |
576 | // CHECK-ERRNO: declare { double, double } @cacosh(double, double) [[NONCONST]] |
577 | // CHECK-ERRNO: declare <2 x float> @cacoshf(<2 x float>) [[NONCONST]] |
578 | // CHECK-ERRNO: declare double @carg(double, double) [[NONCONST]] |
579 | // CHECK-ERRNO: declare float @cargf(<2 x float>) [[NONCONST]] |
580 | // CHECK-ERRNO: declare { double, double } @casin(double, double) [[NONCONST]] |
581 | // CHECK-ERRNO: declare <2 x float> @casinf(<2 x float>) [[NONCONST]] |
582 | // CHECK-ERRNO: declare { double, double } @casinh(double, double) [[NONCONST]] |
583 | // CHECK-ERRNO: declare <2 x float> @casinhf(<2 x float>) [[NONCONST]] |
584 | // CHECK-ERRNO: declare { double, double } @catan(double, double) [[NONCONST]] |
585 | // CHECK-ERRNO: declare <2 x float> @catanf(<2 x float>) [[NONCONST]] |
586 | // CHECK-ERRNO: declare { double, double } @catanh(double, double) [[NONCONST]] |
587 | // CHECK-ERRNO: declare <2 x float> @catanhf(<2 x float>) [[NONCONST]] |
588 | // CHECK-ERRNO: declare { double, double } @ccos(double, double) [[NONCONST]] |
589 | // CHECK-ERRNO: declare <2 x float> @ccosf(<2 x float>) [[NONCONST]] |
590 | // CHECK-ERRNO: declare { double, double } @ccosh(double, double) [[NONCONST]] |
591 | // CHECK-ERRNO: declare <2 x float> @ccoshf(<2 x float>) [[NONCONST]] |
592 | // CHECK-ERRNO: declare { double, double } @cexp(double, double) [[NONCONST]] |
593 | // CHECK-ERRNO: declare <2 x float> @cexpf(<2 x float>) [[NONCONST]] |
594 | // CHECK-ERRNO: declare double @cimag(double, double) [[NUWRN]] |
595 | // CHECK-ERRNO: declare float @cimagf(<2 x float>) [[NUWRN]] |
596 | // CHECK-ERRNO: declare { double, double } @conj(double, double) [[NUWRN]] |
597 | // CHECK-ERRNO: declare <2 x float> @conjf(<2 x float>) [[NUWRN]] |
598 | // CHECK-ERRNO: declare { double, double } @clog(double, double) [[NONCONST]] |
599 | // CHECK-ERRNO: declare <2 x float> @clogf(<2 x float>) [[NONCONST]] |
600 | // CHECK-ERRNO: declare { double, double } @cproj(double, double) [[NUWRN]] |
601 | // CHECK-ERRNO: declare <2 x float> @cprojf(<2 x float>) [[NUWRN]] |
602 | // CHECK-ERRNO: declare { double, double } @cpow(double, double, double, double) [[NONCONST]] |
603 | // CHECK-ERRNO: declare <2 x float> @cpowf(<2 x float>, <2 x float>) [[NONCONST]] |
604 | // CHECK-ERRNO: declare double @creal(double, double) [[NUWRN]] |
605 | // CHECK-ERRNO: declare float @crealf(<2 x float>) [[NUWRN]] |
606 | // CHECK-ERRNO: declare { double, double } @csin(double, double) [[NONCONST]] |
607 | // CHECK-ERRNO: declare <2 x float> @csinf(<2 x float>) [[NONCONST]] |
608 | // CHECK-ERRNO: declare { double, double } @csinh(double, double) [[NONCONST]] |
609 | // CHECK-ERRNO: declare <2 x float> @csinhf(<2 x float>) [[NONCONST]] |
610 | // CHECK-ERRNO: declare { double, double } @csqrt(double, double) [[NONCONST]] |
611 | // CHECK-ERRNO: declare <2 x float> @csqrtf(<2 x float>) [[NONCONST]] |
612 | // CHECK-ERRNO: declare { double, double } @ctan(double, double) [[NONCONST]] |
613 | // CHECK-ERRNO: declare <2 x float> @ctanf(<2 x float>) [[NONCONST]] |
614 | // CHECK-ERRNO: declare { double, double } @ctanh(double, double) [[NONCONST]] |
615 | // CHECK-ERRNO: declare <2 x float> @ctanhf(<2 x float>) [[NONCONST]] |
616 | |
617 | // CHECK-NOERRNO: attributes [[NUWRN]] = { nounwind readnone{{.*}} } |
618 | // CHECK-NOERRNO: attributes [[NUWRO]] = { nounwind readonly{{.*}} } |
619 | |
620 | // CHECK-ERRNO: attributes [[NUWRN]] = { nounwind readnone{{.*}} } |
621 | // CHECK-ERRNO: attributes [[NUWRO]] = { nounwind readonly{{.*}} } |
622 | |