Home | History | Annotate | Download | only in InferFunctionAttrs
      1 ; RUN: opt < %s -mtriple=x86_64-- -inferattrs -S | FileCheck %s
      2 ; RUN: opt < %s -mtriple=x86_64-- -passes=inferattrs -S | FileCheck %s
      3 ; RUN: opt < %s -mtriple=x86_64-apple-macosx10.8.0 -inferattrs -S | FileCheck -check-prefix=CHECK -check-prefix=CHECK-DARWIN %s
      4 ; RUN: opt < %s -mtriple=x86_64-unknown-linux -inferattrs -S | FileCheck -check-prefix=CHECK -check-prefix=CHECK-LINUX %s
      5 ; RUN: opt < %s -mtriple=nvptx -inferattrs -S | FileCheck -check-prefix=CHECK-NVPTX %s
      6 
      7 ; operator new routines
      8 declare i8* @_Znwj(i64)
      9 ; CHECK: declare noalias nonnull i8* @_Znwj(i64)
     10 declare i8* @_Znwm(i64)
     11 ; CHECK: declare noalias nonnull i8* @_Znwm(i64)
     12 
     13 declare i32 @__nvvm_reflect(i8*)
     14 ; CHECK-NVPTX: declare i32 @__nvvm_reflect(i8*) [[G0:#[0-9]+]]
     15 ; CHECK-NVPTX: attributes [[G0]] = { nounwind readnone }
     16 
     17 
     18 ; Check all the libc functions (thereby also exercising the prototype check).
     19 ; Note that it's OK to modify these as attributes might be missing. These checks
     20 ; reflect the currently inferred attributes.
     21 
     22 ; Use an opaque pointer type for all the (possibly opaque) structs.
     23 %opaque = type opaque
     24 
     25 ; CHECK: declare double @__acos_finite(double)
     26 declare double @__acos_finite(double)
     27 
     28 ; CHECK: declare float @__acosf_finite(float)
     29 declare float @__acosf_finite(float)
     30 
     31 ; CHECK: declare double @__acosh_finite(double)
     32 declare double @__acosh_finite(double)
     33 
     34 ; CHECK: declare float @__acoshf_finite(float)
     35 declare float @__acoshf_finite(float)
     36 
     37 ; CHECK: declare x86_fp80 @__acoshl_finite(x86_fp80)
     38 declare x86_fp80 @__acoshl_finite(x86_fp80)
     39 
     40 ; CHECK: declare x86_fp80 @__acosl_finite(x86_fp80)
     41 declare x86_fp80 @__acosl_finite(x86_fp80)
     42 
     43 ; CHECK: declare double @__asin_finite(double)
     44 declare double @__asin_finite(double)
     45 
     46 ; CHECK: declare float @__asinf_finite(float)
     47 declare float @__asinf_finite(float)
     48 
     49 ; CHECK: declare x86_fp80 @__asinl_finite(x86_fp80)
     50 declare x86_fp80 @__asinl_finite(x86_fp80)
     51 
     52 ; CHECK: declare double @__atan2_finite(double, double)
     53 declare double @__atan2_finite(double, double)
     54 
     55 ; CHECK: declare float @__atan2f_finite(float, float)
     56 declare float @__atan2f_finite(float, float)
     57 
     58 ; CHECK: declare x86_fp80 @__atan2l_finite(x86_fp80, x86_fp80)
     59 declare x86_fp80 @__atan2l_finite(x86_fp80, x86_fp80)
     60 
     61 ; CHECK: declare double @__atanh_finite(double)
     62 declare double @__atanh_finite(double)
     63 
     64 ; CHECK: declare float @__atanhf_finite(float)
     65 declare float @__atanhf_finite(float)
     66 
     67 ; CHECK: declare x86_fp80 @__atanhl_finite(x86_fp80)
     68 declare x86_fp80 @__atanhl_finite(x86_fp80)
     69 
     70 ; CHECK: declare double @__cosh_finite(double)
     71 declare double @__cosh_finite(double)
     72 
     73 ; CHECK: declare float @__coshf_finite(float)
     74 declare float @__coshf_finite(float)
     75 
     76 ; CHECK: declare x86_fp80 @__coshl_finite(x86_fp80)
     77 declare x86_fp80 @__coshl_finite(x86_fp80)
     78 
     79 ; CHECK: declare double @__cospi(double)
     80 declare double @__cospi(double)
     81 
     82 ; CHECK: declare float @__cospif(float)
     83 declare float @__cospif(float)
     84 
     85 ; CHECK: declare double @__exp10_finite(double)
     86 declare double @__exp10_finite(double)
     87 
     88 ; CHECK: declare float @__exp10f_finite(float)
     89 declare float @__exp10f_finite(float)
     90 
     91 ; CHECK: declare x86_fp80 @__exp10l_finite(x86_fp80)
     92 declare x86_fp80 @__exp10l_finite(x86_fp80)
     93 
     94 ; CHECK: declare double @__exp2_finite(double)
     95 declare double @__exp2_finite(double)
     96 
     97 ; CHECK: declare float @__exp2f_finite(float)
     98 declare float @__exp2f_finite(float)
     99 
    100 ; CHECK: declare x86_fp80 @__exp2l_finite(x86_fp80)
    101 declare x86_fp80 @__exp2l_finite(x86_fp80)
    102 
    103 ; CHECK: declare double @__exp_finite(double)
    104 declare double @__exp_finite(double)
    105 
    106 ; CHECK: declare float @__expf_finite(float)
    107 declare float @__expf_finite(float)
    108 
    109 ; CHECK: declare x86_fp80 @__expl_finite(x86_fp80)
    110 declare x86_fp80 @__expl_finite(x86_fp80)
    111 
    112 ; CHECK: declare double @__log10_finite(double)
    113 declare double @__log10_finite(double)
    114 
    115 ; CHECK: declare float @__log10f_finite(float)
    116 declare float @__log10f_finite(float)
    117 
    118 ; CHECK: declare x86_fp80 @__log10l_finite(x86_fp80)
    119 declare x86_fp80 @__log10l_finite(x86_fp80)
    120 
    121 ; CHECK: declare double @__log2_finite(double)
    122 declare double @__log2_finite(double)
    123 
    124 ; CHECK: declare float @__log2f_finite(float)
    125 declare float @__log2f_finite(float)
    126 
    127 ; CHECK: declare x86_fp80 @__log2l_finite(x86_fp80)
    128 declare x86_fp80 @__log2l_finite(x86_fp80)
    129 
    130 ; CHECK: declare double @__log_finite(double)
    131 declare double @__log_finite(double)
    132 
    133 ; CHECK: declare float @__logf_finite(float)
    134 declare float @__logf_finite(float)
    135 
    136 ; CHECK: declare x86_fp80 @__logl_finite(x86_fp80)
    137 declare x86_fp80 @__logl_finite(x86_fp80)
    138 
    139 ; CHECK: declare double @__pow_finite(double, double)
    140 declare double @__pow_finite(double, double)
    141 
    142 ; CHECK: declare float @__powf_finite(float, float)
    143 declare float @__powf_finite(float, float)
    144 
    145 ; CHECK: declare x86_fp80 @__powl_finite(x86_fp80, x86_fp80)
    146 declare x86_fp80 @__powl_finite(x86_fp80, x86_fp80)
    147 
    148 ; CHECK: declare double @__sinh_finite(double)
    149 declare double @__sinh_finite(double)
    150 
    151 ; CHECK: declare float @__sinhf_finite(float)
    152 declare float @__sinhf_finite(float)
    153 
    154 ; CHECK: declare x86_fp80 @__sinhl_finite(x86_fp80)
    155 declare x86_fp80 @__sinhl_finite(x86_fp80)
    156 
    157 ; CHECK: declare double @__sinpi(double)
    158 declare double @__sinpi(double)
    159 
    160 ; CHECK: declare float @__sinpif(float)
    161 declare float @__sinpif(float)
    162 
    163 ; CHECK: declare i32 @abs(i32)
    164 declare i32 @abs(i32)
    165 
    166 ; CHECK: declare i32 @access(i8* nocapture readonly, i32) [[G0:#[0-9]+]]
    167 declare i32 @access(i8*, i32)
    168 
    169 ; CHECK: declare double @acos(double)
    170 declare double @acos(double)
    171 
    172 ; CHECK: declare float @acosf(float)
    173 declare float @acosf(float)
    174 
    175 ; CHECK: declare double @acosh(double)
    176 declare double @acosh(double)
    177 
    178 ; CHECK: declare float @acoshf(float)
    179 declare float @acoshf(float)
    180 
    181 ; CHECK: declare x86_fp80 @acoshl(x86_fp80)
    182 declare x86_fp80 @acoshl(x86_fp80)
    183 
    184 ; CHECK: declare x86_fp80 @acosl(x86_fp80)
    185 declare x86_fp80 @acosl(x86_fp80)
    186 
    187 ; CHECK: declare double @asin(double)
    188 declare double @asin(double)
    189 
    190 ; CHECK: declare float @asinf(float)
    191 declare float @asinf(float)
    192 
    193 ; CHECK: declare double @asinh(double)
    194 declare double @asinh(double)
    195 
    196 ; CHECK: declare float @asinhf(float)
    197 declare float @asinhf(float)
    198 
    199 ; CHECK: declare x86_fp80 @asinhl(x86_fp80)
    200 declare x86_fp80 @asinhl(x86_fp80)
    201 
    202 ; CHECK: declare x86_fp80 @asinl(x86_fp80)
    203 declare x86_fp80 @asinl(x86_fp80)
    204 
    205 ; CHECK: declare double @atan(double)
    206 declare double @atan(double)
    207 
    208 ; CHECK: declare double @atan2(double, double)
    209 declare double @atan2(double, double)
    210 
    211 ; CHECK: declare float @atan2f(float, float)
    212 declare float @atan2f(float, float)
    213 
    214 ; CHECK: declare x86_fp80 @atan2l(x86_fp80, x86_fp80)
    215 declare x86_fp80 @atan2l(x86_fp80, x86_fp80)
    216 
    217 ; CHECK: declare float @atanf(float)
    218 declare float @atanf(float)
    219 
    220 ; CHECK: declare double @atanh(double)
    221 declare double @atanh(double)
    222 
    223 ; CHECK: declare float @atanhf(float)
    224 declare float @atanhf(float)
    225 
    226 ; CHECK: declare x86_fp80 @atanhl(x86_fp80)
    227 declare x86_fp80 @atanhl(x86_fp80)
    228 
    229 ; CHECK: declare x86_fp80 @atanl(x86_fp80)
    230 declare x86_fp80 @atanl(x86_fp80)
    231 
    232 ; CHECK: declare double @atof(i8* nocapture) [[G1:#[0-9]+]]
    233 declare double @atof(i8*)
    234 
    235 ; CHECK: declare i32 @atoi(i8* nocapture) [[G1]]
    236 declare i32 @atoi(i8*)
    237 
    238 ; CHECK: declare i64 @atol(i8* nocapture) [[G1]]
    239 declare i64 @atol(i8*)
    240 
    241 ; CHECK: declare i64 @atoll(i8* nocapture) [[G1]]
    242 declare i64 @atoll(i8*)
    243 
    244 ; CHECK: declare i32 @bcmp(i8* nocapture, i8* nocapture, i64) [[G1]]
    245 declare i32 @bcmp(i8*, i8*, i64)
    246 
    247 ; CHECK: declare void @bcopy(i8* nocapture readonly, i8* nocapture, i64) [[G0]]
    248 declare void @bcopy(i8*, i8*, i64)
    249 
    250 ; CHECK: declare void @bzero(i8* nocapture, i64) [[G0]]
    251 declare void @bzero(i8*, i64)
    252 
    253 ; CHECK: declare noalias i8* @calloc(i64, i64) [[G0]]
    254 declare i8* @calloc(i64, i64)
    255 
    256 ; CHECK: declare double @cbrt(double)
    257 declare double @cbrt(double)
    258 
    259 ; CHECK: declare float @cbrtf(float)
    260 declare float @cbrtf(float)
    261 
    262 ; CHECK: declare x86_fp80 @cbrtl(x86_fp80)
    263 declare x86_fp80 @cbrtl(x86_fp80)
    264 
    265 ; CHECK: declare double @ceil(double)
    266 declare double @ceil(double)
    267 
    268 ; CHECK: declare float @ceilf(float)
    269 declare float @ceilf(float)
    270 
    271 ; CHECK: declare x86_fp80 @ceill(x86_fp80)
    272 declare x86_fp80 @ceill(x86_fp80)
    273 
    274 ; CHECK: declare i32 @chmod(i8* nocapture readonly, i16 zeroext) [[G0]]
    275 declare i32 @chmod(i8*, i16 zeroext)
    276 
    277 ; CHECK: declare i32 @chown(i8* nocapture readonly, i32, i32) [[G0]]
    278 declare i32 @chown(i8*, i32, i32)
    279 
    280 ; CHECK: declare void @clearerr(%opaque* nocapture) [[G0]]
    281 declare void @clearerr(%opaque*)
    282 
    283 ; CHECK: declare i32 @closedir(%opaque* nocapture) [[G0]]
    284 declare i32 @closedir(%opaque*)
    285 
    286 ; CHECK: declare double @copysign(double, double)
    287 declare double @copysign(double, double)
    288 
    289 ; CHECK: declare float @copysignf(float, float)
    290 declare float @copysignf(float, float)
    291 
    292 ; CHECK: declare x86_fp80 @copysignl(x86_fp80, x86_fp80)
    293 declare x86_fp80 @copysignl(x86_fp80, x86_fp80)
    294 
    295 ; CHECK: declare double @cos(double)
    296 declare double @cos(double)
    297 
    298 ; CHECK: declare float @cosf(float)
    299 declare float @cosf(float)
    300 
    301 ; CHECK: declare double @cosh(double)
    302 declare double @cosh(double)
    303 
    304 ; CHECK: declare float @coshf(float)
    305 declare float @coshf(float)
    306 
    307 ; CHECK: declare x86_fp80 @coshl(x86_fp80)
    308 declare x86_fp80 @coshl(x86_fp80)
    309 
    310 ; CHECK: declare x86_fp80 @cosl(x86_fp80)
    311 declare x86_fp80 @cosl(x86_fp80)
    312 
    313 ; CHECK: declare i8* @ctermid(i8* nocapture) [[G0]]
    314 declare i8* @ctermid(i8*)
    315 
    316 ; CHECK: declare double @exp(double)
    317 declare double @exp(double)
    318 
    319 ; CHECK: declare double @exp2(double)
    320 declare double @exp2(double)
    321 
    322 ; CHECK: declare float @exp2f(float)
    323 declare float @exp2f(float)
    324 
    325 ; CHECK: declare x86_fp80 @exp2l(x86_fp80)
    326 declare x86_fp80 @exp2l(x86_fp80)
    327 
    328 ; CHECK: declare float @expf(float)
    329 declare float @expf(float)
    330 
    331 ; CHECK: declare x86_fp80 @expl(x86_fp80)
    332 declare x86_fp80 @expl(x86_fp80)
    333 
    334 ; CHECK: declare double @expm1(double)
    335 declare double @expm1(double)
    336 
    337 ; CHECK: declare float @expm1f(float)
    338 declare float @expm1f(float)
    339 
    340 ; CHECK: declare x86_fp80 @expm1l(x86_fp80)
    341 declare x86_fp80 @expm1l(x86_fp80)
    342 
    343 ; CHECK: declare double @fabs(double)
    344 declare double @fabs(double)
    345 
    346 ; CHECK: declare float @fabsf(float)
    347 declare float @fabsf(float)
    348 
    349 ; CHECK: declare x86_fp80 @fabsl(x86_fp80)
    350 declare x86_fp80 @fabsl(x86_fp80)
    351 
    352 ; CHECK: declare i32 @fclose(%opaque* nocapture) [[G0]]
    353 declare i32 @fclose(%opaque*)
    354 
    355 ; CHECK: declare noalias %opaque* @fdopen(i32, i8* nocapture readonly) [[G0]]
    356 declare %opaque* @fdopen(i32, i8*)
    357 
    358 ; CHECK: declare i32 @feof(%opaque* nocapture) [[G0]]
    359 declare i32 @feof(%opaque*)
    360 
    361 ; CHECK: declare i32 @ferror(%opaque* nocapture) [[G1]]
    362 declare i32 @ferror(%opaque*)
    363 
    364 ; CHECK: declare i32 @fflush(%opaque* nocapture) [[G0]]
    365 declare i32 @fflush(%opaque*)
    366 
    367 ; CHECK: declare i32 @ffs(i32)
    368 declare i32 @ffs(i32)
    369 
    370 ; CHECK: declare i32 @ffsl(i64)
    371 declare i32 @ffsl(i64)
    372 
    373 ; CHECK: declare i32 @ffsll(i64)
    374 declare i32 @ffsll(i64)
    375 
    376 ; CHECK: declare i32 @fgetc(%opaque* nocapture) [[G0]]
    377 declare i32 @fgetc(%opaque*)
    378 
    379 ; CHECK: declare i32 @fgetpos(%opaque* nocapture, i64* nocapture) [[G0]]
    380 declare i32 @fgetpos(%opaque*, i64*)
    381 
    382 ; CHECK: declare i8* @fgets(i8*, i32, %opaque* nocapture) [[G0]]
    383 declare i8* @fgets(i8*, i32, %opaque*)
    384 
    385 ; CHECK: declare i32 @fileno(%opaque* nocapture) [[G0]]
    386 declare i32 @fileno(%opaque*)
    387 
    388 ; CHECK: declare void @flockfile(%opaque* nocapture) [[G0]]
    389 declare void @flockfile(%opaque*)
    390 
    391 ; CHECK: declare double @floor(double)
    392 declare double @floor(double)
    393 
    394 ; CHECK: declare float @floorf(float)
    395 declare float @floorf(float)
    396 
    397 ; CHECK: declare x86_fp80 @floorl(x86_fp80)
    398 declare x86_fp80 @floorl(x86_fp80)
    399 
    400 ; CHECK: declare i32 @fls(i32)
    401 declare i32 @fls(i32)
    402 
    403 ; CHECK: declare i32 @flsl(i64)
    404 declare i32 @flsl(i64)
    405 
    406 ; CHECK: declare i32 @flsll(i64)
    407 declare i32 @flsll(i64)
    408 
    409 ; CHECK: declare double @fmax(double, double)
    410 declare double @fmax(double, double)
    411 
    412 ; CHECK: declare float @fmaxf(float, float)
    413 declare float @fmaxf(float, float)
    414 
    415 ; CHECK: declare x86_fp80 @fmaxl(x86_fp80, x86_fp80)
    416 declare x86_fp80 @fmaxl(x86_fp80, x86_fp80)
    417 
    418 ; CHECK: declare double @fmin(double, double)
    419 declare double @fmin(double, double)
    420 
    421 ; CHECK: declare float @fminf(float, float)
    422 declare float @fminf(float, float)
    423 
    424 ; CHECK: declare x86_fp80 @fminl(x86_fp80, x86_fp80)
    425 declare x86_fp80 @fminl(x86_fp80, x86_fp80)
    426 
    427 ; CHECK: declare double @fmod(double, double)
    428 declare double @fmod(double, double)
    429 
    430 ; CHECK: declare float @fmodf(float, float)
    431 declare float @fmodf(float, float)
    432 
    433 ; CHECK: declare x86_fp80 @fmodl(x86_fp80, x86_fp80)
    434 declare x86_fp80 @fmodl(x86_fp80, x86_fp80)
    435 
    436 ; CHECK: declare noalias %opaque* @fopen(i8* nocapture readonly, i8* nocapture readonly) [[G0]]
    437 declare %opaque* @fopen(i8*, i8*)
    438 
    439 ; CHECK: declare i32 @fprintf(%opaque* nocapture, i8* nocapture readonly, ...) [[G0]]
    440 declare i32 @fprintf(%opaque*, i8*, ...)
    441 
    442 ; CHECK: declare i32 @fputc(i32, %opaque* nocapture) [[G0]]
    443 declare i32 @fputc(i32, %opaque*)
    444 
    445 ; CHECK: declare i32 @fputs(i8* nocapture readonly, %opaque* nocapture) [[G0]]
    446 declare i32 @fputs(i8*, %opaque*)
    447 
    448 ; CHECK: declare i64 @fread(i8* nocapture, i64, i64, %opaque* nocapture) [[G0]]
    449 declare i64 @fread(i8*, i64, i64, %opaque*)
    450 
    451 ; CHECK: declare void @free(i8* nocapture) [[G0]]
    452 declare void @free(i8*)
    453 
    454 ; CHECK: declare double @frexp(double, i32* nocapture) [[G0]]
    455 declare double @frexp(double, i32*)
    456 
    457 ; CHECK: declare float @frexpf(float, i32* nocapture) [[G0]]
    458 declare float @frexpf(float, i32*)
    459 
    460 ; CHECK: declare x86_fp80 @frexpl(x86_fp80, i32* nocapture) [[G0]]
    461 declare x86_fp80 @frexpl(x86_fp80, i32*)
    462 
    463 ; CHECK: declare i32 @fscanf(%opaque* nocapture, i8* nocapture readonly, ...) [[G0]]
    464 declare i32 @fscanf(%opaque*, i8*, ...)
    465 
    466 ; CHECK: declare i32 @fseek(%opaque* nocapture, i64, i32) [[G0]]
    467 declare i32 @fseek(%opaque*, i64, i32)
    468 
    469 ; CHECK: declare i32 @fseeko(%opaque* nocapture, i64, i32) [[G0]]
    470 declare i32 @fseeko(%opaque*, i64, i32)
    471 
    472 ; CHECK-LINUX: declare i32 @fseeko64(%opaque* nocapture, i64, i32) [[G0]]
    473 declare i32 @fseeko64(%opaque*, i64, i32)
    474 
    475 ; CHECK: declare i32 @fsetpos(%opaque* nocapture, i64*) [[G0]]
    476 declare i32 @fsetpos(%opaque*, i64*)
    477 
    478 ; CHECK: declare i32 @fstat(i32, %opaque* nocapture) [[G0]]
    479 declare i32 @fstat(i32, %opaque*)
    480 
    481 ; CHECK-LINUX: declare i32 @fstat64(i32, %opaque* nocapture) [[G0]]
    482 declare i32 @fstat64(i32, %opaque*)
    483 
    484 ; CHECK: declare i32 @fstatvfs(i32, %opaque* nocapture) [[G0]]
    485 declare i32 @fstatvfs(i32, %opaque*)
    486 
    487 ; CHECK-LINUX: declare i32 @fstatvfs64(i32, %opaque* nocapture) [[G0]]
    488 declare i32 @fstatvfs64(i32, %opaque*)
    489 
    490 ; CHECK: declare i64 @ftell(%opaque* nocapture) [[G0]]
    491 declare i64 @ftell(%opaque*)
    492 
    493 ; CHECK: declare i64 @ftello(%opaque* nocapture) [[G0]]
    494 declare i64 @ftello(%opaque*)
    495 
    496 ; CHECK-LINUX: declare i64 @ftello64(%opaque* nocapture) [[G0]]
    497 declare i64 @ftello64(%opaque*)
    498 
    499 ; CHECK: declare i32 @ftrylockfile(%opaque* nocapture) [[G0]]
    500 declare i32 @ftrylockfile(%opaque*)
    501 
    502 ; CHECK: declare void @funlockfile(%opaque* nocapture) [[G0]]
    503 declare void @funlockfile(%opaque*)
    504 
    505 ; CHECK: declare i64 @fwrite(i8* nocapture, i64, i64, %opaque* nocapture) [[G0]]
    506 declare i64 @fwrite(i8*, i64, i64, %opaque*)
    507 
    508 ; CHECK: declare i32 @getc(%opaque* nocapture) [[G0]]
    509 declare i32 @getc(%opaque*)
    510 
    511 ; CHECK: declare i32 @getc_unlocked(%opaque* nocapture) [[G0]]
    512 declare i32 @getc_unlocked(%opaque*)
    513 
    514 ; CHECK: declare i32 @getchar()
    515 declare i32 @getchar()
    516 
    517 ; CHECK: declare i32 @getchar_unlocked()
    518 declare i32 @getchar_unlocked()
    519 
    520 ; CHECK: declare i8* @getenv(i8* nocapture) [[G1]]
    521 declare i8* @getenv(i8*)
    522 
    523 ; CHECK: declare i32 @getitimer(i32, %opaque* nocapture) [[G0]]
    524 declare i32 @getitimer(i32, %opaque*)
    525 
    526 ; CHECK: declare i32 @getlogin_r(i8* nocapture, i64) [[G0]]
    527 declare i32 @getlogin_r(i8*, i64)
    528 
    529 ; CHECK: declare %opaque* @getpwnam(i8* nocapture readonly) [[G0]]
    530 declare %opaque* @getpwnam(i8*)
    531 
    532 ; CHECK: declare i8* @gets(i8*)
    533 declare i8* @gets(i8*)
    534 
    535 ; CHECK: declare i32 @gettimeofday(%opaque* nocapture, i8* nocapture) [[G0]]
    536 declare i32 @gettimeofday(%opaque*, i8*)
    537 
    538 ; CHECK: declare i32 @isascii(i32)
    539 declare i32 @isascii(i32)
    540 
    541 ; CHECK: declare i32 @isdigit(i32)
    542 declare i32 @isdigit(i32)
    543 
    544 ; CHECK: declare i64 @labs(i64)
    545 declare i64 @labs(i64)
    546 
    547 ; CHECK: declare i32 @lchown(i8* nocapture readonly, i32, i32) [[G0]]
    548 declare i32 @lchown(i8*, i32, i32)
    549 
    550 ; CHECK: declare double @ldexp(double, i32)
    551 declare double @ldexp(double, i32)
    552 
    553 ; CHECK: declare float @ldexpf(float, i32)
    554 declare float @ldexpf(float, i32)
    555 
    556 ; CHECK: declare x86_fp80 @ldexpl(x86_fp80, i32)
    557 declare x86_fp80 @ldexpl(x86_fp80, i32)
    558 
    559 ; CHECK: declare i64 @llabs(i64)
    560 declare i64 @llabs(i64)
    561 
    562 ; CHECK: declare double @log(double)
    563 declare double @log(double)
    564 
    565 ; CHECK: declare double @log10(double)
    566 declare double @log10(double)
    567 
    568 ; CHECK: declare float @log10f(float)
    569 declare float @log10f(float)
    570 
    571 ; CHECK: declare x86_fp80 @log10l(x86_fp80)
    572 declare x86_fp80 @log10l(x86_fp80)
    573 
    574 ; CHECK: declare double @log1p(double)
    575 declare double @log1p(double)
    576 
    577 ; CHECK: declare float @log1pf(float)
    578 declare float @log1pf(float)
    579 
    580 ; CHECK: declare x86_fp80 @log1pl(x86_fp80)
    581 declare x86_fp80 @log1pl(x86_fp80)
    582 
    583 ; CHECK: declare double @log2(double)
    584 declare double @log2(double)
    585 
    586 ; CHECK: declare float @log2f(float)
    587 declare float @log2f(float)
    588 
    589 ; CHECK: declare x86_fp80 @log2l(x86_fp80)
    590 declare x86_fp80 @log2l(x86_fp80)
    591 
    592 ; CHECK: declare double @logb(double)
    593 declare double @logb(double)
    594 
    595 ; CHECK: declare float @logbf(float)
    596 declare float @logbf(float)
    597 
    598 ; CHECK: declare x86_fp80 @logbl(x86_fp80)
    599 declare x86_fp80 @logbl(x86_fp80)
    600 
    601 ; CHECK: declare float @logf(float)
    602 declare float @logf(float)
    603 
    604 ; CHECK: declare x86_fp80 @logl(x86_fp80)
    605 declare x86_fp80 @logl(x86_fp80)
    606 
    607 ; CHECK: declare i32 @lstat(i8* nocapture readonly, %opaque* nocapture) [[G0]]
    608 declare i32 @lstat(i8*, %opaque*)
    609 
    610 ; CHECK-LINUX: declare i32 @lstat64(i8* nocapture readonly, %opaque* nocapture) [[G0]]
    611 declare i32 @lstat64(i8*, %opaque*)
    612 
    613 ; CHECK: declare noalias i8* @malloc(i64) [[G0]]
    614 declare i8* @malloc(i64)
    615 
    616 ; CHECK-LINUX: declare noalias i8* @memalign(i64, i64)
    617 declare i8* @memalign(i64, i64)
    618 
    619 ; CHECK: declare i8* @memccpy(i8*, i8* nocapture readonly, i32, i64) [[G0]]
    620 declare i8* @memccpy(i8*, i8*, i32, i64)
    621 
    622 ; CHECK: declare i8* @memchr(i8*, i32, i64) [[G1]]
    623 declare i8* @memchr(i8*, i32, i64)
    624 
    625 ; CHECK: declare i32 @memcmp(i8* nocapture, i8* nocapture, i64) [[G1]]
    626 declare i32 @memcmp(i8*, i8*, i64)
    627 
    628 ; CHECK: declare i8* @memcpy(i8*, i8* nocapture readonly, i64) [[G0]]
    629 declare i8* @memcpy(i8*, i8*, i64)
    630 
    631 ; CHECK: declare i8* @mempcpy(i8*, i8* nocapture readonly, i64) [[G0]]
    632 declare i8* @mempcpy(i8*, i8*, i64)
    633 
    634 ; CHECK: declare i8* @memmove(i8*, i8* nocapture readonly, i64) [[G0]]
    635 declare i8* @memmove(i8*, i8*, i64)
    636 
    637 ; CHECK: declare i8* @memset(i8*, i32, i64)
    638 declare i8* @memset(i8*, i32, i64)
    639 
    640 ; CHECK: declare i32 @mkdir(i8* nocapture readonly, i16 zeroext) [[G0]]
    641 declare i32 @mkdir(i8*, i16 zeroext)
    642 
    643 ; CHECK: declare i64 @mktime(%opaque* nocapture) [[G0]]
    644 declare i64 @mktime(%opaque*)
    645 
    646 ; CHECK: declare double @modf(double, double* nocapture) [[G0]]
    647 declare double @modf(double, double*)
    648 
    649 ; CHECK: declare float @modff(float, float* nocapture) [[G0]]
    650 declare float @modff(float, float*)
    651 
    652 ; CHECK: declare x86_fp80 @modfl(x86_fp80, x86_fp80* nocapture) [[G0]]
    653 declare x86_fp80 @modfl(x86_fp80, x86_fp80*)
    654 
    655 ; CHECK: declare double @nearbyint(double)
    656 declare double @nearbyint(double)
    657 
    658 ; CHECK: declare float @nearbyintf(float)
    659 declare float @nearbyintf(float)
    660 
    661 ; CHECK: declare x86_fp80 @nearbyintl(x86_fp80)
    662 declare x86_fp80 @nearbyintl(x86_fp80)
    663 
    664 ; CHECK: declare i32 @open(i8* nocapture readonly, i32, ...)
    665 declare i32 @open(i8*, i32, ...)
    666 
    667 ; CHECK-LINUX: declare i32 @open64(i8* nocapture readonly, i32, ...)
    668 declare i32 @open64(i8*, i32, ...)
    669 
    670 ; CHECK: declare noalias %opaque* @opendir(i8* nocapture readonly) [[G0]]
    671 declare %opaque* @opendir(i8*)
    672 
    673 ; CHECK: declare i32 @pclose(%opaque* nocapture) [[G0]]
    674 declare i32 @pclose(%opaque*)
    675 
    676 ; CHECK: declare void @perror(i8* nocapture readonly) [[G0]]
    677 declare void @perror(i8*)
    678 
    679 ; CHECK: declare noalias %opaque* @popen(i8* nocapture readonly, i8* nocapture readonly) [[G0]]
    680 declare %opaque* @popen(i8*, i8*)
    681 
    682 ; CHECK: declare i32 @posix_memalign(i8**, i64, i64)
    683 declare i32 @posix_memalign(i8**, i64, i64)
    684 
    685 ; CHECK: declare double @pow(double, double)
    686 declare double @pow(double, double)
    687 
    688 ; CHECK: declare float @powf(float, float)
    689 declare float @powf(float, float)
    690 
    691 ; CHECK: declare x86_fp80 @powl(x86_fp80, x86_fp80)
    692 declare x86_fp80 @powl(x86_fp80, x86_fp80)
    693 
    694 ; CHECK: declare i64 @pread(i32, i8* nocapture, i64, i64)
    695 declare i64 @pread(i32, i8*, i64, i64)
    696 
    697 ; CHECK: declare i32 @printf(i8* nocapture readonly, ...) [[G0]]
    698 declare i32 @printf(i8*, ...)
    699 
    700 ; CHECK: declare i32 @putc(i32, %opaque* nocapture) [[G0]]
    701 declare i32 @putc(i32, %opaque*)
    702 
    703 ; CHECK: declare i32 @putchar(i32)
    704 declare i32 @putchar(i32)
    705 
    706 ; CHECK: declare i32 @putchar_unlocked(i32)
    707 declare i32 @putchar_unlocked(i32)
    708 
    709 ; CHECK: declare i32 @puts(i8* nocapture readonly) [[G0]]
    710 declare i32 @puts(i8*)
    711 
    712 ; CHECK: declare i64 @pwrite(i32, i8* nocapture readonly, i64, i64)
    713 declare i64 @pwrite(i32, i8*, i64, i64)
    714 
    715 ; CHECK: declare void @qsort(i8*, i64, i64, i32 (i8*, i8*)* nocapture)
    716 declare void @qsort(i8*, i64, i64, i32 (i8*, i8*)*)
    717 
    718 ; CHECK: declare i64 @read(i32, i8* nocapture, i64)
    719 declare i64 @read(i32, i8*, i64)
    720 
    721 ; CHECK: declare i64 @readlink(i8* nocapture readonly, i8* nocapture, i64) [[G0]]
    722 declare i64 @readlink(i8*, i8*, i64)
    723 
    724 ; CHECK: declare noalias i8* @realloc(i8* nocapture, i64) [[G0]]
    725 declare i8* @realloc(i8*, i64)
    726 
    727 ; CHECK: declare i8* @reallocf(i8*, i64)
    728 declare i8* @reallocf(i8*, i64)
    729 
    730 ; CHECK: declare i8* @realpath(i8* nocapture readonly, i8*)
    731 declare i8* @realpath(i8*, i8*)
    732 
    733 ; CHECK: declare i32 @remove(i8* nocapture readonly) [[G0]]
    734 declare i32 @remove(i8*)
    735 
    736 ; CHECK: declare i32 @rename(i8* nocapture readonly, i8* nocapture readonly) [[G0]]
    737 declare i32 @rename(i8*, i8*)
    738 
    739 ; CHECK: declare void @rewind(%opaque* nocapture) [[G0]]
    740 declare void @rewind(%opaque*)
    741 
    742 ; CHECK: declare double @rint(double)
    743 declare double @rint(double)
    744 
    745 ; CHECK: declare float @rintf(float)
    746 declare float @rintf(float)
    747 
    748 ; CHECK: declare x86_fp80 @rintl(x86_fp80)
    749 declare x86_fp80 @rintl(x86_fp80)
    750 
    751 ; CHECK: declare i32 @rmdir(i8* nocapture readonly) [[G0]]
    752 declare i32 @rmdir(i8*)
    753 
    754 ; CHECK: declare double @round(double)
    755 declare double @round(double)
    756 
    757 ; CHECK: declare float @roundf(float)
    758 declare float @roundf(float)
    759 
    760 ; CHECK: declare x86_fp80 @roundl(x86_fp80)
    761 declare x86_fp80 @roundl(x86_fp80)
    762 
    763 ; CHECK: declare i32 @scanf(i8* nocapture readonly, ...) [[G0]]
    764 declare i32 @scanf(i8*, ...)
    765 
    766 ; CHECK: declare void @setbuf(%opaque* nocapture, i8*) [[G0]]
    767 declare void @setbuf(%opaque*, i8*)
    768 
    769 ; CHECK: declare i32 @setitimer(i32, %opaque* nocapture readonly, %opaque* nocapture) [[G0]]
    770 declare i32 @setitimer(i32, %opaque*, %opaque*)
    771 
    772 ; CHECK: declare i32 @setvbuf(%opaque* nocapture, i8*, i32, i64) [[G0]]
    773 declare i32 @setvbuf(%opaque*, i8*, i32, i64)
    774 
    775 ; CHECK: declare double @sin(double)
    776 declare double @sin(double)
    777 
    778 ; CHECK: declare float @sinf(float)
    779 declare float @sinf(float)
    780 
    781 ; CHECK: declare double @sinh(double)
    782 declare double @sinh(double)
    783 
    784 ; CHECK: declare float @sinhf(float)
    785 declare float @sinhf(float)
    786 
    787 ; CHECK: declare x86_fp80 @sinhl(x86_fp80)
    788 declare x86_fp80 @sinhl(x86_fp80)
    789 
    790 ; CHECK: declare x86_fp80 @sinl(x86_fp80)
    791 declare x86_fp80 @sinl(x86_fp80)
    792 
    793 ; CHECK: declare i32 @snprintf(i8* nocapture, i64, i8* nocapture readonly, ...) [[G0]]
    794 declare i32 @snprintf(i8*, i64, i8*, ...)
    795 
    796 ; CHECK: declare i32 @sprintf(i8* nocapture, i8* nocapture readonly, ...) [[G0]]
    797 declare i32 @sprintf(i8*, i8*, ...)
    798 
    799 ; CHECK: declare double @sqrt(double)
    800 declare double @sqrt(double)
    801 
    802 ; CHECK: declare float @sqrtf(float)
    803 declare float @sqrtf(float)
    804 
    805 ; CHECK: declare x86_fp80 @sqrtl(x86_fp80)
    806 declare x86_fp80 @sqrtl(x86_fp80)
    807 
    808 ; CHECK: declare i32 @sscanf(i8* nocapture readonly, i8* nocapture readonly, ...) [[G0]]
    809 declare i32 @sscanf(i8*, i8*, ...)
    810 
    811 ; CHECK: declare i32 @stat(i8* nocapture readonly, %opaque* nocapture) [[G0]]
    812 declare i32 @stat(i8*, %opaque*)
    813 
    814 ; CHECK-LINUX: declare i32 @stat64(i8* nocapture readonly, %opaque* nocapture) [[G0]]
    815 declare i32 @stat64(i8*, %opaque*)
    816 
    817 ; CHECK: declare i32 @statvfs(i8* nocapture readonly, %opaque* nocapture) [[G0]]
    818 declare i32 @statvfs(i8*, %opaque*)
    819 
    820 ; CHECK-LINUX: declare i32 @statvfs64(i8* nocapture readonly, %opaque* nocapture) [[G0]]
    821 declare i32 @statvfs64(i8*, %opaque*)
    822 
    823 ; CHECK: declare i8* @stpcpy(i8*, i8* nocapture readonly) [[G0]]
    824 declare i8* @stpcpy(i8*, i8*)
    825 
    826 ; CHECK: declare i8* @stpncpy(i8*, i8* nocapture readonly, i64) [[G0]]
    827 declare i8* @stpncpy(i8*, i8*, i64)
    828 
    829 ; CHECK: declare i32 @strcasecmp(i8* nocapture, i8* nocapture) [[G1]]
    830 declare i32 @strcasecmp(i8*, i8*)
    831 
    832 ; CHECK: declare i8* @strcat(i8*, i8* nocapture readonly) [[G0]]
    833 declare i8* @strcat(i8*, i8*)
    834 
    835 ; CHECK: declare i8* @strchr(i8*, i32) [[G1]]
    836 declare i8* @strchr(i8*, i32)
    837 
    838 ; CHECK: declare i32 @strcmp(i8* nocapture, i8* nocapture) [[G1]]
    839 declare i32 @strcmp(i8*, i8*)
    840 
    841 ; CHECK: declare i32 @strcoll(i8* nocapture, i8* nocapture) [[G1]]
    842 declare i32 @strcoll(i8*, i8*)
    843 
    844 ; CHECK: declare i8* @strcpy(i8*, i8* nocapture readonly) [[G0]]
    845 declare i8* @strcpy(i8*, i8*)
    846 
    847 ; CHECK: declare i64 @strcspn(i8* nocapture, i8* nocapture) [[G1]]
    848 declare i64 @strcspn(i8*, i8*)
    849 
    850 ; CHECK: declare noalias i8* @strdup(i8* nocapture readonly) [[G0]]
    851 declare i8* @strdup(i8*)
    852 
    853 ; CHECK: declare i64 @strlen(i8* nocapture) [[G2:#[0-9]+]]
    854 declare i64 @strlen(i8*)
    855 
    856 ; CHECK: declare i32 @strncasecmp(i8* nocapture, i8* nocapture, i64) [[G1]]
    857 declare i32 @strncasecmp(i8*, i8*, i64)
    858 
    859 ; CHECK: declare i8* @strncat(i8*, i8* nocapture readonly, i64) [[G0]]
    860 declare i8* @strncat(i8*, i8*, i64)
    861 
    862 ; CHECK: declare i32 @strncmp(i8* nocapture, i8* nocapture, i64) [[G1]]
    863 declare i32 @strncmp(i8*, i8*, i64)
    864 
    865 ; CHECK: declare i8* @strncpy(i8*, i8* nocapture readonly, i64) [[G0]]
    866 declare i8* @strncpy(i8*, i8*, i64)
    867 
    868 ; CHECK: declare noalias i8* @strndup(i8* nocapture readonly, i64) [[G0]]
    869 declare i8* @strndup(i8*, i64)
    870 
    871 ; CHECK: declare i64 @strnlen(i8*, i64)
    872 declare i64 @strnlen(i8*, i64)
    873 
    874 ; CHECK: declare i8* @strpbrk(i8*, i8* nocapture) [[G1]]
    875 declare i8* @strpbrk(i8*, i8*)
    876 
    877 ; CHECK: declare i8* @strrchr(i8*, i32) [[G1]]
    878 declare i8* @strrchr(i8*, i32)
    879 
    880 ; CHECK: declare i64 @strspn(i8* nocapture, i8* nocapture) [[G1]]
    881 declare i64 @strspn(i8*, i8*)
    882 
    883 ; CHECK: declare i8* @strstr(i8*, i8* nocapture) [[G1]]
    884 declare i8* @strstr(i8*, i8*)
    885 
    886 ; CHECK: declare double @strtod(i8* readonly, i8** nocapture) [[G0]]
    887 declare double @strtod(i8*, i8**)
    888 
    889 ; CHECK: declare float @strtof(i8* readonly, i8** nocapture) [[G0]]
    890 declare float @strtof(i8*, i8**)
    891 
    892 ; CHECK: declare i8* @strtok(i8*, i8* nocapture readonly) [[G0]]
    893 declare i8* @strtok(i8*, i8*)
    894 
    895 ; CHECK: declare i8* @strtok_r(i8*, i8* nocapture readonly, i8**) [[G0]]
    896 declare i8* @strtok_r(i8*, i8*, i8**)
    897 
    898 ; CHECK: declare i64 @strtol(i8* readonly, i8** nocapture, i32) [[G0]]
    899 declare i64 @strtol(i8*, i8**, i32)
    900 
    901 ; CHECK: declare x86_fp80 @strtold(i8* readonly, i8** nocapture) [[G0]]
    902 declare x86_fp80 @strtold(i8*, i8**)
    903 
    904 ; CHECK: declare i64 @strtoll(i8* readonly, i8** nocapture, i32) [[G0]]
    905 declare i64 @strtoll(i8*, i8**, i32)
    906 
    907 ; CHECK: declare i64 @strtoul(i8* readonly, i8** nocapture, i32) [[G0]]
    908 declare i64 @strtoul(i8*, i8**, i32)
    909 
    910 ; CHECK: declare i64 @strtoull(i8* readonly, i8** nocapture, i32) [[G0]]
    911 declare i64 @strtoull(i8*, i8**, i32)
    912 
    913 ; CHECK: declare i64 @strxfrm(i8* nocapture, i8* nocapture readonly, i64) [[G0]]
    914 declare i64 @strxfrm(i8*, i8*, i64)
    915 
    916 ; CHECK: declare i32 @system(i8* nocapture readonly)
    917 declare i32 @system(i8*)
    918 
    919 ; CHECK: declare double @tan(double)
    920 declare double @tan(double)
    921 
    922 ; CHECK: declare float @tanf(float)
    923 declare float @tanf(float)
    924 
    925 ; CHECK: declare double @tanh(double)
    926 declare double @tanh(double)
    927 
    928 ; CHECK: declare float @tanhf(float)
    929 declare float @tanhf(float)
    930 
    931 ; CHECK: declare x86_fp80 @tanhl(x86_fp80)
    932 declare x86_fp80 @tanhl(x86_fp80)
    933 
    934 ; CHECK: declare x86_fp80 @tanl(x86_fp80)
    935 declare x86_fp80 @tanl(x86_fp80)
    936 
    937 ; CHECK: declare i64 @times(%opaque* nocapture) [[G0]]
    938 declare i64 @times(%opaque*)
    939 
    940 ; CHECK: declare noalias %opaque* @tmpfile() [[G0]]
    941 declare %opaque* @tmpfile()
    942 
    943 ; CHECK-LINUX: declare noalias %opaque* @tmpfile64() [[G0]]
    944 declare %opaque* @tmpfile64()
    945 
    946 ; CHECK: declare i32 @toascii(i32)
    947 declare i32 @toascii(i32)
    948 
    949 ; CHECK: declare double @trunc(double)
    950 declare double @trunc(double)
    951 
    952 ; CHECK: declare float @truncf(float)
    953 declare float @truncf(float)
    954 
    955 ; CHECK: declare x86_fp80 @truncl(x86_fp80)
    956 declare x86_fp80 @truncl(x86_fp80)
    957 
    958 ; CHECK: declare i32 @uname(%opaque* nocapture) [[G0]]
    959 declare i32 @uname(%opaque*)
    960 
    961 ; CHECK: declare i32 @ungetc(i32, %opaque* nocapture) [[G0]]
    962 declare i32 @ungetc(i32, %opaque*)
    963 
    964 ; CHECK: declare i32 @unlink(i8* nocapture readonly) [[G0]]
    965 declare i32 @unlink(i8*)
    966 
    967 ; CHECK: declare i32 @unsetenv(i8* nocapture readonly) [[G0]]
    968 declare i32 @unsetenv(i8*)
    969 
    970 ; CHECK: declare i32 @utime(i8* nocapture readonly, %opaque* nocapture readonly) [[G0]]
    971 declare i32 @utime(i8*, %opaque*)
    972 
    973 ; CHECK: declare i32 @utimes(i8* nocapture readonly, %opaque* nocapture readonly) [[G0]]
    974 declare i32 @utimes(i8*, %opaque*)
    975 
    976 ; CHECK: declare noalias i8* @valloc(i64) [[G0]]
    977 declare i8* @valloc(i64)
    978 
    979 ; CHECK: declare i32 @vfprintf(%opaque* nocapture, i8* nocapture readonly, %opaque*) [[G0]]
    980 declare i32 @vfprintf(%opaque*, i8*, %opaque*)
    981 
    982 ; CHECK: declare i32 @vfscanf(%opaque* nocapture, i8* nocapture readonly, %opaque*) [[G0]]
    983 declare i32 @vfscanf(%opaque*, i8*, %opaque*)
    984 
    985 ; CHECK: declare i32 @vprintf(i8* nocapture readonly, %opaque*) [[G0]]
    986 declare i32 @vprintf(i8*, %opaque*)
    987 
    988 ; CHECK: declare i32 @vscanf(i8* nocapture readonly, %opaque*) [[G0]]
    989 declare i32 @vscanf(i8*, %opaque*)
    990 
    991 ; CHECK: declare i32 @vsnprintf(i8* nocapture, i64, i8* nocapture readonly, %opaque*) [[G0]]
    992 declare i32 @vsnprintf(i8*, i64, i8*, %opaque*)
    993 
    994 ; CHECK: declare i32 @vsprintf(i8* nocapture, i8* nocapture readonly, %opaque*) [[G0]]
    995 declare i32 @vsprintf(i8*, i8*, %opaque*)
    996 
    997 ; CHECK: declare i32 @vsscanf(i8* nocapture readonly, i8* nocapture readonly, %opaque*) [[G0]]
    998 declare i32 @vsscanf(i8*, i8*, %opaque*)
    999 
   1000 ; CHECK: declare i64 @write(i32, i8* nocapture readonly, i64)
   1001 declare i64 @write(i32, i8*, i64)
   1002 
   1003 
   1004 ; memset_pattern16 isn't available everywhere.
   1005 ; CHECK-DARWIN: declare void @memset_pattern16(i8* nocapture, i8* nocapture readonly, i64) [[G3:#[0-9]+]]
   1006 declare void @memset_pattern16(i8*, i8*, i64)
   1007 
   1008 
   1009 ; CHECK: attributes [[G0]] = { nounwind }
   1010 ; CHECK: attributes [[G1]] = { nounwind readonly }
   1011 ; CHECK: attributes [[G2]] = { argmemonly nounwind readonly }
   1012 ; CHECK-DARWIN: attributes [[G3]] = { argmemonly }
   1013