r178388 - [analyzer] Enabled unix.Malloc checker.

Anton Yartsev anton.yartsev at gmail.com
Fri Mar 29 17:50:37 PDT 2013


Author: ayartsev
Date: Fri Mar 29 19:50:37 2013
New Revision: 178388

URL: http://llvm.org/viewvc/llvm-project?rev=178388&view=rev
Log:
[analyzer] Enabled unix.Malloc checker.
+ Refactoring.

Added:
    cfe/trunk/test/Analysis/NewDelete-intersections.mm
Modified:
    cfe/trunk/test/Analysis/NewDelete-checker-test.cpp
    cfe/trunk/test/Analysis/NewDelete-custom.cpp
    cfe/trunk/test/Analysis/NewDelete-path-notes.cpp
    cfe/trunk/test/Analysis/NewDelete-variadic.cpp

Modified: cfe/trunk/test/Analysis/NewDelete-checker-test.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/NewDelete-checker-test.cpp?rev=178388&r1=178387&r2=178388&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/NewDelete-checker-test.cpp (original)
+++ cfe/trunk/test/Analysis/NewDelete-checker-test.cpp Fri Mar 29 19:50:37 2013
@@ -1,10 +1,8 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,cplusplus.NewDelete -analyzer-store region -std=c++11 -fblocks -verify %s
+// RUN: %clang_cc1 -analyze -analyzer-checker=core,cplusplus.NewDelete,unix.Malloc -analyzer-store region -std=c++11 -fblocks -verify %s
 #include "Inputs/system-header-simulator-cxx.h"
-#include "Inputs/system-header-simulator-objc.h"
 
 typedef __typeof__(sizeof(int)) size_t;
 extern "C" void *malloc(size_t);
-extern "C" void free(void *);
 int *global;
 
 //------------------
@@ -108,57 +106,6 @@ void testAllocDeallocNames() {
   delete[] (++p); // expected-warning{{Argument to 'delete[]' is offset by 4 bytes from the start of memory allocated by 'new[]'}}
 }
 
-//----------------------------------------------------------------------------
-// Check for intersections with unix.Malloc and unix.MallocWithAnnotations 
-// checkers bounded with cplusplus.NewDelete.
-//----------------------------------------------------------------------------
-
-// malloc()/free() are subjects of unix.Malloc and unix.MallocWithAnnotations
-void testMallocFreeNoWarn() {
-  int i;
-  free(&i); // no warn
-
-  int *p1 = (int *)malloc(sizeof(int));
-  free(++p1); // no warn
-
-  int *p2 = (int *)malloc(sizeof(int));
-  free(p2);
-  free(p2); // no warn
-
-  int *p3 = (int *)malloc(sizeof(int)); // no warn
-}
-
-//----- Test free standard new
-void testFreeOpNew() {
-  void *p = operator new(0);
-  free(p);
-} // expected-warning{{Memory is never released; potential leak}}
-// FIXME: Pointer should escape
-
-void testFreeNewExpr() {
-  int *p = new int;
-  free(p);
-} // expected-warning{{Memory is never released; potential leak}}
-// FIXME: Pointer should escape
-
-void testObjcFreeNewed() {
-  int *p = new int;
-  NSData *nsdata = [NSData dataWithBytesNoCopy:p length:sizeof(int) freeWhenDone:1]; // expected-warning{{Memory is never released; potential leak}}
-}
-// FIXME: Pointer should escape
-
-void testFreeAfterDelete() {
-  int *p = new int;  
-  delete p;
-  free(p); // expected-warning{{Use of memory after it is freed}}
-}
-
-void testStandardPlacementNewAfterDelete() {
-  int *p = new int;  
-  delete p;
-  p = new(p) int; // expected-warning{{Use of memory after it is freed}}
-}
-
 //--------------------------------
 // Test escape of newed const pointer. Note, a const pointer can be deleted.
 //--------------------------------
@@ -196,5 +143,3 @@ void testConstEscapePlacementNew() {
   void *y = new (x) int;
   escapeVoidPtr(y);
 } // no-warning
-
-

Modified: cfe/trunk/test/Analysis/NewDelete-custom.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/NewDelete-custom.cpp?rev=178388&r1=178387&r2=178388&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/NewDelete-custom.cpp (original)
+++ cfe/trunk/test/Analysis/NewDelete-custom.cpp Fri Mar 29 19:50:37 2013
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,cplusplus.NewDelete -analyzer-store region -std=c++11 -fblocks -verify %s
+// RUN: %clang_cc1 -analyze -analyzer-checker=core,cplusplus.NewDelete,unix.Malloc -analyzer-store region -std=c++11 -fblocks -verify %s
 #include "Inputs/system-header-simulator-cxx.h"
 
 void *allocator(std::size_t size);
