aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/TargetLibraryInfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Analysis/TargetLibraryInfo.cpp')
-rw-r--r--llvm/lib/Analysis/TargetLibraryInfo.cpp19
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() &&