summaryrefslogtreecommitdiffstats
path: root/clang/test/Analysis/dtor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/Analysis/dtor.cpp')
-rw-r--r--clang/test/Analysis/dtor.cpp25
1 files changed, 24 insertions, 1 deletions
diff --git a/clang/test/Analysis/dtor.cpp b/clang/test/Analysis/dtor.cpp
index 8d63cc47bed..5a14f3025d4 100644
--- a/clang/test/Analysis/dtor.cpp
+++ b/clang/test/Analysis/dtor.cpp
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-store region -analyzer-ipa=inlining -cfg-add-implicit-dtors -verify %s
+// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc -analyzer-store region -analyzer-ipa=inlining -cfg-add-implicit-dtors -cfg-add-initializers -verify %s
class A {
public:
@@ -11,3 +11,26 @@ public:
int main() {
A a;
}
+
+
+typedef __typeof(sizeof(int)) size_t;
+void *malloc(size_t);
+void free(void *);
+
+class SmartPointer {
+ void *X;
+public:
+ SmartPointer(void *x) : X(x) {}
+ ~SmartPointer() {
+ free(X);
+ }
+};
+
+void testSmartPointer() {
+ char *mem = (char*)malloc(4);
+ {
+ SmartPointer Deleter(mem);
+ // destructor called here
+ }
+ *mem = 0; // expected-warning{{Use of memory after it is freed}}
+}
OpenPOWER on IntegriCloud