TargetLibraryInfo.h revision 72c8331ec1437f8c33fff1dac1ea0ebb11009411
1ce99120084f549a523213064648662a704e8b789Chris Lattner//===-- llvm/Target/TargetLibraryInfo.h - Library information ---*- C++ -*-===// 2ce99120084f549a523213064648662a704e8b789Chris Lattner// 3ce99120084f549a523213064648662a704e8b789Chris Lattner// The LLVM Compiler Infrastructure 4ce99120084f549a523213064648662a704e8b789Chris Lattner// 5ce99120084f549a523213064648662a704e8b789Chris Lattner// This file is distributed under the University of Illinois Open Source 6ce99120084f549a523213064648662a704e8b789Chris Lattner// License. See LICENSE.TXT for details. 7ce99120084f549a523213064648662a704e8b789Chris Lattner// 8ce99120084f549a523213064648662a704e8b789Chris Lattner//===----------------------------------------------------------------------===// 9ce99120084f549a523213064648662a704e8b789Chris Lattner 10ce99120084f549a523213064648662a704e8b789Chris Lattner#ifndef LLVM_TARGET_TARGETLIBRARYINFO_H 11ce99120084f549a523213064648662a704e8b789Chris Lattner#define LLVM_TARGET_TARGETLIBRARYINFO_H 12ce99120084f549a523213064648662a704e8b789Chris Lattner 139d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman#include "llvm/ADT/DenseMap.h" 14255f89faee13dc491cb64fbeae3c763e7e2ea4e6Chandler Carruth#include "llvm/Pass.h" 15ce99120084f549a523213064648662a704e8b789Chris Lattner 16ce99120084f549a523213064648662a704e8b789Chris Lattnernamespace llvm { 17ce99120084f549a523213064648662a704e8b789Chris Lattner class Triple; 18ce99120084f549a523213064648662a704e8b789Chris Lattner 19ce99120084f549a523213064648662a704e8b789Chris Lattner namespace LibFunc { 20ce99120084f549a523213064648662a704e8b789Chris Lattner enum Func { 21cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int _IO_getc(_IO_FILE * __fp); 22cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge under_IO_getc, 23cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int _IO_putc(int __c, _IO_FILE * __fp); 24cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge under_IO_putc, 258e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void operator delete[](void*); 268e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer ZdaPv, 2772c8331ec1437f8c33fff1dac1ea0ebb11009411Richard Smith /// void operator delete[](void*, nothrow); 2872c8331ec1437f8c33fff1dac1ea0ebb11009411Richard Smith ZdaPvRKSt9nothrow_t, 298e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void operator delete(void*); 308e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer ZdlPv, 3172c8331ec1437f8c33fff1dac1ea0ebb11009411Richard Smith /// void operator delete(void*, nothrow); 3272c8331ec1437f8c33fff1dac1ea0ebb11009411Richard Smith ZdlPvRKSt9nothrow_t, 338e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *new[](unsigned int); 348e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer Znaj, 358e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *new[](unsigned int, nothrow); 368e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer ZnajRKSt9nothrow_t, 378e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *new[](unsigned long); 388e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer Znam, 398e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *new[](unsigned long, nothrow); 408e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer ZnamRKSt9nothrow_t, 418e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *new(unsigned int); 428e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer Znwj, 438e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *new(unsigned int, nothrow); 448e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer ZnwjRKSt9nothrow_t, 458e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *new(unsigned long); 468e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer Znwm, 478e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *new(unsigned long, nothrow); 488e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer ZnwmRKSt9nothrow_t, 49d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// int __cxa_atexit(void (*f)(void *), void *p, void *d); 50d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson cxa_atexit, 51d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// void __cxa_guard_abort(guard_t *guard); 52d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// guard_t is int64_t in Itanium ABI or int32_t on ARM eabi. 53d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson cxa_guard_abort, 54d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// int __cxa_guard_acquire(guard_t *guard); 55d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson cxa_guard_acquire, 56d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// void __cxa_guard_release(guard_t *guard); 57d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson cxa_guard_release, 58cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int __isoc99_scanf (const char *format, ...) 59cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge dunder_isoc99_scanf, 60cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int __isoc99_sscanf(const char *s, const char *format, ...) 61cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge dunder_isoc99_sscanf, 62d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// void *__memcpy_chk(void *s1, const void *s2, size_t n, size_t s1size); 63d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson memcpy_chk, 64b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd /// double __sqrt_finite(double x); 65b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd sqrt_finite, 66b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd /// float __sqrt_finite(float x); 67b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd sqrtf_finite, 68b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd /// long double __sqrt_finite(long double x); 69b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd sqrtl_finite, 70cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// char * __strdup(const char *s); 71cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge dunder_strdup, 72cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// char *__strndup(const char *s, size_t n); 73cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge dunder_strndup, 74cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// char * __strtok_r(char *s, const char *delim, char **save_ptr); 75cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge dunder_strtok_r, 766098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// int abs(int j); 776098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge abs, 78cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int access(const char *path, int amode); 79cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge access, 808ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double acos(double x); 818ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier acos, 828ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float acosf(float x); 838ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier acosf, 846871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// double acosh(double x); 856871d1eceba0455707de29708c36ae3c2778c160Chad Rosier acosh, 866871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// float acoshf(float x); 876871d1eceba0455707de29708c36ae3c2778c160Chad Rosier acoshf, 886871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// long double acoshl(long double x); 896871d1eceba0455707de29708c36ae3c2778c160Chad Rosier acoshl, 90d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double acosl(long double x); 91d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson acosl, 928ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double asin(double x); 938ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier asin, 948ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float asinf(float x); 958ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier asinf, 966871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// double asinh(double x); 976871d1eceba0455707de29708c36ae3c2778c160Chad Rosier asinh, 986871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// float asinhf(float x); 996871d1eceba0455707de29708c36ae3c2778c160Chad Rosier asinhf, 1006871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// long double asinhl(long double x); 1016871d1eceba0455707de29708c36ae3c2778c160Chad Rosier asinhl, 102d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double asinl(long double x); 103d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson asinl, 1048ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double atan(double x); 1058ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier atan, 10632b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// double atan2(double y, double x); 10732b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier atan2, 10832b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// float atan2f(float y, float x); 10932b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier atan2f, 110d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double atan2l(long double y, long double x); 111d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson atan2l, 112d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// float atanf(float x); 113d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson atanf, 1146871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// double atanh(double x); 1156871d1eceba0455707de29708c36ae3c2778c160Chad Rosier atanh, 1166871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// float atanhf(float x); 1176871d1eceba0455707de29708c36ae3c2778c160Chad Rosier atanhf, 1186871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// long double atanhl(long double x); 1196871d1eceba0455707de29708c36ae3c2778c160Chad Rosier atanhl, 120d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double atanl(long double x); 121d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson atanl, 122cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// double atof(const char *str); 123cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge atof, 124cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int atoi(const char *str); 125cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge atoi, 126cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// long atol(const char *str); 127cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge atol, 128cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// long long atoll(const char *nptr); 129cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge atoll, 130cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int bcmp(const void *s1, const void *s2, size_t n); 131cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge bcmp, 132cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void bcopy(const void *s1, void *s2, size_t n); 133cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge bcopy, 134cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void bzero(void *s, size_t n); 135cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge bzero, 1368e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *calloc(size_t count, size_t size); 1378e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer calloc, 1386871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// double cbrt(double x); 1396871d1eceba0455707de29708c36ae3c2778c160Chad Rosier cbrt, 1406871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// float cbrtf(float x); 1416871d1eceba0455707de29708c36ae3c2778c160Chad Rosier cbrtf, 1426871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// long double cbrtl(long double x); 1436871d1eceba0455707de29708c36ae3c2778c160Chad Rosier cbrtl, 1448ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double ceil(double x); 1458ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier ceil, 1468ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float ceilf(float x); 1478ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier ceilf, 148d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double ceill(long double x); 149d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson ceill, 150cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int chmod(const char *path, mode_t mode); 151cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge chmod, 152cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int chown(const char *path, uid_t owner, gid_t group); 153cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge chown, 154cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void clearerr(FILE *stream); 155cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge clearerr, 156cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int closedir(DIR *dirp); 157cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge closedir, 158243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// double copysign(double x, double y); 159243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson copysign, 160243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// float copysignf(float x, float y); 161243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson copysignf, 162243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// long double copysignl(long double x, long double y); 163243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson copysignl, 1648ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double cos(double x); 1658ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier cos, 1668ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float cosf(float x); 1678ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier cosf, 1688ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double cosh(double x); 1698ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier cosh, 1708ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float coshf(float x); 1718ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier coshf, 172d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double coshl(long double x); 173d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson coshl, 174d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double cosl(long double x); 175d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson cosl, 176cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// char *ctermid(char *s); 177cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge ctermid, 1788ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double exp(double x); 1798ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier exp, 1806871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// double exp10(double x); 1816871d1eceba0455707de29708c36ae3c2778c160Chad Rosier exp10, 1826871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// float exp10f(float x); 1836871d1eceba0455707de29708c36ae3c2778c160Chad Rosier exp10f, 1846871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// long double exp10l(long double x); 1856871d1eceba0455707de29708c36ae3c2778c160Chad Rosier exp10l, 1868ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double exp2(double x); 1878ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier exp2, 1888ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float exp2f(float x); 1898ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier exp2f, 190d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double exp2l(long double x); 191d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson exp2l, 192d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// float expf(float x); 193d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson expf, 194d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double expl(long double x); 195d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson expl, 1968ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double expm1(double x); 1978ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier expm1, 1988ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float expm1f(float x); 199d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff expm1f, 200d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double expm1l(long double x); 201d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson expm1l, 2028ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double fabs(double x); 2038ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier fabs, 2048ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float fabsf(float x); 2058ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier fabsf, 206d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double fabsl(long double x); 207d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson fabsl, 208cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fclose(FILE *stream); 209cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fclose, 210cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// FILE *fdopen(int fildes, const char *mode); 211cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fdopen, 212cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int feof(FILE *stream); 213cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge feof, 214cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int ferror(FILE *stream); 215cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge ferror, 216cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fflush(FILE *stream); 217cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fflush, 2186098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// int ffs(int i); 2196098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge ffs, 2206098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// int ffsl(long int i); 2216098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge ffsl, 2226098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// int ffsll(long long int i); 2236098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge ffsll, 224cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fgetc(FILE *stream); 225cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fgetc, 226cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fgetpos(FILE *stream, fpos_t *pos); 227cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fgetpos, 228cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// char *fgets(char *s, int n, FILE *stream); 229cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fgets, 230cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fileno(FILE *stream); 231cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fileno, 232d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// int fiprintf(FILE *stream, const char *format, ...); 233d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson fiprintf, 234cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void flockfile(FILE *file); 235cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge flockfile, 2368ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double floor(double x); 2378ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier floor, 2388ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float floorf(float x); 2398ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier floorf, 240d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double floorl(long double x); 241d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson floorl, 24232b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// double fmod(double x, double y); 24332b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier fmod, 24432b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// float fmodf(float x, float y); 24532b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier fmodf, 246d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double fmodl(long double x, long double y); 247d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson fmodl, 248cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// FILE *fopen(const char *filename, const char *mode); 249cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fopen, 250cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// FILE *fopen64(const char *filename, const char *opentype) 251cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fopen64, 2526098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// int fprintf(FILE *stream, const char *format, ...); 2536098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge fprintf, 2548d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes /// int fputc(int c, FILE *stream); 2558d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes fputc, 256683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier /// int fputs(const char *s, FILE *stream); 257683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier fputs, 258cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// size_t fread(void *ptr, size_t size, size_t nitems, FILE *stream); 259cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fread, 2608e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void free(void *ptr); 2618e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer free, 262cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// double frexp(double num, int *exp); 263cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge frexp, 264cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// float frexpf(float num, int *exp); 265cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge frexpf, 266cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// long double frexpl(long double num, int *exp); 267cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge frexpl, 268cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fscanf(FILE *stream, const char *format, ... ); 269cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fscanf, 270cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fseek(FILE *stream, long offset, int whence); 271cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fseek, 272cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fseeko(FILE *stream, off_t offset, int whence); 273cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fseeko, 274cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fseeko64(FILE *stream, off64_t offset, int whence) 275cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fseeko64, 276cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fsetpos(FILE *stream, const fpos_t *pos); 277cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fsetpos, 278cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fstat(int fildes, struct stat *buf); 279cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fstat, 280cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fstat64(int filedes, struct stat64 *buf) 281cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fstat64, 282cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fstatvfs(int fildes, struct statvfs *buf); 283cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fstatvfs, 284cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int fstatvfs64(int fildes, struct statvfs64 *buf); 285cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge fstatvfs64, 286cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// long ftell(FILE *stream); 287cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge ftell, 288cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// off_t ftello(FILE *stream); 289cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge ftello, 290cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// off64_t ftello64(FILE *stream) 291cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge ftello64, 292cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int ftrylockfile(FILE *file); 293cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge ftrylockfile, 294cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void funlockfile(FILE *file); 295cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge funlockfile, 296683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier /// size_t fwrite(const void *ptr, size_t size, size_t nitems, 297683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier /// FILE *stream); 298683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier fwrite, 299cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int getc(FILE *stream); 300cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge getc, 301cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int getc_unlocked(FILE *stream); 302cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge getc_unlocked, 303cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int getchar(void); 304cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge getchar, 305cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// char *getenv(const char *name); 306cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge getenv, 307cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int getitimer(int which, struct itimerval *value); 308cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge getitimer, 309cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int getlogin_r(char *name, size_t namesize); 310cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge getlogin_r, 311cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// struct passwd *getpwnam(const char *name); 312cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge getpwnam, 313cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// char *gets(char *s); 314cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge gets, 315f0f85eab0469ac93f9bb6c7d19aca2c35868d83aMichael Gottesman /// int gettimeofday(struct timeval *tp, void *tzp); 316f0f85eab0469ac93f9bb6c7d19aca2c35868d83aMichael Gottesman gettimeofday, 317cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// uint32_t htonl(uint32_t hostlong); 318cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge htonl, 319cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// uint16_t htons(uint16_t hostshort); 320cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge htons, 321683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier /// int iprintf(const char *format, ...); 322683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier iprintf, 3236098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// int isascii(int c); 3246098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge isascii, 3256098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// int isdigit(int c); 3266098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge isdigit, 3276098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// long int labs(long int j); 3286098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge labs, 329cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int lchown(const char *path, uid_t owner, gid_t group); 330cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge lchown, 3316098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// long long int llabs(long long int j); 3326098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge llabs, 3338ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double log(double x); 3348ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier log, 3358ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double log10(double x); 3368ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier log10, 3378ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float log10f(float x); 3388ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier log10f, 339d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double log10l(long double x); 340d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson log10l, 3418ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double log1p(double x); 3428ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier log1p, 3438ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float log1pf(float x); 3448ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier log1pf, 345d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double log1pl(long double x); 346d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson log1pl, 347d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// double log2(double x); 348d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson log2, 349d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// float log2f(float x); 350d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson log2f, 351d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// double long double log2l(long double x); 352d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson log2l, 3536871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// double logb(double x); 3546871d1eceba0455707de29708c36ae3c2778c160Chad Rosier logb, 3556871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// float logbf(float x); 3566871d1eceba0455707de29708c36ae3c2778c160Chad Rosier logbf, 3576871d1eceba0455707de29708c36ae3c2778c160Chad Rosier /// long double logbl(long double x); 3586871d1eceba0455707de29708c36ae3c2778c160Chad Rosier logbl, 359d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// float logf(float x); 360d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson logf, 361d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double logl(long double x); 362d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson logl, 363cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int lstat(const char *path, struct stat *buf); 364cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge lstat, 365cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int lstat64(const char *path, struct stat64 *buf); 366cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge lstat64, 3678e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *malloc(size_t size); 3688e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer malloc, 369cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void *memalign(size_t boundary, size_t size); 370cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge memalign, 371cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void *memccpy(void *s1, const void *s2, int c, size_t n); 372cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge memccpy, 3738d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes /// void *memchr(const void *s, int c, size_t n); 3748d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes memchr, 3758d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes /// int memcmp(const void *s1, const void *s2, size_t n); 3768d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes memcmp, 377683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier /// void *memcpy(void *s1, const void *s2, size_t n); 378398c0d8b7417dedbe244020ffb67abb54aaa1c59Chris Lattner memcpy, 379683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier /// void *memmove(void *s1, const void *s2, size_t n); 380149f5283f93ec85b96888c284f56099a72cc2731Chris Lattner memmove, 381cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge // void *memrchr(const void *s, int c, size_t n); 382cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge memrchr, 383683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier /// void *memset(void *b, int c, size_t len); 384683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier memset, 385ce99120084f549a523213064648662a704e8b789Chris Lattner /// void memset_pattern16(void *b, const void *pattern16, size_t len); 386ce99120084f549a523213064648662a704e8b789Chris Lattner memset_pattern16, 387cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int mkdir(const char *path, mode_t mode); 388cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge mkdir, 389cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// time_t mktime(struct tm *timeptr); 390cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge mktime, 391cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// double modf(double x, double *iptr); 392cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge modf, 393cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// float modff(float, float *iptr); 394cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge modff, 395cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// long double modfl(long double value, long double *iptr); 396cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge modfl, 397243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// double nearbyint(double x); 398243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson nearbyint, 399243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// float nearbyintf(float x); 400243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson nearbyintf, 401243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// long double nearbyintl(long double x); 402243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson nearbyintl, 403cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// uint32_t ntohl(uint32_t netlong); 404cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge ntohl, 405cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// uint16_t ntohs(uint16_t netshort); 406cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge ntohs, 407cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int open(const char *path, int oflag, ... ); 408cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge open, 409cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int open64(const char *filename, int flags[, mode_t mode]) 410cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge open64, 411cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// DIR *opendir(const char *dirname); 412cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge opendir, 413cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int pclose(FILE *stream); 414cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge pclose, 415cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void perror(const char *s); 416cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge perror, 417cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// FILE *popen(const char *command, const char *mode); 418cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge popen, 4198e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// int posix_memalign(void **memptr, size_t alignment, size_t size); 4208e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer posix_memalign, 4218ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// double pow(double x, double y); 4228ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier pow, 4238ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// float powf(float x, float y); 4248ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier powf, 4258ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier /// long double powl(long double x, long double y); 4268ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier powl, 427cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// ssize_t pread(int fildes, void *buf, size_t nbyte, off_t offset); 428cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge pread, 4296098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// int printf(const char *format, ...); 4306098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge printf, 431cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int putc(int c, FILE *stream); 432cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge putc, 4338d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes /// int putchar(int c); 4348d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes putchar, 4358d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes /// int puts(const char *s); 4368d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes puts, 437cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// ssize_t pwrite(int fildes, const void *buf, size_t nbyte, 438cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// off_t offset); 439cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge pwrite, 440cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void qsort(void *base, size_t nel, size_t width, 441cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int (*compar)(const void *, const void *)); 442cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge qsort, 443cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// ssize_t read(int fildes, void *buf, size_t nbyte); 444cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge read, 445cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// ssize_t readlink(const char *path, char *buf, size_t bufsize); 446cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge readlink, 4478e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *realloc(void *ptr, size_t size); 4488e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer realloc, 4498e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *reallocf(void *ptr, size_t size); 4508e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer reallocf, 451cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// char *realpath(const char *file_name, char *resolved_name); 452cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge realpath, 453cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int remove(const char *path); 454cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge remove, 455cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int rename(const char *old, const char *new); 456cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge rename, 457cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void rewind(FILE *stream); 458cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge rewind, 459243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// double rint(double x); 460243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson rint, 461243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// float rintf(float x); 462243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson rintf, 463d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff /// long double rintl(long double x); 464243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson rintl, 465cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int rmdir(const char *path); 466cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge rmdir, 467d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff /// double round(double x); 468d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff round, 469d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff /// float roundf(float x); 470d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff roundf, 471d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff /// long double roundl(long double x); 472d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff roundl, 473cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int scanf(const char *restrict format, ... ); 474cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge scanf, 475cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// void setbuf(FILE *stream, char *buf); 476cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge setbuf, 477cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int setitimer(int which, const struct itimerval *value, 478cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// struct itimerval *ovalue); 479cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge setitimer, 480cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int setvbuf(FILE *stream, char *buf, int type, size_t size); 481cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge setvbuf, 48232b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// double sin(double x); 48332b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier sin, 48432b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// float sinf(float x); 48532b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier sinf, 48632b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// double sinh(double x); 48732b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier sinh, 48832b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// float sinhf(float x); 48932b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier sinhf, 490d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double sinhl(long double x); 491d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson sinhl, 492d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double sinl(long double x); 493d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson sinl, 494419454ad3720b8cf4613d9e790669c8beaccd1a4Richard Osborne /// int siprintf(char *str, const char *format, ...); 495419454ad3720b8cf4613d9e790669c8beaccd1a4Richard Osborne siprintf, 496cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int snprintf(char *s, size_t n, const char *format, ...); 497cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge snprintf, 4986098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// int sprintf(char *str, const char *format, ...); 4996098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge sprintf, 5003d925d24e8c54cde05228258c25cc21687cad922Chad Rosier /// double sqrt(double x); 5013d925d24e8c54cde05228258c25cc21687cad922Chad Rosier sqrt, 5023d925d24e8c54cde05228258c25cc21687cad922Chad Rosier /// float sqrtf(float x); 5033d925d24e8c54cde05228258c25cc21687cad922Chad Rosier sqrtf, 504d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double sqrtl(long double x); 505d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson sqrtl, 506cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int sscanf(const char *s, const char *format, ... ); 507cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge sscanf, 508cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int stat(const char *path, struct stat *buf); 509cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge stat, 510cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int stat64(const char *path, struct stat64 *buf); 511cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge stat64, 512cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int statvfs(const char *path, struct statvfs *buf); 513cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge statvfs, 514cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int statvfs64(const char *path, struct statvfs64 *buf) 515cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge statvfs64, 516939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// char *stpcpy(char *s1, const char *s2); 517939f5002027e3ccb710ac1c3050dc25471251565Meador Inge stpcpy, 518cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// char *stpncpy(char *s1, const char *s2, size_t n); 519cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge stpncpy, 520cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int strcasecmp(const char *s1, const char *s2); 521cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge strcasecmp, 5220841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes /// char *strcat(char *s1, const char *s2); 5230841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes strcat, 5248d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes /// char *strchr(const char *s, int c); 5258d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes strchr, 526939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// int strcmp(const char *s1, const char *s2); 527939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strcmp, 528cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int strcoll(const char *s1, const char *s2); 529cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge strcoll, 5300841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes /// char *strcpy(char *s1, const char *s2); 5310841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes strcpy, 532939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// size_t strcspn(const char *s1, const char *s2); 533939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strcspn, 5348e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// char *strdup(const char *s1); 5358e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer strdup, 5360841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes /// size_t strlen(const char *s); 5370841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes strlen, 538cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int strncasecmp(const char *s1, const char *s2, size_t n); 539cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge strncasecmp, 5400841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes /// char *strncat(char *s1, const char *s2, size_t n); 5410841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes strncat, 5428d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes /// int strncmp(const char *s1, const char *s2, size_t n); 5438d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes strncmp, 5440841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes /// char *strncpy(char *s1, const char *s2, size_t n); 5450841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes strncpy, 5468e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// char *strndup(const char *s1, size_t n); 5478e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer strndup, 5480841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes /// size_t strnlen(const char *s, size_t maxlen); 5490841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes strnlen, 550939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// char *strpbrk(const char *s1, const char *s2); 551939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strpbrk, 552939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// char *strrchr(const char *s, int c); 553939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strrchr, 554939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// size_t strspn(const char *s1, const char *s2); 555939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strspn, 556939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// char *strstr(const char *s1, const char *s2); 557939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strstr, 558939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// double strtod(const char *nptr, char **endptr); 559939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strtod, 560939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// float strtof(const char *nptr, char **endptr); 561939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strtof, 562cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge // char *strtok(char *s1, const char *s2); 563cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge strtok, 564cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge // char *strtok_r(char *s, const char *sep, char **lasts); 565cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge strtok_r, 566939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// long int strtol(const char *nptr, char **endptr, int base); 567939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strtol, 568939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// long double strtold(const char *nptr, char **endptr); 569939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strtold, 570939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// long long int strtoll(const char *nptr, char **endptr, int base); 571939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strtoll, 572939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// unsigned long int strtoul(const char *nptr, char **endptr, int base); 573939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strtoul, 574939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// unsigned long long int strtoull(const char *nptr, char **endptr, 575939f5002027e3ccb710ac1c3050dc25471251565Meador Inge /// int base); 576939f5002027e3ccb710ac1c3050dc25471251565Meador Inge strtoull, 577cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// size_t strxfrm(char *s1, const char *s2, size_t n); 578cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge strxfrm, 579cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int system(const char *command); 580cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge system, 58132b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// double tan(double x); 58232b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier tan, 58332b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// float tanf(float x); 58432b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier tanf, 58532b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// double tanh(double x); 58632b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier tanh, 58732b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier /// float tanhf(float x); 58832b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier tanhf, 589d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double tanhl(long double x); 590d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson tanhl, 591d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// long double tanl(long double x); 592d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson tanl, 593cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// clock_t times(struct tms *buffer); 594cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge times, 595cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// FILE *tmpfile(void); 596cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge tmpfile, 597cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// FILE *tmpfile64(void) 598cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge tmpfile64, 5996098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge /// int toascii(int c); 6006098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge toascii, 601243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// double trunc(double x); 602243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson trunc, 603243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// float truncf(float x); 604243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson truncf, 605243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson /// long double truncl(long double x); 606243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson truncl, 607cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int uname(struct utsname *name); 608cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge uname, 609cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int ungetc(int c, FILE *stream); 610cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge ungetc, 611cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int unlink(const char *path); 612cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge unlink, 613cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int unsetenv(const char *name); 614cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge unsetenv, 615cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int utime(const char *path, const struct utimbuf *times); 616cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge utime, 617cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int utimes(const char *path, const struct timeval times[2]); 618cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge utimes, 6198e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer /// void *valloc(size_t size); 6208e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer valloc, 621cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int vfprintf(FILE *stream, const char *format, va_list ap); 622cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge vfprintf, 623cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int vfscanf(FILE *stream, const char *format, va_list arg); 624cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge vfscanf, 625cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int vprintf(const char *restrict format, va_list ap); 626cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge vprintf, 627cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int vscanf(const char *format, va_list arg); 628cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge vscanf, 629cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int vsnprintf(char *s, size_t n, const char *format, va_list ap); 630cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge vsnprintf, 631cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int vsprintf(char *s, const char *format, va_list ap); 632cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge vsprintf, 633cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// int vsscanf(const char *s, const char *format, va_list arg); 634cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge vsscanf, 635cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge /// ssize_t write(int fildes, const void *buf, size_t nbyte); 636cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge write, 6379d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman 638ce99120084f549a523213064648662a704e8b789Chris Lattner NumLibFuncs 639ce99120084f549a523213064648662a704e8b789Chris Lattner }; 640ce99120084f549a523213064648662a704e8b789Chris Lattner } 641ce99120084f549a523213064648662a704e8b789Chris Lattner 642ce99120084f549a523213064648662a704e8b789Chris Lattner/// TargetLibraryInfo - This immutable pass captures information about what 643ce99120084f549a523213064648662a704e8b789Chris Lattner/// library functions are available for the current target, and allows a 644ce99120084f549a523213064648662a704e8b789Chris Lattner/// frontend to disable optimizations through -fno-builtin etc. 645ce99120084f549a523213064648662a704e8b789Chris Lattnerclass TargetLibraryInfo : public ImmutablePass { 6462d24e2a396a1d211baaeedf32148a3b657240170David Blaikie virtual void anchor(); 6479d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman unsigned char AvailableArray[(LibFunc::NumLibFuncs+3)/4]; 6489d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman llvm::DenseMap<unsigned, std::string> CustomNames; 6499d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman static const char* StandardNames[LibFunc::NumLibFuncs]; 6509d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman 6519d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman enum AvailabilityState { 6529d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman StandardName = 3, // (memset to all ones) 6539d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman CustomName = 1, 6549d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman Unavailable = 0 // (memset to all zeros) 6559d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman }; 6569d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman void setState(LibFunc::Func F, AvailabilityState State) { 6579d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman AvailableArray[F/4] &= ~(3 << 2*(F&3)); 6589d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman AvailableArray[F/4] |= State << 2*(F&3); 6599d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman } 6609d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman AvailabilityState getState(LibFunc::Func F) const { 6619d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman return static_cast<AvailabilityState>((AvailableArray[F/4] >> 2*(F&3)) & 3); 6629d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman } 6639d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman 664ce99120084f549a523213064648662a704e8b789Chris Lattnerpublic: 665ce99120084f549a523213064648662a704e8b789Chris Lattner static char ID; 666ce99120084f549a523213064648662a704e8b789Chris Lattner TargetLibraryInfo(); 667ce99120084f549a523213064648662a704e8b789Chris Lattner TargetLibraryInfo(const Triple &T); 66840f5fbcc5c95bb96c43ce2d06d57ae9b7f852539Chris Lattner explicit TargetLibraryInfo(const TargetLibraryInfo &TLI); 669ce99120084f549a523213064648662a704e8b789Chris Lattner 670d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// getLibFunc - Search for a particular function name. If it is one of the 671d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson /// known library functions, return true and set F to the corresponding value. 672d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson bool getLibFunc(StringRef funcName, LibFunc::Func &F) const; 673d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson 674ce99120084f549a523213064648662a704e8b789Chris Lattner /// has - This function is used by optimizations that want to match on or form 675ce99120084f549a523213064648662a704e8b789Chris Lattner /// a given library function. 676ce99120084f549a523213064648662a704e8b789Chris Lattner bool has(LibFunc::Func F) const { 6779d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman return getState(F) != Unavailable; 6789d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman } 6799d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman 680982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson /// hasOptimizedCodeGen - Return true if the function is both available as 681982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson /// a builtin and a candidate for optimized code generation. 682982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson bool hasOptimizedCodeGen(LibFunc::Func F) const { 683982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson if (getState(F) == Unavailable) 684982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson return false; 685982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson switch (F) { 686982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson default: break; 687982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::copysign: case LibFunc::copysignf: case LibFunc::copysignl: 688982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::fabs: case LibFunc::fabsf: case LibFunc::fabsl: 689982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::sin: case LibFunc::sinf: case LibFunc::sinl: 690982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::cos: case LibFunc::cosf: case LibFunc::cosl: 691982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::sqrt: case LibFunc::sqrtf: case LibFunc::sqrtl: 692b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd case LibFunc::sqrt_finite: case LibFunc::sqrtf_finite: 693b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd case LibFunc::sqrtl_finite: 694982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::floor: case LibFunc::floorf: case LibFunc::floorl: 695982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::nearbyint: case LibFunc::nearbyintf: case LibFunc::nearbyintl: 696982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::ceil: case LibFunc::ceilf: case LibFunc::ceill: 697982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::rint: case LibFunc::rintf: case LibFunc::rintl: 698982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::trunc: case LibFunc::truncf: case LibFunc::truncl: 699982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::log2: case LibFunc::log2f: case LibFunc::log2l: 700982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::exp2: case LibFunc::exp2f: case LibFunc::exp2l: 701982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson case LibFunc::memcmp: 702982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson return true; 703982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson } 704982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson return false; 705982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson } 706982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson 7079d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman StringRef getName(LibFunc::Func F) const { 7089d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman AvailabilityState State = getState(F); 7099d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman if (State == Unavailable) 7109d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman return StringRef(); 7119d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman if (State == StandardName) 7129d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman return StandardNames[F]; 7139d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman assert(State == CustomName); 7149d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman return CustomNames.find(F)->second; 715ce99120084f549a523213064648662a704e8b789Chris Lattner } 716ce99120084f549a523213064648662a704e8b789Chris Lattner 717ce99120084f549a523213064648662a704e8b789Chris Lattner /// setUnavailable - this can be used by whatever sets up TargetLibraryInfo to 718ce99120084f549a523213064648662a704e8b789Chris Lattner /// ban use of specific library functions. 719ce99120084f549a523213064648662a704e8b789Chris Lattner void setUnavailable(LibFunc::Func F) { 7209d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman setState(F, Unavailable); 721ce99120084f549a523213064648662a704e8b789Chris Lattner } 722ce99120084f549a523213064648662a704e8b789Chris Lattner 723ce99120084f549a523213064648662a704e8b789Chris Lattner void setAvailable(LibFunc::Func F) { 7249d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman setState(F, StandardName); 725ce99120084f549a523213064648662a704e8b789Chris Lattner } 7269d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman 7279d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman void setAvailableWithName(LibFunc::Func F, StringRef Name) { 7289d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman if (StandardNames[F] != Name) { 7299d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman setState(F, CustomName); 7309d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman CustomNames[F] = Name; 7319d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman assert(CustomNames.find(F) != CustomNames.end()); 7329d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman } else { 7339d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman setState(F, StandardName); 7349d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman } 7359d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman } 7369d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman 737188a7e00e784f78d6b5b250a64ac5c374f0fd3f0Chris Lattner /// disableAllFunctions - This disables all builtins, which is used for 738188a7e00e784f78d6b5b250a64ac5c374f0fd3f0Chris Lattner /// options like -fno-builtin. 739188a7e00e784f78d6b5b250a64ac5c374f0fd3f0Chris Lattner void disableAllFunctions(); 740ce99120084f549a523213064648662a704e8b789Chris Lattner}; 741ce99120084f549a523213064648662a704e8b789Chris Lattner 742ce99120084f549a523213064648662a704e8b789Chris Lattner} // end namespace llvm 743ce99120084f549a523213064648662a704e8b789Chris Lattner 744ce99120084f549a523213064648662a704e8b789Chris Lattner#endif 745