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