xref: /llvm-project/llvm/test/Transforms/InferFunctionAttrs/annotate-2.ll (revision edb2fc6dab2cf04779959829434e9e8572d48a26)
10dcfe7aaSMartin Sebor; Verify that incompatible declarations of known library functions are
20dcfe7aaSMartin Sebor; not annotated with argument attributes.  This negative test complements
30dcfe7aaSMartin Sebor; annotate.ll.
40dcfe7aaSMartin Sebor;
50dcfe7aaSMartin Sebor; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
6*edb2fc6dSNikita Popov; RUN: opt < %s -passes=inferattrs -S | FileCheck %s --match-full-lines
70dcfe7aaSMartin Sebor
80dcfe7aaSMartin Sebor
90dcfe7aaSMartin Sebor; Exercise <math.h> function declarations.
100dcfe7aaSMartin Sebor
110dcfe7aaSMartin Sebor; Expect double fabs(double).
120dcfe7aaSMartin Sebordeclare float @fabs(float)
130dcfe7aaSMartin Sebor; CHECK: declare float @fabs(float)
140dcfe7aaSMartin Sebor
150dcfe7aaSMartin Sebor
160dcfe7aaSMartin Sebor; Exercise <stdio.h> function declarations.
170dcfe7aaSMartin Sebor
180dcfe7aaSMartin Sebor; Expect int fgetc(FILE*).
190dcfe7aaSMartin Sebordeclare i32 @fgetc(ptr, i32)
200dcfe7aaSMartin Sebor; CHECK: declare i32 @fgetc(ptr, i32)
210dcfe7aaSMartin Sebor
220dcfe7aaSMartin Sebor; Expect char* fgets(char*, int, FILE*).
230dcfe7aaSMartin Sebordeclare i32 @fgets(ptr, i32, ptr)
240dcfe7aaSMartin Sebor; CHECK: declare i32 @fgets(ptr, i32, ptr)
250dcfe7aaSMartin Sebor
260dcfe7aaSMartin Sebor; Expect int sprintf(char*, const char*, ...).
270dcfe7aaSMartin Sebordeclare i32 @sprintf(ptr, i64, ptr, ...)
280dcfe7aaSMartin Sebor; CHECK: declare i32 @sprintf(ptr, i64, ptr, ...)
290dcfe7aaSMartin Sebor
300dcfe7aaSMartin Sebor; Expect int snprintf(char*, size_t, const char*, ...).
310dcfe7aaSMartin Sebordeclare i32 @snprintf(ptr, i64, ptr)
320dcfe7aaSMartin Sebor; CHECK: declare i32 @snprintf(ptr, i64, ptr)
330dcfe7aaSMartin Sebor
340dcfe7aaSMartin Sebor; Expect int sscanf(const char*, const char*, ...).
350dcfe7aaSMartin Sebordeclare i32 @sscanf(ptr, ...)
360dcfe7aaSMartin Sebor; CHECK: declare i32 @sscanf(ptr, ...)
370dcfe7aaSMartin Sebor
380dcfe7aaSMartin Sebor
390dcfe7aaSMartin Sebor; Exercise <stdlib.h> function declarations.
400dcfe7aaSMartin Sebor
410dcfe7aaSMartin Sebor; Expect int atoi(const char*).
420dcfe7aaSMartin Sebordeclare i8 @atoi(ptr)
430dcfe7aaSMartin Sebor; CHECK: declare i8 @atoi(ptr)
440dcfe7aaSMartin Sebor
450dcfe7aaSMartin Sebor; Expect long long atoll(const char*).
460dcfe7aaSMartin Sebordeclare i1 @atoll(ptr)
470dcfe7aaSMartin Sebor; CHECK: declare i1 @atoll(ptr)
480dcfe7aaSMartin Sebor
490dcfe7aaSMartin Sebor; Expect double atof(const char*).
500dcfe7aaSMartin Sebordeclare float @atof(ptr)
510dcfe7aaSMartin Sebor; CHECK: declare float @atof(ptr)
520dcfe7aaSMartin Sebor
530dcfe7aaSMartin Sebor; Expect double strtod(const char*, char**).
540dcfe7aaSMartin Sebordeclare double @strtod(ptr, ptr, i32)
550dcfe7aaSMartin Sebor; CHECK: declare double @strtod(ptr, ptr, i32)
560dcfe7aaSMartin Sebor
570dcfe7aaSMartin Sebor; Expect float strtof(const char*, char**).
580dcfe7aaSMartin Sebordeclare double @strtof(ptr, ptr)
590dcfe7aaSMartin Sebor; CHECK: declare double @strtof(ptr, ptr)
600dcfe7aaSMartin Sebor
610dcfe7aaSMartin Sebor
620dcfe7aaSMartin Sebor; Exercise <string.h> function declarations.
630dcfe7aaSMartin Sebor
640dcfe7aaSMartin Sebor; Expect void* memccpy(void*, const void*, int, size_t).
650dcfe7aaSMartin Sebordeclare ptr @memccpy(ptr, ptr, i64, i64)
660dcfe7aaSMartin Sebor; CHECK: declare ptr @memccpy(ptr, ptr, i64, i64)
670dcfe7aaSMartin Sebor
680dcfe7aaSMartin Sebor; Expect int strcasecmp(const char*, const char*).
690dcfe7aaSMartin Sebordeclare i1 @strcasecmp(ptr, ptr)
700dcfe7aaSMartin Sebor; CHECK: declare i1 @strcasecmp(ptr, ptr)
710dcfe7aaSMartin Sebor
720dcfe7aaSMartin Sebor; Expect int strcoll(const char*, const char*).
730dcfe7aaSMartin Sebordeclare ptr @strcoll(ptr, ptr)
740dcfe7aaSMartin Sebor; CHECK: declare ptr @strcoll(ptr, ptr)
750dcfe7aaSMartin Sebor
760dcfe7aaSMartin Sebor; Expect int strncasecmp(const char*, const char*, size_t).
770dcfe7aaSMartin Sebordeclare i32 @strncasecmp(ptr, ptr, i64, i64)
780dcfe7aaSMartin Sebor; CHECK: declare i32 @strncasecmp(ptr, ptr, i64, i64)
790dcfe7aaSMartin Sebor
800dcfe7aaSMartin Sebor; Expect int strxfrm(const char*, const char*).
810dcfe7aaSMartin Sebordeclare i16 @strxfrm(ptr, ptr)
820dcfe7aaSMartin Sebor; CHECK: declare i16 @strxfrm(ptr, ptr)
830dcfe7aaSMartin Sebor
840dcfe7aaSMartin Sebor; Expect char* strtok(const char*, const char*).
850dcfe7aaSMartin Sebordeclare ptr @strtok(ptr, i8)
860dcfe7aaSMartin Sebor; CHECK: declare ptr @strtok(ptr, i8)
870dcfe7aaSMartin Sebor
880dcfe7aaSMartin Sebor; Expect char* strtok_r(const char*, const char*, char**).
890dcfe7aaSMartin Sebordeclare ptr @strtok_r(ptr, ptr, i64)
900dcfe7aaSMartin Sebor; CHECK: declare ptr @strtok_r(ptr, ptr, i64)
910dcfe7aaSMartin Sebor
920dcfe7aaSMartin Sebor; Expect char* strdup(const char*).
930dcfe7aaSMartin Sebordeclare ptr @strdup(ptr, i64)
940dcfe7aaSMartin Sebor; CHECK: declare ptr @strdup(ptr, i64)
950dcfe7aaSMartin Sebor
960dcfe7aaSMartin Sebor; Expect char* strndup(const char*, size_t).
970dcfe7aaSMartin Sebordeclare ptr @strndup(ptr, i64, i64)
980dcfe7aaSMartin Sebor; CHECK: declare ptr @strndup(ptr, i64, i64)
990dcfe7aaSMartin Sebor
1000dcfe7aaSMartin Sebor
1010dcfe7aaSMartin Sebor; Exercise <sys/stat.h> and <sys/statvfs.h> function declarations.
1020dcfe7aaSMartin Sebor
1030dcfe7aaSMartin Sebor; Expect int stat(const char*, struct stat*).
1040dcfe7aaSMartin Sebordeclare i32 @stat(ptr, ptr, i64)
1050dcfe7aaSMartin Sebor; CHECK: declare i32 @stat(ptr, ptr, i64)
1060dcfe7aaSMartin Sebor
1070dcfe7aaSMartin Sebor; Expect int statvfs(const char*, struct statvfs*).
1080dcfe7aaSMartin Sebordeclare i32 @statvfs(ptr, ptr, i64)
1090dcfe7aaSMartin Sebor; CHECK: declare i32 @statvfs(ptr, ptr, i64)
110