TargetLibraryInfo.h revision f8e021ce4621688f8f57bf98302cba23f5d7e0f1
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
16f8e021ce4621688f8f57bf98302cba23f5d7e0f1Stephen Hines// BEGIN ANDROID-SPECIFIC
17f8e021ce4621688f8f57bf98302cba23f5d7e0f1Stephen Hines#ifdef WIN32
18f8e021ce4621688f8f57bf98302cba23f5d7e0f1Stephen Hines#ifdef fseeko
19f8e021ce4621688f8f57bf98302cba23f5d7e0f1Stephen Hines#undef fseeko
20f8e021ce4621688f8f57bf98302cba23f5d7e0f1Stephen Hines#endif
21f8e021ce4621688f8f57bf98302cba23f5d7e0f1Stephen Hines#ifdef ftello
22f8e021ce4621688f8f57bf98302cba23f5d7e0f1Stephen Hines#undef ftello
23f8e021ce4621688f8f57bf98302cba23f5d7e0f1Stephen Hines#endif
24f8e021ce4621688f8f57bf98302cba23f5d7e0f1Stephen Hines#endif  // WIN32
25f8e021ce4621688f8f57bf98302cba23f5d7e0f1Stephen Hines// END ANDROID-SPECIFIC
26f8e021ce4621688f8f57bf98302cba23f5d7e0f1Stephen Hines
27ce99120084f549a523213064648662a704e8b789Chris Lattnernamespace llvm {
28ce99120084f549a523213064648662a704e8b789Chris Lattner  class Triple;
29ce99120084f549a523213064648662a704e8b789Chris Lattner
30ce99120084f549a523213064648662a704e8b789Chris Lattner  namespace LibFunc {
31ce99120084f549a523213064648662a704e8b789Chris Lattner    enum Func {
32cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int _IO_getc(_IO_FILE * __fp);
33cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      under_IO_getc,
34cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int _IO_putc(int __c, _IO_FILE * __fp);
35cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      under_IO_putc,
368e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      /// void operator delete[](void*);
378e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      ZdaPv,
3872c8331ec1437f8c33fff1dac1ea0ebb11009411Richard Smith      /// void operator delete[](void*, nothrow);
3972c8331ec1437f8c33fff1dac1ea0ebb11009411Richard Smith      ZdaPvRKSt9nothrow_t,
408e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      /// void operator delete(void*);
418e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      ZdlPv,
4272c8331ec1437f8c33fff1dac1ea0ebb11009411Richard Smith      /// void operator delete(void*, nothrow);
4372c8331ec1437f8c33fff1dac1ea0ebb11009411Richard Smith      ZdlPvRKSt9nothrow_t,
448e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      /// void *new[](unsigned int);
458e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      Znaj,
468e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      /// void *new[](unsigned int, nothrow);
478e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      ZnajRKSt9nothrow_t,
488e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      /// void *new[](unsigned long);
498e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      Znam,
508e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      /// void *new[](unsigned long, nothrow);
518e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      ZnamRKSt9nothrow_t,
528e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      /// void *new(unsigned int);
538e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      Znwj,
548e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      /// void *new(unsigned int, nothrow);
558e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      ZnwjRKSt9nothrow_t,
568e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      /// void *new(unsigned long);
578e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      Znwm,
588e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      /// void *new(unsigned long, nothrow);
598e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      ZnwmRKSt9nothrow_t,
60208130f11331eccab26c0a6f3146cd1891e53e33Bob Wilson      /// double __cospi(double x);
61208130f11331eccab26c0a6f3146cd1891e53e33Bob Wilson      cospi,
62208130f11331eccab26c0a6f3146cd1891e53e33Bob Wilson      /// float __cospif(float x);
63208130f11331eccab26c0a6f3146cd1891e53e33Bob Wilson      cospif,
64d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// int __cxa_atexit(void (*f)(void *), void *p, void *d);
65d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      cxa_atexit,
66d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// void __cxa_guard_abort(guard_t *guard);
67d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// guard_t is int64_t in Itanium ABI or int32_t on ARM eabi.
68d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      cxa_guard_abort,
69d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// int __cxa_guard_acquire(guard_t *guard);
70d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      cxa_guard_acquire,
71d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// void __cxa_guard_release(guard_t *guard);
72d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      cxa_guard_release,
73cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int __isoc99_scanf (const char *format, ...)
74cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      dunder_isoc99_scanf,
75cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int __isoc99_sscanf(const char *s, const char *format, ...)
76cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      dunder_isoc99_sscanf,
77d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// void *__memcpy_chk(void *s1, const void *s2, size_t n, size_t s1size);
78d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      memcpy_chk,
79208130f11331eccab26c0a6f3146cd1891e53e33Bob Wilson      /// double __sincospi_stret(double x);
80208130f11331eccab26c0a6f3146cd1891e53e33Bob Wilson      sincospi_stret,
8136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      /// float __sincospif_stret(float x);
8236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      sincospif_stret,
83208130f11331eccab26c0a6f3146cd1891e53e33Bob Wilson      /// double __sinpi(double x);
84208130f11331eccab26c0a6f3146cd1891e53e33Bob Wilson      sinpi,
85208130f11331eccab26c0a6f3146cd1891e53e33Bob Wilson      /// float __sinpif(float x);
86208130f11331eccab26c0a6f3146cd1891e53e33Bob Wilson      sinpif,
87b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd      /// double __sqrt_finite(double x);
88b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd      sqrt_finite,
89b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd      /// float __sqrt_finite(float x);
90b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd      sqrtf_finite,
91b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd      /// long double __sqrt_finite(long double x);
92b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd      sqrtl_finite,
93cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// char * __strdup(const char *s);
94cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      dunder_strdup,
95cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// char *__strndup(const char *s, size_t n);
96cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      dunder_strndup,
97cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// char * __strtok_r(char *s, const char *delim, char **save_ptr);
98cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      dunder_strtok_r,
996098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      /// int abs(int j);
1006098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      abs,
101cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int access(const char *path, int amode);
102cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      access,
1038ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// double acos(double x);
1048ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      acos,
1058ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// float acosf(float x);
1068ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      acosf,
1076871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      /// double acosh(double x);
1086871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      acosh,
1096871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      /// float acoshf(float x);
1106871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      acoshf,
1116871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      /// long double acoshl(long double x);
1126871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      acoshl,
113d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// long double acosl(long double x);
114d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      acosl,
1158ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// double asin(double x);
1168ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      asin,
1178ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// float asinf(float x);
1188ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      asinf,
1196871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      /// double asinh(double x);
1206871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      asinh,
1216871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      /// float asinhf(float x);
1226871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      asinhf,
1236871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      /// long double asinhl(long double x);
1246871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      asinhl,
125d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// long double asinl(long double x);
126d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      asinl,
1278ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// double atan(double x);
1288ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      atan,
12932b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      /// double atan2(double y, double x);
13032b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      atan2,
13132b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      /// float atan2f(float y, float x);
13232b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      atan2f,
133d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// long double atan2l(long double y, long double x);
134d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      atan2l,
135d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// float atanf(float x);
136d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      atanf,
1376871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      /// double atanh(double x);
1386871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      atanh,
1396871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      /// float atanhf(float x);
1406871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      atanhf,
1416871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      /// long double atanhl(long double x);
1426871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      atanhl,
143d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// long double atanl(long double x);
144d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      atanl,
145cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// double atof(const char *str);
146cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      atof,
147cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int atoi(const char *str);
148cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      atoi,
149cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// long atol(const char *str);
150cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      atol,
151cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// long long atoll(const char *nptr);
152cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      atoll,
153cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int bcmp(const void *s1, const void *s2, size_t n);
154cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      bcmp,
155cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// void bcopy(const void *s1, void *s2, size_t n);
156cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      bcopy,
157cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// void bzero(void *s, size_t n);
158cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      bzero,
1598e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      /// void *calloc(size_t count, size_t size);
1608e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      calloc,
1616871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      /// double cbrt(double x);
1626871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      cbrt,
1636871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      /// float cbrtf(float x);
1646871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      cbrtf,
1656871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      /// long double cbrtl(long double x);
1666871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      cbrtl,
1678ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// double ceil(double x);
1688ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      ceil,
1698ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// float ceilf(float x);
1708ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      ceilf,
171d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// long double ceill(long double x);
172d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      ceill,
173cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int chmod(const char *path, mode_t mode);
174cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      chmod,
175cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int chown(const char *path, uid_t owner, gid_t group);
176cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      chown,
177cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// void clearerr(FILE *stream);
178cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      clearerr,
179cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int closedir(DIR *dirp);
180cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      closedir,
181243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      /// double copysign(double x, double y);
182243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      copysign,
183243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      /// float copysignf(float x, float y);
184243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      copysignf,
185243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      /// long double copysignl(long double x, long double y);
186243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      copysignl,
1878ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// double cos(double x);
1888ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      cos,
1898ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// float cosf(float x);
1908ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      cosf,
1918ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// double cosh(double x);
1928ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      cosh,
1938ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// float coshf(float x);
1948ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      coshf,
195d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// long double coshl(long double x);
196d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      coshl,
197d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// long double cosl(long double x);
198d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      cosl,
199cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// char *ctermid(char *s);
200cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      ctermid,
2018ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// double exp(double x);
2028ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      exp,
2036871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      /// double exp10(double x);
2046871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      exp10,
2056871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      /// float exp10f(float x);
2066871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      exp10f,
2076871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      /// long double exp10l(long double x);
2086871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      exp10l,
2098ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// double exp2(double x);
2108ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      exp2,
2118ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// float exp2f(float x);
2128ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      exp2f,
213d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// long double exp2l(long double x);
214d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      exp2l,
215d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// float expf(float x);
216d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      expf,
217d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// long double expl(long double x);
218d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      expl,
2198ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// double expm1(double x);
2208ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      expm1,
2218ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// float expm1f(float x);
222d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff      expm1f,
223d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// long double expm1l(long double x);
224d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      expm1l,
2258ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// double fabs(double x);
2268ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      fabs,
2278ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// float fabsf(float x);
2288ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      fabsf,
229d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// long double fabsl(long double x);
230d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      fabsl,
231cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int fclose(FILE *stream);
232cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      fclose,
233cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// FILE *fdopen(int fildes, const char *mode);
234cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      fdopen,
235cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int feof(FILE *stream);
236cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      feof,
237cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int ferror(FILE *stream);
238cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      ferror,
239cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int fflush(FILE *stream);
240cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      fflush,
2416098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      /// int ffs(int i);
2426098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      ffs,
2436098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      /// int ffsl(long int i);
2446098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      ffsl,
2456098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      /// int ffsll(long long int i);
2466098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      ffsll,
247cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int fgetc(FILE *stream);
248cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      fgetc,
249cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int fgetpos(FILE *stream, fpos_t *pos);
250cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      fgetpos,
251cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// char *fgets(char *s, int n, FILE *stream);
252cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      fgets,
253cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int fileno(FILE *stream);
254cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      fileno,
255d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// int fiprintf(FILE *stream, const char *format, ...);
256d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      fiprintf,
257cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// void flockfile(FILE *file);
258cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      flockfile,
2598ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// double floor(double x);
2608ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      floor,
2618ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// float floorf(float x);
2628ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      floorf,
263d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// long double floorl(long double x);
264d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      floorl,
26536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      /// double fmax(double x, double y);
26636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      fmax,
26736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      /// float fmaxf(float x, float y);
26836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      fmaxf,
26936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      /// long double fmaxl(long double x, long double y);
27036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      fmaxl,
27136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      /// double fmin(double x, double y);
27236b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      fmin,
27336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      /// float fminf(float x, float y);
27436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      fminf,
27536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      /// long double fminl(long double x, long double y);
27636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      fminl,
27732b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      /// double fmod(double x, double y);
27832b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      fmod,
27932b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      /// float fmodf(float x, float y);
28032b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      fmodf,
281d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// long double fmodl(long double x, long double y);
282d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      fmodl,
283cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// FILE *fopen(const char *filename, const char *mode);
284cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      fopen,
285cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// FILE *fopen64(const char *filename, const char *opentype)
286cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      fopen64,
2876098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      /// int fprintf(FILE *stream, const char *format, ...);
2886098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      fprintf,
2898d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes      /// int fputc(int c, FILE *stream);
2908d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes      fputc,
291683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier      /// int fputs(const char *s, FILE *stream);
292683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier      fputs,
293cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// size_t fread(void *ptr, size_t size, size_t nitems, FILE *stream);
294cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      fread,
2958e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      /// void free(void *ptr);
2968e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      free,
297cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// double frexp(double num, int *exp);
298cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      frexp,
299cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// float frexpf(float num, int *exp);
300cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      frexpf,
301cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// long double frexpl(long double num, int *exp);
302cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      frexpl,
303cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int fscanf(FILE *stream, const char *format, ... );
304cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      fscanf,
305cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int fseek(FILE *stream, long offset, int whence);
306cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      fseek,
307cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int fseeko(FILE *stream, off_t offset, int whence);
308cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      fseeko,
309cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int fseeko64(FILE *stream, off64_t offset, int whence)
310cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      fseeko64,
311cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int fsetpos(FILE *stream, const fpos_t *pos);
312cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      fsetpos,
313cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int fstat(int fildes, struct stat *buf);
314cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      fstat,
315cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int fstat64(int filedes, struct stat64 *buf)
316cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      fstat64,
317cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int fstatvfs(int fildes, struct statvfs *buf);
318cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      fstatvfs,
319cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int fstatvfs64(int fildes, struct statvfs64 *buf);
320cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      fstatvfs64,
321cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// long ftell(FILE *stream);
322cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      ftell,
323cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// off_t ftello(FILE *stream);
324cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      ftello,
325cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// off64_t ftello64(FILE *stream)
326cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      ftello64,
327cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int ftrylockfile(FILE *file);
328cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      ftrylockfile,
329cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// void funlockfile(FILE *file);
330cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      funlockfile,
331683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier      /// size_t fwrite(const void *ptr, size_t size, size_t nitems,
332683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier      /// FILE *stream);
333683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier      fwrite,
334cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int getc(FILE *stream);
335cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      getc,
336cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int getc_unlocked(FILE *stream);
337cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      getc_unlocked,
338cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int getchar(void);
339cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      getchar,
340cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// char *getenv(const char *name);
341cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      getenv,
342cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int getitimer(int which, struct itimerval *value);
343cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      getitimer,
344cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int getlogin_r(char *name, size_t namesize);
345cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      getlogin_r,
346cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// struct passwd *getpwnam(const char *name);
347cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      getpwnam,
348cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// char *gets(char *s);
349cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      gets,
350f0f85eab0469ac93f9bb6c7d19aca2c35868d83aMichael Gottesman      /// int gettimeofday(struct timeval *tp, void *tzp);
351f0f85eab0469ac93f9bb6c7d19aca2c35868d83aMichael Gottesman      gettimeofday,
352cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// uint32_t htonl(uint32_t hostlong);
353cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      htonl,
354cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// uint16_t htons(uint16_t hostshort);
355cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      htons,
356683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier      /// int iprintf(const char *format, ...);
357683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier      iprintf,
3586098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      /// int isascii(int c);
3596098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      isascii,
3606098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      /// int isdigit(int c);
3616098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      isdigit,
3626098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      /// long int labs(long int j);
3636098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      labs,
364cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int lchown(const char *path, uid_t owner, gid_t group);
365cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      lchown,
36636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      /// double ldexp(double x, int n);
36736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      ldexp,
36836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      /// float ldexpf(float x, int n);
36936b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      ldexpf,
37036b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      /// long double ldexpl(long double x, int n);
37136b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines      ldexpl,
3726098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      /// long long int llabs(long long int j);
3736098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      llabs,
3748ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// double log(double x);
3758ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      log,
3768ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// double log10(double x);
3778ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      log10,
3788ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// float log10f(float x);
3798ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      log10f,
380d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// long double log10l(long double x);
381d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      log10l,
3828ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// double log1p(double x);
3838ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      log1p,
3848ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// float log1pf(float x);
3858ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      log1pf,
386d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// long double log1pl(long double x);
387d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      log1pl,
388d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// double log2(double x);
389d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      log2,
390d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// float log2f(float x);
391d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      log2f,
392d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// double long double log2l(long double x);
393d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      log2l,
3946871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      /// double logb(double x);
3956871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      logb,
3966871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      /// float logbf(float x);
3976871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      logbf,
3986871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      /// long double logbl(long double x);
3996871d1eceba0455707de29708c36ae3c2778c160Chad Rosier      logbl,
400d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// float logf(float x);
401d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      logf,
402d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// long double logl(long double x);
403d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      logl,
404cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int lstat(const char *path, struct stat *buf);
405cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      lstat,
406cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int lstat64(const char *path, struct stat64 *buf);
407cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      lstat64,
4088e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      /// void *malloc(size_t size);
4098e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      malloc,
410cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// void *memalign(size_t boundary, size_t size);
411cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      memalign,
412cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// void *memccpy(void *s1, const void *s2, int c, size_t n);
413cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      memccpy,
4148d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes      /// void *memchr(const void *s, int c, size_t n);
4158d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes      memchr,
4168d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes      /// int memcmp(const void *s1, const void *s2, size_t n);
4178d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes      memcmp,
418683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier      /// void *memcpy(void *s1, const void *s2, size_t n);
419398c0d8b7417dedbe244020ffb67abb54aaa1c59Chris Lattner      memcpy,
420683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier      /// void *memmove(void *s1, const void *s2, size_t n);
421149f5283f93ec85b96888c284f56099a72cc2731Chris Lattner      memmove,
422cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      // void *memrchr(const void *s, int c, size_t n);
423cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      memrchr,
424683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier      /// void *memset(void *b, int c, size_t len);
425683e47b1dd8672b0b026a45022cf91f4faf7df9bChad Rosier      memset,
426ce99120084f549a523213064648662a704e8b789Chris Lattner      /// void memset_pattern16(void *b, const void *pattern16, size_t len);
427ce99120084f549a523213064648662a704e8b789Chris Lattner      memset_pattern16,
428cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int mkdir(const char *path, mode_t mode);
429cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      mkdir,
430cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// time_t mktime(struct tm *timeptr);
431cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      mktime,
432cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// double modf(double x, double *iptr);
433cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      modf,
434cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// float modff(float, float *iptr);
435cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      modff,
436cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// long double modfl(long double value, long double *iptr);
437cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      modfl,
438243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      /// double nearbyint(double x);
439243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      nearbyint,
440243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      /// float nearbyintf(float x);
441243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      nearbyintf,
442243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      /// long double nearbyintl(long double x);
443243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      nearbyintl,
444cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// uint32_t ntohl(uint32_t netlong);
445cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      ntohl,
446cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// uint16_t ntohs(uint16_t netshort);
447cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      ntohs,
448cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int open(const char *path, int oflag, ... );
449cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      open,
450cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int open64(const char *filename, int flags[, mode_t mode])
451cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      open64,
452cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// DIR *opendir(const char *dirname);
453cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      opendir,
454cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int pclose(FILE *stream);
455cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      pclose,
456cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// void perror(const char *s);
457cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      perror,
458cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// FILE *popen(const char *command, const char *mode);
459cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      popen,
4608e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      /// int posix_memalign(void **memptr, size_t alignment, size_t size);
4618e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      posix_memalign,
4628ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// double pow(double x, double y);
4638ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      pow,
4648ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// float powf(float x, float y);
4658ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      powf,
4668ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      /// long double powl(long double x, long double y);
4678ff4115ef0bcad0a46750bb2bd4376a61b346362Chad Rosier      powl,
468cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// ssize_t pread(int fildes, void *buf, size_t nbyte, off_t offset);
469cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      pread,
4706098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      /// int printf(const char *format, ...);
4716098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      printf,
472cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int putc(int c, FILE *stream);
473cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      putc,
4748d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes      /// int putchar(int c);
4758d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes      putchar,
4768d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes      /// int puts(const char *s);
4778d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes      puts,
478cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// ssize_t pwrite(int fildes, const void *buf, size_t nbyte,
479cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      ///                off_t offset);
480cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      pwrite,
481cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// void qsort(void *base, size_t nel, size_t width,
482cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      ///            int (*compar)(const void *, const void *));
483cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      qsort,
484cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// ssize_t read(int fildes, void *buf, size_t nbyte);
485cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      read,
486cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// ssize_t readlink(const char *path, char *buf, size_t bufsize);
487cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      readlink,
4888e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      /// void *realloc(void *ptr, size_t size);
4898e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      realloc,
4908e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      /// void *reallocf(void *ptr, size_t size);
4918e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      reallocf,
492cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// char *realpath(const char *file_name, char *resolved_name);
493cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      realpath,
494cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int remove(const char *path);
495cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      remove,
496cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int rename(const char *old, const char *new);
497cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      rename,
498cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// void rewind(FILE *stream);
499cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      rewind,
500243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      /// double rint(double x);
501243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      rint,
502243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      /// float rintf(float x);
503243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      rintf,
504d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff      /// long double rintl(long double x);
505243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      rintl,
506cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int rmdir(const char *path);
507cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      rmdir,
508d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff      /// double round(double x);
509d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff      round,
510d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff      /// float roundf(float x);
511d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff      roundf,
512d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff      /// long double roundl(long double x);
513d5bda5ec663f43710fe462f44b77ddbcf8fe9d9eJoe Groff      roundl,
514cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int scanf(const char *restrict format, ... );
515cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      scanf,
516cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// void setbuf(FILE *stream, char *buf);
517cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      setbuf,
518cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int setitimer(int which, const struct itimerval *value,
519cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      ///               struct itimerval *ovalue);
520cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      setitimer,
521cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int setvbuf(FILE *stream, char *buf, int type, size_t size);
522cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      setvbuf,
52332b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      /// double sin(double x);
52432b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      sin,
52532b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      /// float sinf(float x);
52632b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      sinf,
52732b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      /// double sinh(double x);
52832b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      sinh,
52932b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      /// float sinhf(float x);
53032b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      sinhf,
531d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// long double sinhl(long double x);
532d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      sinhl,
533d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// long double sinl(long double x);
534d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      sinl,
535419454ad3720b8cf4613d9e790669c8beaccd1a4Richard Osborne      /// int siprintf(char *str, const char *format, ...);
536419454ad3720b8cf4613d9e790669c8beaccd1a4Richard Osborne      siprintf,
537cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int snprintf(char *s, size_t n, const char *format, ...);
538cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      snprintf,
5396098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      /// int sprintf(char *str, const char *format, ...);
5406098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      sprintf,
5413d925d24e8c54cde05228258c25cc21687cad922Chad Rosier      /// double sqrt(double x);
5423d925d24e8c54cde05228258c25cc21687cad922Chad Rosier      sqrt,
5433d925d24e8c54cde05228258c25cc21687cad922Chad Rosier      /// float sqrtf(float x);
5443d925d24e8c54cde05228258c25cc21687cad922Chad Rosier      sqrtf,
545d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// long double sqrtl(long double x);
546d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      sqrtl,
547cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int sscanf(const char *s, const char *format, ... );
548cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      sscanf,
549cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int stat(const char *path, struct stat *buf);
550cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      stat,
551cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int stat64(const char *path, struct stat64 *buf);
552cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      stat64,
553cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int statvfs(const char *path, struct statvfs *buf);
554cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      statvfs,
555cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int statvfs64(const char *path, struct statvfs64 *buf)
556cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      statvfs64,
557939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      /// char *stpcpy(char *s1, const char *s2);
558939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      stpcpy,
559cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// char *stpncpy(char *s1, const char *s2, size_t n);
560cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      stpncpy,
561cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int strcasecmp(const char *s1, const char *s2);
562cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      strcasecmp,
5630841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes      /// char *strcat(char *s1, const char *s2);
5640841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes      strcat,
5658d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes      /// char *strchr(const char *s, int c);
5668d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes      strchr,
567939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      /// int strcmp(const char *s1, const char *s2);
568939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      strcmp,
569cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int strcoll(const char *s1, const char *s2);
570cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      strcoll,
5710841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes      /// char *strcpy(char *s1, const char *s2);
5720841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes      strcpy,
573939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      /// size_t strcspn(const char *s1, const char *s2);
574939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      strcspn,
5758e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      /// char *strdup(const char *s1);
5768e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      strdup,
5770841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes      /// size_t strlen(const char *s);
5780841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes      strlen,
579cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int strncasecmp(const char *s1, const char *s2, size_t n);
580cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      strncasecmp,
5810841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes      /// char *strncat(char *s1, const char *s2, size_t n);
5820841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes      strncat,
5838d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes      /// int strncmp(const char *s1, const char *s2, size_t n);
5848d32463a9fa2aba9de552350a5019099edf0b90dNuno Lopes      strncmp,
5850841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes      /// char *strncpy(char *s1, const char *s2, size_t n);
5860841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes      strncpy,
5878e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      /// char *strndup(const char *s1, size_t n);
5888e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      strndup,
5890841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes      /// size_t strnlen(const char *s, size_t maxlen);
5900841e63ede092283d824843a068df3f7b0b90dd8Nuno Lopes      strnlen,
591939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      /// char *strpbrk(const char *s1, const char *s2);
592939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      strpbrk,
593939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      /// char *strrchr(const char *s, int c);
594939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      strrchr,
595939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      /// size_t strspn(const char *s1, const char *s2);
596939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      strspn,
597939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      /// char *strstr(const char *s1, const char *s2);
598939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      strstr,
599939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      /// double strtod(const char *nptr, char **endptr);
600939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      strtod,
601939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      /// float strtof(const char *nptr, char **endptr);
602939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      strtof,
603cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      // char *strtok(char *s1, const char *s2);
604cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      strtok,
605cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      // char *strtok_r(char *s, const char *sep, char **lasts);
606cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      strtok_r,
607939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      /// long int strtol(const char *nptr, char **endptr, int base);
608939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      strtol,
609939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      /// long double strtold(const char *nptr, char **endptr);
610939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      strtold,
611939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      /// long long int strtoll(const char *nptr, char **endptr, int base);
612939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      strtoll,
613939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      /// unsigned long int strtoul(const char *nptr, char **endptr, int base);
614939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      strtoul,
615939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      /// unsigned long long int strtoull(const char *nptr, char **endptr,
616939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      ///                                 int base);
617939f5002027e3ccb710ac1c3050dc25471251565Meador Inge      strtoull,
618cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// size_t strxfrm(char *s1, const char *s2, size_t n);
619cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      strxfrm,
620cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int system(const char *command);
621cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      system,
62232b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      /// double tan(double x);
62332b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      tan,
62432b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      /// float tanf(float x);
62532b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      tanf,
62632b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      /// double tanh(double x);
62732b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      tanh,
62832b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      /// float tanhf(float x);
62932b6c59ad068d2bb2466dd33bc17d8c865760215Chad Rosier      tanhf,
630d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// long double tanhl(long double x);
631d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      tanhl,
632d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      /// long double tanl(long double x);
633d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson      tanl,
634cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// clock_t times(struct tms *buffer);
635cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      times,
636cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// FILE *tmpfile(void);
637cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      tmpfile,
638cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// FILE *tmpfile64(void)
639cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      tmpfile64,
6406098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      /// int toascii(int c);
6416098c6b56be5a8e3c7ac5273110589f251b03573Meador Inge      toascii,
642243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      /// double trunc(double x);
643243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      trunc,
644243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      /// float truncf(float x);
645243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      truncf,
646243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      /// long double truncl(long double x);
647243eb9ecbbc6775e346e94025bd255bbceac9fcaOwen Anderson      truncl,
648cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int uname(struct utsname *name);
649cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      uname,
650cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int ungetc(int c, FILE *stream);
651cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      ungetc,
652cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int unlink(const char *path);
653cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      unlink,
654cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int unsetenv(const char *name);
655cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      unsetenv,
656cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int utime(const char *path, const struct utimbuf *times);
657cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      utime,
658cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int utimes(const char *path, const struct timeval times[2]);
659cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      utimes,
6608e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      /// void *valloc(size_t size);
6618e0d1c03ca7fd86e6879b4e37d0d7f0e982feef6Benjamin Kramer      valloc,
662cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int vfprintf(FILE *stream, const char *format, va_list ap);
663cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      vfprintf,
664cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int vfscanf(FILE *stream, const char *format, va_list arg);
665cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      vfscanf,
666cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int vprintf(const char *restrict format, va_list ap);
667cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      vprintf,
668cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int vscanf(const char *format, va_list arg);
669cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      vscanf,
670cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int vsnprintf(char *s, size_t n, const char *format, va_list ap);
671cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      vsnprintf,
672cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int vsprintf(char *s, const char *format, va_list ap);
673cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      vsprintf,
674cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// int vsscanf(const char *s, const char *format, va_list arg);
675cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      vsscanf,
676cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      /// ssize_t write(int fildes, const void *buf, size_t nbyte);
677cf70590c38ef580758c8a255519959fc7160fdb2Meador Inge      write,
6789d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman
679ce99120084f549a523213064648662a704e8b789Chris Lattner      NumLibFuncs
680ce99120084f549a523213064648662a704e8b789Chris Lattner    };
681ce99120084f549a523213064648662a704e8b789Chris Lattner  }
682ce99120084f549a523213064648662a704e8b789Chris Lattner
683ce99120084f549a523213064648662a704e8b789Chris Lattner/// TargetLibraryInfo - This immutable pass captures information about what
684ce99120084f549a523213064648662a704e8b789Chris Lattner/// library functions are available for the current target, and allows a
685ce99120084f549a523213064648662a704e8b789Chris Lattner/// frontend to disable optimizations through -fno-builtin etc.
686ce99120084f549a523213064648662a704e8b789Chris Lattnerclass TargetLibraryInfo : public ImmutablePass {
6872d24e2a396a1d211baaeedf32148a3b657240170David Blaikie  virtual void anchor();
6889d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman  unsigned char AvailableArray[(LibFunc::NumLibFuncs+3)/4];
6899d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman  llvm::DenseMap<unsigned, std::string> CustomNames;
6909d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman  static const char* StandardNames[LibFunc::NumLibFuncs];
6919d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman
6929d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman  enum AvailabilityState {
6939d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman    StandardName = 3, // (memset to all ones)
6949d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman    CustomName = 1,
6959d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman    Unavailable = 0  // (memset to all zeros)
6969d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman  };
6979d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman  void setState(LibFunc::Func F, AvailabilityState State) {
6989d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman    AvailableArray[F/4] &= ~(3 << 2*(F&3));
6999d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman    AvailableArray[F/4] |= State << 2*(F&3);
7009d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman  }
7019d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman  AvailabilityState getState(LibFunc::Func F) const {
7029d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman    return static_cast<AvailabilityState>((AvailableArray[F/4] >> 2*(F&3)) & 3);
7039d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman  }
7049d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman
705ce99120084f549a523213064648662a704e8b789Chris Lattnerpublic:
706ce99120084f549a523213064648662a704e8b789Chris Lattner  static char ID;
707ce99120084f549a523213064648662a704e8b789Chris Lattner  TargetLibraryInfo();
708ce99120084f549a523213064648662a704e8b789Chris Lattner  TargetLibraryInfo(const Triple &T);
70940f5fbcc5c95bb96c43ce2d06d57ae9b7f852539Chris Lattner  explicit TargetLibraryInfo(const TargetLibraryInfo &TLI);
710ce99120084f549a523213064648662a704e8b789Chris Lattner
711d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson  /// getLibFunc - Search for a particular function name.  If it is one of the
712d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson  /// known library functions, return true and set F to the corresponding value.
713d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson  bool getLibFunc(StringRef funcName, LibFunc::Func &F) const;
714d1e672e0234b99dbff78baed0e47d033cf963abeBob Wilson
715ce99120084f549a523213064648662a704e8b789Chris Lattner  /// has - This function is used by optimizations that want to match on or form
716ce99120084f549a523213064648662a704e8b789Chris Lattner  /// a given library function.
717ce99120084f549a523213064648662a704e8b789Chris Lattner  bool has(LibFunc::Func F) const {
7189d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman    return getState(F) != Unavailable;
7199d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman  }
7209d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman
721982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson  /// hasOptimizedCodeGen - Return true if the function is both available as
722982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson  /// a builtin and a candidate for optimized code generation.
723982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson  bool hasOptimizedCodeGen(LibFunc::Func F) const {
724982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson    if (getState(F) == Unavailable)
725982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson      return false;
726982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson    switch (F) {
727982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson    default: break;
728982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson    case LibFunc::copysign:  case LibFunc::copysignf:  case LibFunc::copysignl:
729982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson    case LibFunc::fabs:      case LibFunc::fabsf:      case LibFunc::fabsl:
730982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson    case LibFunc::sin:       case LibFunc::sinf:       case LibFunc::sinl:
731982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson    case LibFunc::cos:       case LibFunc::cosf:       case LibFunc::cosl:
732982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson    case LibFunc::sqrt:      case LibFunc::sqrtf:      case LibFunc::sqrtl:
733b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd    case LibFunc::sqrt_finite: case LibFunc::sqrtf_finite:
734b704d23062aa78b00999b75dcdcb628d4d84ee3fPreston Gurd                                                  case LibFunc::sqrtl_finite:
73536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines    case LibFunc::fmax:      case LibFunc::fmaxf:      case LibFunc::fmaxl:
73636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines    case LibFunc::fmin:      case LibFunc::fminf:      case LibFunc::fminl:
737982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson    case LibFunc::floor:     case LibFunc::floorf:     case LibFunc::floorl:
738982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson    case LibFunc::nearbyint: case LibFunc::nearbyintf: case LibFunc::nearbyintl:
739982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson    case LibFunc::ceil:      case LibFunc::ceilf:      case LibFunc::ceill:
740982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson    case LibFunc::rint:      case LibFunc::rintf:      case LibFunc::rintl:
74141418d17cced656f91038b2482bc9d173b4974b0Hal Finkel    case LibFunc::round:     case LibFunc::roundf:     case LibFunc::roundl:
742982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson    case LibFunc::trunc:     case LibFunc::truncf:     case LibFunc::truncl:
743982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson    case LibFunc::log2:      case LibFunc::log2f:      case LibFunc::log2l:
744982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson    case LibFunc::exp2:      case LibFunc::exp2f:      case LibFunc::exp2l:
7454fc7355a21e1fa838406e15459aaf54a58fcf909Richard Sandiford    case LibFunc::memcmp:    case LibFunc::strcmp:     case LibFunc::strcpy:
74619262ee0725a09b7c621a3d2eb66ba1513ae932aRichard Sandiford    case LibFunc::stpcpy:    case LibFunc::strlen:     case LibFunc::strnlen:
7478c20158fb0e1e5d747077f065eb0170c5af1fbfaRichard Sandiford    case LibFunc::memchr:
748982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson      return true;
749982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson    }
750982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson    return false;
751982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson  }
752982dc84762fc0c2ca35e6947d648a690dd22343cBob Wilson
7539d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman  StringRef getName(LibFunc::Func F) const {
7549d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman    AvailabilityState State = getState(F);
7559d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman    if (State == Unavailable)
7569d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman      return StringRef();
7579d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman    if (State == StandardName)
7589d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman      return StandardNames[F];
7599d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman    assert(State == CustomName);
7609d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman    return CustomNames.find(F)->second;
761ce99120084f549a523213064648662a704e8b789Chris Lattner  }
762ce99120084f549a523213064648662a704e8b789Chris Lattner
763ce99120084f549a523213064648662a704e8b789Chris Lattner  /// setUnavailable - this can be used by whatever sets up TargetLibraryInfo to
764ce99120084f549a523213064648662a704e8b789Chris Lattner  /// ban use of specific library functions.
765ce99120084f549a523213064648662a704e8b789Chris Lattner  void setUnavailable(LibFunc::Func F) {
7669d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman    setState(F, Unavailable);
767ce99120084f549a523213064648662a704e8b789Chris Lattner  }
768ce99120084f549a523213064648662a704e8b789Chris Lattner
769ce99120084f549a523213064648662a704e8b789Chris Lattner  void setAvailable(LibFunc::Func F) {
7709d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman    setState(F, StandardName);
771ce99120084f549a523213064648662a704e8b789Chris Lattner  }
7729d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman
7739d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman  void setAvailableWithName(LibFunc::Func F, StringRef Name) {
7749d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman    if (StandardNames[F] != Name) {
7759d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman      setState(F, CustomName);
7769d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman      CustomNames[F] = Name;
7779d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman      assert(CustomNames.find(F) != CustomNames.end());
7789d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman    } else {
7799d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman      setState(F, StandardName);
7809d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman    }
7819d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman  }
7829d434dbff3eb0501efc3457acec2401afdffef2fEli Friedman
783188a7e00e784f78d6b5b250a64ac5c374f0fd3f0Chris Lattner  /// disableAllFunctions - This disables all builtins, which is used for
784188a7e00e784f78d6b5b250a64ac5c374f0fd3f0Chris Lattner  /// options like -fno-builtin.
785188a7e00e784f78d6b5b250a64ac5c374f0fd3f0Chris Lattner  void disableAllFunctions();
786ce99120084f549a523213064648662a704e8b789Chris Lattner};
787ce99120084f549a523213064648662a704e8b789Chris Lattner
788ce99120084f549a523213064648662a704e8b789Chris Lattner} // end namespace llvm
789ce99120084f549a523213064648662a704e8b789Chris Lattner
790ce99120084f549a523213064648662a704e8b789Chris Lattner#endif
791