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