1; RUN: opt < %s -mtriple=x86_64-unknown-linux -inferattrs -S | FileCheck %s 2; RUN: opt < %s -mtriple=x86_64-apple-macosx10.8.0 -inferattrs -S | FileCheck %s 3 4; Check that we don't modify libc functions with invalid prototypes. 5 6; CHECK: declare void @__cospi(...) 7declare void @__cospi(...) 8 9; CHECK: declare void @__cospif(...) 10declare void @__cospif(...) 11 12; CHECK: declare void @__sinpi(...) 13declare void @__sinpi(...) 14 15; CHECK: declare void @__sinpif(...) 16declare void @__sinpif(...) 17 18; CHECK: declare void @abs(...) 19declare void @abs(...) 20 21; CHECK: declare void @access(...) 22declare void @access(...) 23 24; CHECK: declare void @acos(...) 25declare void @acos(...) 26 27; CHECK: declare void @acosf(...) 28declare void @acosf(...) 29 30; CHECK: declare void @acosh(...) 31declare void @acosh(...) 32 33; CHECK: declare void @acoshf(...) 34declare void @acoshf(...) 35 36; CHECK: declare void @acoshl(...) 37declare void @acoshl(...) 38 39; CHECK: declare void @acosl(...) 40declare void @acosl(...) 41 42; CHECK: declare void @asin(...) 43declare void @asin(...) 44 45; CHECK: declare void @asinf(...) 46declare void @asinf(...) 47 48; CHECK: declare void @asinh(...) 49declare void @asinh(...) 50 51; CHECK: declare void @asinhf(...) 52declare void @asinhf(...) 53 54; CHECK: declare void @asinhl(...) 55declare void @asinhl(...) 56 57; CHECK: declare void @asinl(...) 58declare void @asinl(...) 59 60; CHECK: declare void @atan(...) 61declare void @atan(...) 62 63; CHECK: declare void @atan2(...) 64declare void @atan2(...) 65 66; CHECK: declare void @atan2f(...) 67declare void @atan2f(...) 68 69; CHECK: declare void @atan2l(...) 70declare void @atan2l(...) 71 72; CHECK: declare void @atanf(...) 73declare void @atanf(...) 74 75; CHECK: declare void @atanh(...) 76declare void @atanh(...) 77 78; CHECK: declare void @atanhf(...) 79declare void @atanhf(...) 80 81; CHECK: declare void @atanhl(...) 82declare void @atanhl(...) 83 84; CHECK: declare void @atanl(...) 85declare void @atanl(...) 86 87; CHECK: declare void @atof(...) 88declare void @atof(...) 89 90; CHECK: declare void @atoi(...) 91declare void @atoi(...) 92 93; CHECK: declare void @atol(...) 94declare void @atol(...) 95 96; CHECK: declare void @atoll(...) 97declare void @atoll(...) 98 99; CHECK: declare void @bcmp(...) 100declare void @bcmp(...) 101 102; CHECK: declare void @bcopy(...) 103declare void @bcopy(...) 104 105; CHECK: declare void @bzero(...) 106declare void @bzero(...) 107 108; CHECK: declare void @calloc(...) 109declare void @calloc(...) 110 111; CHECK: declare void @cbrt(...) 112declare void @cbrt(...) 113 114; CHECK: declare void @cbrtf(...) 115declare void @cbrtf(...) 116 117; CHECK: declare void @cbrtl(...) 118declare void @cbrtl(...) 119 120; CHECK: declare void @ceil(...) 121declare void @ceil(...) 122 123; CHECK: declare void @ceilf(...) 124declare void @ceilf(...) 125 126; CHECK: declare void @ceill(...) 127declare void @ceill(...) 128 129; CHECK: declare void @chmod(...) 130declare void @chmod(...) 131 132; CHECK: declare void @chown(...) 133declare void @chown(...) 134 135; CHECK: declare void @clearerr(...) 136declare void @clearerr(...) 137 138; CHECK: declare void @closedir(...) 139declare void @closedir(...) 140 141; CHECK: declare void @copysign(...) 142declare void @copysign(...) 143 144; CHECK: declare void @copysignf(...) 145declare void @copysignf(...) 146 147; CHECK: declare void @copysignl(...) 148declare void @copysignl(...) 149 150; CHECK: declare void @cos(...) 151declare void @cos(...) 152 153; CHECK: declare void @cosf(...) 154declare void @cosf(...) 155 156; CHECK: declare void @cosh(...) 157declare void @cosh(...) 158 159; CHECK: declare void @coshf(...) 160declare void @coshf(...) 161 162; CHECK: declare void @coshl(...) 163declare void @coshl(...) 164 165; CHECK: declare void @cosl(...) 166declare void @cosl(...) 167 168; CHECK: declare void @ctermid(...) 169declare void @ctermid(...) 170 171; CHECK: declare void @exp(...) 172declare void @exp(...) 173 174; CHECK: declare void @exp2(...) 175declare void @exp2(...) 176 177; CHECK: declare void @exp2f(...) 178declare void @exp2f(...) 179 180; CHECK: declare void @exp2l(...) 181declare void @exp2l(...) 182 183; CHECK: declare void @expf(...) 184declare void @expf(...) 185 186; CHECK: declare void @expl(...) 187declare void @expl(...) 188 189; CHECK: declare void @expm1(...) 190declare void @expm1(...) 191 192; CHECK: declare void @expm1f(...) 193declare void @expm1f(...) 194 195; CHECK: declare void @expm1l(...) 196declare void @expm1l(...) 197 198; CHECK: declare void @fabs(...) 199declare void @fabs(...) 200 201; CHECK: declare void @fabsf(...) 202declare void @fabsf(...) 203 204; CHECK: declare void @fabsl(...) 205declare void @fabsl(...) 206 207; CHECK: declare void @fclose(...) 208declare void @fclose(...) 209 210; CHECK: declare void @fdopen(...) 211declare void @fdopen(...) 212 213; CHECK: declare void @feof(...) 214declare void @feof(...) 215 216; CHECK: declare void @ferror(...) 217declare void @ferror(...) 218 219; CHECK: declare void @fflush(...) 220declare void @fflush(...) 221 222; CHECK: declare void @ffs(...) 223declare void @ffs(...) 224 225; CHECK: declare void @ffsl(...) 226declare void @ffsl(...) 227 228; CHECK: declare void @ffsll(...) 229declare void @ffsll(...) 230 231; CHECK: declare void @fgetc(...) 232declare void @fgetc(...) 233 234; CHECK: declare void @fgetpos(...) 235declare void @fgetpos(...) 236 237; CHECK: declare void @fgets(...) 238declare void @fgets(...) 239 240; CHECK: declare void @fileno(...) 241declare void @fileno(...) 242 243; CHECK: declare void @flockfile(...) 244declare void @flockfile(...) 245 246; CHECK: declare void @floor(...) 247declare void @floor(...) 248 249; CHECK: declare void @floorf(...) 250declare void @floorf(...) 251 252; CHECK: declare void @floorl(...) 253declare void @floorl(...) 254 255; CHECK: declare void @fls(...) 256declare void @fls(...) 257 258; CHECK: declare void @flsl(...) 259declare void @flsl(...) 260 261; CHECK: declare void @flsll(...) 262declare void @flsll(...) 263 264; CHECK: declare void @fmax(...) 265declare void @fmax(...) 266 267; CHECK: declare void @fmaxf(...) 268declare void @fmaxf(...) 269 270; CHECK: declare void @fmaxl(...) 271declare void @fmaxl(...) 272 273; CHECK: declare void @fmin(...) 274declare void @fmin(...) 275 276; CHECK: declare void @fminf(...) 277declare void @fminf(...) 278 279; CHECK: declare void @fminl(...) 280declare void @fminl(...) 281 282; CHECK: declare void @fmod(...) 283declare void @fmod(...) 284 285; CHECK: declare void @fmodf(...) 286declare void @fmodf(...) 287 288; CHECK: declare void @fmodl(...) 289declare void @fmodl(...) 290 291; CHECK: declare void @fopen(...) 292declare void @fopen(...) 293 294; CHECK: declare void @fprintf(...) 295declare void @fprintf(...) 296 297; CHECK: declare void @fputc(...) 298declare void @fputc(...) 299 300; CHECK: declare void @fputs(...) 301declare void @fputs(...) 302 303; CHECK: declare void @fread(...) 304declare void @fread(...) 305 306; CHECK: declare void @free(...) 307declare void @free(...) 308 309; CHECK: declare void @frexp(...) 310declare void @frexp(...) 311 312; CHECK: declare void @frexpf(...) 313declare void @frexpf(...) 314 315; CHECK: declare void @frexpl(...) 316declare void @frexpl(...) 317 318; CHECK: declare void @fscanf(...) 319declare void @fscanf(...) 320 321; CHECK: declare void @fseek(...) 322declare void @fseek(...) 323 324; CHECK: declare void @fseeko(...) 325declare void @fseeko(...) 326 327; CHECK: declare void @fseeko64(...) 328declare void @fseeko64(...) 329 330; CHECK: declare void @fsetpos(...) 331declare void @fsetpos(...) 332 333; CHECK: declare void @fstat(...) 334declare void @fstat(...) 335 336; CHECK: declare void @fstat64(...) 337declare void @fstat64(...) 338 339; CHECK: declare void @fstatvfs(...) 340declare void @fstatvfs(...) 341 342; CHECK: declare void @fstatvfs64(...) 343declare void @fstatvfs64(...) 344 345; CHECK: declare void @ftell(...) 346declare void @ftell(...) 347 348; CHECK: declare void @ftello(...) 349declare void @ftello(...) 350 351; CHECK: declare void @ftello64(...) 352declare void @ftello64(...) 353 354; CHECK: declare void @ftrylockfile(...) 355declare void @ftrylockfile(...) 356 357; CHECK: declare void @funlockfile(...) 358declare void @funlockfile(...) 359 360; CHECK: declare void @fwrite(...) 361declare void @fwrite(...) 362 363; CHECK: declare void @getc(...) 364declare void @getc(...) 365 366; CHECK: declare void @getc_unlocked(...) 367declare void @getc_unlocked(...) 368 369; CHECK: declare void @getchar(...) 370declare void @getchar(...) 371 372; CHECK: declare void @getenv(...) 373declare void @getenv(...) 374 375; CHECK: declare void @getitimer(...) 376declare void @getitimer(...) 377 378; CHECK: declare void @getlogin_r(...) 379declare void @getlogin_r(...) 380 381; CHECK: declare void @getpwnam(...) 382declare void @getpwnam(...) 383 384; CHECK: declare void @gets(...) 385declare void @gets(...) 386 387; CHECK: declare void @gettimeofday(...) 388declare void @gettimeofday(...) 389 390; CHECK: declare void @isascii(...) 391declare void @isascii(...) 392 393; CHECK: declare void @isdigit(...) 394declare void @isdigit(...) 395 396; CHECK: declare void @labs(...) 397declare void @labs(...) 398 399; CHECK: declare void @lchown(...) 400declare void @lchown(...) 401 402; CHECK: declare void @ldexp(...) 403declare void @ldexp(...) 404 405; CHECK: declare void @ldexpf(...) 406declare void @ldexpf(...) 407 408; CHECK: declare void @ldexpl(...) 409declare void @ldexpl(...) 410 411; CHECK: declare void @llabs(...) 412declare void @llabs(...) 413 414; CHECK: declare void @log(...) 415declare void @log(...) 416 417; CHECK: declare void @log10(...) 418declare void @log10(...) 419 420; CHECK: declare void @log10f(...) 421declare void @log10f(...) 422 423; CHECK: declare void @log10l(...) 424declare void @log10l(...) 425 426; CHECK: declare void @log1p(...) 427declare void @log1p(...) 428 429; CHECK: declare void @log1pf(...) 430declare void @log1pf(...) 431 432; CHECK: declare void @log1pl(...) 433declare void @log1pl(...) 434 435; CHECK: declare void @log2(...) 436declare void @log2(...) 437 438; CHECK: declare void @log2f(...) 439declare void @log2f(...) 440 441; CHECK: declare void @log2l(...) 442declare void @log2l(...) 443 444; CHECK: declare void @logb(...) 445declare void @logb(...) 446 447; CHECK: declare void @logbf(...) 448declare void @logbf(...) 449 450; CHECK: declare void @logbl(...) 451declare void @logbl(...) 452 453; CHECK: declare void @logf(...) 454declare void @logf(...) 455 456; CHECK: declare void @logl(...) 457declare void @logl(...) 458 459; CHECK: declare void @lstat(...) 460declare void @lstat(...) 461 462; CHECK: declare void @lstat64(...) 463declare void @lstat64(...) 464 465; CHECK: declare void @malloc(...) 466declare void @malloc(...) 467 468; CHECK: declare void @memalign(...) 469declare void @memalign(...) 470 471; CHECK: declare void @memccpy(...) 472declare void @memccpy(...) 473 474; CHECK: declare void @memchr(...) 475declare void @memchr(...) 476 477; CHECK: declare void @memcmp(...) 478declare void @memcmp(...) 479 480; CHECK: declare void @memcpy(...) 481declare void @memcpy(...) 482 483; CHECK: declare void @memmove(...) 484declare void @memmove(...) 485 486; CHECK: declare void @memset(...) 487declare void @memset(...) 488 489; CHECK: declare void @memset_pattern16(...) 490declare void @memset_pattern16(...) 491 492; CHECK: declare void @mkdir(...) 493declare void @mkdir(...) 494 495; CHECK: declare void @mktime(...) 496declare void @mktime(...) 497 498; CHECK: declare void @modf(...) 499declare void @modf(...) 500 501; CHECK: declare void @modff(...) 502declare void @modff(...) 503 504; CHECK: declare void @modfl(...) 505declare void @modfl(...) 506 507; CHECK: declare void @nearbyint(...) 508declare void @nearbyint(...) 509 510; CHECK: declare void @nearbyintf(...) 511declare void @nearbyintf(...) 512 513; CHECK: declare void @nearbyintl(...) 514declare void @nearbyintl(...) 515 516; CHECK: declare void @open(...) 517declare void @open(...) 518 519; CHECK: declare void @open64(...) 520declare void @open64(...) 521 522; CHECK: declare void @opendir(...) 523declare void @opendir(...) 524 525; CHECK: declare void @pclose(...) 526declare void @pclose(...) 527 528; CHECK: declare void @perror(...) 529declare void @perror(...) 530 531; CHECK: declare void @popen(...) 532declare void @popen(...) 533 534; CHECK: declare void @posix_memalign(...) 535declare void @posix_memalign(...) 536 537; CHECK: declare void @pow(...) 538declare void @pow(...) 539 540; CHECK: declare void @powf(...) 541declare void @powf(...) 542 543; CHECK: declare void @powl(...) 544declare void @powl(...) 545 546; CHECK: declare void @pread(...) 547declare void @pread(...) 548 549; CHECK: declare void @printf(...) 550declare void @printf(...) 551 552; CHECK: declare void @putc(...) 553declare void @putc(...) 554 555; CHECK: declare void @putchar(...) 556declare void @putchar(...) 557 558; CHECK: declare void @puts(...) 559declare void @puts(...) 560 561; CHECK: declare void @pwrite(...) 562declare void @pwrite(...) 563 564; CHECK: declare void @qsort(...) 565declare void @qsort(...) 566 567; CHECK: declare void @read(...) 568declare void @read(...) 569 570; CHECK: declare void @readlink(...) 571declare void @readlink(...) 572 573; CHECK: declare void @realloc(...) 574declare void @realloc(...) 575 576; CHECK: declare void @reallocf(...) 577declare void @reallocf(...) 578 579; CHECK: declare void @realpath(...) 580declare void @realpath(...) 581 582; CHECK: declare void @remove(...) 583declare void @remove(...) 584 585; CHECK: declare void @rename(...) 586declare void @rename(...) 587 588; CHECK: declare void @rewind(...) 589declare void @rewind(...) 590 591; CHECK: declare void @rint(...) 592declare void @rint(...) 593 594; CHECK: declare void @rintf(...) 595declare void @rintf(...) 596 597; CHECK: declare void @rintl(...) 598declare void @rintl(...) 599 600; CHECK: declare void @rmdir(...) 601declare void @rmdir(...) 602 603; CHECK: declare void @round(...) 604declare void @round(...) 605 606; CHECK: declare void @roundf(...) 607declare void @roundf(...) 608 609; CHECK: declare void @roundl(...) 610declare void @roundl(...) 611 612; CHECK: declare void @scanf(...) 613declare void @scanf(...) 614 615; CHECK: declare void @setbuf(...) 616declare void @setbuf(...) 617 618; CHECK: declare void @setitimer(...) 619declare void @setitimer(...) 620 621; CHECK: declare void @setvbuf(...) 622declare void @setvbuf(...) 623 624; CHECK: declare void @sin(...) 625declare void @sin(...) 626 627; CHECK: declare void @sinf(...) 628declare void @sinf(...) 629 630; CHECK: declare void @sinh(...) 631declare void @sinh(...) 632 633; CHECK: declare void @sinhf(...) 634declare void @sinhf(...) 635 636; CHECK: declare void @sinhl(...) 637declare void @sinhl(...) 638 639; CHECK: declare void @sinl(...) 640declare void @sinl(...) 641 642; CHECK: declare void @snprintf(...) 643declare void @snprintf(...) 644 645; CHECK: declare void @sprintf(...) 646declare void @sprintf(...) 647 648; CHECK: declare void @sqrt(...) 649declare void @sqrt(...) 650 651; CHECK: declare void @sqrtf(...) 652declare void @sqrtf(...) 653 654; CHECK: declare void @sqrtl(...) 655declare void @sqrtl(...) 656 657; CHECK: declare void @sscanf(...) 658declare void @sscanf(...) 659 660; CHECK: declare void @stat(...) 661declare void @stat(...) 662 663; CHECK: declare void @stat64(...) 664declare void @stat64(...) 665 666; CHECK: declare void @statvfs(...) 667declare void @statvfs(...) 668 669; CHECK: declare void @statvfs64(...) 670declare void @statvfs64(...) 671 672; CHECK: declare void @stpcpy(...) 673declare void @stpcpy(...) 674 675; CHECK: declare void @stpncpy(...) 676declare void @stpncpy(...) 677 678; CHECK: declare void @strcasecmp(...) 679declare void @strcasecmp(...) 680 681; CHECK: declare void @strcat(...) 682declare void @strcat(...) 683 684; CHECK: declare void @strchr(...) 685declare void @strchr(...) 686 687; CHECK: declare void @strcmp(...) 688declare void @strcmp(...) 689 690; CHECK: declare void @strcoll(...) 691declare void @strcoll(...) 692 693; CHECK: declare void @strcpy(...) 694declare void @strcpy(...) 695 696; CHECK: declare void @strcspn(...) 697declare void @strcspn(...) 698 699; CHECK: declare void @strdup(...) 700declare void @strdup(...) 701 702; CHECK: declare void @strlen(...) 703declare void @strlen(...) 704 705; CHECK: declare void @strncasecmp(...) 706declare void @strncasecmp(...) 707 708; CHECK: declare void @strncat(...) 709declare void @strncat(...) 710 711; CHECK: declare void @strncmp(...) 712declare void @strncmp(...) 713 714; CHECK: declare void @strncpy(...) 715declare void @strncpy(...) 716 717; CHECK: declare void @strndup(...) 718declare void @strndup(...) 719 720; CHECK: declare void @strnlen(...) 721declare void @strnlen(...) 722 723; CHECK: declare void @strpbrk(...) 724declare void @strpbrk(...) 725 726; CHECK: declare void @strrchr(...) 727declare void @strrchr(...) 728 729; CHECK: declare void @strspn(...) 730declare void @strspn(...) 731 732; CHECK: declare void @strstr(...) 733declare void @strstr(...) 734 735; CHECK: declare void @strtod(...) 736declare void @strtod(...) 737 738; CHECK: declare void @strtof(...) 739declare void @strtof(...) 740 741; CHECK: declare void @strtok(...) 742declare void @strtok(...) 743 744; CHECK: declare void @strtok_r(...) 745declare void @strtok_r(...) 746 747; CHECK: declare void @strtol(...) 748declare void @strtol(...) 749 750; CHECK: declare void @strtold(...) 751declare void @strtold(...) 752 753; CHECK: declare void @strtoll(...) 754declare void @strtoll(...) 755 756; CHECK: declare void @strtoul(...) 757declare void @strtoul(...) 758 759; CHECK: declare void @strtoull(...) 760declare void @strtoull(...) 761 762; CHECK: declare void @strxfrm(...) 763declare void @strxfrm(...) 764 765; CHECK: declare void @system(...) 766declare void @system(...) 767 768; CHECK: declare void @tan(...) 769declare void @tan(...) 770 771; CHECK: declare void @tanf(...) 772declare void @tanf(...) 773 774; CHECK: declare void @tanh(...) 775declare void @tanh(...) 776 777; CHECK: declare void @tanhf(...) 778declare void @tanhf(...) 779 780; CHECK: declare void @tanhl(...) 781declare void @tanhl(...) 782 783; CHECK: declare void @tanl(...) 784declare void @tanl(...) 785 786; CHECK: declare void @times(...) 787declare void @times(...) 788 789; CHECK: declare void @tmpfile(...) 790declare void @tmpfile(...) 791 792; CHECK: declare void @tmpfile64(...) 793declare void @tmpfile64(...) 794 795; CHECK: declare void @toascii(...) 796declare void @toascii(...) 797 798; CHECK: declare void @trunc(...) 799declare void @trunc(...) 800 801; CHECK: declare void @truncf(...) 802declare void @truncf(...) 803 804; CHECK: declare void @truncl(...) 805declare void @truncl(...) 806 807; CHECK: declare void @uname(...) 808declare void @uname(...) 809 810; CHECK: declare void @ungetc(...) 811declare void @ungetc(...) 812 813; CHECK: declare void @unlink(...) 814declare void @unlink(...) 815 816; CHECK: declare void @unsetenv(...) 817declare void @unsetenv(...) 818 819; CHECK: declare void @utime(...) 820declare void @utime(...) 821 822; CHECK: declare void @utimes(...) 823declare void @utimes(...) 824 825; CHECK: declare void @valloc(...) 826declare void @valloc(...) 827 828; CHECK: declare void @vfprintf(...) 829declare void @vfprintf(...) 830 831; CHECK: declare void @vfscanf(...) 832declare void @vfscanf(...) 833 834; CHECK: declare void @vprintf(...) 835declare void @vprintf(...) 836 837; CHECK: declare void @vscanf(...) 838declare void @vscanf(...) 839 840; CHECK: declare void @vsnprintf(...) 841declare void @vsnprintf(...) 842 843; CHECK: declare void @vsprintf(...) 844declare void @vsprintf(...) 845 846; CHECK: declare void @vsscanf(...) 847declare void @vsscanf(...) 848 849; CHECK: declare void @write(...) 850declare void @write(...) 851