@@ -22,8 +22,8 @@ void testNewMethod() {
 } // expected-warning{{Memory is never released; potential leak}}
 
 void testOpNewArray() {
-  void *p = operator new[](0);
-} //FIXME: expected 'Memory is never released; potential leak'
+  void *p = operator new[](0); // call is inlined, no warn
+}
 
 void testNewExprArray() {
   int *p = new int[0];
@@ -31,8 +31,8 @@ void testNewExprArray() {
 
 //----- Custom non-placement operators
 void testOpNew() {
-  void *p = operator new(0);
-} //FIXME: expected 'Memory is never released; potential leak'
+  void *p = operator new(0); // call is inlined, no warn
+}
 
 void testNewExpr() {
   int *p = new int;

Added: cfe/trunk/test/Analysis/NewDelete-intersections.mm
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/NewDelete-intersections.mm?rev=178388&view=auto
==============================================================================
--- cfe/trunk/test/Analysis/NewDelete-intersections.mm (added)
+++ cfe/trunk/test/Analysis/NewDelete-intersections.mm Fri Mar 29 19:50:37 2013
@@ -0,0 +1,59 @@
+// RUN: %clang_cc1 -analyze -analyzer-checker=core,cplusplus.NewDelete -analyzer-store region -std=c++11 -fblocks -verify %s
+#include "Inputs/system-header-simulator-cxx.h"
+#include "Inputs/system-header-simulator-objc.h"
+
+typedef __typeof__(sizeof(int)) size_t;
+extern "C" void *malloc(size_t);
+extern "C" void free(void *);
+//int *global;
+
+//----------------------------------------------------------------------------
+// Check for intersections with unix.Malloc and unix.MallocWithAnnotations 
+// checkers bounded with cplusplus.NewDelete.
+//----------------------------------------------------------------------------
+
+// malloc()/free() are subjects of unix.Malloc and unix.MallocWithAnnotations
+void testMallocFreeNoWarn() {
+  int i;
+  free(&i); // no warn
+
+  int *p1 = (int *)malloc(sizeof(int));
+  free(++p1); // no warn
+
+  int *p2 = (int *)malloc(sizeof(int));
+  free(p2);
+  free(p2); // no warn
+
+  int *p3 = (int *)malloc(sizeof(int)); // no warn
+}
+
+//----- Test free standard new
+void testFreeOpNew() {
+  void *p = operator new(0);
+  free(p);
+} // expected-warning{{Memory is never released; potential leak}}
+// FIXME: Pointer should escape
+
+void testFreeNewExpr() {
+  int *p = new int;
+  free(p);
+} // expected-warning{{Memory is never released; potential leak}}
+// FIXME: Pointer should escape
+
+void testObjcFreeNewed() {
+  int *p = new int;
+  NSData *nsdata = [NSData dataWithBytesNoCopy:p length:sizeof(int) freeWhenDone:1]; // expected-warning{{Memory is never released; potential leak}}
+}
+// FIXME: Pointer should escape
+
+void testFreeAfterDelete() {
+  int *p = new int;  
+  delete p;
+  free(p); // expected-warning{{Use of memory after it is freed}}
+}
+
+void testStandardPlacementNewAfterDelete() {
+  int *p = new int;  
+  delete p;
+  p = new(p) int; // expected-warning{{Use of memory after it is freed}}
+}

Modified: cfe/trunk/test/Analysis/NewDelete-path-notes.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/NewDelete-path-notes.cpp?rev=178388&r1=178387&r2=178388&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/NewDelete-path-notes.cpp (original)
+++ cfe/trunk/test/Analysis/NewDelete-path-notes.cpp Fri Mar 29 19:50:37 2013
@@ -1,5 +1,5 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=cplusplus.NewDelete -analyzer-output=text -verify %s
-// RUN: %clang_cc1 -analyze -analyzer-checker=cplusplus.NewDelete -analyzer-output=plist %s -o %t.plist
+// RUN: %clang_cc1 -analyze -analyzer-checker=cplusplus.NewDelete,unix.Malloc -analyzer-output=text -verify %s
+// RUN: %clang_cc1 -analyze -analyzer-checker=cplusplus.NewDelete,unix.Malloc -analyzer-output=plist %s -o %t.plist
 // RUN: FileCheck --input-file=%t.plist %s
 
 void test() {

Modified: cfe/trunk/test/Analysis/NewDelete-variadic.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/NewDelete-variadic.cpp?rev=178388&r1=178387&r2=178388&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/NewDelete-variadic.cpp (original)
+++ cfe/trunk/test/Analysis/NewDelete-variadic.cpp Fri Mar 29 19:50:37 2013
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -analyze -analyzer-checker=core,cplusplus.NewDelete -analyzer-store region -std=c++11 -fblocks -verify %s
+// RUN: %clang_cc1 -analyze -analyzer-checker=core,cplusplus.NewDelete,unix.Malloc -analyzer-store region -std=c++11 -fblocks -verify %s
 // expected-no-diagnostics
 
 namespace std {





More information about the cfe-commits mailing list