[BuildLibcalls, Attrs] Support more variants of C++'s new, add attributes for C+...
[lldb.git] / llvm / test / Transforms / InferFunctionAttrs / annotate.ll
1 ; RUN: opt < %s -mtriple=x86_64-- -inferattrs -S | FileCheck -check-prefix=CHECK-UNKNOWN %s
2 ; RUN: opt < %s -mtriple=x86_64-- -passes=inferattrs -S | FileCheck -check-prefix=CHECK-UNKNOWN %s
3 ; RUN: opt < %s -mtriple=x86_64-apple-macosx10.8.0 -inferattrs -S | FileCheck -check-prefix=CHECK -check-prefix=CHECK-DARWIN %s
4 ; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -inferattrs -S | FileCheck -check-prefix=CHECK -check-prefix=CHECK-LINUX %s
5 ; RUN: opt < %s -mtriple=nvptx -inferattrs -S | FileCheck -check-prefix=CHECK-NVPTX %s
6
7 ; operator new routines
8 declare i8* @_Znwj(i64 )
9 ; CHECK: declare noalias noundef nonnull i8* @_Znwj(i64) [[INACCESSIBLEMEMONLY_NOFREE_WILLRETURN:#[0-9]+]]
10 declare i8* @_Znwm(i64)
11 ; CHECK: declare noalias noundef nonnull i8* @_Znwm(i64) [[INACCESSIBLEMEMONLY_NOFREE_WILLRETURN]]
12 declare i8* @_Znaj(i64)
13 ; CHECK: declare noalias noundef nonnull i8* @_Znaj(i64) [[INACCESSIBLEMEMONLY_NOFREE_WILLRETURN]]
14 declare i8* @_Znam(i64)
15 ; CHECK: declare noalias noundef nonnull i8* @_Znam(i64) [[INACCESSIBLEMEMONLY_NOFREE_WILLRETURN]]
16
17
18 %"struct.std::nothrow_t" = type { i8 }
19 declare i8* @_ZnwmRKSt9nothrow_t(i64, %"struct.std::nothrow_t"*)
20 ; CHECK: declare noalias noundef i8* @_ZnwmRKSt9nothrow_t(i64, %"struct.std::nothrow_t"*) [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN:#[0-9]+]]
21
22
23 ; operator delete routines
24 declare void @_ZdlPv(i8*)
25 ; CHECK: declare void @_ZdlPv(i8* nocapture noundef) [[INACCESSIBLEMEMORARGONLY_WILLRETURN:#[0-9]+]]
26 declare void @_ZdlPvj(i8*, i64)
27 ; CHECK: declare void @_ZdlPvj(i8* nocapture noundef, i64 noundef) [[INACCESSIBLEMEMORARGONLY_WILLRETURN]]
28 declare void @_ZdlPvm(i8*, i64)
29 ; CHECK: declare void @_ZdlPvm(i8* nocapture noundef, i64 noundef) [[INACCESSIBLEMEMORARGONLY_WILLRETURN]]
30 declare void @_ZdaPv(i8*)
31 ; CHECK: declare void @_ZdaPv(i8* nocapture noundef) [[INACCESSIBLEMEMORARGONLY_WILLRETURN]]
32 declare void @_ZdaPvj(i8*, i64)
33 ; CHECK: declare void @_ZdaPvj(i8* nocapture noundef, i64 noundef) [[INACCESSIBLEMEMORARGONLY_WILLRETURN]]
34 declare void @_ZdaPvm(i8*, i64)
35 ; CHECK: declare void @_ZdaPvm(i8* nocapture noundef, i64 noundef) [[INACCESSIBLEMEMORARGONLY_WILLRETURN]]
36
37 declare i32 @__nvvm_reflect(i8*)
38 ; CHECK-NVPTX: declare noundef i32 @__nvvm_reflect(i8* noundef) [[NOFREE_NOUNWIND_READNONE:#[0-9]+]]
39 ; CHECK-NVPTX: attributes [[NOFREE_NOUNWIND_READNONE]] = { nofree nounwind readnone }
40
41
42 ; Check all the libc functions (thereby also exercising the prototype check).
43 ; Note that it's OK to modify these as attributes might be missing. These checks
44 ; reflect the currently inferred attributes.
45
46 ; Use an opaque pointer type for all the (possibly opaque) structs.
47 %opaque = type opaque
48
49 ; CHECK: declare double @__acos_finite(double)
50 declare double @__acos_finite(double)
51
52 ; CHECK: declare float @__acosf_finite(float)
53 declare float @__acosf_finite(float)
54
55 ; CHECK: declare double @__acosh_finite(double)
56 declare double @__acosh_finite(double)
57
58 ; CHECK: declare float @__acoshf_finite(float)
59 declare float @__acoshf_finite(float)
60
61 ; CHECK: declare x86_fp80 @__acoshl_finite(x86_fp80)
62 declare x86_fp80 @__acoshl_finite(x86_fp80)
63
64 ; CHECK: declare x86_fp80 @__acosl_finite(x86_fp80)
65 declare x86_fp80 @__acosl_finite(x86_fp80)
66
67 ; CHECK: declare double @__asin_finite(double)
68 declare double @__asin_finite(double)
69
70 ; CHECK: declare float @__asinf_finite(float)
71 declare float @__asinf_finite(float)
72
73 ; CHECK: declare x86_fp80 @__asinl_finite(x86_fp80)
74 declare x86_fp80 @__asinl_finite(x86_fp80)
75
76 ; CHECK: declare double @__atan2_finite(double, double)
77 declare double @__atan2_finite(double, double)
78
79 ; CHECK: declare float @__atan2f_finite(float, float)
80 declare float @__atan2f_finite(float, float)
81
82 ; CHECK: declare x86_fp80 @__atan2l_finite(x86_fp80, x86_fp80)
83 declare x86_fp80 @__atan2l_finite(x86_fp80, x86_fp80)
84
85 ; CHECK: declare double @__atanh_finite(double)
86 declare double @__atanh_finite(double)
87
88 ; CHECK: declare float @__atanhf_finite(float)
89 declare float @__atanhf_finite(float)
90
91 ; CHECK: declare x86_fp80 @__atanhl_finite(x86_fp80)
92 declare x86_fp80 @__atanhl_finite(x86_fp80)
93
94 ; CHECK: declare double @__cosh_finite(double)
95 declare double @__cosh_finite(double)
96
97 ; CHECK: declare float @__coshf_finite(float)
98 declare float @__coshf_finite(float)
99
100 ; CHECK: declare x86_fp80 @__coshl_finite(x86_fp80)
101 declare x86_fp80 @__coshl_finite(x86_fp80)
102
103 ; CHECK: declare double @__cospi(double)
104 declare double @__cospi(double)
105
106 ; CHECK: declare float @__cospif(float)
107 declare float @__cospif(float)
108
109 ; CHECK: declare double @__exp10_finite(double)
110 declare double @__exp10_finite(double)
111
112 ; CHECK: declare float @__exp10f_finite(float)
113 declare float @__exp10f_finite(float)
114
115 ; CHECK: declare x86_fp80 @__exp10l_finite(x86_fp80)
116 declare x86_fp80 @__exp10l_finite(x86_fp80)
117
118 ; CHECK: declare double @__exp2_finite(double)
119 declare double @__exp2_finite(double)
120
121 ; CHECK: declare float @__exp2f_finite(float)
122 declare float @__exp2f_finite(float)
123
124 ; CHECK: declare x86_fp80 @__exp2l_finite(x86_fp80)
125 declare x86_fp80 @__exp2l_finite(x86_fp80)
126
127 ; CHECK: declare double @__exp_finite(double)
128 declare double @__exp_finite(double)
129
130 ; CHECK: declare float @__expf_finite(float)
131 declare float @__expf_finite(float)
132
133 ; CHECK: declare x86_fp80 @__expl_finite(x86_fp80)
134 declare x86_fp80 @__expl_finite(x86_fp80)
135
136 ; CHECK: declare double @__log10_finite(double)
137 declare double @__log10_finite(double)
138
139 ; CHECK: declare float @__log10f_finite(float)
140 declare float @__log10f_finite(float)
141
142 ; CHECK: declare x86_fp80 @__log10l_finite(x86_fp80)
143 declare x86_fp80 @__log10l_finite(x86_fp80)
144
145 ; CHECK: declare double @__log2_finite(double)
146 declare double @__log2_finite(double)
147
148 ; CHECK: declare float @__log2f_finite(float)
149 declare float @__log2f_finite(float)
150
151 ; CHECK: declare x86_fp80 @__log2l_finite(x86_fp80)
152 declare x86_fp80 @__log2l_finite(x86_fp80)
153
154 ; CHECK: declare double @__log_finite(double)
155 declare double @__log_finite(double)
156
157 ; CHECK: declare float @__logf_finite(float)
158 declare float @__logf_finite(float)
159
160 ; CHECK: declare x86_fp80 @__logl_finite(x86_fp80)
161 declare x86_fp80 @__logl_finite(x86_fp80)
162
163 ; CHECK: declare double @__pow_finite(double, double)
164 declare double @__pow_finite(double, double)
165
166 ; CHECK: declare float @__powf_finite(float, float)
167 declare float @__powf_finite(float, float)
168
169 ; CHECK: declare x86_fp80 @__powl_finite(x86_fp80, x86_fp80)
170 declare x86_fp80 @__powl_finite(x86_fp80, x86_fp80)
171
172 ; CHECK: declare double @__sinh_finite(double)
173 declare double @__sinh_finite(double)
174
175 ; CHECK: declare float @__sinhf_finite(float)
176 declare float @__sinhf_finite(float)
177
178 ; CHECK: declare x86_fp80 @__sinhl_finite(x86_fp80)
179 declare x86_fp80 @__sinhl_finite(x86_fp80)
180
181 ; CHECK: declare double @__sinpi(double)
182 declare double @__sinpi(double)
183
184 ; CHECK: declare float @__sinpif(float)
185 declare float @__sinpif(float)
186
187 ; CHECK: declare i32 @abs(i32) [[NOFREE_NOUNWIND_WILLRETURN:#[0-9]+]]
188 declare i32 @abs(i32)
189
190 ; CHECK: declare noundef i32 @access(i8* nocapture noundef readonly, i32 noundef) [[NOFREE_NOUNWIND:#[0-9]+]]
191 declare i32 @access(i8*, i32)
192
193 ; CHECK: declare double @acos(double) [[NOFREE_NOUNWIND_WILLRETURN]]
194 declare double @acos(double)
195
196 ; CHECK: declare float @acosf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
197 declare float @acosf(float)
198
199 ; CHECK: declare double @acosh(double) [[NOFREE_NOUNWIND_WILLRETURN]]
200 declare double @acosh(double)
201
202 ; CHECK: declare float @acoshf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
203 declare float @acoshf(float)
204
205 ; CHECK: declare x86_fp80 @acoshl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
206 declare x86_fp80 @acoshl(x86_fp80)
207
208 ; CHECK: declare x86_fp80 @acosl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
209 declare x86_fp80 @acosl(x86_fp80)
210
211 ; CHECK: declare noalias noundef i8* @aligned_alloc(i64, i64) [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND:#[0-9]+]]
212 declare i8* @aligned_alloc(i64, i64)
213
214 ; CHECK: declare double @asin(double) [[NOFREE_NOUNWIND_WILLRETURN]]
215 declare double @asin(double)
216
217 ; CHECK: declare float @asinf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
218 declare float @asinf(float)
219
220 ; CHECK: declare double @asinh(double) [[NOFREE_NOUNWIND_WILLRETURN]]
221 declare double @asinh(double)
222
223 ; CHECK: declare float @asinhf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
224 declare float @asinhf(float)
225
226 ; CHECK: declare x86_fp80 @asinhl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
227 declare x86_fp80 @asinhl(x86_fp80)
228
229 ; CHECK: declare x86_fp80 @asinl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
230 declare x86_fp80 @asinl(x86_fp80)
231
232 ; CHECK: declare double @atan(double) [[NOFREE_NOUNWIND_WILLRETURN]]
233 declare double @atan(double)
234
235 ; CHECK: declare double @atan2(double, double) [[NOFREE_NOUNWIND_WILLRETURN]]
236 declare double @atan2(double, double)
237
238 ; CHECK: declare float @atan2f(float, float) [[NOFREE_NOUNWIND_WILLRETURN]]
239 declare float @atan2f(float, float)
240
241 ; CHECK: declare x86_fp80 @atan2l(x86_fp80, x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
242 declare x86_fp80 @atan2l(x86_fp80, x86_fp80)
243
244 ; CHECK: declare float @atanf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
245 declare float @atanf(float)
246
247 ; CHECK: declare double @atanh(double) [[NOFREE_NOUNWIND_WILLRETURN]]
248 declare double @atanh(double)
249
250 ; CHECK: declare float @atanhf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
251 declare float @atanhf(float)
252
253 ; CHECK: declare x86_fp80 @atanhl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
254 declare x86_fp80 @atanhl(x86_fp80)
255
256 ; CHECK: declare x86_fp80 @atanl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
257 declare x86_fp80 @atanl(x86_fp80)
258
259 ; CHECK: declare double @atof(i8* nocapture) [[NOFREE_NOUNWIND_READONLY:#[0-9]+]]
260 declare double @atof(i8*)
261
262 ; CHECK: declare i32 @atoi(i8* nocapture) [[NOFREE_NOUNWIND_READONLY]]
263 declare i32 @atoi(i8*)
264
265 ; CHECK: declare i64 @atol(i8* nocapture) [[NOFREE_NOUNWIND_READONLY]]
266 declare i64 @atol(i8*)
267
268 ; CHECK: declare i64 @atoll(i8* nocapture) [[NOFREE_NOUNWIND_READONLY]]
269 declare i64 @atoll(i8*)
270
271 ; CHECK-LINUX: declare i32 @bcmp(i8* nocapture, i8* nocapture, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY:#[0-9]+]]
272 ; CHECK-DARWIN-NOT: declare i32 @bcmp(i8* nocapture, i8* nocapture, i64) [[NOFREE_NOUNWIND_READONLY]]
273 ; CHECK-UNKNOWN-NOT: declare i32 @bcmp(i8* nocapture, i8* nocapture, i64) [[NOFREE_NOUNWIND_READONLY]]
274 ; CHECK-NVPTX-NOT: declare i32 @bcmp(i8* nocapture, i8* nocapture, i64) [[NOFREE_NOUNWIND_READONLY]]
275 declare i32 @bcmp(i8*, i8*, i64)
276
277 ; CHECK: declare void @bcopy(i8* nocapture readonly, i8* nocapture writeonly, i64)  [[ARGMEMONLY_NOFREE_NOUNWIND:#[0-9]+]]
278 declare void @bcopy(i8*, i8*, i64)
279
280 ; CHECK: declare void @bzero(i8* nocapture writeonly, i64)  [[ARGMEMONLY_NOFREE_NOUNWIND:#[0-9]+]]
281 declare void @bzero(i8*, i64)
282
283 ; CHECK: declare noalias noundef i8* @calloc(i64, i64) [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN]]
284 declare i8* @calloc(i64, i64)
285
286 ; CHECK: declare double @cbrt(double) [[NOFREE_NOUNWIND_WILLRETURN]]
287 declare double @cbrt(double)
288
289 ; CHECK: declare float @cbrtf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
290 declare float @cbrtf(float)
291
292 ; CHECK: declare x86_fp80 @cbrtl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
293 declare x86_fp80 @cbrtl(x86_fp80)
294
295 ; CHECK: declare double @ceil(double) [[NOFREE_NOUNWIND_WILLRETURN]]
296 declare double @ceil(double)
297
298 ; CHECK: declare float @ceilf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
299 declare float @ceilf(float)
300
301 ; CHECK: declare x86_fp80 @ceill(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
302 declare x86_fp80 @ceill(x86_fp80)
303
304 ; CHECK: declare noundef i32 @chmod(i8* nocapture noundef readonly, i16 noundef zeroext) [[NOFREE_NOUNWIND]]
305 declare i32 @chmod(i8*, i16 zeroext)
306
307 ; CHECK: declare noundef i32 @chown(i8* nocapture noundef readonly, i32 noundef, i32 noundef) [[NOFREE_NOUNWIND]]
308 declare i32 @chown(i8*, i32, i32)
309
310 ; CHECK: declare void @clearerr(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
311 declare void @clearerr(%opaque*)
312
313 ; CHECK: declare noundef i32 @closedir(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
314 declare i32 @closedir(%opaque*)
315
316 ; CHECK: declare double @copysign(double, double) [[NOFREE_NOUNWIND_WILLRETURN]]
317 declare double @copysign(double, double)
318
319 ; CHECK: declare float @copysignf(float, float) [[NOFREE_NOUNWIND_WILLRETURN]]
320 declare float @copysignf(float, float)
321
322 ; CHECK: declare x86_fp80 @copysignl(x86_fp80, x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
323 declare x86_fp80 @copysignl(x86_fp80, x86_fp80)
324
325 ; CHECK: declare double @cos(double) [[NOFREE_NOUNWIND_WILLRETURN]]
326 declare double @cos(double)
327
328 ; CHECK: declare float @cosf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
329 declare float @cosf(float)
330
331 ; CHECK: declare double @cosh(double) [[NOFREE_NOUNWIND_WILLRETURN]]
332 declare double @cosh(double)
333
334 ; CHECK: declare float @coshf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
335 declare float @coshf(float)
336
337 ; CHECK: declare x86_fp80 @coshl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
338 declare x86_fp80 @coshl(x86_fp80)
339
340 ; CHECK: declare x86_fp80 @cosl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
341 declare x86_fp80 @cosl(x86_fp80)
342
343 ; CHECK: declare noundef i8* @ctermid(i8* nocapture noundef) [[NOFREE_NOUNWIND]]
344 declare i8* @ctermid(i8*)
345
346 ; CHECK: declare double @exp(double) [[NOFREE_NOUNWIND_WILLRETURN]]
347 declare double @exp(double)
348
349 ; CHECK: declare double @exp2(double) [[NOFREE_NOUNWIND_WILLRETURN]]
350 declare double @exp2(double)
351
352 ; CHECK: declare float @exp2f(float) [[NOFREE_NOUNWIND_WILLRETURN]]
353 declare float @exp2f(float)
354
355 ; CHECK: declare x86_fp80 @exp2l(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
356 declare x86_fp80 @exp2l(x86_fp80)
357
358 ; CHECK: declare float @expf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
359 declare float @expf(float)
360
361 ; CHECK: declare x86_fp80 @expl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
362 declare x86_fp80 @expl(x86_fp80)
363
364 ; CHECK: declare double @expm1(double) [[NOFREE_NOUNWIND_WILLRETURN]]
365 declare double @expm1(double)
366
367 ; CHECK: declare float @expm1f(float) [[NOFREE_NOUNWIND_WILLRETURN]]
368 declare float @expm1f(float)
369
370 ; CHECK: declare x86_fp80 @expm1l(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
371 declare x86_fp80 @expm1l(x86_fp80)
372
373 ; CHECK: declare double @fabs(double) [[NOFREE_NOUNWIND_WILLRETURN]]
374 declare double @fabs(double)
375
376 ; CHECK: declare float @fabsf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
377 declare float @fabsf(float)
378
379 ; CHECK: declare x86_fp80 @fabsl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
380 declare x86_fp80 @fabsl(x86_fp80)
381
382 ; CHECK: declare noundef i32 @fclose(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
383 declare i32 @fclose(%opaque*)
384
385 ; CHECK: declare noalias noundef %opaque* @fdopen(i32 noundef, i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
386 declare %opaque* @fdopen(i32, i8*)
387
388 ; CHECK: declare noundef i32 @feof(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
389 declare i32 @feof(%opaque*)
390
391 ; CHECK: declare noundef i32 @ferror(%opaque* nocapture noundef) [[NOFREE_NOUNWIND_READONLY:#[0-9]+]]
392 declare i32 @ferror(%opaque*)
393
394 ; CHECK: declare noundef i32 @fflush(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
395 declare i32 @fflush(%opaque*)
396
397 ; CHECK: declare i32 @ffs(i32) [[NOFREE_NOUNWIND_WILLRETURN]]
398 declare i32 @ffs(i32)
399
400 ; CHECK: declare i32 @ffsl(i64) [[NOFREE_NOUNWIND_WILLRETURN]]
401 declare i32 @ffsl(i64)
402
403 ; CHECK: declare i32 @ffsll(i64) [[NOFREE_NOUNWIND_WILLRETURN]]
404 declare i32 @ffsll(i64)
405
406 ; CHECK: declare noundef i32 @fgetc(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
407 declare i32 @fgetc(%opaque*)
408
409 ; CHECK: declare noundef i32 @fgetpos(%opaque* nocapture noundef, i64* nocapture noundef) [[NOFREE_NOUNWIND]]
410 declare i32 @fgetpos(%opaque*, i64*)
411
412 ; CHECK: declare noundef i8* @fgets(i8* noundef, i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
413 declare i8* @fgets(i8*, i32, %opaque*)
414
415 ; CHECK: declare noundef i32 @fileno(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
416 declare i32 @fileno(%opaque*)
417
418 ; CHECK: declare void @flockfile(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
419 declare void @flockfile(%opaque*)
420
421 ; CHECK: declare double @floor(double) [[NOFREE_NOUNWIND_WILLRETURN]]
422 declare double @floor(double)
423
424 ; CHECK: declare float @floorf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
425 declare float @floorf(float)
426
427 ; CHECK: declare x86_fp80 @floorl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
428 declare x86_fp80 @floorl(x86_fp80)
429
430 ; CHECK: declare i32 @fls(i32)
431 declare i32 @fls(i32)
432
433 ; CHECK: declare i32 @flsl(i64)
434 declare i32 @flsl(i64)
435
436 ; CHECK: declare i32 @flsll(i64)
437 declare i32 @flsll(i64)
438
439 ; CHECK: declare double @fmax(double, double) [[NOFREE_NOUNWIND_WILLRETURN]]
440 declare double @fmax(double, double)
441
442 ; CHECK: declare float @fmaxf(float, float) [[NOFREE_NOUNWIND_WILLRETURN]]
443 declare float @fmaxf(float, float)
444
445 ; CHECK: declare x86_fp80 @fmaxl(x86_fp80, x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
446 declare x86_fp80 @fmaxl(x86_fp80, x86_fp80)
447
448 ; CHECK: declare double @fmin(double, double) [[NOFREE_NOUNWIND_WILLRETURN]]
449 declare double @fmin(double, double)
450
451 ; CHECK: declare float @fminf(float, float) [[NOFREE_NOUNWIND_WILLRETURN]]
452 declare float @fminf(float, float)
453
454 ; CHECK: declare x86_fp80 @fminl(x86_fp80, x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
455 declare x86_fp80 @fminl(x86_fp80, x86_fp80)
456
457 ; CHECK: declare double @fmod(double, double) [[NOFREE_NOUNWIND_WILLRETURN]]
458 declare double @fmod(double, double)
459
460 ; CHECK: declare float @fmodf(float, float) [[NOFREE_NOUNWIND_WILLRETURN]]
461 declare float @fmodf(float, float)
462
463 ; CHECK: declare x86_fp80 @fmodl(x86_fp80, x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
464 declare x86_fp80 @fmodl(x86_fp80, x86_fp80)
465
466 ; CHECK: declare noalias noundef %opaque* @fopen(i8* nocapture noundef readonly, i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
467 declare %opaque* @fopen(i8*, i8*)
468
469 ; CHECK: declare noundef i32 @fprintf(%opaque* nocapture noundef, i8* nocapture noundef readonly, ...) [[NOFREE_NOUNWIND]]
470 declare i32 @fprintf(%opaque*, i8*, ...)
471
472 ; CHECK: declare noundef i32 @fputc(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
473 declare i32 @fputc(i32, %opaque*)
474
475 ; CHECK: declare noundef i32 @fputs(i8* nocapture noundef readonly, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
476 declare i32 @fputs(i8*, %opaque*)
477
478 ; CHECK: declare noundef i64 @fread(i8* nocapture noundef, i64 noundef, i64 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
479 declare i64 @fread(i8*, i64, i64, %opaque*)
480
481 ; CHECK: declare void @free(i8* nocapture noundef) [[INACCESSIBLEMEMORARGONLY_NOUNWIND_WILLRETURN:#[0-9]+]]
482 declare void @free(i8*)
483
484 ; CHECK: declare double @frexp(double, i32* nocapture) [[NOFREE_NOUNWIND_WILLRETURN]]
485 declare double @frexp(double, i32*)
486
487 ; CHECK: declare float @frexpf(float, i32* nocapture) [[NOFREE_NOUNWIND_WILLRETURN]]
488 declare float @frexpf(float, i32*)
489
490 ; CHECK: declare x86_fp80 @frexpl(x86_fp80, i32* nocapture) [[NOFREE_NOUNWIND_WILLRETURN]]
491 declare x86_fp80 @frexpl(x86_fp80, i32*)
492
493 ; CHECK: declare noundef i32 @fscanf(%opaque* nocapture noundef, i8* nocapture noundef readonly, ...) [[NOFREE_NOUNWIND]]
494 declare i32 @fscanf(%opaque*, i8*, ...)
495
496 ; CHECK: declare noundef i32 @fseek(%opaque* nocapture noundef, i64 noundef, i32 noundef) [[NOFREE_NOUNWIND]]
497 declare i32 @fseek(%opaque*, i64, i32)
498
499 ; CHECK: declare noundef i32 @fseeko(%opaque* nocapture noundef, i64 noundef, i32 noundef) [[NOFREE_NOUNWIND]]
500 declare i32 @fseeko(%opaque*, i64, i32)
501
502 ; CHECK-LINUX: declare noundef i32 @fseeko64(%opaque* nocapture noundef, i64 noundef, i32 noundef) [[NOFREE_NOUNWIND]]
503 declare i32 @fseeko64(%opaque*, i64, i32)
504
505 ; CHECK: declare noundef i32 @fsetpos(%opaque* nocapture noundef, i64* noundef) [[NOFREE_NOUNWIND]]
506 declare i32 @fsetpos(%opaque*, i64*)
507
508 ; CHECK: declare noundef i32 @fstat(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
509 declare i32 @fstat(i32, %opaque*)
510
511 ; CHECK-LINUX: declare noundef i32 @fstat64(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
512 declare i32 @fstat64(i32, %opaque*)
513
514 ; CHECK: declare noundef i32 @fstatvfs(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
515 declare i32 @fstatvfs(i32, %opaque*)
516
517 ; CHECK-LINUX: declare noundef i32 @fstatvfs64(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
518 declare i32 @fstatvfs64(i32, %opaque*)
519
520 ; CHECK: declare noundef i64 @ftell(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
521 declare i64 @ftell(%opaque*)
522
523 ; CHECK: declare noundef i64 @ftello(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
524 declare i64 @ftello(%opaque*)
525
526 ; CHECK-LINUX: declare noundef i64 @ftello64(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
527 declare i64 @ftello64(%opaque*)
528
529 ; CHECK: declare noundef i32 @ftrylockfile(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
530 declare i32 @ftrylockfile(%opaque*)
531
532 ; CHECK: declare void @funlockfile(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
533 declare void @funlockfile(%opaque*)
534
535 ; CHECK: declare noundef i64 @fwrite(i8* nocapture noundef, i64 noundef, i64 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
536 declare i64 @fwrite(i8*, i64, i64, %opaque*)
537
538 ; CHECK: declare noundef i32 @getc(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
539 declare i32 @getc(%opaque*)
540
541 ; CHECK: declare noundef i32 @getc_unlocked(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
542 declare i32 @getc_unlocked(%opaque*)
543
544 ; CHECK: declare noundef i32 @getchar() [[NOFREE_NOUNWIND]]
545 declare i32 @getchar()
546
547 ; CHECK: declare noundef i32 @getchar_unlocked() [[NOFREE_NOUNWIND]]
548 declare i32 @getchar_unlocked()
549
550 ; CHECK: declare noundef i8* @getenv(i8* nocapture noundef) [[NOFREE_NOUNWIND_READONLY]]
551 declare i8* @getenv(i8*)
552
553 ; CHECK: declare noundef i32 @getitimer(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
554 declare i32 @getitimer(i32, %opaque*)
555
556 ; CHECK: declare noundef i32 @getlogin_r(i8* nocapture noundef, i64 noundef) [[NOFREE_NOUNWIND]]
557 declare i32 @getlogin_r(i8*, i64)
558
559 ; CHECK: declare noundef %opaque* @getpwnam(i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
560 declare %opaque* @getpwnam(i8*)
561
562 ; CHECK: declare noundef i8* @gets(i8* noundef) [[NOFREE_NOUNWIND]]
563 declare i8* @gets(i8*)
564
565 ; CHECK: declare noundef i32 @gettimeofday(%opaque* nocapture noundef, i8* nocapture noundef) [[NOFREE_NOUNWIND]]
566 declare i32 @gettimeofday(%opaque*, i8*)
567
568 ; CHECK: declare i32 @isascii(i32) [[NOFREE_NOUNWIND_WILLRETURN]]
569 declare i32 @isascii(i32)
570
571 ; CHECK: declare i32 @isdigit(i32) [[NOFREE_NOUNWIND_WILLRETURN]]
572 declare i32 @isdigit(i32)
573
574 ; CHECK: declare i64 @labs(i64) [[NOFREE_NOUNWIND_WILLRETURN]]
575 declare i64 @labs(i64)
576
577 ; CHECK: declare noundef i32 @lchown(i8* nocapture noundef readonly, i32 noundef, i32 noundef) [[NOFREE_NOUNWIND]]
578 declare i32 @lchown(i8*, i32, i32)
579
580 ; CHECK: declare double @ldexp(double, i32 signext) [[NOFREE_WILLRETURN:#[0-9]+]]
581 declare double @ldexp(double, i32)
582
583 ; CHECK: declare float @ldexpf(float, i32 signext) [[NOFREE_WILLRETURN]]
584 declare float @ldexpf(float, i32)
585
586 ; CHECK: declare x86_fp80 @ldexpl(x86_fp80, i32 signext) [[NOFREE_WILLRETURN]]
587 declare x86_fp80 @ldexpl(x86_fp80, i32)
588
589 ; CHECK: declare i64 @llabs(i64) [[NOFREE_NOUNWIND_WILLRETURN]]
590 declare i64 @llabs(i64)
591
592 ; CHECK: declare double @log(double) [[NOFREE_NOUNWIND_WILLRETURN]]
593 declare double @log(double)
594
595 ; CHECK: declare double @log10(double) [[NOFREE_NOUNWIND_WILLRETURN]]
596 declare double @log10(double)
597
598 ; CHECK: declare float @log10f(float) [[NOFREE_NOUNWIND_WILLRETURN]]
599 declare float @log10f(float)
600
601 ; CHECK: declare x86_fp80 @log10l(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
602 declare x86_fp80 @log10l(x86_fp80)
603
604 ; CHECK: declare double @log1p(double) [[NOFREE_NOUNWIND_WILLRETURN]]
605 declare double @log1p(double)
606
607 ; CHECK: declare float @log1pf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
608 declare float @log1pf(float)
609
610 ; CHECK: declare x86_fp80 @log1pl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
611 declare x86_fp80 @log1pl(x86_fp80)
612
613 ; CHECK: declare double @log2(double) [[NOFREE_NOUNWIND_WILLRETURN]]
614 declare double @log2(double)
615
616 ; CHECK: declare float @log2f(float) [[NOFREE_NOUNWIND_WILLRETURN]]
617 declare float @log2f(float)
618
619 ; CHECK: declare x86_fp80 @log2l(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
620 declare x86_fp80 @log2l(x86_fp80)
621
622 ; CHECK: declare double @logb(double) [[NOFREE_NOUNWIND_WILLRETURN]]
623 declare double @logb(double)
624
625 ; CHECK: declare float @logbf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
626 declare float @logbf(float)
627
628 ; CHECK: declare x86_fp80 @logbl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
629 declare x86_fp80 @logbl(x86_fp80)
630
631 ; CHECK: declare float @logf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
632 declare float @logf(float)
633
634 ; CHECK: declare x86_fp80 @logl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
635 declare x86_fp80 @logl(x86_fp80)
636
637 ; CHECK: declare noundef i32 @lstat(i8* nocapture noundef readonly, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
638 declare i32 @lstat(i8*, %opaque*)
639
640 ; CHECK-LINUX: declare noundef i32 @lstat64(i8* nocapture noundef readonly, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
641 declare i32 @lstat64(i8*, %opaque*)
642
643 ; CHECK: declare noalias noundef i8* @malloc(i64) [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN]]
644 declare i8* @malloc(i64)
645
646 ; CHECK-LINUX: declare noalias noundef i8* @memalign(i64, i64) [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN]]
647 declare i8* @memalign(i64, i64)
648
649 ; CHECK: declare i8* @memccpy(i8* noalias writeonly, i8* noalias nocapture readonly, i32, i64) [[ARGMEMONLY_NOFREE_NOUNWIND:#[0-9]+]]
650 declare i8* @memccpy(i8*, i8*, i32, i64)
651
652 ; CHECK-LINUX:   declare i8* @memchr(i8*, i32, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY]]
653 ; CHECK-DARWIN:  declare i8* @memchr(i8*, i32, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY:#[0-9]+]]
654 ; CHECK-UNKNOWN: declare i8* @memchr(i8*, i32, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY:#[0-9]+]]
655 declare i8* @memchr(i8*, i32, i64)
656
657 ; CHECK: declare i32 @memcmp(i8* nocapture, i8* nocapture, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY]]
658 declare i32 @memcmp(i8*, i8*, i64)
659
660 ; CHECK: declare i8* @memcpy(i8* noalias returned writeonly, i8* noalias nocapture readonly, i64) [[ARGMEMONLY_NOFREE_NOUNWIND]]
661 declare i8* @memcpy(i8*, i8*, i64)
662
663 ; CHECK-DARWIN: declare i8* @__memcpy_chk(i8*, i8*, i64, i64) [[NOFREE_NOUNWIND]]
664 ; CHECK-LINUX: declare i8* @__memcpy_chk(i8*, i8*, i64, i64) [[NOFREE_NOUNWIND]]
665 declare i8* @__memcpy_chk(i8*, i8*, i64, i64)
666
667 ; CHECK: declare i8* @mempcpy(i8* noalias writeonly, i8* noalias nocapture readonly, i64) [[ARGMEMONLY_NOFREE_NOUNWIND]]
668 declare i8* @mempcpy(i8*, i8*, i64)
669
670 ; CHECK: declare i8* @memmove(i8* returned writeonly, i8* nocapture readonly, i64) [[ARGMEMONLY_NOFREE_NOUNWIND]]
671 declare i8* @memmove(i8*, i8*, i64)
672
673 ; CHECK: declare i8* @memset(i8* writeonly, i32, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN:#[0-9]+]]
674 declare i8* @memset(i8*, i32, i64)
675
676 ; CHECK: declare noundef i32 @mkdir(i8* nocapture noundef readonly, i16 noundef zeroext) [[NOFREE_NOUNWIND]]
677 declare i32 @mkdir(i8*, i16 zeroext)
678
679 ; CHECK: declare noundef i64 @mktime(%opaque* nocapture noundef) [[NOFREE_NOUNWIND_WILLRETURN]]
680 declare i64 @mktime(%opaque*)
681
682 ; CHECK: declare double @modf(double, double* nocapture) [[NOFREE_NOUNWIND_WILLRETURN]]
683 declare double @modf(double, double*)
684
685 ; CHECK: declare float @modff(float, float* nocapture) [[NOFREE_NOUNWIND_WILLRETURN]]
686 declare float @modff(float, float*)
687
688 ; CHECK: declare x86_fp80 @modfl(x86_fp80, x86_fp80* nocapture) [[NOFREE_NOUNWIND_WILLRETURN]]
689 declare x86_fp80 @modfl(x86_fp80, x86_fp80*)
690
691 ; CHECK: declare double @nearbyint(double) [[NOFREE_NOUNWIND_WILLRETURN]]
692 declare double @nearbyint(double)
693
694 ; CHECK: declare float @nearbyintf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
695 declare float @nearbyintf(float)
696
697 ; CHECK: declare x86_fp80 @nearbyintl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
698 declare x86_fp80 @nearbyintl(x86_fp80)
699
700 ; CHECK: declare noundef i32 @open(i8* nocapture noundef readonly, i32 noundef, ...) [[NOFREE:#[0-9]+]]
701 declare i32 @open(i8*, i32, ...)
702
703 ; CHECK-LINUX: declare noundef i32 @open64(i8* nocapture noundef readonly, i32 noundef, ...) [[NOFREE]]
704 declare i32 @open64(i8*, i32, ...)
705
706 ; CHECK: declare noalias noundef %opaque* @opendir(i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
707 declare %opaque* @opendir(i8*)
708
709 ; CHECK: declare noundef i32 @pclose(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
710 declare i32 @pclose(%opaque*)
711
712 ; CHECK: declare void @perror(i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
713 declare void @perror(i8*)
714
715 ; CHECK: declare noalias noundef %opaque* @popen(i8* nocapture noundef readonly, i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
716 declare %opaque* @popen(i8*, i8*)
717
718 ; CHECK: declare i32 @posix_memalign(i8**, i64, i64) [[NOFREE]]
719 declare i32 @posix_memalign(i8**, i64, i64)
720
721 ; CHECK: declare double @pow(double, double) [[NOFREE_NOUNWIND_WILLRETURN]]
722 declare double @pow(double, double)
723
724 ; CHECK: declare float @powf(float, float) [[NOFREE_NOUNWIND_WILLRETURN]]
725 declare float @powf(float, float)
726
727 ; CHECK: declare x86_fp80 @powl(x86_fp80, x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
728 declare x86_fp80 @powl(x86_fp80, x86_fp80)
729
730 ; CHECK: declare noundef i64 @pread(i32 noundef, i8* nocapture noundef, i64 noundef, i64 noundef) [[NOFREE]]
731 declare i64 @pread(i32, i8*, i64, i64)
732
733 ; CHECK: declare noundef i32 @printf(i8* nocapture noundef readonly, ...) [[NOFREE_NOUNWIND]]
734 declare i32 @printf(i8*, ...)
735
736 ; CHECK: declare noundef i32 @putc(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
737 declare i32 @putc(i32, %opaque*)
738
739 ; CHECK: declare noundef i32 @putchar(i32 noundef) [[NOFREE_NOUNWIND]]
740 declare i32 @putchar(i32)
741
742 ; CHECK: declare noundef i32 @putchar_unlocked(i32 noundef) [[NOFREE_NOUNWIND]]
743 declare i32 @putchar_unlocked(i32)
744
745 ; CHECK: declare noundef i32 @puts(i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
746 declare i32 @puts(i8*)
747
748 ; CHECK: declare noundef i64 @pwrite(i32 noundef, i8* nocapture noundef readonly, i64 noundef, i64 noundef) [[NOFREE]]
749 declare i64 @pwrite(i32, i8*, i64, i64)
750
751 ; CHECK: declare void @qsort(i8* noundef, i64 noundef, i64 noundef, i32 (i8*, i8*)* nocapture noundef) [[NOFREE]]
752 declare void @qsort(i8*, i64, i64, i32 (i8*, i8*)*)
753
754 ; CHECK: declare noundef i64 @read(i32 noundef, i8* nocapture noundef, i64 noundef) [[NOFREE]]
755 declare i64 @read(i32, i8*, i64)
756
757 ; CHECK: declare noundef i64 @readlink(i8* nocapture noundef readonly, i8* nocapture noundef, i64 noundef) [[NOFREE_NOUNWIND]]
758 declare i64 @readlink(i8*, i8*, i64)
759
760 ; CHECK: declare noalias noundef i8* @realloc(i8* nocapture, i64) [[INACCESSIBLEMEMORARGONLY_NOUNWIND_WILLRETURN]]
761 declare i8* @realloc(i8*, i64)
762
763 ; CHECK: declare noundef i8* @reallocf(i8*, i64)
764 declare i8* @reallocf(i8*, i64)
765
766 ; CHECK: declare noundef i8* @realpath(i8* nocapture noundef readonly, i8* noundef) [[NOFREE_NOUNWIND]]
767 declare i8* @realpath(i8*, i8*)
768
769 ; CHECK: declare noundef i32 @remove(i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
770 declare i32 @remove(i8*)
771
772 ; CHECK: declare noundef i32 @rename(i8* nocapture noundef readonly, i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
773 declare i32 @rename(i8*, i8*)
774
775 ; CHECK: declare void @rewind(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
776 declare void @rewind(%opaque*)
777
778 ; CHECK: declare double @rint(double) [[NOFREE_NOUNWIND_WILLRETURN]]
779 declare double @rint(double)
780
781 ; CHECK: declare float @rintf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
782 declare float @rintf(float)
783
784 ; CHECK: declare x86_fp80 @rintl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
785 declare x86_fp80 @rintl(x86_fp80)
786
787 ; CHECK: declare noundef i32 @rmdir(i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
788 declare i32 @rmdir(i8*)
789
790 ; CHECK: declare double @round(double) [[NOFREE_NOUNWIND_WILLRETURN]]
791 declare double @round(double)
792
793 ; CHECK: declare float @roundf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
794 declare float @roundf(float)
795
796 ; CHECK: declare x86_fp80 @roundl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
797 declare x86_fp80 @roundl(x86_fp80)
798
799 ; CHECK: declare noundef i32 @scanf(i8* nocapture noundef readonly, ...) [[NOFREE_NOUNWIND]]
800 declare i32 @scanf(i8*, ...)
801
802 ; CHECK: declare void @setbuf(%opaque* nocapture noundef, i8* noundef) [[NOFREE_NOUNWIND]]
803 declare void @setbuf(%opaque*, i8*)
804
805 ; CHECK: declare noundef i32 @setitimer(i32 noundef, %opaque* nocapture noundef readonly, %opaque* nocapture noundef) [[NOFREE_NOUNWIND_WILLRETURN]]
806 declare i32 @setitimer(i32, %opaque*, %opaque*)
807
808 ; CHECK: declare noundef i32 @setvbuf(%opaque* nocapture noundef, i8* noundef, i32 noundef, i64 noundef) [[NOFREE_NOUNWIND]]
809 declare i32 @setvbuf(%opaque*, i8*, i32, i64)
810
811 ; CHECK: declare double @sin(double) [[NOFREE_NOUNWIND_WILLRETURN]]
812 declare double @sin(double)
813
814 ; CHECK: declare float @sinf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
815 declare float @sinf(float)
816
817 ; CHECK: declare double @sinh(double) [[NOFREE_NOUNWIND_WILLRETURN]]
818 declare double @sinh(double)
819
820 ; CHECK: declare float @sinhf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
821 declare float @sinhf(float)
822
823 ; CHECK: declare x86_fp80 @sinhl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
824 declare x86_fp80 @sinhl(x86_fp80)
825
826 ; CHECK: declare x86_fp80 @sinl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
827 declare x86_fp80 @sinl(x86_fp80)
828
829 ; CHECK: declare noundef i32 @snprintf(i8* noalias nocapture noundef writeonly, i64 noundef, i8* nocapture noundef readonly, ...) [[NOFREE_NOUNWIND]]
830 declare i32 @snprintf(i8*, i64, i8*, ...)
831
832 ; CHECK: declare noundef i32 @sprintf(i8* noalias nocapture noundef writeonly, i8* nocapture noundef readonly, ...) [[NOFREE_NOUNWIND]]
833 declare i32 @sprintf(i8*, i8*, ...)
834
835 ; CHECK: declare double @sqrt(double) [[NOFREE_NOUNWIND_WILLRETURN]]
836 declare double @sqrt(double)
837
838 ; CHECK: declare float @sqrtf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
839 declare float @sqrtf(float)
840
841 ; CHECK: declare x86_fp80 @sqrtl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
842 declare x86_fp80 @sqrtl(x86_fp80)
843
844 ; CHECK: declare noundef i32 @sscanf(i8* nocapture noundef readonly, i8* nocapture noundef readonly, ...) [[NOFREE_NOUNWIND]]
845 declare i32 @sscanf(i8*, i8*, ...)
846
847 ; CHECK: declare noundef i32 @stat(i8* nocapture noundef readonly, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
848 declare i32 @stat(i8*, %opaque*)
849
850 ; CHECK-LINUX: declare noundef i32 @stat64(i8* nocapture noundef readonly, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
851 declare i32 @stat64(i8*, %opaque*)
852
853 ; CHECK: declare noundef i32 @statvfs(i8* nocapture noundef readonly, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
854 declare i32 @statvfs(i8*, %opaque*)
855
856 ; CHECK-LINUX: declare noundef i32 @statvfs64(i8* nocapture noundef readonly, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
857 declare i32 @statvfs64(i8*, %opaque*)
858
859 ; CHECK: declare i8* @stpcpy(i8* noalias writeonly, i8* noalias nocapture readonly) [[ARGMEMONLY_NOFREE_NOUNWIND]]
860 declare i8* @stpcpy(i8*, i8*)
861
862 ; CHECK: declare i8* @stpncpy(i8* noalias writeonly, i8* noalias nocapture readonly, i64) [[ARGMEMONLY_NOFREE_NOUNWIND]]
863 declare i8* @stpncpy(i8*, i8*, i64)
864
865 ; CHECK: declare i32 @strcasecmp(i8* nocapture, i8* nocapture) [[NOFREE_NOUNWIND_READONLY_WILLRETURN:#[0-9]+]]
866 declare i32 @strcasecmp(i8*, i8*)
867
868 ; CHECK: declare i8* @strcat(i8* noalias returned writeonly, i8* noalias nocapture readonly) [[ARGMEMONLY_NOFREE_NOUNWIND]]
869 declare i8* @strcat(i8*, i8*)
870
871 ; CHECK: declare i8* @strchr(i8*, i32) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY]]
872 declare i8* @strchr(i8*, i32)
873
874 ; CHECK: declare i32 @strcmp(i8* nocapture, i8* nocapture) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY]]
875 declare i32 @strcmp(i8*, i8*)
876
877 ; CHECK: declare i32 @strcoll(i8* nocapture, i8* nocapture) [[NOFREE_NOUNWIND_READONLY_WILLRETURN]]
878 declare i32 @strcoll(i8*, i8*)
879
880 ; CHECK: declare i8* @strcpy(i8* noalias returned writeonly, i8* noalias nocapture readonly) [[ARGMEMONLY_NOFREE_NOUNWIND]]
881 declare i8* @strcpy(i8*, i8*)
882
883 ; CHECK: declare i64 @strcspn(i8* nocapture, i8* nocapture) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY]]
884 declare i64 @strcspn(i8*, i8*)
885
886 ; CHECK: declare noalias i8* @strdup(i8* nocapture readonly) [[INACCESSIBLEMEMORARGONLY_NOFREE_NOUNWIND_WILLRETURN:#[0-9]+]]
887 declare i8* @strdup(i8*)
888
889 ; CHECK: declare i64 @strlen(i8* nocapture) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY]]
890 declare i64 @strlen(i8*)
891
892 ; CHECK: declare i32 @strncasecmp(i8* nocapture, i8* nocapture, i64) [[NOFREE_NOUNWIND_READONLY_WILLRETURN]]
893 declare i32 @strncasecmp(i8*, i8*, i64)
894
895 ; CHECK: declare i8* @strncat(i8* noalias returned writeonly, i8* noalias nocapture readonly, i64) [[ARGMEMONLY_NOFREE_NOUNWIND]]
896 declare i8* @strncat(i8*, i8*, i64)
897
898 ; CHECK: declare i32 @strncmp(i8* nocapture, i8* nocapture, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY]]
899 declare i32 @strncmp(i8*, i8*, i64)
900
901 ; CHECK: declare i8* @strncpy(i8* noalias returned writeonly, i8* noalias nocapture readonly, i64) [[ARGMEMONLY_NOFREE_NOUNWIND]]
902 declare i8* @strncpy(i8*, i8*, i64)
903
904 ; CHECK: declare noalias i8* @strndup(i8* nocapture readonly, i64) [[INACCESSIBLEMEMORARGONLY_NOFREE_NOUNWIND_WILLRETURN]]
905 declare i8* @strndup(i8*, i64)
906
907 ; CHECK: declare i64 @strnlen(i8*, i64) [[NOFREE_NOUNWIND_WILLRETURN]]
908 declare i64 @strnlen(i8*, i64)
909
910 ; CHECK: declare i8* @strpbrk(i8*, i8* nocapture) [[ARGMEMONLY_NOFREE_NOUNWIND:#[0-9]+]]
911 declare i8* @strpbrk(i8*, i8*)
912
913 ; CHECK: declare i8* @strrchr(i8*, i32) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY]]
914 declare i8* @strrchr(i8*, i32)
915
916 ; CHECK: declare i64 @strspn(i8* nocapture, i8* nocapture) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY]]
917 declare i64 @strspn(i8*, i8*)
918
919 ; CHECK: declare i8* @strstr(i8*, i8* nocapture) [[ARGMEMONLY_NOFREE_NOUNWIND]]
920 declare i8* @strstr(i8*, i8*)
921
922 ; CHECK: declare double @strtod(i8* readonly, i8** nocapture) [[NOFREE_NOUNWIND_WILLRETURN]]
923 declare double @strtod(i8*, i8**)
924
925 ; CHECK: declare float @strtof(i8* readonly, i8** nocapture) [[NOFREE_NOUNWIND_WILLRETURN]]
926 declare float @strtof(i8*, i8**)
927
928 ; CHECK: declare i8* @strtok(i8*, i8* nocapture readonly) [[NOFREE_NOUNWIND_WILLRETURN]]
929 declare i8* @strtok(i8*, i8*)
930
931 ; CHECK: declare i8* @strtok_r(i8*, i8* nocapture readonly, i8**) [[NOFREE_NOUNWIND_WILLRETURN]]
932 declare i8* @strtok_r(i8*, i8*, i8**)
933
934 ; CHECK: declare i64 @strtol(i8* readonly, i8** nocapture, i32) [[NOFREE_NOUNWIND_WILLRETURN]]
935 declare i64 @strtol(i8*, i8**, i32)
936
937 ; CHECK: declare x86_fp80 @strtold(i8* readonly, i8** nocapture) [[NOFREE_NOUNWIND_WILLRETURN]]
938 declare x86_fp80 @strtold(i8*, i8**)
939
940 ; CHECK: declare i64 @strtoll(i8* readonly, i8** nocapture, i32) [[NOFREE_NOUNWIND_WILLRETURN]]
941 declare i64 @strtoll(i8*, i8**, i32)
942
943 ; CHECK: declare i64 @strtoul(i8* readonly, i8** nocapture, i32) [[NOFREE_NOUNWIND_WILLRETURN]]
944 declare i64 @strtoul(i8*, i8**, i32)
945
946 ; CHECK: declare i64 @strtoull(i8* readonly, i8** nocapture, i32) [[NOFREE_NOUNWIND_WILLRETURN]]
947 declare i64 @strtoull(i8*, i8**, i32)
948
949 ; CHECK: declare i64 @strxfrm(i8* nocapture, i8* nocapture readonly, i64) [[NOFREE_NOUNWIND_WILLRETURN]]
950 declare i64 @strxfrm(i8*, i8*, i64)
951
952 ; CHECK: declare noundef i32 @system(i8* nocapture noundef readonly) [[NOFREE]]
953 declare i32 @system(i8*)
954
955 ; CHECK: declare double @tan(double) [[NOFREE_NOUNWIND_WILLRETURN]]
956 declare double @tan(double)
957
958 ; CHECK: declare float @tanf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
959 declare float @tanf(float)
960
961 ; CHECK: declare double @tanh(double) [[NOFREE_NOUNWIND_WILLRETURN]]
962 declare double @tanh(double)
963
964 ; CHECK: declare float @tanhf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
965 declare float @tanhf(float)
966
967 ; CHECK: declare x86_fp80 @tanhl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
968 declare x86_fp80 @tanhl(x86_fp80)
969
970 ; CHECK: declare x86_fp80 @tanl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
971 declare x86_fp80 @tanl(x86_fp80)
972
973 ; CHECK: declare noundef i64 @times(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
974 declare i64 @times(%opaque*)
975
976 ; CHECK: declare noalias noundef %opaque* @tmpfile() [[NOFREE_NOUNWIND]]
977 declare %opaque* @tmpfile()
978
979 ; CHECK-LINUX: declare noalias noundef %opaque* @tmpfile64() [[NOFREE_NOUNWIND]]
980 declare %opaque* @tmpfile64()
981
982 ; CHECK: declare i32 @toascii(i32) [[NOFREE_NOUNWIND_WILLRETURN]]
983 declare i32 @toascii(i32)
984
985 ; CHECK: declare double @trunc(double) [[NOFREE_NOUNWIND_WILLRETURN]]
986 declare double @trunc(double)
987
988 ; CHECK: declare float @truncf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
989 declare float @truncf(float)
990
991 ; CHECK: declare x86_fp80 @truncl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
992 declare x86_fp80 @truncl(x86_fp80)
993
994 ; CHECK: declare noundef i32 @uname(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
995 declare i32 @uname(%opaque*)
996
997 ; CHECK: declare noundef i32 @ungetc(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
998 declare i32 @ungetc(i32, %opaque*)
999
1000 ; CHECK: declare noundef i32 @unlink(i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
1001 declare i32 @unlink(i8*)
1002
1003 ; CHECK: declare noundef i32 @unsetenv(i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
1004 declare i32 @unsetenv(i8*)
1005
1006 ; CHECK: declare noundef i32 @utime(i8* nocapture noundef readonly, %opaque* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
1007 declare i32 @utime(i8*, %opaque*)
1008
1009 ; CHECK: declare noundef i32 @utimes(i8* nocapture noundef readonly, %opaque* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
1010 declare i32 @utimes(i8*, %opaque*)
1011
1012 ; CHECK: declare noalias noundef i8* @valloc(i64) [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN]]
1013 declare i8* @valloc(i64)
1014
1015 ; CHECK: declare noundef i32 @vfprintf(%opaque* nocapture noundef, i8* nocapture noundef readonly, %opaque* noundef) [[NOFREE_NOUNWIND]]
1016 declare i32 @vfprintf(%opaque*, i8*, %opaque*)
1017
1018 ; CHECK: declare noundef i32 @vfscanf(%opaque* nocapture noundef, i8* nocapture noundef readonly, %opaque* noundef) [[NOFREE_NOUNWIND]]
1019 declare i32 @vfscanf(%opaque*, i8*, %opaque*)
1020
1021 ; CHECK: declare noundef i32 @vprintf(i8* nocapture noundef readonly, %opaque* noundef) [[NOFREE_NOUNWIND]]
1022 declare i32 @vprintf(i8*, %opaque*)
1023
1024 ; CHECK: declare noundef i32 @vscanf(i8* nocapture noundef readonly, %opaque* noundef) [[NOFREE_NOUNWIND]]
1025 declare i32 @vscanf(i8*, %opaque*)
1026
1027 ; CHECK: declare noundef i32 @vsnprintf(i8* nocapture noundef, i64 noundef, i8* nocapture noundef readonly, %opaque* noundef) [[NOFREE_NOUNWIND]]
1028 declare i32 @vsnprintf(i8*, i64, i8*, %opaque*)
1029
1030 ; CHECK: declare noundef i32 @vsprintf(i8* nocapture noundef, i8* nocapture noundef readonly, %opaque* noundef) [[NOFREE_NOUNWIND]]
1031 declare i32 @vsprintf(i8*, i8*, %opaque*)
1032
1033 ; CHECK: declare noundef i32 @vsscanf(i8* nocapture noundef readonly, i8* nocapture noundef readonly, %opaque* noundef) [[NOFREE_NOUNWIND]]
1034 declare i32 @vsscanf(i8*, i8*, %opaque*)
1035
1036 ; CHECK: declare noundef i64 @write(i32 noundef, i8* nocapture noundef readonly, i64 noundef) [[NOFREE]]
1037 declare i64 @write(i32, i8*, i64)
1038
1039
1040 ; memset_pattern16 isn't available everywhere.
1041 ; CHECK-DARWIN: declare void @memset_pattern16(i8* nocapture writeonly, i8* nocapture readonly, i64) [[ARGMEMONLY_NOFREE:#[0-9]+]]
1042 declare void @memset_pattern16(i8*, i8*, i64)
1043
1044 ; CHECK-DAG-UNKNOWN: attributes [[INACCESSIBLEMEMONLY_NOFREE_WILLRETURN]] = { inaccessiblememonly nofree willreturn }
1045 ; CHECK-DAG-UNKNOWN: attributes [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN]] = { inaccessiblememonly nofree nounwind willreturn }
1046 ; CHECK-DAG-UNKNOWN: attributes [[INACCESSIBLEMEMORARGONLY_WILLRETURN]] = { inaccessiblemem_or_argmemonly willreturn }
1047 ; CHECK-DAG-UNKNOWN: attributes [[NOFREE_NOUNWIND_WILLRETURN]] = { nofree nounwind willreturn }
1048 ; CHECK-DAG-UNKNOWN: attributes [[NOFREE_NOUNWIND]] = { nofree nounwind }
1049 ; CHECK-DAG-UNKNOWN: attributes [[NOFREE_NOUNWIND_READONLY_WILLRETURN]]  = { nofree nounwind readonly willreturn }
1050 ; CHECK-DAG-UNKNOWN: attributes [[NOFREE_NOUNWIND_READONLY_WILLRETURN]] = { argmemonly nofree nounwind willreturn }
1051 ; CHECK-DAG-UNKNOWN: attributes [[NOFREE_NOUNWIND_READONLY]] = { nofree nounwind readonly }
1052 ; CHECK-DAG-UNKNOWN: attributes [[INACCESSIBLEMEMORARGONLY_NOUNWIND_WILLRETURN]]  = { inaccessiblemem_or_argmemonly nounwind willreturn }
1053 ; CHECK-DAG-UNKNOWN: attributes [[NOFREE_WILLRETURN]] = { nofree willreturn }
1054 ; CHECK-DAG-UNKNOWN: attributes [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY_WILLRETURN]] = { argmemonly nofree nounwind readonly willreturn }
1055 ; CHECK-DAG-UNKNOWN: attributes [[NOFREE]] = { nofree }
1056 ; CHECK-DAG-UNKNOWN: attributes [[WILLRETURN]]= { willreturn }
1057 ; CHECK-DAG-UNKNOWN: attributes [[INACCESSIBLEMEMORARGONLY_NOFREE_NOUNWIND_WILLRETURN]]  = { inaccessiblemem_or_argmemonly nofree nounwind willreturn }
1058
1059 ; CHECK-DAG-LINUX: attributes [[INACCESSIBLEMEMONLY_NOFREE_WILLRETURN]] = { inaccessiblememonly nofree willreturn }
1060 ; CHECK-DAG-LINUX: attributes [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN]] = { inaccessiblememonly nofree nounwind willreturn }
1061 ; CHECK-DAG-LINUX: attributes [[INACCESSIBLEMEMORARGONLY_WILLRETURN]] = { inaccessiblemem_or_argmemonly willreturn }
1062 ; CHECK-DAG-LINUX: attributes [[NOFREE]] = { nofree }
1063 ; CHECK-DAG-LINUX: attributes [[NOFREE_NOUNWIND_WILLRETURN]] = { nofree nounwind willreturn }
1064 ; CHECK-DAG-LINUX: attributes [[NOFREE_NOUNWIND]] = { nofree nounwind }
1065 ; CHECK-DAG-LINUX: attributes [[NOFREE_NOUNWIND_READONLY_WILLRETURN]]  = { nofree nounwind readonly willreturn }
1066 ; CHECK-DAG-LINUX: attributes [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY_WILLRETURN]] = { argmemonly nofree nounwind readonly willreturn }
1067 ; CHECK-DAG-LINUX: attributes [[NOFREE_NOUNWIND_READONLY_WILLRETURN]] = { argmemonly nofree nounwind willreturn }
1068 ; CHECK-DAG-LINUX: attributes [[NOFREE_NOUNWIND_READONLY]] = { nofree nounwind readonly }
1069 ; CHECK-DAG-LINUX: attributes [[INACCESSIBLEMEMORARGONLY_NOUNWIND_WILLRETURN]]  = { inaccessiblemem_or_argmemonly nounwind willreturn }
1070 ; CHECK-DAG-LINUX: attributes [[NOFREE_WILLRETURN]] = { nofree willreturn }
1071 ; CHECK-DAG-LINUX: attributes [[WILLRETURN]]= { willreturn }
1072 ; CHECK-DAG-LINUX: attributes [[INACCESSIBLEMEMORARGONLY_NOFREE_NOUNWIND_WILLRETURN]]  = { inaccessiblemem_or_argmemonly nofree nounwind willreturn }
1073 ; CHECK-DAG-LINUX: attributes [[ARGMEMONLY_NOFREE_NOUNWIND]] = { inaccessiblememonly nofree nounwind }