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