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