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