blob: ed492ab626ec471ca4413487632ef7fffb5d0d4d [file] [log] [blame]
Ahmed Bougacha1fe3f1c2016-05-25 20:22:45 +00001; RUN: opt < %s -mtriple=x86_64-- -inferattrs -S | FileCheck %s
2; RUN: opt < %s -mtriple=x86_64-- -passes=inferattrs -S | FileCheck %s
3; RUN: opt < %s -mtriple=x86_64-apple-macosx10.8.0 -inferattrs -S | FileCheck -check-prefix=CHECK-DARWIN %s
David Majnemerae272d72016-03-31 21:29:57 +00004; RUN: opt < %s -mtriple=nvptx -inferattrs -S | FileCheck -check-prefix=CHECK-NVPTX %s
Meador Inge6b6a1612013-03-21 00:55:59 +00005
Philip Reames24667192016-01-04 22:49:23 +00006; operator new routines
7declare i8* @_Znwj(i64)
8; CHECK: declare noalias nonnull i8* @_Znwj(i64)
9declare i8* @_Znwm(i64)
10; CHECK: declare noalias nonnull i8* @_Znwm(i64)
11
David Majnemerae272d72016-03-31 21:29:57 +000012declare i32 @__nvvm_reflect(i8*)
13; CHECK-NVPTX: declare i32 @__nvvm_reflect(i8*) [[G0:#[0-9]+]]
14; CHECK-NVPTX: attributes [[G0]] = { nounwind readnone }
Ahmed Bougacha1fe3f1c2016-05-25 20:22:45 +000015
16
17; Check all the libc functions (thereby also exercising the prototype check).
18; Note that it's OK to modify these as attributes might be missing. These checks
19; reflect the currently inferred attributes.
20
21; Use an opaque pointer type for all the (possibly opaque) structs.
22%opaque = type opaque
23
24; CHECK: declare double @__cospi(double)
25declare double @__cospi(double)
26
27; CHECK: declare float @__cospif(float)
28declare float @__cospif(float)
29
30; CHECK: declare double @__sinpi(double)
31declare double @__sinpi(double)
32
33; CHECK: declare float @__sinpif(float)
34declare float @__sinpif(float)
35
36; CHECK: declare i32 @abs(i32)
37declare i32 @abs(i32)
38
39; CHECK: declare i32 @access(i8* nocapture readonly, i32) [[G0:#[0-9]+]]
40declare i32 @access(i8*, i32)
41
42; CHECK: declare double @acos(double)
43declare double @acos(double)
44
45; CHECK: declare float @acosf(float)
46declare float @acosf(float)
47
48; CHECK: declare double @acosh(double)
49declare double @acosh(double)
50
51; CHECK: declare float @acoshf(float)
52declare float @acoshf(float)
53
54; CHECK: declare x86_fp80 @acoshl(x86_fp80)
55declare x86_fp80 @acoshl(x86_fp80)
56
57; CHECK: declare x86_fp80 @acosl(x86_fp80)
58declare x86_fp80 @acosl(x86_fp80)
59
60; CHECK: declare double @asin(double)
61declare double @asin(double)
62
63; CHECK: declare float @asinf(float)
64declare float @asinf(float)
65
66; CHECK: declare double @asinh(double)
67declare double @asinh(double)
68
69; CHECK: declare float @asinhf(float)
70declare float @asinhf(float)
71
72; CHECK: declare x86_fp80 @asinhl(x86_fp80)
73declare x86_fp80 @asinhl(x86_fp80)
74
75; CHECK: declare x86_fp80 @asinl(x86_fp80)
76declare x86_fp80 @asinl(x86_fp80)
77
78; CHECK: declare double @atan(double)
79declare double @atan(double)
80
81; CHECK: declare double @atan2(double, double)
82declare double @atan2(double, double)
83
84; CHECK: declare float @atan2f(float, float)
85declare float @atan2f(float, float)
86
87; CHECK: declare x86_fp80 @atan2l(x86_fp80, x86_fp80)
88declare x86_fp80 @atan2l(x86_fp80, x86_fp80)
89
90; CHECK: declare float @atanf(float)
91declare float @atanf(float)
92
93; CHECK: declare double @atanh(double)
94declare double @atanh(double)
95
96; CHECK: declare float @atanhf(float)
97declare float @atanhf(float)
98
99; CHECK: declare x86_fp80 @atanhl(x86_fp80)
100declare x86_fp80 @atanhl(x86_fp80)
101
102; CHECK: declare x86_fp80 @atanl(x86_fp80)
103declare x86_fp80 @atanl(x86_fp80)
104
105; CHECK: declare double @atof(i8* nocapture) [[G1:#[0-9]+]]
106declare double @atof(i8*)
107
108; CHECK: declare i32 @atoi(i8* nocapture) [[G1]]
109declare i32 @atoi(i8*)
110
111; CHECK: declare i64 @atol(i8* nocapture) [[G1]]
112declare i64 @atol(i8*)
113
114; CHECK: declare i64 @atoll(i8* nocapture) [[G1]]
115declare i64 @atoll(i8*)
116
117; CHECK: declare i32 @bcmp(i8* nocapture, i8* nocapture, i64) [[G1]]
118declare i32 @bcmp(i8*, i8*, i64)
119
120; CHECK: declare void @bcopy(i8* nocapture readonly, i8* nocapture, i64) [[G0]]
121declare void @bcopy(i8*, i8*, i64)
122
123; CHECK: declare void @bzero(i8* nocapture, i64) [[G0]]
124declare void @bzero(i8*, i64)
125
126; CHECK: declare noalias i8* @calloc(i64, i64) [[G0]]
127declare i8* @calloc(i64, i64)
128
129; CHECK: declare double @cbrt(double)
130declare double @cbrt(double)
131
132; CHECK: declare float @cbrtf(float)
133declare float @cbrtf(float)
134
135; CHECK: declare x86_fp80 @cbrtl(x86_fp80)
136declare x86_fp80 @cbrtl(x86_fp80)
137
138; CHECK: declare double @ceil(double)
139declare double @ceil(double)
140
141; CHECK: declare float @ceilf(float)
142declare float @ceilf(float)
143
144; CHECK: declare x86_fp80 @ceill(x86_fp80)
145declare x86_fp80 @ceill(x86_fp80)
146
147; CHECK: declare i32 @chmod(i8* nocapture readonly, i16 zeroext) [[G0]]
148declare i32 @chmod(i8*, i16 zeroext)
149
150; CHECK: declare i32 @chown(i8* nocapture readonly, i32, i32) [[G0]]
151declare i32 @chown(i8*, i32, i32)
152
153; CHECK: declare void @clearerr(%opaque* nocapture) [[G0]]
154declare void @clearerr(%opaque*)
155
156; CHECK: declare i32 @closedir(%opaque* nocapture) [[G0]]
157declare i32 @closedir(%opaque*)
158
159; CHECK: declare double @copysign(double, double)
160declare double @copysign(double, double)
161
162; CHECK: declare float @copysignf(float, float)
163declare float @copysignf(float, float)
164
165; CHECK: declare x86_fp80 @copysignl(x86_fp80, x86_fp80)
166declare x86_fp80 @copysignl(x86_fp80, x86_fp80)
167
168; CHECK: declare double @cos(double)
169declare double @cos(double)
170
171; CHECK: declare float @cosf(float)
172declare float @cosf(float)
173
174; CHECK: declare double @cosh(double)
175declare double @cosh(double)
176
177; CHECK: declare float @coshf(float)
178declare float @coshf(float)
179
180; CHECK: declare x86_fp80 @coshl(x86_fp80)
181declare x86_fp80 @coshl(x86_fp80)
182
183; CHECK: declare x86_fp80 @cosl(x86_fp80)
184declare x86_fp80 @cosl(x86_fp80)
185
186; CHECK: declare i8* @ctermid(i8* nocapture) [[G0]]
187declare i8* @ctermid(i8*)
188
189; CHECK: declare double @exp(double)
190declare double @exp(double)
191
192; CHECK: declare double @exp2(double)
193declare double @exp2(double)
194
195; CHECK: declare float @exp2f(float)
196declare float @exp2f(float)
197
198; CHECK: declare x86_fp80 @exp2l(x86_fp80)
199declare x86_fp80 @exp2l(x86_fp80)
200
201; CHECK: declare float @expf(float)
202declare float @expf(float)
203
204; CHECK: declare x86_fp80 @expl(x86_fp80)
205declare x86_fp80 @expl(x86_fp80)
206
207; CHECK: declare double @expm1(double)
208declare double @expm1(double)
209
210; CHECK: declare float @expm1f(float)
211declare float @expm1f(float)
212
213; CHECK: declare x86_fp80 @expm1l(x86_fp80)
214declare x86_fp80 @expm1l(x86_fp80)
215
216; CHECK: declare double @fabs(double)
217declare double @fabs(double)
218
219; CHECK: declare float @fabsf(float)
220declare float @fabsf(float)
221
222; CHECK: declare x86_fp80 @fabsl(x86_fp80)
223declare x86_fp80 @fabsl(x86_fp80)
224
225; CHECK: declare i32 @fclose(%opaque* nocapture) [[G0]]
226declare i32 @fclose(%opaque*)
227
228; CHECK: declare noalias %opaque* @fdopen(i32, i8* nocapture readonly) [[G0]]
229declare %opaque* @fdopen(i32, i8*)
230
231; CHECK: declare i32 @feof(%opaque* nocapture) [[G0]]
232declare i32 @feof(%opaque*)
233
234; CHECK: declare i32 @ferror(%opaque* nocapture) [[G1]]
235declare i32 @ferror(%opaque*)
236
237; CHECK: declare i32 @fflush(%opaque* nocapture) [[G0]]
238declare i32 @fflush(%opaque*)
239
240; CHECK: declare i32 @ffs(i32)
241declare i32 @ffs(i32)
242
243; CHECK: declare i32 @ffsl(i64)
244declare i32 @ffsl(i64)
245
246; CHECK: declare i32 @ffsll(i64)
247declare i32 @ffsll(i64)
248
249; CHECK: declare i32 @fgetc(%opaque* nocapture) [[G0]]
250declare i32 @fgetc(%opaque*)
251
252; CHECK: declare i32 @fgetpos(%opaque* nocapture, i64* nocapture) [[G0]]
253declare i32 @fgetpos(%opaque*, i64*)
254
255; CHECK: declare i8* @fgets(i8*, i32, %opaque* nocapture) [[G0]]
256declare i8* @fgets(i8*, i32, %opaque*)
257
258; CHECK: declare i32 @fileno(%opaque* nocapture) [[G0]]
259declare i32 @fileno(%opaque*)
260
261; CHECK: declare void @flockfile(%opaque* nocapture) [[G0]]
262declare void @flockfile(%opaque*)
263
264; CHECK: declare double @floor(double)
265declare double @floor(double)
266
267; CHECK: declare float @floorf(float)
268declare float @floorf(float)
269
270; CHECK: declare x86_fp80 @floorl(x86_fp80)
271declare x86_fp80 @floorl(x86_fp80)
272
273; CHECK: declare i32 @fls(i32)
274declare i32 @fls(i32)
275
276; CHECK: declare i32 @flsl(i64)
277declare i32 @flsl(i64)
278
279; CHECK: declare i32 @flsll(i64)
280declare i32 @flsll(i64)
281
282; CHECK: declare double @fmax(double, double)
283declare double @fmax(double, double)
284
285; CHECK: declare float @fmaxf(float, float)
286declare float @fmaxf(float, float)
287
288; CHECK: declare x86_fp80 @fmaxl(x86_fp80, x86_fp80)
289declare x86_fp80 @fmaxl(x86_fp80, x86_fp80)
290
291; CHECK: declare double @fmin(double, double)
292declare double @fmin(double, double)
293
294; CHECK: declare float @fminf(float, float)
295declare float @fminf(float, float)
296
297; CHECK: declare x86_fp80 @fminl(x86_fp80, x86_fp80)
298declare x86_fp80 @fminl(x86_fp80, x86_fp80)
299
300; CHECK: declare double @fmod(double, double)
301declare double @fmod(double, double)
302
303; CHECK: declare float @fmodf(float, float)
304declare float @fmodf(float, float)
305
306; CHECK: declare x86_fp80 @fmodl(x86_fp80, x86_fp80)
307declare x86_fp80 @fmodl(x86_fp80, x86_fp80)
308
309; CHECK: declare noalias %opaque* @fopen(i8* nocapture readonly, i8* nocapture readonly) [[G0]]
310declare %opaque* @fopen(i8*, i8*)
311
312; CHECK: declare i32 @fprintf(%opaque* nocapture, i8* nocapture readonly, ...) [[G0]]
313declare i32 @fprintf(%opaque*, i8*, ...)
314
315; CHECK: declare i32 @fputc(i32, %opaque* nocapture) [[G0]]
316declare i32 @fputc(i32, %opaque*)
317
318; CHECK: declare i32 @fputs(i8* nocapture readonly, %opaque* nocapture) [[G0]]
319declare i32 @fputs(i8*, %opaque*)
320
321; CHECK: declare i64 @fread(i8* nocapture, i64, i64, %opaque* nocapture) [[G0]]
322declare i64 @fread(i8*, i64, i64, %opaque*)
323
324; CHECK: declare void @free(i8* nocapture) [[G0]]
325declare void @free(i8*)
326
327; CHECK: declare double @frexp(double, i32* nocapture) [[G0]]
328declare double @frexp(double, i32*)
329
330; CHECK: declare float @frexpf(float, i32* nocapture) [[G0]]
331declare float @frexpf(float, i32*)
332
333; CHECK: declare x86_fp80 @frexpl(x86_fp80, i32* nocapture) [[G0]]
334declare x86_fp80 @frexpl(x86_fp80, i32*)
335
336; CHECK: declare i32 @fscanf(%opaque* nocapture, i8* nocapture readonly, ...) [[G0]]
337declare i32 @fscanf(%opaque*, i8*, ...)
338
339; CHECK: declare i32 @fseek(%opaque* nocapture, i64, i32) [[G0]]
340declare i32 @fseek(%opaque*, i64, i32)
341
342; CHECK: declare i32 @fseeko(%opaque* nocapture, i64, i32) [[G0]]
343declare i32 @fseeko(%opaque*, i64, i32)
344
345; CHECK: declare i32 @fsetpos(%opaque* nocapture, i64*) [[G0]]
346declare i32 @fsetpos(%opaque*, i64*)
347
348; CHECK: declare i32 @fstat(i32, %opaque* nocapture) [[G0]]
349declare i32 @fstat(i32, %opaque*)
350
351; CHECK: declare i32 @fstatvfs(i32, %opaque* nocapture) [[G0]]
352declare i32 @fstatvfs(i32, %opaque*)
353
354; CHECK: declare i64 @ftell(%opaque* nocapture) [[G0]]
355declare i64 @ftell(%opaque*)
356
357; CHECK: declare i64 @ftello(%opaque* nocapture) [[G0]]
358declare i64 @ftello(%opaque*)
359
360; CHECK: declare i32 @ftrylockfile(%opaque* nocapture) [[G0]]
361declare i32 @ftrylockfile(%opaque*)
362
363; CHECK: declare void @funlockfile(%opaque* nocapture) [[G0]]
364declare void @funlockfile(%opaque*)
365
366; CHECK: declare i64 @fwrite(i8* nocapture, i64, i64, %opaque* nocapture) [[G0]]
367declare i64 @fwrite(i8*, i64, i64, %opaque*)
368
369; CHECK: declare i32 @getc(%opaque* nocapture) [[G0]]
370declare i32 @getc(%opaque*)
371
372; CHECK: declare i32 @getc_unlocked(%opaque* nocapture) [[G0]]
373declare i32 @getc_unlocked(%opaque*)
374
375; CHECK: declare i32 @getchar()
376declare i32 @getchar()
377
378; CHECK: declare i8* @getenv(i8* nocapture) [[G1]]
379declare i8* @getenv(i8*)
380
381; CHECK: declare i32 @getitimer(i32, %opaque* nocapture) [[G0]]
382declare i32 @getitimer(i32, %opaque*)
383
384; CHECK: declare i32 @getlogin_r(i8* nocapture, i64) [[G0]]
385declare i32 @getlogin_r(i8*, i64)
386
387; CHECK: declare %opaque* @getpwnam(i8* nocapture readonly) [[G0]]
388declare %opaque* @getpwnam(i8*)
389
390; CHECK: declare i8* @gets(i8*)
391declare i8* @gets(i8*)
392
393; CHECK: declare i32 @gettimeofday(%opaque* nocapture, i8* nocapture) [[G0]]
394declare i32 @gettimeofday(%opaque*, i8*)
395
396; CHECK: declare i32 @isascii(i32)
397declare i32 @isascii(i32)
398
399; CHECK: declare i32 @isdigit(i32)
400declare i32 @isdigit(i32)
401
402; CHECK: declare i64 @labs(i64)
403declare i64 @labs(i64)
404
405; CHECK: declare i32 @lchown(i8* nocapture readonly, i32, i32) [[G0]]
406declare i32 @lchown(i8*, i32, i32)
407
408; CHECK: declare double @ldexp(double, i32)
409declare double @ldexp(double, i32)
410
411; CHECK: declare float @ldexpf(float, i32)
412declare float @ldexpf(float, i32)
413
414; CHECK: declare x86_fp80 @ldexpl(x86_fp80, i32)
415declare x86_fp80 @ldexpl(x86_fp80, i32)
416
417; CHECK: declare i64 @llabs(i64)
418declare i64 @llabs(i64)
419
420; CHECK: declare double @log(double)
421declare double @log(double)
422
423; CHECK: declare double @log10(double)
424declare double @log10(double)
425
426; CHECK: declare float @log10f(float)
427declare float @log10f(float)
428
429; CHECK: declare x86_fp80 @log10l(x86_fp80)
430declare x86_fp80 @log10l(x86_fp80)
431
432; CHECK: declare double @log1p(double)
433declare double @log1p(double)
434
435; CHECK: declare float @log1pf(float)
436declare float @log1pf(float)
437
438; CHECK: declare x86_fp80 @log1pl(x86_fp80)
439declare x86_fp80 @log1pl(x86_fp80)
440
441; CHECK: declare double @log2(double)
442declare double @log2(double)
443
444; CHECK: declare float @log2f(float)
445declare float @log2f(float)
446
447; CHECK: declare x86_fp80 @log2l(x86_fp80)
448declare x86_fp80 @log2l(x86_fp80)
449
450; CHECK: declare double @logb(double)
451declare double @logb(double)
452
453; CHECK: declare float @logbf(float)
454declare float @logbf(float)
455
456; CHECK: declare x86_fp80 @logbl(x86_fp80)
457declare x86_fp80 @logbl(x86_fp80)
458
459; CHECK: declare float @logf(float)
460declare float @logf(float)
461
462; CHECK: declare x86_fp80 @logl(x86_fp80)
463declare x86_fp80 @logl(x86_fp80)
464
465; CHECK: declare i32 @lstat(i8* nocapture readonly, %opaque* nocapture) [[G0]]
466declare i32 @lstat(i8*, %opaque*)
467
468; CHECK: declare noalias i8* @malloc(i64) [[G0]]
469declare i8* @malloc(i64)
470
471; CHECK: declare i8* @memccpy(i8*, i8* nocapture readonly, i32, i64) [[G0]]
472declare i8* @memccpy(i8*, i8*, i32, i64)
473
474; CHECK: declare i8* @memchr(i8*, i32, i64) [[G1]]
475declare i8* @memchr(i8*, i32, i64)
476
477; CHECK: declare i32 @memcmp(i8* nocapture, i8* nocapture, i64) [[G1]]
478declare i32 @memcmp(i8*, i8*, i64)
479
480; CHECK: declare i8* @memcpy(i8*, i8* nocapture readonly, i64) [[G0]]
481declare i8* @memcpy(i8*, i8*, i64)
482
483; CHECK: declare i8* @memmove(i8*, i8* nocapture readonly, i64) [[G0]]
484declare i8* @memmove(i8*, i8*, i64)
485
486; CHECK: declare i8* @memset(i8*, i32, i64)
487declare i8* @memset(i8*, i32, i64)
488
489; CHECK: declare i32 @mkdir(i8* nocapture readonly, i16 zeroext) [[G0]]
490declare i32 @mkdir(i8*, i16 zeroext)
491
492; CHECK: declare i64 @mktime(%opaque* nocapture) [[G0]]
493declare i64 @mktime(%opaque*)
494
495; CHECK: declare double @modf(double, double* nocapture) [[G0]]
496declare double @modf(double, double*)
497
498; CHECK: declare float @modff(float, float* nocapture) [[G0]]
499declare float @modff(float, float*)
500
501; CHECK: declare x86_fp80 @modfl(x86_fp80, x86_fp80* nocapture) [[G0]]
502declare x86_fp80 @modfl(x86_fp80, x86_fp80*)
503
504; CHECK: declare double @nearbyint(double)
505declare double @nearbyint(double)
506
507; CHECK: declare float @nearbyintf(float)
508declare float @nearbyintf(float)
509
510; CHECK: declare x86_fp80 @nearbyintl(x86_fp80)
511declare x86_fp80 @nearbyintl(x86_fp80)
512
513; CHECK: declare i32 @open(i8* nocapture readonly, i32, ...)
514declare i32 @open(i8*, i32, ...)
515
516; CHECK: declare noalias %opaque* @opendir(i8* nocapture readonly) [[G0]]
517declare %opaque* @opendir(i8*)
518
519; CHECK: declare i32 @pclose(%opaque* nocapture) [[G0]]
520declare i32 @pclose(%opaque*)
521
522; CHECK: declare void @perror(i8* nocapture readonly) [[G0]]
523declare void @perror(i8*)
524
525; CHECK: declare noalias %opaque* @popen(i8* nocapture readonly, i8* nocapture readonly) [[G0]]
526declare %opaque* @popen(i8*, i8*)
527
528; CHECK: declare i32 @posix_memalign(i8**, i64, i64)
529declare i32 @posix_memalign(i8**, i64, i64)
530
531; CHECK: declare double @pow(double, double)
532declare double @pow(double, double)
533
534; CHECK: declare float @powf(float, float)
535declare float @powf(float, float)
536
537; CHECK: declare x86_fp80 @powl(x86_fp80, x86_fp80)
538declare x86_fp80 @powl(x86_fp80, x86_fp80)
539
540; CHECK: declare i64 @pread(i32, i8* nocapture, i64, i64)
541declare i64 @pread(i32, i8*, i64, i64)
542
543; CHECK: declare i32 @printf(i8* nocapture readonly, ...) [[G0]]
544declare i32 @printf(i8*, ...)
545
546; CHECK: declare i32 @putc(i32, %opaque* nocapture) [[G0]]
547declare i32 @putc(i32, %opaque*)
548
549; CHECK: declare i32 @putchar(i32)
550declare i32 @putchar(i32)
551
552; CHECK: declare i32 @puts(i8* nocapture readonly) [[G0]]
553declare i32 @puts(i8*)
554
555; CHECK: declare i64 @pwrite(i32, i8* nocapture readonly, i64, i64)
556declare i64 @pwrite(i32, i8*, i64, i64)
557
558; CHECK: declare void @qsort(i8*, i64, i64, i32 (i8*, i8*)* nocapture)
559declare void @qsort(i8*, i64, i64, i32 (i8*, i8*)*)
560
561; CHECK: declare i64 @read(i32, i8* nocapture, i64)
562declare i64 @read(i32, i8*, i64)
563
564; CHECK: declare i64 @readlink(i8* nocapture readonly, i8* nocapture, i64) [[G0]]
565declare i64 @readlink(i8*, i8*, i64)
566
567; CHECK: declare noalias i8* @realloc(i8* nocapture, i64) [[G0]]
568declare i8* @realloc(i8*, i64)
569
570; CHECK: declare i8* @reallocf(i8*, i64)
571declare i8* @reallocf(i8*, i64)
572
573; CHECK: declare i8* @realpath(i8* nocapture readonly, i8*)
574declare i8* @realpath(i8*, i8*)
575
576; CHECK: declare i32 @remove(i8* nocapture readonly) [[G0]]
577declare i32 @remove(i8*)
578
579; CHECK: declare i32 @rename(i8* nocapture readonly, i8* nocapture readonly) [[G0]]
580declare i32 @rename(i8*, i8*)
581
582; CHECK: declare void @rewind(%opaque* nocapture) [[G0]]
583declare void @rewind(%opaque*)
584
585; CHECK: declare double @rint(double)
586declare double @rint(double)
587
588; CHECK: declare float @rintf(float)
589declare float @rintf(float)
590
591; CHECK: declare x86_fp80 @rintl(x86_fp80)
592declare x86_fp80 @rintl(x86_fp80)
593
594; CHECK: declare i32 @rmdir(i8* nocapture readonly) [[G0]]
595declare i32 @rmdir(i8*)
596
597; CHECK: declare double @round(double)
598declare double @round(double)
599
600; CHECK: declare float @roundf(float)
601declare float @roundf(float)
602
603; CHECK: declare x86_fp80 @roundl(x86_fp80)
604declare x86_fp80 @roundl(x86_fp80)
605
606; CHECK: declare i32 @scanf(i8* nocapture readonly, ...) [[G0]]
607declare i32 @scanf(i8*, ...)
608
609; CHECK: declare void @setbuf(%opaque* nocapture, i8*) [[G0]]
610declare void @setbuf(%opaque*, i8*)
611
612; CHECK: declare i32 @setitimer(i32, %opaque* nocapture readonly, %opaque* nocapture) [[G0]]
613declare i32 @setitimer(i32, %opaque*, %opaque*)
614
615; CHECK: declare i32 @setvbuf(%opaque* nocapture, i8*, i32, i64) [[G0]]
616declare i32 @setvbuf(%opaque*, i8*, i32, i64)
617
618; CHECK: declare double @sin(double)
619declare double @sin(double)
620
621; CHECK: declare float @sinf(float)
622declare float @sinf(float)
623
624; CHECK: declare double @sinh(double)
625declare double @sinh(double)
626
627; CHECK: declare float @sinhf(float)
628declare float @sinhf(float)
629
630; CHECK: declare x86_fp80 @sinhl(x86_fp80)
631declare x86_fp80 @sinhl(x86_fp80)
632
633; CHECK: declare x86_fp80 @sinl(x86_fp80)
634declare x86_fp80 @sinl(x86_fp80)
635
636; CHECK: declare i32 @snprintf(i8* nocapture, i64, i8* nocapture readonly, ...) [[G0]]
637declare i32 @snprintf(i8*, i64, i8*, ...)
638
639; CHECK: declare i32 @sprintf(i8* nocapture, i8* nocapture readonly, ...) [[G0]]
640declare i32 @sprintf(i8*, i8*, ...)
641
642; CHECK: declare double @sqrt(double)
643declare double @sqrt(double)
644
645; CHECK: declare float @sqrtf(float)
646declare float @sqrtf(float)
647
648; CHECK: declare x86_fp80 @sqrtl(x86_fp80)
649declare x86_fp80 @sqrtl(x86_fp80)
650
651; CHECK: declare i32 @sscanf(i8* nocapture readonly, i8* nocapture readonly, ...) [[G0]]
652declare i32 @sscanf(i8*, i8*, ...)
653
654; CHECK: declare i32 @stat(i8* nocapture readonly, %opaque* nocapture) [[G0]]
655declare i32 @stat(i8*, %opaque*)
656
657; CHECK: declare i32 @statvfs(i8* nocapture readonly, %opaque* nocapture) [[G0]]
658declare i32 @statvfs(i8*, %opaque*)
659
660; CHECK: declare i8* @stpcpy(i8*, i8* nocapture readonly) [[G0]]
661declare i8* @stpcpy(i8*, i8*)
662
663; CHECK: declare i8* @stpncpy(i8*, i8* nocapture readonly, i64) [[G0]]
664declare i8* @stpncpy(i8*, i8*, i64)
665
666; CHECK: declare i32 @strcasecmp(i8* nocapture, i8* nocapture) [[G1]]
667declare i32 @strcasecmp(i8*, i8*)
668
669; CHECK: declare i8* @strcat(i8*, i8* nocapture readonly) [[G0]]
670declare i8* @strcat(i8*, i8*)
671
672; CHECK: declare i8* @strchr(i8*, i32) [[G1]]
673declare i8* @strchr(i8*, i32)
674
675; CHECK: declare i32 @strcmp(i8* nocapture, i8* nocapture) [[G1]]
676declare i32 @strcmp(i8*, i8*)
677
678; CHECK: declare i32 @strcoll(i8* nocapture, i8* nocapture) [[G1]]
679declare i32 @strcoll(i8*, i8*)
680
681; CHECK: declare i8* @strcpy(i8*, i8* nocapture readonly) [[G0]]
682declare i8* @strcpy(i8*, i8*)
683
684; CHECK: declare i64 @strcspn(i8* nocapture, i8* nocapture) [[G1]]
685declare i64 @strcspn(i8*, i8*)
686
687; CHECK: declare noalias i8* @strdup(i8* nocapture readonly) [[G0]]
688declare i8* @strdup(i8*)
689
690; CHECK: declare i64 @strlen(i8* nocapture) [[G1]]
691declare i64 @strlen(i8*)
692
693; CHECK: declare i32 @strncasecmp(i8* nocapture, i8* nocapture, i64) [[G1]]
694declare i32 @strncasecmp(i8*, i8*, i64)
695
696; CHECK: declare i8* @strncat(i8*, i8* nocapture readonly, i64) [[G0]]
697declare i8* @strncat(i8*, i8*, i64)
698
699; CHECK: declare i32 @strncmp(i8* nocapture, i8* nocapture, i64) [[G1]]
700declare i32 @strncmp(i8*, i8*, i64)
701
702; CHECK: declare i8* @strncpy(i8*, i8* nocapture readonly, i64) [[G0]]
703declare i8* @strncpy(i8*, i8*, i64)
704
705; CHECK: declare noalias i8* @strndup(i8* nocapture readonly, i64) [[G0]]
706declare i8* @strndup(i8*, i64)
707
708; CHECK: declare i64 @strnlen(i8*, i64)
709declare i64 @strnlen(i8*, i64)
710
711; CHECK: declare i8* @strpbrk(i8*, i8* nocapture) [[G1]]
712declare i8* @strpbrk(i8*, i8*)
713
714; CHECK: declare i8* @strrchr(i8*, i32) [[G1]]
715declare i8* @strrchr(i8*, i32)
716
717; CHECK: declare i64 @strspn(i8* nocapture, i8* nocapture) [[G1]]
718declare i64 @strspn(i8*, i8*)
719
720; CHECK: declare i8* @strstr(i8*, i8* nocapture) [[G1]]
721declare i8* @strstr(i8*, i8*)
722
723; CHECK: declare double @strtod(i8* readonly, i8** nocapture) [[G0]]
724declare double @strtod(i8*, i8**)
725
726; CHECK: declare float @strtof(i8* readonly, i8** nocapture) [[G0]]
727declare float @strtof(i8*, i8**)
728
729; CHECK: declare i8* @strtok(i8*, i8* nocapture readonly) [[G0]]
730declare i8* @strtok(i8*, i8*)
731
732; CHECK: declare i8* @strtok_r(i8*, i8* nocapture readonly, i8**) [[G0]]
733declare i8* @strtok_r(i8*, i8*, i8**)
734
735; CHECK: declare i64 @strtol(i8* readonly, i8** nocapture, i32) [[G0]]
736declare i64 @strtol(i8*, i8**, i32)
737
738; CHECK: declare x86_fp80 @strtold(i8* readonly, i8** nocapture) [[G0]]
739declare x86_fp80 @strtold(i8*, i8**)
740
741; CHECK: declare i64 @strtoll(i8* readonly, i8** nocapture, i32) [[G0]]
742declare i64 @strtoll(i8*, i8**, i32)
743
744; CHECK: declare i64 @strtoul(i8* readonly, i8** nocapture, i32) [[G0]]
745declare i64 @strtoul(i8*, i8**, i32)
746
747; CHECK: declare i64 @strtoull(i8* readonly, i8** nocapture, i32) [[G0]]
748declare i64 @strtoull(i8*, i8**, i32)
749
750; CHECK: declare i64 @strxfrm(i8* nocapture, i8* nocapture readonly, i64) [[G0]]
751declare i64 @strxfrm(i8*, i8*, i64)
752
753; CHECK: declare i32 @system(i8* nocapture readonly)
754declare i32 @system(i8*)
755
756; CHECK: declare double @tan(double)
757declare double @tan(double)
758
759; CHECK: declare float @tanf(float)
760declare float @tanf(float)
761
762; CHECK: declare double @tanh(double)
763declare double @tanh(double)
764
765; CHECK: declare float @tanhf(float)
766declare float @tanhf(float)
767
768; CHECK: declare x86_fp80 @tanhl(x86_fp80)
769declare x86_fp80 @tanhl(x86_fp80)
770
771; CHECK: declare x86_fp80 @tanl(x86_fp80)
772declare x86_fp80 @tanl(x86_fp80)
773
774; CHECK: declare i64 @times(%opaque* nocapture) [[G0]]
775declare i64 @times(%opaque*)
776
777; CHECK: declare noalias %opaque* @tmpfile() [[G0]]
778declare %opaque* @tmpfile()
779
780; CHECK: declare i32 @toascii(i32)
781declare i32 @toascii(i32)
782
783; CHECK: declare double @trunc(double)
784declare double @trunc(double)
785
786; CHECK: declare float @truncf(float)
787declare float @truncf(float)
788
789; CHECK: declare x86_fp80 @truncl(x86_fp80)
790declare x86_fp80 @truncl(x86_fp80)
791
792; CHECK: declare i32 @uname(%opaque* nocapture) [[G0]]
793declare i32 @uname(%opaque*)
794
795; CHECK: declare i32 @ungetc(i32, %opaque* nocapture) [[G0]]
796declare i32 @ungetc(i32, %opaque*)
797
798; CHECK: declare i32 @unlink(i8* nocapture readonly) [[G0]]
799declare i32 @unlink(i8*)
800
801; CHECK: declare i32 @unsetenv(i8* nocapture readonly) [[G0]]
802declare i32 @unsetenv(i8*)
803
804; CHECK: declare i32 @utime(i8* nocapture readonly, %opaque* nocapture readonly) [[G0]]
805declare i32 @utime(i8*, %opaque*)
806
807; CHECK: declare i32 @utimes(i8* nocapture readonly, %opaque* nocapture readonly) [[G0]]
808declare i32 @utimes(i8*, %opaque*)
809
810; CHECK: declare noalias i8* @valloc(i64) [[G0]]
811declare i8* @valloc(i64)
812
813; CHECK: declare i32 @vfprintf(%opaque* nocapture, i8* nocapture readonly, %opaque*) [[G0]]
814declare i32 @vfprintf(%opaque*, i8*, %opaque*)
815
816; CHECK: declare i32 @vfscanf(%opaque* nocapture, i8* nocapture readonly, %opaque*) [[G0]]
817declare i32 @vfscanf(%opaque*, i8*, %opaque*)
818
819; CHECK: declare i32 @vprintf(i8* nocapture readonly, %opaque*) [[G0]]
820declare i32 @vprintf(i8*, %opaque*)
821
822; CHECK: declare i32 @vscanf(i8* nocapture readonly, %opaque*) [[G0]]
823declare i32 @vscanf(i8*, %opaque*)
824
825; CHECK: declare i32 @vsnprintf(i8* nocapture, i64, i8* nocapture readonly, %opaque*) [[G0]]
826declare i32 @vsnprintf(i8*, i64, i8*, %opaque*)
827
828; CHECK: declare i32 @vsprintf(i8* nocapture, i8* nocapture readonly, %opaque*) [[G0]]
829declare i32 @vsprintf(i8*, i8*, %opaque*)
830
831; CHECK: declare i32 @vsscanf(i8* nocapture readonly, i8* nocapture readonly, %opaque*) [[G0]]
832declare i32 @vsscanf(i8*, i8*, %opaque*)
833
834; CHECK: declare i64 @write(i32, i8* nocapture readonly, i64)
835declare i64 @write(i32, i8*, i64)
836
837
838; memset_pattern16 isn't available everywhere.
839; CHECK-DARWIN: declare void @memset_pattern16(i8* nocapture, i8* nocapture readonly, i64) [[G2:#[0-9]+]]
840declare void @memset_pattern16(i8*, i8*, i64)
841
842
843; CHECK: attributes [[G0]] = { nounwind }
844; CHECK: attributes [[G1]] = { nounwind readonly }
845; CHECK-DARWIN: attributes [[G2]] = { argmemonly }