; RUN: opt < %s -mtriple=x86_64-unknown-linux -passes=inferattrs -S | FileCheck --match-full-lines %s
; RUN: opt < %s -mtriple=x86_64-apple-macosx10.8.0 -passes=inferattrs -S | FileCheck --match-full-lines %s
; Check that we don't modify libc functions with invalid prototypes.
; CHECK: declare void @__acos_finite(...)
declare void @__acos_finite(...)
; CHECK: declare void @__acosf_finite(...)
declare void @__acosf_finite(...)
; CHECK: declare void @__acosh_finite(...)
declare void @__acosh_finite(...)
; CHECK: declare void @__acoshf_finite(...)
declare void @__acoshf_finite(...)
; CHECK: declare void @__acoshl_finite(...)
declare void @__acoshl_finite(...)
; CHECK: declare void @__acosl_finite(...)
declare void @__acosl_finite(...)
; CHECK: declare void @__asin_finite(...)
declare void @__asin_finite(...)
; CHECK: declare void @__asinf_finite(...)
declare void @__asinf_finite(...)
; CHECK: declare void @__asinl_finite(...)
declare void @__asinl_finite(...)
; CHECK: declare void @__atan2_finite(...)
declare void @__atan2_finite(...)
; CHECK: declare void @__atan2f_finite(...)
declare void @__atan2f_finite(...)
; CHECK: declare void @__atan2l_finite(...)
declare void @__atan2l_finite(...)
; CHECK: declare void @__atanh_finite(...)
declare void @__atanh_finite(...)
; CHECK: declare void @__atanhf_finite(...)
declare void @__atanhf_finite(...)
; CHECK: declare void @__atanhl_finite(...)
declare void @__atanhl_finite(...)
; CHECK: declare void @__cosh_finite(...)
declare void @__cosh_finite(...)
; CHECK: declare void @__coshf_finite(...)
declare void @__coshf_finite(...)
; CHECK: declare void @__coshl_finite(...)
declare void @__coshl_finite(...)
; CHECK: declare void @__cospi(...)
declare void @__cospi(...)
; CHECK: declare void @__cospif(...)
declare void @__cospif(...)
; CHECK: declare void @__exp10_finite(...)
declare void @__exp10_finite(...)
; CHECK: declare void @__exp10f_finite(...)
declare void @__exp10f_finite(...)
; CHECK: declare void @__exp10l_finite(...)
declare void @__exp10l_finite(...)
; CHECK: declare void @__exp2_finite(...)
declare void @__exp2_finite(...)
; CHECK: declare void @__exp2f_finite(...)
declare void @__exp2f_finite(...)
; CHECK: declare void @__exp2l_finite(...)
declare void @__exp2l_finite(...)
; CHECK: declare void @__exp_finite(...)
declare void @__exp_finite(...)
; CHECK: declare void @__expf_finite(...)
declare void @__expf_finite(...)
; CHECK: declare void @__expl_finite(...)
declare void @__expl_finite(...)
; CHECK: declare void @__log10_finite(...)
declare void @__log10_finite(...)
; CHECK: declare void @__log10f_finite(...)
declare void @__log10f_finite(...)
; CHECK: declare void @__log10l_finite(...)
declare void @__log10l_finite(...)
; CHECK: declare void @__log2_finite(...)
declare void @__log2_finite(...)
; CHECK: declare void @__log2f_finite(...)
declare void @__log2f_finite(...)
; CHECK: declare void @__log2l_finite(...)
declare void @__log2l_finite(...)
; CHECK: declare void @__log_finite(...)
declare void @__log_finite(...)
; CHECK: declare void @__logf_finite(...)
declare void @__logf_finite(...)
; CHECK: declare void @__logl_finite(...)
declare void @__logl_finite(...)
; CHECK: declare void @__pow_finite(...)
declare void @__pow_finite(...)
; CHECK: declare void @__powf_finite(...)
declare void @__powf_finite(...)
; CHECK: declare void @__powl_finite(...)
declare void @__powl_finite(...)
; CHECK: declare void @__sinh_finite(...)
declare void @__sinh_finite(...)
; CHECK: declare void @__sinhf_finite(...)
declare void @__sinhf_finite(...)
; CHECK: declare void @__sinhl_finite(...)
declare void @__sinhl_finite(...)
; CHECK: declare void @__sinpi(...)
declare void @__sinpi(...)
; CHECK: declare void @__sinpif(...)
declare void @__sinpif(...)
; CHECK: declare void @abs(...)
declare void @abs(...)
; CHECK: declare void @access(...)
declare void @access(...)
; CHECK: declare void @acos(...)
declare void @acos(...)
; CHECK: declare void @acosf(...)
declare void @acosf(...)
; CHECK: declare void @acosh(...)
declare void @acosh(...)
; CHECK: declare void @acoshf(...)
declare void @acoshf(...)
; CHECK: declare void @acoshl(...)
declare void @acoshl(...)
; CHECK: declare void @acosl(...)
declare void @acosl(...)
; CHECK: declare void @asin(...)
declare void @asin(...)
; CHECK: declare void @asinf(...)
declare void @asinf(...)
; CHECK: declare void @asinh(...)
declare void @asinh(...)
; CHECK: declare void @asinhf(...)
declare void @asinhf(...)
; CHECK: declare void @asinhl(...)
declare void @asinhl(...)
; CHECK: declare void @asinl(...)
declare void @asinl(...)
; CHECK: declare void @atan(...)
declare void @atan(...)
; CHECK: declare void @atan2(...)
declare void @atan2(...)
; CHECK: declare void @atan2f(...)
declare void @atan2f(...)
; CHECK: declare void @atan2l(...)
declare void @atan2l(...)
; CHECK: declare void @atanf(...)
declare void @atanf(...)
; CHECK: declare void @atanh(...)
declare void @atanh(...)
; CHECK: declare void @atanhf(...)
declare void @atanhf(...)
; CHECK: declare void @atanhl(...)
declare void @atanhl(...)
; CHECK: declare void @atanl(...)
declare void @atanl(...)
; CHECK: declare void @atof(...)
declare void @atof(...)
; CHECK: declare void @atoi(...)
declare void @atoi(...)
; CHECK: declare void @atol(...)
declare void @atol(...)
; CHECK: declare void @atoll(...)
declare void @atoll(...)
; CHECK: declare void @bcmp(...)
declare void @bcmp(...)
; CHECK: declare void @bcopy(...)
declare void @bcopy(...)
; CHECK: declare void @bzero(...)
declare void @bzero(...)
; CHECK: declare void @calloc(...)
declare void @calloc(...)
; CHECK: declare void @cbrt(...)
declare void @cbrt(...)
; CHECK: declare void @cbrtf(...)
declare void @cbrtf(...)
; CHECK: declare void @cbrtl(...)
declare void @cbrtl(...)
; CHECK: declare void @ceil(...)
declare void @ceil(...)
; CHECK: declare void @ceilf(...)
declare void @ceilf(...)
; CHECK: declare void @ceill(...)
declare void @ceill(...)
; CHECK: declare void @chmod(...)
declare void @chmod(...)
; CHECK: declare void @chown(...)
declare void @chown(...)
; CHECK: declare void @clearerr(...)
declare void @clearerr(...)
; CHECK: declare void @closedir(...)
declare void @closedir(...)
; CHECK: declare void @copysign(...)
declare void @copysign(...)
; CHECK: declare void @copysignf(...)
declare void @copysignf(...)
; CHECK: declare void @copysignl(...)
declare void @copysignl(...)
; CHECK: declare void @cos(...)
declare void @cos(...)
; CHECK: declare void @cosf(...)
declare void @cosf(...)
; CHECK: declare void @cosh(...)
declare void @cosh(...)
; CHECK: declare void @coshf(...)
declare void @coshf(...)
; CHECK: declare void @coshl(...)
declare void @coshl(...)
; CHECK: declare void @cosl(...)
declare void @cosl(...)
; CHECK: declare void @ctermid(...)
declare void @ctermid(...)
; CHECK: declare void @exp(...)
declare void @exp(...)
; CHECK: declare void @exp2(...)
declare void @exp2(...)
; CHECK: declare void @exp2f(...)
declare void @exp2f(...)
; CHECK: declare void @exp2l(...)
declare void @exp2l(...)
; CHECK: declare void @expf(...)
declare void @expf(...)
; CHECK: declare void @expl(...)
declare void @expl(...)
; CHECK: declare void @expm1(...)
declare void @expm1(...)
; CHECK: declare void @expm1f(...)
declare void @expm1f(...)
; CHECK: declare void @expm1l(...)
declare void @expm1l(...)
; CHECK: declare void @fabs(...)
declare void @fabs(...)
; CHECK: declare void @fabsf(...)
declare void @fabsf(...)
; CHECK: declare void @fabsl(...)
declare void @fabsl(...)
; CHECK: declare void @fclose(...)
declare void @fclose(...)
; CHECK: declare void @fdopen(...)
declare void @fdopen(...)
; CHECK: declare void @feof(...)
declare void @feof(...)
; CHECK: declare void @ferror(...)
declare void @ferror(...)
; CHECK: declare void @fflush(...)
declare void @fflush(...)
; CHECK: declare void @ffs(...)
declare void @ffs(...)
; CHECK: declare void @ffsl(...)
declare void @ffsl(...)
; CHECK: declare void @ffsll(...)
declare void @ffsll(...)
; CHECK: declare void @fgetc(...)
declare void @fgetc(...)
; CHECK: declare void @fgetpos(...)
declare void @fgetpos(...)
; CHECK: declare void @fgets(...)
declare void @fgets(...)
; CHECK: declare void @fileno(...)
declare void @fileno(...)
; CHECK: declare void @flockfile(...)
declare void @flockfile(...)
; CHECK: declare void @floor(...)
declare void @floor(...)
; CHECK: declare void @floorf(...)
declare void @floorf(...)
; CHECK: declare void @floorl(...)
declare void @floorl(...)
; CHECK: declare void @fls(...)
declare void @fls(...)
; CHECK: declare void @flsl(...)
declare void @flsl(...)
; CHECK: declare void @flsll(...)
declare void @flsll(...)
; CHECK: declare void @fmax(...)
declare void @fmax(...)
; CHECK: declare void @fmaxf(...)
declare void @fmaxf(...)
; CHECK: declare void @fmaxl(...)
declare void @fmaxl(...)
; CHECK: declare void @fmin(...)
declare void @fmin(...)
; CHECK: declare void @fminf(...)
declare void @fminf(...)
; CHECK: declare void @fminl(...)
declare void @fminl(...)
; CHECK: declare void @fmod(...)
declare void @fmod(...)
; CHECK: declare void @fmodf(...)
declare void @fmodf(...)
; CHECK: declare void @fmodl(...)
declare void @fmodl(...)
; CHECK: declare void @fopen(...)
declare void @fopen(...)
; CHECK: declare void @fprintf(...)
declare void @fprintf(...)
; CHECK: declare void @fputc(...)
declare void @fputc(...)
; CHECK: declare void @fputs(...)
declare void @fputs(...)
; CHECK: declare void @fread(...)
declare void @fread(...)
; CHECK: declare void @free(...)
declare void @free(...)
; CHECK: declare void @frexp(...)
declare void @frexp(...)
; CHECK: declare void @frexpf(...)
declare void @frexpf(...)
; CHECK: declare void @frexpl(...)
declare void @frexpl(...)
; CHECK: declare void @fscanf(...)
declare void @fscanf(...)
; CHECK: declare void @fseek(...)
declare void @fseek(...)
; CHECK: declare void @fseeko(...)
declare void @fseeko(...)
; CHECK: declare void @fseeko64(...)
declare void @fseeko64(...)
; CHECK: declare void @fsetpos(...)
declare void @fsetpos(...)
; CHECK: declare void @fstat(...)
declare void @fstat(...)
; CHECK: declare void @fstat64(...)
declare void @fstat64(...)
; CHECK: declare void @fstatvfs(...)
declare void @fstatvfs(...)
; CHECK: declare void @fstatvfs64(...)
declare void @fstatvfs64(...)
; CHECK: declare void @ftell(...)
declare void @ftell(...)
; CHECK: declare void @ftello(...)
declare void @ftello(...)
; CHECK: declare void @ftello64(...)
declare void @ftello64(...)
; CHECK: declare void @ftrylockfile(...)
declare void @ftrylockfile(...)
; CHECK: declare void @funlockfile(...)
declare void @funlockfile(...)
; CHECK: declare void @fwrite(...)
declare void @fwrite(...)
; CHECK: declare void @getc(...)
declare void @getc(...)
; CHECK: declare void @getc_unlocked(...)
declare void @getc_unlocked(...)
; CHECK: declare void @getchar(...)
declare void @getchar(...)
; CHECK: declare void @getenv(...)
declare void @getenv(...)
; CHECK: declare void @getitimer(...)
declare void @getitimer(...)
; CHECK: declare void @getlogin_r(...)
declare void @getlogin_r(...)
; CHECK: declare void @getpwnam(...)
declare void @getpwnam(...)
; CHECK: declare void @gets(...)
declare void @gets(...)
; CHECK: declare void @gettimeofday(...)
declare void @gettimeofday(...)
; CHECK: declare void @isascii(...)
declare void @isascii(...)
; CHECK: declare void @isdigit(...)
declare void @isdigit(...)
; CHECK: declare void @labs(...)
declare void @labs(...)
; CHECK: declare void @lchown(...)
declare void @lchown(...)
; CHECK: declare void @ldexp(...)
declare void @ldexp(...)
; CHECK: declare void @ldexpf(...)
declare void @ldexpf(...)
; CHECK: declare void @ldexpl(...)
declare void @ldexpl(...)
; CHECK: declare void @llabs(...)
declare void @llabs(...)
; CHECK: declare void @log(...)
declare void @log(...)
; CHECK: declare void @log10(...)
declare void @log10(...)
; CHECK: declare void @log10f(...)
declare void @log10f(...)
; CHECK: declare void @log10l(...)
declare void @log10l(...)
; CHECK: declare void @log1p(...)
declare void @log1p(...)
; CHECK: declare void @log1pf(...)
declare void @log1pf(...)
; CHECK: declare void @log1pl(...)
declare void @log1pl(...)
; CHECK: declare void @log2(...)
declare void @log2(...)
; CHECK: declare void @log2f(...)
declare void @log2f(...)
; CHECK: declare void @log2l(...)
declare void @log2l(...)
; CHECK: declare void @logb(...)
declare void @logb(...)
; CHECK: declare void @logbf(...)
declare void @logbf(...)
; CHECK: declare void @logbl(...)
declare void @logbl(...)
; CHECK: declare void @logf(...)
declare void @logf(...)
; CHECK: declare void @logl(...)
declare void @logl(...)
; CHECK: declare void @lstat(...)
declare void @lstat(...)
; CHECK: declare void @lstat64(...)
declare void @lstat64(...)
; CHECK: declare void @malloc(...)
declare void @malloc(...)
; CHECK: declare void @memalign(...)
declare void @memalign(...)
; CHECK: declare void @memccpy(...)
declare void @memccpy(...)
; CHECK: declare void @memchr(...)
declare void @memchr(...)
; CHECK: declare void @memcmp(...)
declare void @memcmp(...)
; CHECK: declare void @memcpy(...)
declare void @memcpy(...)
; CHECK: declare void @mempcpy(...)
declare void @mempcpy(...)
; CHECK: declare void @memmove(...)
declare void @memmove(...)
; CHECK: declare void @memset(...)
declare void @memset(...)
; CHECK: declare void @memset_pattern16(...)
declare void @memset_pattern16(...)
; CHECK: declare void @mkdir(...)
declare void @mkdir(...)
; CHECK: declare void @mktime(...)
declare void @mktime(...)
; CHECK: declare void @modf(...)
declare void @modf(...)
; CHECK: declare void @modff(...)
declare void @modff(...)
; CHECK: declare void @modfl(...)
declare void @modfl(...)
; CHECK: declare void @nearbyint(...)
declare void @nearbyint(...)
; CHECK: declare void @nearbyintf(...)
declare void @nearbyintf(...)
; CHECK: declare void @nearbyintl(...)
declare void @nearbyintl(...)
; CHECK: declare void @open(...)
declare void @open(...)
; CHECK: declare void @open64(...)
declare void @open64(...)
; CHECK: declare void @opendir(...)
declare void @opendir(...)
; CHECK: declare void @pclose(...)
declare void @pclose(...)
; CHECK: declare void @perror(...)
declare void @perror(...)
; CHECK: declare void @popen(...)
declare void @popen(...)
; CHECK: declare void @posix_memalign(...)
declare void @posix_memalign(...)
; CHECK: declare void @pow(...)
declare void @pow(...)
; CHECK: declare void @powf(...)
declare void @powf(...)
; CHECK: declare void @powl(...)
declare void @powl(...)
; CHECK: declare void @pread(...)
declare void @pread(...)
; CHECK: declare void @printf(...)
declare void @printf(...)
; CHECK: declare void @putc(...)
declare void @putc(...)
; CHECK: declare void @putchar(...)
declare void @putchar(...)
; CHECK: declare void @puts(...)
declare void @puts(...)
; CHECK: declare void @pwrite(...)
declare void @pwrite(...)
; CHECK: declare void @qsort(...)
declare void @qsort(...)
; CHECK: declare void @read(...)
declare void @read(...)
; CHECK: declare void @readlink(...)
declare void @readlink(...)
; CHECK: declare void @realloc(...)
declare void @realloc(...)
; CHECK: declare void @reallocf(...)
declare void @reallocf(...)
; CHECK: declare void @realpath(...)
declare void @realpath(...)
; CHECK: declare void @remove(...)
declare void @remove(...)
; CHECK: declare void @rename(...)
declare void @rename(...)
; CHECK: declare void @rewind(...)
declare void @rewind(...)
; CHECK: declare void @rint(...)
declare void @rint(...)
; CHECK: declare void @rintf(...)
declare void @rintf(...)
; CHECK: declare void @rintl(...)
declare void @rintl(...)
; CHECK: declare void @rmdir(...)
declare void @rmdir(...)
; CHECK: declare void @round(...)
declare void @round(...)
; CHECK: declare void @roundf(...)
declare void @roundf(...)
; CHECK: declare void @roundl(...)
declare void @roundl(...)
; CHECK: declare void @scanf(...)
declare void @scanf(...)
; CHECK: declare void @setbuf(...)
declare void @setbuf(...)
; CHECK: declare void @setitimer(...)
declare void @setitimer(...)
; CHECK: declare void @setvbuf(...)
declare void @setvbuf(...)
; CHECK: declare void @sin(...)
declare void @sin(...)
; CHECK: declare void @sinf(...)
declare void @sinf(...)
; CHECK: declare void @sinh(...)
declare void @sinh(...)
; CHECK: declare void @sinhf(...)
declare void @sinhf(...)
; CHECK: declare void @sinhl(...)
declare void @sinhl(...)
; CHECK: declare void @sinl(...)
declare void @sinl(...)
; CHECK: declare void @snprintf(...)
declare void @snprintf(...)
; CHECK: declare void @sprintf(...)
declare void @sprintf(...)
; CHECK: declare void @sqrt(...)
declare void @sqrt(...)
; CHECK: declare void @sqrtf(...)
declare void @sqrtf(...)
; CHECK: declare void @sqrtl(...)
declare void @sqrtl(...)
; CHECK: declare void @sscanf(...)
declare void @sscanf(...)
; CHECK: declare void @stat(...)
declare void @stat(...)
; CHECK: declare void @stat64(...)
declare void @stat64(...)
; CHECK: declare void @statvfs(...)
declare void @statvfs(...)
; CHECK: declare void @statvfs64(...)
declare void @statvfs64(...)
; CHECK: declare void @stpcpy(...)
declare void @stpcpy(...)
; CHECK: declare void @stpncpy(...)
declare void @stpncpy(...)
; CHECK: declare void @strcasecmp(...)
declare void @strcasecmp(...)
; CHECK: declare void @strcat(...)
declare void @strcat(...)
; CHECK: declare void @strchr(...)
declare void @strchr(...)
; CHECK: declare void @strcmp(...)
declare void @strcmp(...)
; CHECK: declare void @strcoll(...)
declare void @strcoll(...)
; CHECK: declare void @strcpy(...)
declare void @strcpy(...)
; CHECK: declare void @strcspn(...)
declare void @strcspn(...)
; CHECK: declare void @strdup(...)
declare void @strdup(...)
; CHECK: declare void @strlen(...)
declare void @strlen(...)
; CHECK: declare void @strncasecmp(...)
declare void @strncasecmp(...)
; CHECK: declare void @strncat(...)
declare void @strncat(...)
; CHECK: declare void @strncmp(...)
declare void @strncmp(...)
; CHECK: declare void @strncpy(...)
declare void @strncpy(...)
; CHECK: declare void @strndup(...)
declare void @strndup(...)
; CHECK: declare void @strnlen(...)
declare void @strnlen(...)
; CHECK: declare void @strpbrk(...)
declare void @strpbrk(...)
; CHECK: declare void @strrchr(...)
declare void @strrchr(...)
; CHECK: declare void @strspn(...)
declare void @strspn(...)
; CHECK: declare void @strstr(...)
declare void @strstr(...)
; CHECK: declare void @strtod(...)
declare void @strtod(...)
; CHECK: declare void @strtof(...)
declare void @strtof(...)
; CHECK: declare void @strtok(...)
declare void @strtok(...)
; CHECK: declare void @strtok_r(...)
declare void @strtok_r(...)
; CHECK: declare void @strtol(...)
declare void @strtol(...)
; CHECK: declare void @strtold(...)
declare void @strtold(...)
; CHECK: declare void @strtoll(...)
declare void @strtoll(...)
; CHECK: declare void @strtoul(...)
declare void @strtoul(...)
; CHECK: declare void @strtoull(...)
declare void @strtoull(...)
; CHECK: declare void @strxfrm(...)
declare void @strxfrm(...)
; CHECK: declare void @system(...)
declare void @system(...)
; CHECK: declare void @tan(...)
declare void @tan(...)
; CHECK: declare void @tanf(...)
declare void @tanf(...)
; CHECK: declare void @tanh(...)
declare void @tanh(...)
; CHECK: declare void @tanhf(...)
declare void @tanhf(...)
; CHECK: declare void @tanhl(...)
declare void @tanhl(...)
; CHECK: declare void @tanl(...)
declare void @tanl(...)
; CHECK: declare void @times(...)
declare void @times(...)
; CHECK: declare void @tmpfile(...)
declare void @tmpfile(...)
; CHECK: declare void @tmpfile64(...)
declare void @tmpfile64(...)
; CHECK: declare void @toascii(...)
declare void @toascii(...)
; CHECK: declare void @trunc(...)
declare void @trunc(...)
; CHECK: declare void @truncf(...)
declare void @truncf(...)
; CHECK: declare void @truncl(...)
declare void @truncl(...)
; CHECK: declare void @uname(...)
declare void @uname(...)
; CHECK: declare void @ungetc(...)
declare void @ungetc(...)
; CHECK: declare void @unlink(...)
declare void @unlink(...)
; CHECK: declare void @unsetenv(...)
declare void @unsetenv(...)
; CHECK: declare void @utime(...)
declare void @utime(...)
; CHECK: declare void @utimes(...)
declare void @utimes(...)
; CHECK: declare void @valloc(...)
declare void @valloc(...)
; CHECK: declare void @vfprintf(...)
declare void @vfprintf(...)
; CHECK: declare void @vfscanf(...)
declare void @vfscanf(...)
; CHECK: declare void @vprintf(...)
declare void @vprintf(...)
; CHECK: declare void @vscanf(...)
declare void @vscanf(...)
; CHECK: declare void @vsnprintf(...)
declare void @vsnprintf(...)
; CHECK: declare void @vsprintf(...)
declare void @vsprintf(...)
; CHECK: declare void @vsscanf(...)
declare void @vsscanf(...)
; CHECK: declare void @write(...)
declare void @write(...)