r349683 - [analyzer] CStringChecker: Add the forgotten test file.
Artem Dergachev via cfe-commits
cfe-commits at lists.llvm.org
Wed Dec 19 13:51:59 PST 2018
Author: dergachev
Date: Wed Dec 19 13:51:59 2018
New Revision: 349683
URL: http://llvm.org/viewvc/llvm-project?rev=349683&view=rev
Log:
[analyzer] CStringChecker: Add the forgotten test file.
Differential Revision: https://reviews.llvm.org/D55873
rdar://problem/45366551
Added:
cfe/trunk/test/Analysis/string.cpp
Added: cfe/trunk/test/Analysis/string.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/string.cpp?rev=349683&view=auto
==============================================================================
--- cfe/trunk/test/Analysis/string.cpp (added)
+++ cfe/trunk/test/Analysis/string.cpp Wed Dec 19 13:51:59 2018
@@ -0,0 +1,28 @@
+// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix -verify %s
+
+// expected-no-diagnostics
+
+// Test functions that are called "memcpy" but aren't the memcpy
+// we're looking for. Unfortunately, this test cannot be put into
+// a namespace. The out-of-class weird memcpy needs to be recognized
+// as a normal C function for the test to make sense.
+typedef __typeof(sizeof(int)) size_t;
+void *memcpy(void *, const void *, size_t);
+
+struct S {
+ static S s1, s2;
+
+ // A weird overload within the class that accepts a structure reference
+ // instead of a pointer.
+ void memcpy(void *, const S &, size_t);
+ void test_in_class_weird_memcpy() {
+ memcpy(this, s2, 1); // no-crash
+ }
+};
+
+// A similarly weird overload outside of the class.
+void *memcpy(void *, const S &, size_t);
+
+void test_out_of_class_weird_memcpy() {
+ memcpy(&S::s1, S::s2, 1); // no-crash
+}
More information about the cfe-commits
mailing list