[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / Transforms / InferFunctionAttrs / annotate.ll
blob586ad6a99cede2fba982ee8c6675f17f1524e5b7
1 ; RUN: opt < %s -mtriple=x86_64-- -inferattrs -S | FileCheck --check-prefixes=CHECK,CHECK-NOLINUX,CHECK-UNKNOWN %s
2 ; RUN: opt < %s -mtriple=x86_64-- -passes=inferattrs -S | FileCheck --check-prefixes=CHECK,CHECK-NOLINUX,CHECK-UNKNOWN %s
3 ; RUN: opt < %s -mtriple=x86_64-apple-macosx10.8.0 -inferattrs -S | FileCheck --check-prefixes=CHECK,CHECK-KNOWN,CHECK-NOLINUX,CHECK-DARWIN %s
4 ; RUN: opt < %s -mtriple=x86_64-unknown-linux-gnu -inferattrs -S | FileCheck --check-prefixes=CHECK,CHECK-KNOWN,CHECK-LINUX %s
5 ; RUN: opt < %s -mtriple=nvptx -inferattrs -S | FileCheck --check-prefixes=CHECK-NOLINUX,CHECK-NVPTX %s
7 declare i32 @__nvvm_reflect(i8*)
8 ; CHECK-NVPTX: declare noundef i32 @__nvvm_reflect(i8* noundef) [[NOFREE_NOUNWIND_READNONE:#[0-9]+]]
11 ; Check all the libc functions (thereby also exercising the prototype check).
12 ; Note that it's OK to modify these as attributes might be missing. These checks
13 ; reflect the currently inferred attributes.
15 ; Use an opaque pointer type for all the (possibly opaque) structs.
16 %opaque = type opaque
18 ; CHECK: declare double @__acos_finite(double)
19 declare double @__acos_finite(double)
21 ; CHECK: declare float @__acosf_finite(float)
22 declare float @__acosf_finite(float)
24 ; CHECK: declare double @__acosh_finite(double)
25 declare double @__acosh_finite(double)
27 ; CHECK: declare float @__acoshf_finite(float)
28 declare float @__acoshf_finite(float)
30 ; CHECK: declare x86_fp80 @__acoshl_finite(x86_fp80)
31 declare x86_fp80 @__acoshl_finite(x86_fp80)
33 ; CHECK: declare x86_fp80 @__acosl_finite(x86_fp80)
34 declare x86_fp80 @__acosl_finite(x86_fp80)
36 ; CHECK: declare double @__asin_finite(double)
37 declare double @__asin_finite(double)
39 ; CHECK: declare float @__asinf_finite(float)
40 declare float @__asinf_finite(float)
42 ; CHECK: declare x86_fp80 @__asinl_finite(x86_fp80)
43 declare x86_fp80 @__asinl_finite(x86_fp80)
45 ; CHECK: declare double @__atan2_finite(double, double)
46 declare double @__atan2_finite(double, double)
48 ; CHECK: declare float @__atan2f_finite(float, float)
49 declare float @__atan2f_finite(float, float)
51 ; CHECK: declare x86_fp80 @__atan2l_finite(x86_fp80, x86_fp80)
52 declare x86_fp80 @__atan2l_finite(x86_fp80, x86_fp80)
54 ; CHECK: declare double @__atanh_finite(double)
55 declare double @__atanh_finite(double)
57 ; CHECK: declare float @__atanhf_finite(float)
58 declare float @__atanhf_finite(float)
60 ; CHECK: declare x86_fp80 @__atanhl_finite(x86_fp80)
61 declare x86_fp80 @__atanhl_finite(x86_fp80)
63 ; CHECK: declare double @__cosh_finite(double)
64 declare double @__cosh_finite(double)
66 ; CHECK: declare float @__coshf_finite(float)
67 declare float @__coshf_finite(float)
69 ; CHECK: declare x86_fp80 @__coshl_finite(x86_fp80)
70 declare x86_fp80 @__coshl_finite(x86_fp80)
72 ; CHECK: declare double @__cospi(double)
73 declare double @__cospi(double)
75 ; CHECK: declare float @__cospif(float)
76 declare float @__cospif(float)
78 ; CHECK: declare double @__exp10_finite(double)
79 declare double @__exp10_finite(double)
81 ; CHECK: declare float @__exp10f_finite(float)
82 declare float @__exp10f_finite(float)
84 ; CHECK: declare x86_fp80 @__exp10l_finite(x86_fp80)
85 declare x86_fp80 @__exp10l_finite(x86_fp80)
87 ; CHECK: declare double @__exp2_finite(double)
88 declare double @__exp2_finite(double)
90 ; CHECK: declare float @__exp2f_finite(float)
91 declare float @__exp2f_finite(float)
93 ; CHECK: declare x86_fp80 @__exp2l_finite(x86_fp80)
94 declare x86_fp80 @__exp2l_finite(x86_fp80)
96 ; CHECK: declare double @__exp_finite(double)
97 declare double @__exp_finite(double)
99 ; CHECK: declare float @__expf_finite(float)
100 declare float @__expf_finite(float)
102 ; CHECK: declare x86_fp80 @__expl_finite(x86_fp80)
103 declare x86_fp80 @__expl_finite(x86_fp80)
105 ; CHECK: declare double @__log10_finite(double)
106 declare double @__log10_finite(double)
108 ; CHECK: declare float @__log10f_finite(float)
109 declare float @__log10f_finite(float)
111 ; CHECK: declare x86_fp80 @__log10l_finite(x86_fp80)
112 declare x86_fp80 @__log10l_finite(x86_fp80)
114 ; CHECK: declare double @__log2_finite(double)
115 declare double @__log2_finite(double)
117 ; CHECK: declare float @__log2f_finite(float)
118 declare float @__log2f_finite(float)
120 ; CHECK: declare x86_fp80 @__log2l_finite(x86_fp80)
121 declare x86_fp80 @__log2l_finite(x86_fp80)
123 ; CHECK: declare double @__log_finite(double)
124 declare double @__log_finite(double)
126 ; CHECK: declare float @__logf_finite(float)
127 declare float @__logf_finite(float)
129 ; CHECK: declare x86_fp80 @__logl_finite(x86_fp80)
130 declare x86_fp80 @__logl_finite(x86_fp80)
132 ; CHECK: declare double @__pow_finite(double, double)
133 declare double @__pow_finite(double, double)
135 ; CHECK: declare float @__powf_finite(float, float)
136 declare float @__powf_finite(float, float)
138 ; CHECK: declare x86_fp80 @__powl_finite(x86_fp80, x86_fp80)
139 declare x86_fp80 @__powl_finite(x86_fp80, x86_fp80)
141 ; CHECK: declare double @__sinh_finite(double)
142 declare double @__sinh_finite(double)
144 ; CHECK: declare float @__sinhf_finite(float)
145 declare float @__sinhf_finite(float)
147 ; CHECK: declare x86_fp80 @__sinhl_finite(x86_fp80)
148 declare x86_fp80 @__sinhl_finite(x86_fp80)
150 ; CHECK: declare double @__sinpi(double)
151 declare double @__sinpi(double)
153 ; CHECK: declare float @__sinpif(float)
154 declare float @__sinpif(float)
156 ; CHECK: declare i32 @abs(i32) [[NOFREE_NOUNWIND_WILLRETURN:#[0-9]+]]
157 declare i32 @abs(i32)
159 ; CHECK: declare noundef i32 @access(i8* nocapture noundef readonly, i32 noundef) [[NOFREE_NOUNWIND:#[0-9]+]]
160 declare i32 @access(i8*, i32)
162 ; CHECK: declare double @acos(double) [[NOFREE_NOUNWIND_WILLRETURN]]
163 declare double @acos(double)
165 ; CHECK: declare float @acosf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
166 declare float @acosf(float)
168 ; CHECK: declare double @acosh(double) [[NOFREE_NOUNWIND_WILLRETURN]]
169 declare double @acosh(double)
171 ; CHECK: declare float @acoshf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
172 declare float @acoshf(float)
174 ; CHECK: declare x86_fp80 @acoshl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
175 declare x86_fp80 @acoshl(x86_fp80)
177 ; CHECK: declare x86_fp80 @acosl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
178 declare x86_fp80 @acosl(x86_fp80)
180 ; CHECK: declare noalias noundef i8* @aligned_alloc(i64 noundef, i64 noundef) [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND:#[0-9]+]]
181 declare i8* @aligned_alloc(i64, i64)
183 ; CHECK: declare double @asin(double) [[NOFREE_NOUNWIND_WILLRETURN]]
184 declare double @asin(double)
186 ; CHECK: declare float @asinf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
187 declare float @asinf(float)
189 ; CHECK: declare double @asinh(double) [[NOFREE_NOUNWIND_WILLRETURN]]
190 declare double @asinh(double)
192 ; CHECK: declare float @asinhf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
193 declare float @asinhf(float)
195 ; CHECK: declare x86_fp80 @asinhl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
196 declare x86_fp80 @asinhl(x86_fp80)
198 ; CHECK: declare x86_fp80 @asinl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
199 declare x86_fp80 @asinl(x86_fp80)
201 ; CHECK: declare double @atan(double) [[NOFREE_NOUNWIND_WILLRETURN]]
202 declare double @atan(double)
204 ; CHECK: declare double @atan2(double, double) [[NOFREE_NOUNWIND_WILLRETURN]]
205 declare double @atan2(double, double)
207 ; CHECK: declare float @atan2f(float, float) [[NOFREE_NOUNWIND_WILLRETURN]]
208 declare float @atan2f(float, float)
210 ; CHECK: declare x86_fp80 @atan2l(x86_fp80, x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
211 declare x86_fp80 @atan2l(x86_fp80, x86_fp80)
213 ; CHECK: declare float @atanf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
214 declare float @atanf(float)
216 ; CHECK: declare double @atanh(double) [[NOFREE_NOUNWIND_WILLRETURN]]
217 declare double @atanh(double)
219 ; CHECK: declare float @atanhf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
220 declare float @atanhf(float)
222 ; CHECK: declare x86_fp80 @atanhl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
223 declare x86_fp80 @atanhl(x86_fp80)
225 ; CHECK: declare x86_fp80 @atanl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
226 declare x86_fp80 @atanl(x86_fp80)
228 ; CHECK: declare double @atof(i8* nocapture) [[NOFREE_NOUNWIND_READONLY_WILLRETURN:#[0-9]+]]
229 declare double @atof(i8*)
231 ; CHECK: declare i32 @atoi(i8* nocapture) [[NOFREE_NOUNWIND_READONLY_WILLRETURN]]
232 declare i32 @atoi(i8*)
234 ; CHECK: declare i64 @atol(i8* nocapture) [[NOFREE_NOUNWIND_READONLY_WILLRETURN]]
235 declare i64 @atol(i8*)
237 ; CHECK: declare i64 @atoll(i8* nocapture) [[NOFREE_NOUNWIND_READONLY_WILLRETURN]]
238 declare i64 @atoll(i8*)
240 ; CHECK-LINUX: declare i32 @bcmp(i8* nocapture, i8* nocapture, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY:#[0-9]+]]
241 ; CHECK-NOLINUX: declare i32 @bcmp(i8*, i8*, i64){{$}}
242 declare i32 @bcmp(i8*, i8*, i64)
244 ; CHECK: declare void @bcopy(i8* nocapture readonly, i8* nocapture writeonly, i64)  [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN:#[0-9]+]]
245 declare void @bcopy(i8*, i8*, i64)
247 ; CHECK: declare void @bzero(i8* nocapture writeonly, i64)  [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN]]
248 declare void @bzero(i8*, i64)
250 ; CHECK: declare noalias noundef i8* @calloc(i64 noundef, i64 noundef) [[NOFREE_NOUNWIND_WILLRETURN]]
251 declare i8* @calloc(i64, i64)
253 ; CHECK: declare double @cbrt(double) [[NOFREE_NOUNWIND_WILLRETURN]]
254 declare double @cbrt(double)
256 ; CHECK: declare float @cbrtf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
257 declare float @cbrtf(float)
259 ; CHECK: declare x86_fp80 @cbrtl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
260 declare x86_fp80 @cbrtl(x86_fp80)
262 ; CHECK: declare double @ceil(double) [[NOFREE_NOUNWIND_WILLRETURN]]
263 declare double @ceil(double)
265 ; CHECK: declare float @ceilf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
266 declare float @ceilf(float)
268 ; CHECK: declare x86_fp80 @ceill(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
269 declare x86_fp80 @ceill(x86_fp80)
271 ; CHECK: declare noundef i32 @chmod(i8* nocapture noundef readonly, i16 noundef zeroext) [[NOFREE_NOUNWIND]]
272 declare i32 @chmod(i8*, i16 zeroext)
274 ; CHECK: declare noundef i32 @chown(i8* nocapture noundef readonly, i32 noundef, i32 noundef) [[NOFREE_NOUNWIND]]
275 declare i32 @chown(i8*, i32, i32)
277 ; CHECK: declare void @clearerr(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
278 declare void @clearerr(%opaque*)
280 ; CHECK: declare noundef i32 @closedir(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
281 declare i32 @closedir(%opaque*)
283 ; CHECK: declare double @copysign(double, double) [[NOFREE_NOUNWIND_WILLRETURN]]
284 declare double @copysign(double, double)
286 ; CHECK: declare float @copysignf(float, float) [[NOFREE_NOUNWIND_WILLRETURN]]
287 declare float @copysignf(float, float)
289 ; CHECK: declare x86_fp80 @copysignl(x86_fp80, x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
290 declare x86_fp80 @copysignl(x86_fp80, x86_fp80)
292 ; CHECK: declare double @cos(double) [[NOFREE_NOUNWIND_WILLRETURN]]
293 declare double @cos(double)
295 ; CHECK: declare float @cosf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
296 declare float @cosf(float)
298 ; CHECK: declare double @cosh(double) [[NOFREE_NOUNWIND_WILLRETURN]]
299 declare double @cosh(double)
301 ; CHECK: declare float @coshf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
302 declare float @coshf(float)
304 ; CHECK: declare x86_fp80 @coshl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
305 declare x86_fp80 @coshl(x86_fp80)
307 ; CHECK: declare x86_fp80 @cosl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
308 declare x86_fp80 @cosl(x86_fp80)
310 ; CHECK: declare noundef i8* @ctermid(i8* nocapture noundef) [[NOFREE_NOUNWIND]]
311 declare i8* @ctermid(i8*)
313 ; CHECK: declare double @exp(double) [[NOFREE_NOUNWIND_WILLRETURN]]
314 declare double @exp(double)
316 ; CHECK: declare double @exp2(double) [[NOFREE_NOUNWIND_WILLRETURN]]
317 declare double @exp2(double)
319 ; CHECK: declare float @exp2f(float) [[NOFREE_NOUNWIND_WILLRETURN]]
320 declare float @exp2f(float)
322 ; CHECK: declare x86_fp80 @exp2l(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
323 declare x86_fp80 @exp2l(x86_fp80)
325 ; CHECK: declare float @expf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
326 declare float @expf(float)
328 ; CHECK: declare x86_fp80 @expl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
329 declare x86_fp80 @expl(x86_fp80)
331 ; CHECK: declare double @expm1(double) [[NOFREE_NOUNWIND_WILLRETURN]]
332 declare double @expm1(double)
334 ; CHECK: declare float @expm1f(float) [[NOFREE_NOUNWIND_WILLRETURN]]
335 declare float @expm1f(float)
337 ; CHECK: declare x86_fp80 @expm1l(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
338 declare x86_fp80 @expm1l(x86_fp80)
340 ; CHECK: declare double @fabs(double) [[NOFREE_NOUNWIND_WILLRETURN]]
341 declare double @fabs(double)
343 ; CHECK: declare float @fabsf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
344 declare float @fabsf(float)
346 ; CHECK: declare x86_fp80 @fabsl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
347 declare x86_fp80 @fabsl(x86_fp80)
349 ; CHECK: declare noundef i32 @fclose(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
350 declare i32 @fclose(%opaque*)
352 ; CHECK: declare noalias noundef %opaque* @fdopen(i32 noundef, i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
353 declare %opaque* @fdopen(i32, i8*)
355 ; CHECK: declare noundef i32 @feof(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
356 declare i32 @feof(%opaque*)
358 ; CHECK: declare noundef i32 @ferror(%opaque* nocapture noundef) [[NOFREE_NOUNWIND_READONLY:#[0-9]+]]
359 declare i32 @ferror(%opaque*)
361 ; CHECK: declare noundef i32 @fflush(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
362 declare i32 @fflush(%opaque*)
364 ; CHECK: declare i32 @ffs(i32) [[NOFREE_NOUNWIND_WILLRETURN]]
365 declare i32 @ffs(i32)
367 ; CHECK-KNOWN: declare i32 @ffsl(i64) [[NOFREE_NOUNWIND_WILLRETURN]]
368 ; CHECK-UNKNOWN: declare i32 @ffsl(i64){{$}}
369 declare i32 @ffsl(i64)
371 ; CHECK-KNOWN: declare i32 @ffsll(i64) [[NOFREE_NOUNWIND_WILLRETURN]]
372 ; CHECK-UNKNOWN: declare i32 @ffsll(i64){{$}}
373 declare i32 @ffsll(i64)
375 ; CHECK: declare noundef i32 @fgetc(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
376 declare i32 @fgetc(%opaque*)
378 ; CHECK: declare noundef i32 @fgetpos(%opaque* nocapture noundef, i64* nocapture noundef) [[NOFREE_NOUNWIND]]
379 declare i32 @fgetpos(%opaque*, i64*)
381 ; CHECK: declare noundef i8* @fgets(i8* noundef, i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
382 declare i8* @fgets(i8*, i32, %opaque*)
384 ; CHECK: declare noundef i32 @fileno(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
385 declare i32 @fileno(%opaque*)
387 ; CHECK: declare void @flockfile(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
388 declare void @flockfile(%opaque*)
390 ; CHECK: declare double @floor(double) [[NOFREE_NOUNWIND_WILLRETURN]]
391 declare double @floor(double)
393 ; CHECK: declare float @floorf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
394 declare float @floorf(float)
396 ; CHECK: declare x86_fp80 @floorl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
397 declare x86_fp80 @floorl(x86_fp80)
399 ; CHECK: declare i32 @fls(i32)
400 declare i32 @fls(i32)
402 ; CHECK: declare i32 @flsl(i64)
403 declare i32 @flsl(i64)
405 ; CHECK: declare i32 @flsll(i64)
406 declare i32 @flsll(i64)
408 ; CHECK: declare double @fmax(double, double) [[NOFREE_NOUNWIND_WILLRETURN]]
409 declare double @fmax(double, double)
411 ; CHECK: declare float @fmaxf(float, float) [[NOFREE_NOUNWIND_WILLRETURN]]
412 declare float @fmaxf(float, float)
414 ; CHECK: declare x86_fp80 @fmaxl(x86_fp80, x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
415 declare x86_fp80 @fmaxl(x86_fp80, x86_fp80)
417 ; CHECK: declare double @fmin(double, double) [[NOFREE_NOUNWIND_WILLRETURN]]
418 declare double @fmin(double, double)
420 ; CHECK: declare float @fminf(float, float) [[NOFREE_NOUNWIND_WILLRETURN]]
421 declare float @fminf(float, float)
423 ; CHECK: declare x86_fp80 @fminl(x86_fp80, x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
424 declare x86_fp80 @fminl(x86_fp80, x86_fp80)
426 ; CHECK: declare double @fmod(double, double) [[NOFREE_NOUNWIND_WILLRETURN]]
427 declare double @fmod(double, double)
429 ; CHECK: declare float @fmodf(float, float) [[NOFREE_NOUNWIND_WILLRETURN]]
430 declare float @fmodf(float, float)
432 ; CHECK: declare x86_fp80 @fmodl(x86_fp80, x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
433 declare x86_fp80 @fmodl(x86_fp80, x86_fp80)
435 ; CHECK: declare noalias noundef %opaque* @fopen(i8* nocapture noundef readonly, i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
436 declare %opaque* @fopen(i8*, i8*)
438 ; CHECK: declare noundef i32 @fprintf(%opaque* nocapture noundef, i8* nocapture noundef readonly, ...) [[NOFREE_NOUNWIND]]
439 declare i32 @fprintf(%opaque*, i8*, ...)
441 ; CHECK: declare noundef i32 @fputc(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
442 declare i32 @fputc(i32, %opaque*)
444 ; CHECK: declare noundef i32 @fputs(i8* nocapture noundef readonly, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
445 declare i32 @fputs(i8*, %opaque*)
447 ; CHECK: declare noundef i64 @fread(i8* nocapture noundef, i64 noundef, i64 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
448 declare i64 @fread(i8*, i64, i64, %opaque*)
450 ; CHECK: declare void @free(i8* nocapture noundef) [[INACCESSIBLEMEMORARGMEMONLY_NOUNWIND_WILLRETURN:#[0-9]+]]
451 declare void @free(i8*)
453 ; CHECK: declare double @frexp(double, i32* nocapture) [[NOFREE_NOUNWIND_WILLRETURN]]
454 declare double @frexp(double, i32*)
456 ; CHECK: declare float @frexpf(float, i32* nocapture) [[NOFREE_NOUNWIND_WILLRETURN]]
457 declare float @frexpf(float, i32*)
459 ; CHECK: declare x86_fp80 @frexpl(x86_fp80, i32* nocapture) [[NOFREE_NOUNWIND_WILLRETURN]]
460 declare x86_fp80 @frexpl(x86_fp80, i32*)
462 ; CHECK: declare noundef i32 @fscanf(%opaque* nocapture noundef, i8* nocapture noundef readonly, ...) [[NOFREE_NOUNWIND]]
463 declare i32 @fscanf(%opaque*, i8*, ...)
465 ; CHECK: declare noundef i32 @fseek(%opaque* nocapture noundef, i64 noundef, i32 noundef) [[NOFREE_NOUNWIND]]
466 declare i32 @fseek(%opaque*, i64, i32)
468 ; CHECK: declare noundef i32 @fseeko(%opaque* nocapture noundef, i64 noundef, i32 noundef) [[NOFREE_NOUNWIND]]
469 declare i32 @fseeko(%opaque*, i64, i32)
471 ; CHECK-LINUX: declare noundef i32 @fseeko64(%opaque* nocapture noundef, i64 noundef, i32 noundef) [[NOFREE_NOUNWIND]]
472 declare i32 @fseeko64(%opaque*, i64, i32)
474 ; CHECK: declare noundef i32 @fsetpos(%opaque* nocapture noundef, i64* noundef) [[NOFREE_NOUNWIND]]
475 declare i32 @fsetpos(%opaque*, i64*)
477 ; CHECK: declare noundef i32 @fstat(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
478 declare i32 @fstat(i32, %opaque*)
480 ; CHECK-LINUX: declare noundef i32 @fstat64(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
481 declare i32 @fstat64(i32, %opaque*)
483 ; CHECK: declare noundef i32 @fstatvfs(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
484 declare i32 @fstatvfs(i32, %opaque*)
486 ; CHECK-LINUX: declare noundef i32 @fstatvfs64(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
487 declare i32 @fstatvfs64(i32, %opaque*)
489 ; CHECK: declare noundef i64 @ftell(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
490 declare i64 @ftell(%opaque*)
492 ; CHECK: declare noundef i64 @ftello(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
493 declare i64 @ftello(%opaque*)
495 ; CHECK-LINUX: declare noundef i64 @ftello64(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
496 declare i64 @ftello64(%opaque*)
498 ; CHECK: declare noundef i32 @ftrylockfile(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
499 declare i32 @ftrylockfile(%opaque*)
501 ; CHECK: declare void @funlockfile(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
502 declare void @funlockfile(%opaque*)
504 ; CHECK: declare noundef i64 @fwrite(i8* nocapture noundef, i64 noundef, i64 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
505 declare i64 @fwrite(i8*, i64, i64, %opaque*)
507 ; CHECK: declare noundef i32 @getc(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
508 declare i32 @getc(%opaque*)
510 ; CHECK-KNOWN: declare noundef i32 @getc_unlocked(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
511 ; CHECK-UNKNOWN: declare i32 @getc_unlocked(%opaque*){{$}}
512 declare i32 @getc_unlocked(%opaque*)
514 ; CHECK: declare noundef i32 @getchar() [[NOFREE_NOUNWIND]]
515 declare i32 @getchar()
517 ; CHECK-KNOWN: declare noundef i32 @getchar_unlocked() [[NOFREE_NOUNWIND]]
518 ; CHECK-UNKNOWN: declare i32 @getchar_unlocked(){{$}}
519 declare i32 @getchar_unlocked()
521 ; CHECK: declare noundef i8* @getenv(i8* nocapture noundef) [[NOFREE_NOUNWIND_READONLY]]
522 declare i8* @getenv(i8*)
524 ; CHECK: declare noundef i32 @getitimer(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
525 declare i32 @getitimer(i32, %opaque*)
527 ; CHECK: declare noundef i32 @getlogin_r(i8* nocapture noundef, i64 noundef) [[NOFREE_NOUNWIND]]
528 declare i32 @getlogin_r(i8*, i64)
530 ; CHECK: declare noundef %opaque* @getpwnam(i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
531 declare %opaque* @getpwnam(i8*)
533 ; CHECK: declare noundef i8* @gets(i8* noundef) [[NOFREE_NOUNWIND]]
534 declare i8* @gets(i8*)
536 ; CHECK: declare noundef i32 @gettimeofday(%opaque* nocapture noundef, i8* nocapture noundef) [[NOFREE_NOUNWIND]]
537 declare i32 @gettimeofday(%opaque*, i8*)
539 ; CHECK: declare i32 @isascii(i32) [[NOFREE_NOUNWIND_WILLRETURN]]
540 declare i32 @isascii(i32)
542 ; CHECK: declare i32 @isdigit(i32) [[NOFREE_NOUNWIND_WILLRETURN]]
543 declare i32 @isdigit(i32)
545 ; CHECK: declare i64 @labs(i64) [[NOFREE_NOUNWIND_WILLRETURN]]
546 declare i64 @labs(i64)
548 ; CHECK: declare noundef i32 @lchown(i8* nocapture noundef readonly, i32 noundef, i32 noundef) [[NOFREE_NOUNWIND]]
549 declare i32 @lchown(i8*, i32, i32)
551 ; CHECK: declare double @ldexp(double, i32 signext) [[NOFREE_WILLRETURN:#[0-9]+]]
552 declare double @ldexp(double, i32)
554 ; CHECK: declare float @ldexpf(float, i32 signext) [[NOFREE_WILLRETURN]]
555 declare float @ldexpf(float, i32)
557 ; CHECK: declare x86_fp80 @ldexpl(x86_fp80, i32 signext) [[NOFREE_WILLRETURN]]
558 declare x86_fp80 @ldexpl(x86_fp80, i32)
560 ; CHECK: declare i64 @llabs(i64) [[NOFREE_NOUNWIND_WILLRETURN]]
561 declare i64 @llabs(i64)
563 ; CHECK: declare double @log(double) [[NOFREE_NOUNWIND_WILLRETURN]]
564 declare double @log(double)
566 ; CHECK: declare double @log10(double) [[NOFREE_NOUNWIND_WILLRETURN]]
567 declare double @log10(double)
569 ; CHECK: declare float @log10f(float) [[NOFREE_NOUNWIND_WILLRETURN]]
570 declare float @log10f(float)
572 ; CHECK: declare x86_fp80 @log10l(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
573 declare x86_fp80 @log10l(x86_fp80)
575 ; CHECK: declare double @log1p(double) [[NOFREE_NOUNWIND_WILLRETURN]]
576 declare double @log1p(double)
578 ; CHECK: declare float @log1pf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
579 declare float @log1pf(float)
581 ; CHECK: declare x86_fp80 @log1pl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
582 declare x86_fp80 @log1pl(x86_fp80)
584 ; CHECK: declare double @log2(double) [[NOFREE_NOUNWIND_WILLRETURN]]
585 declare double @log2(double)
587 ; CHECK: declare float @log2f(float) [[NOFREE_NOUNWIND_WILLRETURN]]
588 declare float @log2f(float)
590 ; CHECK: declare x86_fp80 @log2l(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
591 declare x86_fp80 @log2l(x86_fp80)
593 ; CHECK: declare double @logb(double) [[NOFREE_NOUNWIND_WILLRETURN]]
594 declare double @logb(double)
596 ; CHECK: declare float @logbf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
597 declare float @logbf(float)
599 ; CHECK: declare x86_fp80 @logbl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
600 declare x86_fp80 @logbl(x86_fp80)
602 ; CHECK: declare float @logf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
603 declare float @logf(float)
605 ; CHECK: declare x86_fp80 @logl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
606 declare x86_fp80 @logl(x86_fp80)
608 ; CHECK: declare noundef i32 @lstat(i8* nocapture noundef readonly, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
609 declare i32 @lstat(i8*, %opaque*)
611 ; CHECK-LINUX: declare noundef i32 @lstat64(i8* nocapture noundef readonly, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
612 declare i32 @lstat64(i8*, %opaque*)
614 ; CHECK: declare noalias noundef i8* @malloc(i64 noundef) [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN:#[0-9]+]]
615 declare i8* @malloc(i64)
617 ; CHECK-LINUX: declare noalias noundef i8* @memalign(i64, i64) [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN]]
618 declare i8* @memalign(i64, i64)
620 ; CHECK: declare i8* @memccpy(i8* noalias writeonly, i8* noalias nocapture readonly, i32, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN]]
621 declare i8* @memccpy(i8*, i8*, i32, i64)
623 ; CHECK-LINUX:   declare i8* @memchr(i8*, i32, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY]]
624 ; CHECK-DARWIN:  declare i8* @memchr(i8*, i32, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY:#[0-9]+]]
625 ; CHECK-UNKNOWN: declare i8* @memchr(i8*, i32, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY:#[0-9]+]]
626 declare i8* @memchr(i8*, i32, i64)
628 ; CHECK: declare i32 @memcmp(i8* nocapture, i8* nocapture, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY]]
629 declare i32 @memcmp(i8*, i8*, i64)
631 ; CHECK: declare i8* @memcpy(i8* noalias returned writeonly, i8* noalias nocapture readonly, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN]]
632 declare i8* @memcpy(i8*, i8*, i64)
634 ; CHECK: declare i8* @__memcpy_chk(i8*, i8*, i64, i64) [[NOFREE_NOUNWIND]]
635 declare i8* @__memcpy_chk(i8*, i8*, i64, i64)
637 ; CHECK: declare i8* @mempcpy(i8* noalias writeonly, i8* noalias nocapture readonly, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN]]
638 declare i8* @mempcpy(i8*, i8*, i64)
640 ; CHECK: declare i8* @memmove(i8* returned writeonly, i8* nocapture readonly, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN]]
641 declare i8* @memmove(i8*, i8*, i64)
643 ; CHECK: declare i8* @memset(i8* writeonly, i32, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN:#[0-9]+]]
644 declare i8* @memset(i8*, i32, i64)
646 ; CHECK: declare noundef i32 @mkdir(i8* nocapture noundef readonly, i16 noundef zeroext) [[NOFREE_NOUNWIND]]
647 declare i32 @mkdir(i8*, i16 zeroext)
649 ; CHECK: declare noundef i64 @mktime(%opaque* nocapture noundef) [[NOFREE_NOUNWIND_WILLRETURN]]
650 declare i64 @mktime(%opaque*)
652 ; CHECK: declare double @modf(double, double* nocapture) [[NOFREE_NOUNWIND_WILLRETURN]]
653 declare double @modf(double, double*)
655 ; CHECK: declare float @modff(float, float* nocapture) [[NOFREE_NOUNWIND_WILLRETURN]]
656 declare float @modff(float, float*)
658 ; CHECK: declare x86_fp80 @modfl(x86_fp80, x86_fp80* nocapture) [[NOFREE_NOUNWIND_WILLRETURN]]
659 declare x86_fp80 @modfl(x86_fp80, x86_fp80*)
661 ; CHECK: declare double @nearbyint(double) [[NOFREE_NOUNWIND_WILLRETURN]]
662 declare double @nearbyint(double)
664 ; CHECK: declare float @nearbyintf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
665 declare float @nearbyintf(float)
667 ; CHECK: declare x86_fp80 @nearbyintl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
668 declare x86_fp80 @nearbyintl(x86_fp80)
670 ; CHECK: declare noundef i32 @open(i8* nocapture noundef readonly, i32 noundef, ...) [[NOFREE:#[0-9]+]]
671 declare i32 @open(i8*, i32, ...)
673 ; CHECK-LINUX: declare noundef i32 @open64(i8* nocapture noundef readonly, i32 noundef, ...) [[NOFREE]]
674 declare i32 @open64(i8*, i32, ...)
676 ; CHECK: declare noalias noundef %opaque* @opendir(i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
677 declare %opaque* @opendir(i8*)
679 ; CHECK: declare noundef i32 @pclose(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
680 declare i32 @pclose(%opaque*)
682 ; CHECK: declare void @perror(i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
683 declare void @perror(i8*)
685 ; CHECK: declare noalias noundef %opaque* @popen(i8* nocapture noundef readonly, i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
686 declare %opaque* @popen(i8*, i8*)
688 ; CHECK: declare i32 @posix_memalign(i8**, i64, i64) [[NOFREE]]
689 declare i32 @posix_memalign(i8**, i64, i64)
691 ; CHECK: declare double @pow(double, double) [[NOFREE_NOUNWIND_WILLRETURN]]
692 declare double @pow(double, double)
694 ; CHECK: declare float @powf(float, float) [[NOFREE_NOUNWIND_WILLRETURN]]
695 declare float @powf(float, float)
697 ; CHECK: declare x86_fp80 @powl(x86_fp80, x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
698 declare x86_fp80 @powl(x86_fp80, x86_fp80)
700 ; CHECK: declare noundef i64 @pread(i32 noundef, i8* nocapture noundef, i64 noundef, i64 noundef) [[NOFREE]]
701 declare i64 @pread(i32, i8*, i64, i64)
703 ; CHECK: declare noundef i32 @printf(i8* nocapture noundef readonly, ...) [[NOFREE_NOUNWIND]]
704 declare i32 @printf(i8*, ...)
706 ; CHECK: declare noundef i32 @putc(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
707 declare i32 @putc(i32, %opaque*)
709 ; CHECK: declare noundef i32 @putchar(i32 noundef) [[NOFREE_NOUNWIND]]
710 declare i32 @putchar(i32)
712 ; CHECK-KNOWN: declare noundef i32 @putchar_unlocked(i32 noundef) [[NOFREE_NOUNWIND]]
713 ; CHECK-UNKNOWN: declare i32 @putchar_unlocked(i32){{$}}
714 declare i32 @putchar_unlocked(i32)
716 ; CHECK: declare noundef i32 @puts(i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
717 declare i32 @puts(i8*)
719 ; CHECK: declare noundef i64 @pwrite(i32 noundef, i8* nocapture noundef readonly, i64 noundef, i64 noundef) [[NOFREE]]
720 declare i64 @pwrite(i32, i8*, i64, i64)
722 ; CHECK: declare void @qsort(i8* noundef, i64 noundef, i64 noundef, i32 (i8*, i8*)* nocapture noundef) [[NOFREE]]
723 declare void @qsort(i8*, i64, i64, i32 (i8*, i8*)*)
725 ; CHECK: declare noundef i64 @read(i32 noundef, i8* nocapture noundef, i64 noundef) [[NOFREE]]
726 declare i64 @read(i32, i8*, i64)
728 ; CHECK: declare noundef i64 @readlink(i8* nocapture noundef readonly, i8* nocapture noundef, i64 noundef) [[NOFREE_NOUNWIND]]
729 declare i64 @readlink(i8*, i8*, i64)
731 ; CHECK: declare noalias noundef i8* @realloc(i8* nocapture, i64 noundef) [[INACCESSIBLEMEMORARGMEMONLY_NOUNWIND_WILLRETURN]]
732 declare i8* @realloc(i8*, i64)
734 ; CHECK: declare noundef i8* @reallocf(i8*, i64 noundef) [[WILLRETURN:#[0-9]+]]
735 declare i8* @reallocf(i8*, i64)
737 ; CHECK: declare noundef i8* @realpath(i8* nocapture noundef readonly, i8* noundef) [[NOFREE_NOUNWIND]]
738 declare i8* @realpath(i8*, i8*)
740 ; CHECK: declare noundef i32 @remove(i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
741 declare i32 @remove(i8*)
743 ; CHECK: declare noundef i32 @rename(i8* nocapture noundef readonly, i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
744 declare i32 @rename(i8*, i8*)
746 ; CHECK: declare void @rewind(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
747 declare void @rewind(%opaque*)
749 ; CHECK: declare double @rint(double) [[NOFREE_NOUNWIND_WILLRETURN]]
750 declare double @rint(double)
752 ; CHECK: declare float @rintf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
753 declare float @rintf(float)
755 ; CHECK: declare x86_fp80 @rintl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
756 declare x86_fp80 @rintl(x86_fp80)
758 ; CHECK: declare noundef i32 @rmdir(i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
759 declare i32 @rmdir(i8*)
761 ; CHECK: declare double @round(double) [[NOFREE_NOUNWIND_WILLRETURN]]
762 declare double @round(double)
764 ; CHECK: declare float @roundf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
765 declare float @roundf(float)
767 ; CHECK: declare x86_fp80 @roundl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
768 declare x86_fp80 @roundl(x86_fp80)
770 ; CHECK: declare noundef i32 @scanf(i8* nocapture noundef readonly, ...) [[NOFREE_NOUNWIND]]
771 declare i32 @scanf(i8*, ...)
773 ; CHECK: declare void @setbuf(%opaque* nocapture noundef, i8* noundef) [[NOFREE_NOUNWIND]]
774 declare void @setbuf(%opaque*, i8*)
776 ; CHECK: declare noundef i32 @setitimer(i32 noundef, %opaque* nocapture noundef readonly, %opaque* nocapture noundef) [[NOFREE_NOUNWIND_WILLRETURN]]
777 declare i32 @setitimer(i32, %opaque*, %opaque*)
779 ; CHECK: declare noundef i32 @setvbuf(%opaque* nocapture noundef, i8* noundef, i32 noundef, i64 noundef) [[NOFREE_NOUNWIND]]
780 declare i32 @setvbuf(%opaque*, i8*, i32, i64)
782 ; CHECK: declare double @sin(double) [[NOFREE_NOUNWIND_WILLRETURN]]
783 declare double @sin(double)
785 ; CHECK: declare float @sinf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
786 declare float @sinf(float)
788 ; CHECK: declare double @sinh(double) [[NOFREE_NOUNWIND_WILLRETURN]]
789 declare double @sinh(double)
791 ; CHECK: declare float @sinhf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
792 declare float @sinhf(float)
794 ; CHECK: declare x86_fp80 @sinhl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
795 declare x86_fp80 @sinhl(x86_fp80)
797 ; CHECK: declare x86_fp80 @sinl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
798 declare x86_fp80 @sinl(x86_fp80)
800 ; CHECK: declare noundef i32 @snprintf(i8* noalias nocapture noundef writeonly, i64 noundef, i8* nocapture noundef readonly, ...) [[NOFREE_NOUNWIND]]
801 declare i32 @snprintf(i8*, i64, i8*, ...)
803 ; CHECK: declare noundef i32 @sprintf(i8* noalias nocapture noundef writeonly, i8* nocapture noundef readonly, ...) [[NOFREE_NOUNWIND]]
804 declare i32 @sprintf(i8*, i8*, ...)
806 ; CHECK: declare double @sqrt(double) [[NOFREE_NOUNWIND_WILLRETURN]]
807 declare double @sqrt(double)
809 ; CHECK: declare float @sqrtf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
810 declare float @sqrtf(float)
812 ; CHECK: declare x86_fp80 @sqrtl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
813 declare x86_fp80 @sqrtl(x86_fp80)
815 ; CHECK: declare noundef i32 @sscanf(i8* nocapture noundef readonly, i8* nocapture noundef readonly, ...) [[NOFREE_NOUNWIND]]
816 declare i32 @sscanf(i8*, i8*, ...)
818 ; CHECK: declare noundef i32 @stat(i8* nocapture noundef readonly, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
819 declare i32 @stat(i8*, %opaque*)
821 ; CHECK-LINUX: declare noundef i32 @stat64(i8* nocapture noundef readonly, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
822 declare i32 @stat64(i8*, %opaque*)
824 ; CHECK: declare noundef i32 @statvfs(i8* nocapture noundef readonly, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
825 declare i32 @statvfs(i8*, %opaque*)
827 ; CHECK-LINUX: declare noundef i32 @statvfs64(i8* nocapture noundef readonly, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
828 declare i32 @statvfs64(i8*, %opaque*)
830 ; CHECK: declare i8* @stpcpy(i8* noalias writeonly, i8* noalias nocapture readonly) [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN]]
831 declare i8* @stpcpy(i8*, i8*)
833 ; CHECK: declare i8* @stpncpy(i8* noalias writeonly, i8* noalias nocapture readonly, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN]]
834 declare i8* @stpncpy(i8*, i8*, i64)
836 ; CHECK: declare i32 @strcasecmp(i8* nocapture, i8* nocapture) [[NOFREE_NOUNWIND_READONLY_WILLRETURN:#[0-9]+]]
837 declare i32 @strcasecmp(i8*, i8*)
839 ; CHECK: declare i8* @strcat(i8* noalias returned, i8* noalias nocapture readonly) [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN]]
840 declare i8* @strcat(i8*, i8*)
842 ; CHECK: declare i8* @strchr(i8*, i32) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY]]
843 declare i8* @strchr(i8*, i32)
845 ; CHECK: declare i32 @strcmp(i8* nocapture, i8* nocapture) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY]]
846 declare i32 @strcmp(i8*, i8*)
848 ; CHECK: declare i32 @strcoll(i8* nocapture, i8* nocapture) [[NOFREE_NOUNWIND_READONLY_WILLRETURN]]
849 declare i32 @strcoll(i8*, i8*)
851 ; CHECK: declare i8* @strcpy(i8* noalias returned writeonly, i8* noalias nocapture readonly) [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN]]
852 declare i8* @strcpy(i8*, i8*)
854 ; CHECK: declare i64 @strcspn(i8* nocapture, i8* nocapture) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY]]
855 declare i64 @strcspn(i8*, i8*)
857 ; CHECK: declare noalias i8* @strdup(i8* nocapture readonly) [[INACCESSIBLEMEMORARGONLY_NOFREE_NOUNWIND_WILLRETURN:#[0-9]+]]
858 declare i8* @strdup(i8*)
860 ; CHECK: declare i64 @strlen(i8* nocapture) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY]]
861 declare i64 @strlen(i8*)
863 ; CHECK: declare i32 @strncasecmp(i8* nocapture, i8* nocapture, i64) [[NOFREE_NOUNWIND_READONLY_WILLRETURN]]
864 declare i32 @strncasecmp(i8*, i8*, i64)
866 ; CHECK: declare i8* @strncat(i8* noalias returned, i8* noalias nocapture readonly, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN]]
867 declare i8* @strncat(i8*, i8*, i64)
869 ; CHECK: declare i32 @strncmp(i8* nocapture, i8* nocapture, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY]]
870 declare i32 @strncmp(i8*, i8*, i64)
872 ; CHECK: declare i8* @strncpy(i8* noalias returned writeonly, i8* noalias nocapture readonly, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN]]
873 declare i8* @strncpy(i8*, i8*, i64)
875 ; CHECK: declare noalias i8* @strndup(i8* nocapture readonly, i64 noundef) [[INACCESSIBLEMEMORARGONLY_NOFREE_NOUNWIND_WILLRETURN]]
876 declare i8* @strndup(i8*, i64)
878 ; CHECK: declare i64 @strnlen(i8*, i64) [[NOFREE_NOUNWIND_WILLRETURN]]
879 declare i64 @strnlen(i8*, i64)
881 ; CHECK: declare i8* @strpbrk(i8*, i8* nocapture) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY_WILLRETURN:#[0-9]+]]
882 declare i8* @strpbrk(i8*, i8*)
884 ; CHECK: declare i8* @strrchr(i8*, i32) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY]]
885 declare i8* @strrchr(i8*, i32)
887 ; CHECK: declare i64 @strspn(i8* nocapture, i8* nocapture) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY]]
888 declare i64 @strspn(i8*, i8*)
890 ; CHECK: declare i8* @strstr(i8*, i8* nocapture) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY_WILLRETURN]]
891 declare i8* @strstr(i8*, i8*)
893 ; CHECK: declare double @strtod(i8* readonly, i8** nocapture) [[NOFREE_NOUNWIND_WILLRETURN]]
894 declare double @strtod(i8*, i8**)
896 ; CHECK: declare float @strtof(i8* readonly, i8** nocapture) [[NOFREE_NOUNWIND_WILLRETURN]]
897 declare float @strtof(i8*, i8**)
899 ; CHECK: declare i8* @strtok(i8*, i8* nocapture readonly) [[NOFREE_NOUNWIND_WILLRETURN]]
900 declare i8* @strtok(i8*, i8*)
902 ; CHECK: declare i8* @strtok_r(i8*, i8* nocapture readonly, i8**) [[NOFREE_NOUNWIND_WILLRETURN]]
903 declare i8* @strtok_r(i8*, i8*, i8**)
905 ; CHECK: declare i64 @strtol(i8* readonly, i8** nocapture, i32) [[NOFREE_NOUNWIND_WILLRETURN]]
906 declare i64 @strtol(i8*, i8**, i32)
908 ; CHECK: declare x86_fp80 @strtold(i8* readonly, i8** nocapture) [[NOFREE_NOUNWIND_WILLRETURN]]
909 declare x86_fp80 @strtold(i8*, i8**)
911 ; CHECK: declare i64 @strtoll(i8* readonly, i8** nocapture, i32) [[NOFREE_NOUNWIND_WILLRETURN]]
912 declare i64 @strtoll(i8*, i8**, i32)
914 ; CHECK: declare i64 @strtoul(i8* readonly, i8** nocapture, i32) [[NOFREE_NOUNWIND_WILLRETURN]]
915 declare i64 @strtoul(i8*, i8**, i32)
917 ; CHECK: declare i64 @strtoull(i8* readonly, i8** nocapture, i32) [[NOFREE_NOUNWIND_WILLRETURN]]
918 declare i64 @strtoull(i8*, i8**, i32)
920 ; CHECK: declare i64 @strxfrm(i8* nocapture, i8* nocapture readonly, i64) [[NOFREE_NOUNWIND_WILLRETURN]]
921 declare i64 @strxfrm(i8*, i8*, i64)
923 ; CHECK: declare noundef i32 @system(i8* nocapture noundef readonly) [[NOFREE]]
924 declare i32 @system(i8*)
926 ; CHECK: declare double @tan(double) [[NOFREE_NOUNWIND_WILLRETURN]]
927 declare double @tan(double)
929 ; CHECK: declare float @tanf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
930 declare float @tanf(float)
932 ; CHECK: declare double @tanh(double) [[NOFREE_NOUNWIND_WILLRETURN]]
933 declare double @tanh(double)
935 ; CHECK: declare float @tanhf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
936 declare float @tanhf(float)
938 ; CHECK: declare x86_fp80 @tanhl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
939 declare x86_fp80 @tanhl(x86_fp80)
941 ; CHECK: declare x86_fp80 @tanl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
942 declare x86_fp80 @tanl(x86_fp80)
944 ; CHECK: declare noundef i64 @times(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
945 declare i64 @times(%opaque*)
947 ; CHECK: declare noalias noundef %opaque* @tmpfile() [[NOFREE_NOUNWIND]]
948 declare %opaque* @tmpfile()
950 ; CHECK-LINUX: declare noalias noundef %opaque* @tmpfile64() [[NOFREE_NOUNWIND]]
951 declare %opaque* @tmpfile64()
953 ; CHECK: declare i32 @toascii(i32) [[NOFREE_NOUNWIND_WILLRETURN]]
954 declare i32 @toascii(i32)
956 ; CHECK: declare double @trunc(double) [[NOFREE_NOUNWIND_WILLRETURN]]
957 declare double @trunc(double)
959 ; CHECK: declare float @truncf(float) [[NOFREE_NOUNWIND_WILLRETURN]]
960 declare float @truncf(float)
962 ; CHECK: declare x86_fp80 @truncl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]]
963 declare x86_fp80 @truncl(x86_fp80)
965 ; CHECK: declare noundef i32 @uname(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
966 declare i32 @uname(%opaque*)
968 ; CHECK: declare noundef i32 @ungetc(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]]
969 declare i32 @ungetc(i32, %opaque*)
971 ; CHECK: declare noundef i32 @unlink(i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
972 declare i32 @unlink(i8*)
974 ; CHECK: declare noundef i32 @unsetenv(i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
975 declare i32 @unsetenv(i8*)
977 ; CHECK: declare noundef i32 @utime(i8* nocapture noundef readonly, %opaque* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
978 declare i32 @utime(i8*, %opaque*)
980 ; CHECK: declare noundef i32 @utimes(i8* nocapture noundef readonly, %opaque* nocapture noundef readonly) [[NOFREE_NOUNWIND]]
981 declare i32 @utimes(i8*, %opaque*)
983 ; CHECK: declare noalias noundef i8* @valloc(i64 noundef) [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN]]
984 declare i8* @valloc(i64)
986 ; CHECK: declare noundef i32 @vfprintf(%opaque* nocapture noundef, i8* nocapture noundef readonly, %opaque* noundef) [[NOFREE_NOUNWIND]]
987 declare i32 @vfprintf(%opaque*, i8*, %opaque*)
989 ; CHECK: declare noundef i32 @vfscanf(%opaque* nocapture noundef, i8* nocapture noundef readonly, %opaque* noundef) [[NOFREE_NOUNWIND]]
990 declare i32 @vfscanf(%opaque*, i8*, %opaque*)
992 ; CHECK: declare noundef i32 @vprintf(i8* nocapture noundef readonly, %opaque* noundef) [[NOFREE_NOUNWIND]]
993 declare i32 @vprintf(i8*, %opaque*)
995 ; CHECK: declare noundef i32 @vscanf(i8* nocapture noundef readonly, %opaque* noundef) [[NOFREE_NOUNWIND]]
996 declare i32 @vscanf(i8*, %opaque*)
998 ; CHECK: declare noundef i32 @vsnprintf(i8* nocapture noundef, i64 noundef, i8* nocapture noundef readonly, %opaque* noundef) [[NOFREE_NOUNWIND]]
999 declare i32 @vsnprintf(i8*, i64, i8*, %opaque*)
1001 ; CHECK: declare noundef i32 @vsprintf(i8* nocapture noundef, i8* nocapture noundef readonly, %opaque* noundef) [[NOFREE_NOUNWIND]]
1002 declare i32 @vsprintf(i8*, i8*, %opaque*)
1004 ; CHECK: declare noundef i32 @vsscanf(i8* nocapture noundef readonly, i8* nocapture noundef readonly, %opaque* noundef) [[NOFREE_NOUNWIND]]
1005 declare i32 @vsscanf(i8*, i8*, %opaque*)
1007 ; CHECK: declare noundef i64 @write(i32 noundef, i8* nocapture noundef readonly, i64 noundef) [[NOFREE]]
1008 declare i64 @write(i32, i8*, i64)
1011 ; memset_pattern16 isn't available everywhere.
1012 ; CHECK-DARWIN: declare void @memset_pattern16(i8* nocapture writeonly, i8* nocapture readonly, i64) [[ARGMEMONLY_NOFREE:#[0-9]+]]
1013 declare void @memset_pattern16(i8*, i8*, i64)
1016 ; CHECK-DAG: attributes [[NOFREE_NOUNWIND_WILLRETURN]] = { mustprogress nofree nounwind willreturn }
1017 ; CHECK-DAG: attributes [[NOFREE_NOUNWIND]] = { nofree nounwind }
1018 ; CHECK-DAG: attributes [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN]] = { inaccessiblememonly mustprogress nofree nounwind willreturn }
1019 ; CHECK-DAG: attributes [[NOFREE_NOUNWIND_READONLY_WILLRETURN]] = { mustprogress nofree nounwind readonly willreturn }
1020 ; CHECK-DAG: attributes [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN]] = { argmemonly mustprogress nofree nounwind willreturn }
1021 ; CHECK-DAG: attributes [[NOFREE_NOUNWIND_READONLY]] = { nofree nounwind readonly }
1022 ; CHECK-DAG: attributes [[INACCESSIBLEMEMORARGMEMONLY_NOUNWIND_WILLRETURN]] = { inaccessiblemem_or_argmemonly mustprogress nounwind willreturn }
1023 ; CHECK-DAG: attributes [[NOFREE_WILLRETURN]] = { mustprogress nofree willreturn }
1024 ; CHECK-DAG: attributes [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY_WILLRETURN]] = { argmemonly mustprogress nofree nounwind readonly willreturn }
1025 ; CHECK-DAG: attributes [[NOFREE]] = { nofree }
1026 ; CHECK-DAG: attributes [[WILLRETURN]] = { mustprogress willreturn }
1027 ; CHECK-DAG: attributes [[INACCESSIBLEMEMORARGONLY_NOFREE_NOUNWIND_WILLRETURN]]  = { inaccessiblemem_or_argmemonly mustprogress nofree nounwind willreturn }
1029 ; CHECK-DARWIN-DAG: attributes [[ARGMEMONLY_NOFREE]] = { argmemonly nofree }
1030 ; CHECK-NVPTX-DAG: attributes [[NOFREE_NOUNWIND_READNONE]] = { nofree nosync nounwind readnone }