1; Verify that incompatible declarations of known library functions are 2; not annotated with argument attributes. This negative test complements 3; annotate.ll. 4; 5; NOTE: Assertions have been autogenerated by utils/update_test_checks.py 6; RUN: opt < %s -passes=inferattrs -S | FileCheck %s --match-full-lines 7 8 9; Exercise <math.h> function declarations. 10 11; Expect double fabs(double). 12declare float @fabs(float) 13; CHECK: declare float @fabs(float) 14 15 16; Exercise <stdio.h> function declarations. 17 18; Expect int fgetc(FILE*). 19declare i32 @fgetc(ptr, i32) 20; CHECK: declare i32 @fgetc(ptr, i32) 21 22; Expect char* fgets(char*, int, FILE*). 23declare i32 @fgets(ptr, i32, ptr) 24; CHECK: declare i32 @fgets(ptr, i32, ptr) 25 26; Expect int sprintf(char*, const char*, ...). 27declare i32 @sprintf(ptr, i64, ptr, ...) 28; CHECK: declare i32 @sprintf(ptr, i64, ptr, ...) 29 30; Expect int snprintf(char*, size_t, const char*, ...). 31declare i32 @snprintf(ptr, i64, ptr) 32; CHECK: declare i32 @snprintf(ptr, i64, ptr) 33 34; Expect int sscanf(const char*, const char*, ...). 35declare i32 @sscanf(ptr, ...) 36; CHECK: declare i32 @sscanf(ptr, ...) 37 38 39; Exercise <stdlib.h> function declarations. 40 41; Expect int atoi(const char*). 42declare i8 @atoi(ptr) 43; CHECK: declare i8 @atoi(ptr) 44 45; Expect long long atoll(const char*). 46declare i1 @atoll(ptr) 47; CHECK: declare i1 @atoll(ptr) 48 49; Expect double atof(const char*). 50declare float @atof(ptr) 51; CHECK: declare float @atof(ptr) 52 53; Expect double strtod(const char*, char**). 54declare double @strtod(ptr, ptr, i32) 55; CHECK: declare double @strtod(ptr, ptr, i32) 56 57; Expect float strtof(const char*, char**). 58declare double @strtof(ptr, ptr) 59; CHECK: declare double @strtof(ptr, ptr) 60 61 62; Exercise <string.h> function declarations. 63 64; Expect void* memccpy(void*, const void*, int, size_t). 65declare ptr @memccpy(ptr, ptr, i64, i64) 66; CHECK: declare ptr @memccpy(ptr, ptr, i64, i64) 67 68; Expect int strcasecmp(const char*, const char*). 69declare i1 @strcasecmp(ptr, ptr) 70; CHECK: declare i1 @strcasecmp(ptr, ptr) 71 72; Expect int strcoll(const char*, const char*). 73declare ptr @strcoll(ptr, ptr) 74; CHECK: declare ptr @strcoll(ptr, ptr) 75 76; Expect int strncasecmp(const char*, const char*, size_t). 77declare i32 @strncasecmp(ptr, ptr, i64, i64) 78; CHECK: declare i32 @strncasecmp(ptr, ptr, i64, i64) 79 80; Expect int strxfrm(const char*, const char*). 81declare i16 @strxfrm(ptr, ptr) 82; CHECK: declare i16 @strxfrm(ptr, ptr) 83 84; Expect char* strtok(const char*, const char*). 85declare ptr @strtok(ptr, i8) 86; CHECK: declare ptr @strtok(ptr, i8) 87 88; Expect char* strtok_r(const char*, const char*, char**). 89declare ptr @strtok_r(ptr, ptr, i64) 90; CHECK: declare ptr @strtok_r(ptr, ptr, i64) 91 92; Expect char* strdup(const char*). 93declare ptr @strdup(ptr, i64) 94; CHECK: declare ptr @strdup(ptr, i64) 95 96; Expect char* strndup(const char*, size_t). 97declare ptr @strndup(ptr, i64, i64) 98; CHECK: declare ptr @strndup(ptr, i64, i64) 99 100 101; Exercise <sys/stat.h> and <sys/statvfs.h> function declarations. 102 103; Expect int stat(const char*, struct stat*). 104declare i32 @stat(ptr, ptr, i64) 105; CHECK: declare i32 @stat(ptr, ptr, i64) 106 107; Expect int statvfs(const char*, struct statvfs*). 108declare i32 @statvfs(ptr, ptr, i64) 109; CHECK: declare i32 @statvfs(ptr, ptr, i64) 110