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