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: declare i32 @ffsl(i64) 368; CHECK-KNOWN-SAME: [[NOFREE_NOUNWIND_WILLRETURN]] 369; CHECK-UNKNOWN-NOT: #{{.*}} 370declare i32 @ffsl(i64) 371 372; CHECK: declare i32 @ffsll(i64) 373; CHECK-KNOWN-SAME: [[NOFREE_NOUNWIND_WILLRETURN]] 374; CHECK-UNKNOWN-NOT: #{{.*}} 375declare i32 @ffsll(i64) 376 377; CHECK: declare noundef i32 @fgetc(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 378declare i32 @fgetc(%opaque*) 379 380; CHECK: declare noundef i32 @fgetpos(%opaque* nocapture noundef, i64* nocapture noundef) [[NOFREE_NOUNWIND]] 381declare i32 @fgetpos(%opaque*, i64*) 382 383; CHECK: declare noundef i8* @fgets(i8* noundef, i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 384declare i8* @fgets(i8*, i32, %opaque*) 385 386; CHECK: declare noundef i32 @fileno(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 387declare i32 @fileno(%opaque*) 388 389; CHECK: declare void @flockfile(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 390declare void @flockfile(%opaque*) 391 392; CHECK: declare double @floor(double) [[NOFREE_NOUNWIND_WILLRETURN]] 393declare double @floor(double) 394 395; CHECK: declare float @floorf(float) [[NOFREE_NOUNWIND_WILLRETURN]] 396declare float @floorf(float) 397 398; CHECK: declare x86_fp80 @floorl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]] 399declare x86_fp80 @floorl(x86_fp80) 400 401; CHECK: declare i32 @fls(i32) 402declare i32 @fls(i32) 403 404; CHECK: declare i32 @flsl(i64) 405declare i32 @flsl(i64) 406 407; CHECK: declare i32 @flsll(i64) 408declare i32 @flsll(i64) 409 410; CHECK: declare double @fmax(double, double) [[NOFREE_NOUNWIND_WILLRETURN]] 411declare double @fmax(double, double) 412 413; CHECK: declare float @fmaxf(float, float) [[NOFREE_NOUNWIND_WILLRETURN]] 414declare float @fmaxf(float, float) 415 416; CHECK: declare x86_fp80 @fmaxl(x86_fp80, x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]] 417declare x86_fp80 @fmaxl(x86_fp80, x86_fp80) 418 419; CHECK: declare double @fmin(double, double) [[NOFREE_NOUNWIND_WILLRETURN]] 420declare double @fmin(double, double) 421 422; CHECK: declare float @fminf(float, float) [[NOFREE_NOUNWIND_WILLRETURN]] 423declare float @fminf(float, float) 424 425; CHECK: declare x86_fp80 @fminl(x86_fp80, x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]] 426declare x86_fp80 @fminl(x86_fp80, x86_fp80) 427 428; CHECK: declare double @fmod(double, double) [[NOFREE_NOUNWIND_WILLRETURN]] 429declare double @fmod(double, double) 430 431; CHECK: declare float @fmodf(float, float) [[NOFREE_NOUNWIND_WILLRETURN]] 432declare float @fmodf(float, float) 433 434; CHECK: declare x86_fp80 @fmodl(x86_fp80, x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]] 435declare x86_fp80 @fmodl(x86_fp80, x86_fp80) 436 437; CHECK: declare noalias noundef %opaque* @fopen(i8* nocapture noundef readonly, i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]] 438declare %opaque* @fopen(i8*, i8*) 439 440; CHECK: declare noundef i32 @fprintf(%opaque* nocapture noundef, i8* nocapture noundef readonly, ...) [[NOFREE_NOUNWIND]] 441declare i32 @fprintf(%opaque*, i8*, ...) 442 443; CHECK: declare noundef i32 @fputc(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 444declare i32 @fputc(i32, %opaque*) 445 446; CHECK: declare noundef i32 @fputs(i8* nocapture noundef readonly, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 447declare i32 @fputs(i8*, %opaque*) 448 449; CHECK: declare noundef i64 @fread(i8* nocapture noundef, i64 noundef, i64 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 450declare i64 @fread(i8*, i64, i64, %opaque*) 451 452; CHECK: declare void @free(i8* nocapture noundef) [[INACCESSIBLEMEMORARGMEMONLY_NOUNWIND_WILLRETURN:#[0-9]+]] 453declare void @free(i8*) 454 455; CHECK: declare double @frexp(double, i32* nocapture) [[NOFREE_NOUNWIND_WILLRETURN]] 456declare double @frexp(double, i32*) 457 458; CHECK: declare float @frexpf(float, i32* nocapture) [[NOFREE_NOUNWIND_WILLRETURN]] 459declare float @frexpf(float, i32*) 460 461; CHECK: declare x86_fp80 @frexpl(x86_fp80, i32* nocapture) [[NOFREE_NOUNWIND_WILLRETURN]] 462declare x86_fp80 @frexpl(x86_fp80, i32*) 463 464; CHECK: declare noundef i32 @fscanf(%opaque* nocapture noundef, i8* nocapture noundef readonly, ...) [[NOFREE_NOUNWIND]] 465declare i32 @fscanf(%opaque*, i8*, ...) 466 467; CHECK: declare noundef i32 @fseek(%opaque* nocapture noundef, i64 noundef, i32 noundef) [[NOFREE_NOUNWIND]] 468declare i32 @fseek(%opaque*, i64, i32) 469 470; CHECK: declare noundef i32 @fseeko(%opaque* nocapture noundef, i64 noundef, i32 noundef) [[NOFREE_NOUNWIND]] 471declare i32 @fseeko(%opaque*, i64, i32) 472 473; CHECK-LINUX: declare noundef i32 @fseeko64(%opaque* nocapture noundef, i64 noundef, i32 noundef) [[NOFREE_NOUNWIND]] 474declare i32 @fseeko64(%opaque*, i64, i32) 475 476; CHECK: declare noundef i32 @fsetpos(%opaque* nocapture noundef, i64* noundef) [[NOFREE_NOUNWIND]] 477declare i32 @fsetpos(%opaque*, i64*) 478 479; CHECK: declare noundef i32 @fstat(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 480declare i32 @fstat(i32, %opaque*) 481 482; CHECK-LINUX: declare noundef i32 @fstat64(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 483declare i32 @fstat64(i32, %opaque*) 484 485; CHECK: declare noundef i32 @fstatvfs(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 486declare i32 @fstatvfs(i32, %opaque*) 487 488; CHECK-LINUX: declare noundef i32 @fstatvfs64(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 489declare i32 @fstatvfs64(i32, %opaque*) 490 491; CHECK: declare noundef i64 @ftell(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 492declare i64 @ftell(%opaque*) 493 494; CHECK: declare noundef i64 @ftello(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 495declare i64 @ftello(%opaque*) 496 497; CHECK-LINUX: declare noundef i64 @ftello64(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 498declare i64 @ftello64(%opaque*) 499 500; CHECK: declare noundef i32 @ftrylockfile(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 501declare i32 @ftrylockfile(%opaque*) 502 503; CHECK: declare void @funlockfile(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 504declare void @funlockfile(%opaque*) 505 506; CHECK: declare noundef i64 @fwrite(i8* nocapture noundef, i64 noundef, i64 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 507declare i64 @fwrite(i8*, i64, i64, %opaque*) 508 509; CHECK: declare noundef i32 @getc(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 510declare i32 @getc(%opaque*) 511 512; CHECK: declare noundef i32 @getc_unlocked(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 513declare i32 @getc_unlocked(%opaque*) 514 515; CHECK: declare noundef i32 @getchar() [[NOFREE_NOUNWIND]] 516declare i32 @getchar() 517 518; CHECK-KNOWN: declare noundef i32 @getchar_unlocked() [[NOFREE_NOUNWIND]] 519; CHECK-UNKNOWN: declare i32 @getchar_unlocked() 520; CHECK-UNKNOWN-NOT: #{{.*}} 521declare i32 @getchar_unlocked() 522 523; CHECK: declare noundef i8* @getenv(i8* nocapture noundef) [[NOFREE_NOUNWIND_READONLY]] 524declare i8* @getenv(i8*) 525 526; CHECK: declare noundef i32 @getitimer(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 527declare i32 @getitimer(i32, %opaque*) 528 529; CHECK: declare noundef i32 @getlogin_r(i8* nocapture noundef, i64 noundef) [[NOFREE_NOUNWIND]] 530declare i32 @getlogin_r(i8*, i64) 531 532; CHECK: declare noundef %opaque* @getpwnam(i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]] 533declare %opaque* @getpwnam(i8*) 534 535; CHECK: declare noundef i8* @gets(i8* noundef) [[NOFREE_NOUNWIND]] 536declare i8* @gets(i8*) 537 538; CHECK: declare noundef i32 @gettimeofday(%opaque* nocapture noundef, i8* nocapture noundef) [[NOFREE_NOUNWIND]] 539declare i32 @gettimeofday(%opaque*, i8*) 540 541; CHECK: declare i32 @isascii(i32) [[NOFREE_NOUNWIND_WILLRETURN]] 542declare i32 @isascii(i32) 543 544; CHECK: declare i32 @isdigit(i32) [[NOFREE_NOUNWIND_WILLRETURN]] 545declare i32 @isdigit(i32) 546 547; CHECK: declare i64 @labs(i64) [[NOFREE_NOUNWIND_WILLRETURN]] 548declare i64 @labs(i64) 549 550; CHECK: declare noundef i32 @lchown(i8* nocapture noundef readonly, i32 noundef, i32 noundef) [[NOFREE_NOUNWIND]] 551declare i32 @lchown(i8*, i32, i32) 552 553; CHECK: declare double @ldexp(double, i32 signext) [[NOFREE_WILLRETURN:#[0-9]+]] 554declare double @ldexp(double, i32) 555 556; CHECK: declare float @ldexpf(float, i32 signext) [[NOFREE_WILLRETURN]] 557declare float @ldexpf(float, i32) 558 559; CHECK: declare x86_fp80 @ldexpl(x86_fp80, i32 signext) [[NOFREE_WILLRETURN]] 560declare x86_fp80 @ldexpl(x86_fp80, i32) 561 562; CHECK: declare i64 @llabs(i64) [[NOFREE_NOUNWIND_WILLRETURN]] 563declare i64 @llabs(i64) 564 565; CHECK: declare double @log(double) [[NOFREE_NOUNWIND_WILLRETURN]] 566declare double @log(double) 567 568; CHECK: declare double @log10(double) [[NOFREE_NOUNWIND_WILLRETURN]] 569declare double @log10(double) 570 571; CHECK: declare float @log10f(float) [[NOFREE_NOUNWIND_WILLRETURN]] 572declare float @log10f(float) 573 574; CHECK: declare x86_fp80 @log10l(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]] 575declare x86_fp80 @log10l(x86_fp80) 576 577; CHECK: declare double @log1p(double) [[NOFREE_NOUNWIND_WILLRETURN]] 578declare double @log1p(double) 579 580; CHECK: declare float @log1pf(float) [[NOFREE_NOUNWIND_WILLRETURN]] 581declare float @log1pf(float) 582 583; CHECK: declare x86_fp80 @log1pl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]] 584declare x86_fp80 @log1pl(x86_fp80) 585 586; CHECK: declare double @log2(double) [[NOFREE_NOUNWIND_WILLRETURN]] 587declare double @log2(double) 588 589; CHECK: declare float @log2f(float) [[NOFREE_NOUNWIND_WILLRETURN]] 590declare float @log2f(float) 591 592; CHECK: declare x86_fp80 @log2l(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]] 593declare x86_fp80 @log2l(x86_fp80) 594 595; CHECK: declare double @logb(double) [[NOFREE_NOUNWIND_WILLRETURN]] 596declare double @logb(double) 597 598; CHECK: declare float @logbf(float) [[NOFREE_NOUNWIND_WILLRETURN]] 599declare float @logbf(float) 600 601; CHECK: declare x86_fp80 @logbl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]] 602declare x86_fp80 @logbl(x86_fp80) 603 604; CHECK: declare float @logf(float) [[NOFREE_NOUNWIND_WILLRETURN]] 605declare float @logf(float) 606 607; CHECK: declare x86_fp80 @logl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]] 608declare x86_fp80 @logl(x86_fp80) 609 610; CHECK: declare noundef i32 @lstat(i8* nocapture noundef readonly, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 611declare i32 @lstat(i8*, %opaque*) 612 613; CHECK-LINUX: declare noundef i32 @lstat64(i8* nocapture noundef readonly, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 614declare i32 @lstat64(i8*, %opaque*) 615 616; CHECK: declare noalias noundef i8* @malloc(i64 noundef) [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN:#[0-9]+]] 617declare i8* @malloc(i64) 618 619; CHECK-LINUX: declare noalias noundef i8* @memalign(i64, i64) [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN]] 620declare i8* @memalign(i64, i64) 621 622; CHECK: declare i8* @memccpy(i8* noalias writeonly, i8* noalias nocapture readonly, i32, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN]] 623declare i8* @memccpy(i8*, i8*, i32, i64) 624 625; CHECK-LINUX: declare i8* @memchr(i8*, i32, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY]] 626; CHECK-DARWIN: declare i8* @memchr(i8*, i32, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY:#[0-9]+]] 627; CHECK-UNKNOWN: declare i8* @memchr(i8*, i32, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY:#[0-9]+]] 628declare i8* @memchr(i8*, i32, i64) 629 630; CHECK: declare i32 @memcmp(i8* nocapture, i8* nocapture, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY]] 631declare i32 @memcmp(i8*, i8*, i64) 632 633; CHECK: declare i8* @memcpy(i8* noalias returned writeonly, i8* noalias nocapture readonly, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN]] 634declare i8* @memcpy(i8*, i8*, i64) 635 636; CHECK: declare i8* @__memcpy_chk(i8*, i8*, i64, i64) [[NOFREE_NOUNWIND]] 637declare i8* @__memcpy_chk(i8*, i8*, i64, i64) 638 639; CHECK: declare i8* @mempcpy(i8* noalias writeonly, i8* noalias nocapture readonly, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN]] 640declare i8* @mempcpy(i8*, i8*, i64) 641 642; CHECK: declare i8* @memmove(i8* returned writeonly, i8* nocapture readonly, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN]] 643declare i8* @memmove(i8*, i8*, i64) 644 645; CHECK: declare i8* @memset(i8* writeonly, i32, i64) [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN:#[0-9]+]] 646declare i8* @memset(i8*, i32, i64) 647 648; CHECK: declare noundef i32 @mkdir(i8* nocapture noundef readonly, i16 noundef zeroext) [[NOFREE_NOUNWIND]] 649declare i32 @mkdir(i8*, i16 zeroext) 650 651; CHECK: declare noundef i64 @mktime(%opaque* nocapture noundef) [[NOFREE_NOUNWIND_WILLRETURN]] 652declare i64 @mktime(%opaque*) 653 654; CHECK: declare double @modf(double, double* nocapture) [[NOFREE_NOUNWIND_WILLRETURN]] 655declare double @modf(double, double*) 656 657; CHECK: declare float @modff(float, float* nocapture) [[NOFREE_NOUNWIND_WILLRETURN]] 658declare float @modff(float, float*) 659 660; CHECK: declare x86_fp80 @modfl(x86_fp80, x86_fp80* nocapture) [[NOFREE_NOUNWIND_WILLRETURN]] 661declare x86_fp80 @modfl(x86_fp80, x86_fp80*) 662 663; CHECK: declare double @nearbyint(double) [[NOFREE_NOUNWIND_WILLRETURN]] 664declare double @nearbyint(double) 665 666; CHECK: declare float @nearbyintf(float) [[NOFREE_NOUNWIND_WILLRETURN]] 667declare float @nearbyintf(float) 668 669; CHECK: declare x86_fp80 @nearbyintl(x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]] 670declare x86_fp80 @nearbyintl(x86_fp80) 671 672; CHECK: declare noundef i32 @open(i8* nocapture noundef readonly, i32 noundef, ...) [[NOFREE:#[0-9]+]] 673declare i32 @open(i8*, i32, ...) 674 675; CHECK-LINUX: declare noundef i32 @open64(i8* nocapture noundef readonly, i32 noundef, ...) [[NOFREE]] 676declare i32 @open64(i8*, i32, ...) 677 678; CHECK: declare noalias noundef %opaque* @opendir(i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]] 679declare %opaque* @opendir(i8*) 680 681; CHECK: declare noundef i32 @pclose(%opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 682declare i32 @pclose(%opaque*) 683 684; CHECK: declare void @perror(i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]] 685declare void @perror(i8*) 686 687; CHECK: declare noalias noundef %opaque* @popen(i8* nocapture noundef readonly, i8* nocapture noundef readonly) [[NOFREE_NOUNWIND]] 688declare %opaque* @popen(i8*, i8*) 689 690; CHECK: declare i32 @posix_memalign(i8**, i64, i64) [[NOFREE]] 691declare i32 @posix_memalign(i8**, i64, i64) 692 693; CHECK: declare double @pow(double, double) [[NOFREE_NOUNWIND_WILLRETURN]] 694declare double @pow(double, double) 695 696; CHECK: declare float @powf(float, float) [[NOFREE_NOUNWIND_WILLRETURN]] 697declare float @powf(float, float) 698 699; CHECK: declare x86_fp80 @powl(x86_fp80, x86_fp80) [[NOFREE_NOUNWIND_WILLRETURN]] 700declare x86_fp80 @powl(x86_fp80, x86_fp80) 701 702; CHECK: declare noundef i64 @pread(i32 noundef, i8* nocapture noundef, i64 noundef, i64 noundef) [[NOFREE]] 703declare i64 @pread(i32, i8*, i64, i64) 704 705; CHECK: declare noundef i32 @printf(i8* nocapture noundef readonly, ...) [[NOFREE_NOUNWIND]] 706declare i32 @printf(i8*, ...) 707 708; CHECK: declare noundef i32 @putc(i32 noundef, %opaque* nocapture noundef) [[NOFREE_NOUNWIND]] 709declare i32 @putc(i32, %opaque*) 710 711; CHECK: declare noundef i32 @putchar(i32 noundef) [[NOFREE_NOUNWIND]] 712declare i32 @putchar(i32) 713 714; CHECK-KNOWN: declare noundef i32 @putchar_unlocked(i32 noundef) [[NOFREE_NOUNWIND]] 715; CHECK-UNKNOWN: declare i32 @putchar_unlocked(i32) 716; CHECK-UNKNOWN-NOT: #{{.*}} 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_pattern16 isn't available everywhere. 1015; CHECK-DARWIN: declare void @memset_pattern16(i8* nocapture writeonly, i8* nocapture readonly, i64) [[ARGMEMONLY_NOFREE:#[0-9]+]] 1016declare void @memset_pattern16(i8*, i8*, i64) 1017 1018 1019; CHECK-DAG: attributes [[NOFREE_NOUNWIND_WILLRETURN]] = { nofree nounwind willreturn mustprogress } 1020; CHECK-DAG: attributes [[NOFREE_NOUNWIND]] = { nofree nounwind } 1021; CHECK-DAG: attributes [[INACCESSIBLEMEMONLY_NOFREE_NOUNWIND_WILLRETURN]] = { inaccessiblememonly nofree nounwind willreturn mustprogress } 1022; CHECK-DAG: attributes [[NOFREE_NOUNWIND_READONLY_WILLRETURN]] = { nofree nounwind readonly willreturn mustprogress } 1023; CHECK-DAG: attributes [[ARGMEMONLY_NOFREE_NOUNWIND_WILLRETURN]] = { argmemonly nofree nounwind willreturn mustprogress } 1024; CHECK-DAG: attributes [[NOFREE_NOUNWIND_READONLY]] = { nofree nounwind readonly } 1025; CHECK-DAG: attributes [[INACCESSIBLEMEMORARGMEMONLY_NOUNWIND_WILLRETURN]] = { inaccessiblemem_or_argmemonly nounwind willreturn mustprogress } 1026; CHECK-DAG: attributes [[NOFREE_WILLRETURN]] = { nofree willreturn mustprogress } 1027; CHECK-DAG: attributes [[ARGMEMONLY_NOFREE_NOUNWIND_READONLY_WILLRETURN]] = { argmemonly nofree nounwind readonly willreturn mustprogress } 1028; CHECK-DAG: attributes [[NOFREE]] = { nofree } 1029; CHECK-DAG: attributes [[WILLRETURN]] = { willreturn mustprogress } 1030; CHECK-DAG: attributes [[INACCESSIBLEMEMORARGONLY_NOFREE_NOUNWIND_WILLRETURN]] = { inaccessiblemem_or_argmemonly nofree nounwind willreturn mustprogress } 1031 1032; CHECK-DARWIN-DAG: attributes [[ARGMEMONLY_NOFREE]] = { argmemonly nofree } 1033; CHECK-NVPTX-DAG: attributes [[NOFREE_NOUNWIND_READNONE]] = { nofree nosync nounwind readnone } 1034