]> granicus.if.org Git - clang/commitdiff
[analyzer] __mempcpy_chk is the same as mempcpy (at least to CStringChecker)
authorJordy Rose <jediknil@belkadan.com>
Fri, 3 Jun 2011 23:42:56 +0000 (23:42 +0000)
committerJordy Rose <jediknil@belkadan.com>
Fri, 3 Jun 2011 23:42:56 +0000 (23:42 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132605 91177308-0d34-0410-b5e6-96231b3b80d8

lib/StaticAnalyzer/Checkers/CStringChecker.cpp
test/Analysis/bstring.c

index 8eb6d46f8d84323318c33ebb9a3292274091f09e..0eec34a9b4902d9891be81268fd9fb0191b20e25 100644 (file)
@@ -1237,7 +1237,7 @@ bool CStringChecker::evalCall(const CallExpr *CE, CheckerContext &C) const {
 
   FnCheck evalFunction = llvm::StringSwitch<FnCheck>(Name)
     .Cases("memcpy", "__memcpy_chk", &CStringChecker::evalMemcpy)
-    .Case("mempcpy", &CStringChecker::evalMempcpy)
+    .Cases("mempcpy", "__mempcpy_chk", &CStringChecker::evalMempcpy)
     .Cases("memcmp", "bcmp", &CStringChecker::evalMemcmp)
     .Cases("memmove", "__memmove_chk", &CStringChecker::evalMemmove)
     .Cases("strcpy", "__strcpy_chk", &CStringChecker::evalStrcpy)
index 1f6839d3370359444ddbff997843ab418e6e856d..d74be0ffce5e631271d67760970f93d507e28f83 100644 (file)
@@ -140,9 +140,22 @@ void memcpy13() {
 // mempcpy()
 //===----------------------------------------------------------------------===
 
+#ifdef VARIANT
+
+#define __mempcpy_chk BUILTIN(__mempcpy_chk)
+void *__mempcpy_chk(void *restrict s1, const void *restrict s2, size_t n,
+                   size_t destlen);
+
+#define mempcpy(a,b,c) __mempcpy_chk(a,b,c,(size_t)-1)
+
+#else /* VARIANT */
+
 #define mempcpy BUILTIN(mempcpy)
 void *mempcpy(void *restrict s1, const void *restrict s2, size_t n);
 
+#endif /* VARIANT */
+
+
 void mempcpy0 () {
   char src[] = {1, 2, 3, 4};
   char dst[5] = {0};