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