; RUN: opt < %s -mtriple=x86_64-unknown-linux -inferattrs -S | FileCheck %s ; RUN: opt < %s -mtriple=x86_64-apple-macosx10.8.0 -inferattrs -S | FileCheck %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(...)