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