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