diff options
author | Anton Yartsev <anton.yartsev@gmail.com> | 2013-03-30 00:50:37 +0000 |
---|---|---|
committer | Anton Yartsev <anton.yartsev@gmail.com> | 2013-03-30 00:50:37 +0000 |
commit | 3dfc33e3aca1209ba7dfd8dde7bba3e73502962f (patch) | |
tree | fac87b3cb8d0c351d050fc64b706a0aaa94fde54 /clang/test/Analysis/NewDelete-checker-test.cpp | |
parent | fa637577f999f94b3b591f22724100f596b4355e (diff) | |
download | bcm5719-llvm-3dfc33e3aca1209ba7dfd8dde7bba3e73502962f.tar.gz bcm5719-llvm-3dfc33e3aca1209ba7dfd8dde7bba3e73502962f.zip |
[analyzer] Enabled unix.Malloc checker.
+ Refactoring.
llvm-svn: 178388
Diffstat (limited to 'clang/test/Analysis/NewDelete-checker-test.cpp')
-rw-r--r-- | clang/test/Analysis/NewDelete-checker-test.cpp | 57 |
1 files changed, 1 insertions, 56 deletions
diff --git a/clang/test/Analysis/NewDelete-checker-test.cpp b/clang/test/Analysis/NewDelete-checker-test.cpp index 5311ff6fe76..2b01dfe5379 100644 --- a/clang/test/Analysis/NewDelete-checker-test.cpp +++ b/clang/test/Analysis/NewDelete-checker-test.cpp @@ -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 - - |