diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2021-12-02 21:02:54 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2021-12-02 21:02:54 +0000 |
commit | f65dcba83ce5035ab88a85fe17628b447eb56e1b (patch) | |
tree | 35f37bb72b3cfc6060193e66c76ee7c9478969b0 /llvm/lib/Analysis/TargetLibraryInfo.cpp | |
parent | 846a2208a8ab099f595fe7e8b2e6d54a7b5e67fb (diff) |
Diffstat (limited to 'llvm/lib/Analysis/TargetLibraryInfo.cpp')
-rw-r--r-- | llvm/lib/Analysis/TargetLibraryInfo.cpp | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/llvm/lib/Analysis/TargetLibraryInfo.cpp b/llvm/lib/Analysis/TargetLibraryInfo.cpp index 7326ba74c071..72fbd5ad3f68 100644 --- a/llvm/lib/Analysis/TargetLibraryInfo.cpp +++ b/llvm/lib/Analysis/TargetLibraryInfo.cpp @@ -166,8 +166,8 @@ static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, return; } - // memset_pattern16 is only available on iOS 3.0 and Mac OS X 10.5 and later. - // All versions of watchOS support it. + // memset_pattern{4,8,16} is only available on iOS 3.0 and Mac OS X 10.5 and + // later. All versions of watchOS support it. if (T.isMacOSX()) { // available IO unlocked variants on Mac OS X TLI.setAvailable(LibFunc_getc_unlocked); @@ -175,12 +175,20 @@ static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, TLI.setAvailable(LibFunc_putc_unlocked); TLI.setAvailable(LibFunc_putchar_unlocked); - if (T.isMacOSXVersionLT(10, 5)) + if (T.isMacOSXVersionLT(10, 5)) { + TLI.setUnavailable(LibFunc_memset_pattern4); + TLI.setUnavailable(LibFunc_memset_pattern8); TLI.setUnavailable(LibFunc_memset_pattern16); + } } else if (T.isiOS()) { - if (T.isOSVersionLT(3, 0)) + if (T.isOSVersionLT(3, 0)) { + TLI.setUnavailable(LibFunc_memset_pattern4); + TLI.setUnavailable(LibFunc_memset_pattern8); TLI.setUnavailable(LibFunc_memset_pattern16); + } } else if (!T.isWatchOS()) { + TLI.setUnavailable(LibFunc_memset_pattern4); + TLI.setUnavailable(LibFunc_memset_pattern8); TLI.setUnavailable(LibFunc_memset_pattern16); } @@ -684,7 +692,6 @@ static void initialize(TargetLibraryInfoImpl &TLI, const Triple &T, TLI.setUnavailable(LibFunc_strcat_chk); TLI.setUnavailable(LibFunc_strcpy_chk); TLI.setUnavailable(LibFunc_strlcat_chk); - TLI.setUnavailable(LibFunc_strlcat_chk); TLI.setUnavailable(LibFunc_strlcpy_chk); TLI.setUnavailable(LibFunc_strlen_chk); TLI.setUnavailable(LibFunc_strncat_chk); @@ -1523,6 +1530,8 @@ bool TargetLibraryInfoImpl::isValidProtoForLibFunc(const FunctionType &FTy, FTy.getParamType(2)->isPointerTy() && FTy.getParamType(3)->isIntegerTy()); + case LibFunc_memset_pattern4: + case LibFunc_memset_pattern8: case LibFunc_memset_pattern16: return (!FTy.isVarArg() && NumParams == 3 && FTy.getParamType(0)->isPointerTy() && |