[llvm] TargetLibraryInfo: Add DragonFly function list (PR #150885)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Jul 27 23:28:00 PDT 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-llvm-analysis
Author: Brad Smith (brad0)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/150885.diff
1 Files Affected:
- (modified) llvm/lib/Analysis/TargetLibraryInfo.cpp (+23-5)
``````````diff
diff --git a/llvm/lib/Analysis/TargetLibraryInfo.cpp b/llvm/lib/Analysis/TargetLibraryInfo.cpp
index 6e9276669eb70..56f3160607746 100644
--- a/llvm/lib/Analysis/TargetLibraryInfo.cpp
+++ b/llvm/lib/Analysis/TargetLibraryInfo.cpp
@@ -115,7 +115,7 @@ static bool hasBcmp(const Triple &TT) {
return TT.isGNUEnvironment() || TT.isMusl();
// Both NetBSD and OpenBSD are planning to remove the function. Windows does
// not have it.
- return TT.isOSFreeBSD() || TT.isOSSolaris();
+ return TT.isOSFreeBSD() || TT.isOSDragonFly() || TT.isOSSolaris();
}
static bool isCallingConvCCompatible(CallingConv::ID CC, const Triple &TT,
@@ -605,10 +605,11 @@ static void initializeLibCalls(TargetLibraryInfoImpl &TLI, const Triple &T,
TLI.setUnavailable(LibFunc_exp10l);
}
- // ffsl is available on at least Darwin, Mac OS X, iOS, FreeBSD, and
+ // ffsl is available on at least Darwin, Mac OS X, iOS, FreeBSD, DragonFly and
// Linux (GLIBC):
// http://developer.apple.com/library/mac/#documentation/Darwin/Reference/ManPages/man3/ffsl.3.html
// http://svn.freebsd.org/base/head/lib/libc/string/ffsl.c
+ // https://gitweb.dragonflybsd.org/?p=dragonfly.git;a=blob;f=lib/libc/string/ffsl.c
// http://www.gnu.org/software/gnulib/manual/html_node/ffsl.html
switch (T.getOS()) {
case Triple::Darwin:
@@ -618,14 +619,16 @@ static void initializeLibCalls(TargetLibraryInfoImpl &TLI, const Triple &T,
case Triple::WatchOS:
case Triple::XROS:
case Triple::FreeBSD:
+ case Triple::DragonFly:
case Triple::Linux:
break;
default:
TLI.setUnavailable(LibFunc_ffsl);
}
- // ffsll is available on at least FreeBSD and Linux (GLIBC):
+ // ffsll is available on at least FreeBSD, DragonFly and Linux (GLIBC):
// http://svn.freebsd.org/base/head/lib/libc/string/ffsll.c
+ // https://gitweb.dragonflybsd.org/?p=dragonfly.git;a=blob;f=lib/libc/string/ffsll.c
// http://www.gnu.org/software/gnulib/manual/html_node/ffsll.html
switch (T.getOS()) {
case Triple::Darwin:
@@ -635,17 +638,21 @@ static void initializeLibCalls(TargetLibraryInfoImpl &TLI, const Triple &T,
case Triple::WatchOS:
case Triple::XROS:
case Triple::FreeBSD:
+ case Triple::DragonFly:
case Triple::Linux:
break;
default:
TLI.setUnavailable(LibFunc_ffsll);
}
- // The following functions are available on at least FreeBSD:
+ // The following functions are available on at least FreeBSD and DragonFly:
// http://svn.freebsd.org/base/head/lib/libc/string/fls.c
// http://svn.freebsd.org/base/head/lib/libc/string/flsl.c
// http://svn.freebsd.org/base/head/lib/libc/string/flsll.c
- if (!T.isOSFreeBSD()) {
+ // https://gitweb.dragonflybsd.org/?p=dragonfly.git;a=blob;f=lib/libc/string/fls.c
+ // https://gitweb.dragonflybsd.org/?p=dragonfly.git;a=blob;f=lib/libc/string/flsl.c
+ // https://gitweb.dragonflybsd.org/?p=dragonfly.git;a=blob;f=lib/libc/string/flsll.c
+ if (!T.isOSFreeBSD() && !T.isOSDragonFly()) {
TLI.setUnavailable(LibFunc_fls);
TLI.setUnavailable(LibFunc_flsl);
TLI.setUnavailable(LibFunc_flsll);
@@ -903,6 +910,17 @@ static void initializeLibCalls(TargetLibraryInfoImpl &TLI, const Triple &T,
TLI.setUnavailable(LibFunc_roundevenl);
}
+ if (T.isOSDragonFly()) {
+ TLI.setAvailable(LibFunc_fputc_unlocked);
+ TLI.setAvailable(LibFunc_fputs_unlocked);
+ TLI.setAvailable(LibFunc_fread_unlocked);
+ TLI.setAvailable(LibFunc_fwrite_unlocked);
+ TLI.setAvailable(LibFunc_getc_unlocked);
+ TLI.setAvailable(LibFunc_getchar_unlocked);
+ TLI.setAvailable(LibFunc_putc_unlocked);
+ TLI.setAvailable(LibFunc_putchar_unlocked);
+ }
+
// As currently implemented in clang, NVPTX code has no standard library to
// speak of. Headers provide a standard-ish library implementation, but many
// of the signatures are wrong -- for example, many libm functions are not
``````````
</details>
https://github.com/llvm/llvm-project/pull/150885
More information about the llvm-commits
mailing list