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