diff options
author | Meador Inge <meadori@codesourcery.com> | 2012-11-22 15:36:42 +0000 |
---|---|---|
committer | Meador Inge <meadori@codesourcery.com> | 2012-11-22 15:36:42 +0000 |
commit | 6098c6b56be5a8e3c7ac5273110589f251b03573 (patch) | |
tree | eb5b57dc9ff99216d404fffac8506326c2fa9b90 /lib/Target | |
parent | d59c07255e2dc8471a0049d6c8466cd0eba13cb9 (diff) | |
download | llvm-6098c6b56be5a8e3c7ac5273110589f251b03573.tar.gz llvm-6098c6b56be5a8e3c7ac5273110589f251b03573.tar.bz2 llvm-6098c6b56be5a8e3c7ac5273110589f251b03573.tar.xz |
Add more functions to the target library information.
I discovered a few more missing functions while migrating optimizations
from the simplify-libcalls pass to the instcombine (I already added some
in r167659).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168501 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target')
-rw-r--r-- | lib/Target/TargetLibraryInfo.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/lib/Target/TargetLibraryInfo.cpp b/lib/Target/TargetLibraryInfo.cpp index 6d4eab1204..3a9ace4c52 100644 --- a/lib/Target/TargetLibraryInfo.cpp +++ b/lib/Target/TargetLibraryInfo.cpp @@ -39,6 +39,7 @@ const char* TargetLibraryInfo::StandardNames[LibFunc::NumLibFuncs] = "__cxa_guard_acquire", "__cxa_guard_release", "__memcpy_chk", + "abs", "acos", "acosf", "acosh", @@ -91,6 +92,9 @@ const char* TargetLibraryInfo::StandardNames[LibFunc::NumLibFuncs] = "fabs", "fabsf", "fabsl", + "ffs", + "ffsl", + "ffsll", "fiprintf", "floor", "floorf", @@ -98,11 +102,16 @@ const char* TargetLibraryInfo::StandardNames[LibFunc::NumLibFuncs] = "fmod", "fmodf", "fmodl", + "fprintf", "fputc", "fputs", "free", "fwrite", "iprintf", + "isascii", + "isdigit", + "labs", + "llabs", "log", "log10", "log10f", @@ -132,6 +141,7 @@ const char* TargetLibraryInfo::StandardNames[LibFunc::NumLibFuncs] = "pow", "powf", "powl", + "printf", "putchar", "puts", "realloc", @@ -149,6 +159,7 @@ const char* TargetLibraryInfo::StandardNames[LibFunc::NumLibFuncs] = "sinhl", "sinl", "siprintf", + "sprintf", "sqrt", "sqrtf", "sqrtl", @@ -182,6 +193,7 @@ const char* TargetLibraryInfo::StandardNames[LibFunc::NumLibFuncs] = "tanhf", "tanhl", "tanl", + "toascii", "trunc", "truncf", "truncl", @@ -327,6 +339,41 @@ static void initialize(TargetLibraryInfo &TLI, const Triple &T, // Win32 does *not* provide stpcpy. It is provided on POSIX systems: // http://pubs.opengroup.org/onlinepubs/9699919799/functions/stpcpy.html TLI.setUnavailable(LibFunc::stpcpy); + + // Win32 does *not* provide ffs. It is provided on POSIX systems: + // http://pubs.opengroup.org/onlinepubs/009695399/functions/ffs.html + TLI.setUnavailable(LibFunc::ffs); + + // Win32 does *not* provide llabs. It is defined in ISO/IEC 9899:1999, + // but Visual C++ does not support it. + TLI.setUnavailable(LibFunc::llabs); + } + + // ffsl is available on at least Darwin, Mac OS X, iOS, FreeBSD, and + // Linux (GLIBC): + // http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man3/ffsl.3.html + // http://svn.freebsd.org/base/user/eri/pf45/head/lib/libc/string/ffsl.c + // http://www.gnu.org/software/gnulib/manual/html_node/ffsl.html + switch (T.getOS()) { + case Triple::Darwin: + case Triple::MacOSX: + case Triple::IOS: + case Triple::FreeBSD: + case Triple::Linux: + break; + default: + TLI.setUnavailable(LibFunc::ffsl); + } + + // ffsll is available on at least FreeBSD and Linux (GLIBC): + // http://svn.freebsd.org/base/user/eri/pf45/head/lib/libc/string/ffsll.c + // http://www.gnu.org/software/gnulib/manual/html_node/ffsll.html + switch (T.getOS()) { + case Triple::FreeBSD: + case Triple::Linux: + break; + default: + TLI.setUnavailable(LibFunc::ffsll); } } |