summaryrefslogtreecommitdiffstats
path: root/clang/test/Analysis/malloc.c
diff options
context:
space:
mode:
authorAnna Zaks <ganna@apple.com>2013-02-06 00:01:14 +0000
committerAnna Zaks <ganna@apple.com>2013-02-06 00:01:14 +0000
commit258f9357ef613372d5b5f96d0a9f7f98173dbc3e (patch)
treef7869e8d95e3b4ba5627e9edb3a74bdea94cd99d /clang/test/Analysis/malloc.c
parentae89a0fbc24aa7cdc1c35aa1b55d3685f7067f4a (diff)
downloadbcm5719-llvm-258f9357ef613372d5b5f96d0a9f7f98173dbc3e.tar.gz
bcm5719-llvm-258f9357ef613372d5b5f96d0a9f7f98173dbc3e.zip
[analyzer]Revert part of r161511; suppresses leak false positives in C++
This is a "quick fix". The underlining issue is that when a const pointer to a struct is passed into a function, we do not invalidate the pointer fields. This results in false positives that are common in C++ (since copy constructors are prevalent). (Silences two llvm false positives.) llvm-svn: 174468
Diffstat (limited to 'clang/test/Analysis/malloc.c')
-rw-r--r--clang/test/Analysis/malloc.c40
1 files changed, 22 insertions, 18 deletions
diff --git a/clang/test/Analysis/malloc.c b/clang/test/Analysis/malloc.c
index 3e5f914e9d9..ed2d8e9d50a 100644
--- a/clang/test/Analysis/malloc.c
+++ b/clang/test/Analysis/malloc.c
@@ -530,12 +530,6 @@ int *testMalloc3() {
return y; // no-warning
}
-void testStructLeak() {
- StructWithPtr St;
- St.memP = malloc(12);
- return; // expected-warning {{Memory is never released; potential leak of memory pointed to by 'St.memP'}}
-}
-
void testElemRegion1() {
char *x = (void*)malloc(2);
int *ix = (int*)x;
@@ -934,18 +928,6 @@ int cmpHeapAllocationToUnknown() {
return 0;
}
-void localArrayTest() {
- char *p = (char*)malloc(12);
- char *ArrayL[12];
- ArrayL[0] = p;
-} // expected-warning {{leak}}
-
-void localStructTest() {
- StructWithPtr St;
- StructWithPtr *pSt = &St;
- pSt->memP = malloc(12);
-} // expected-warning{{Memory is never released; potential leak}}
-
#ifdef __INTPTR_TYPE__
// Test double assignment through integers.
typedef __INTPTR_TYPE__ intptr_t;
@@ -1053,3 +1035,25 @@ void testMallocWithParam(int **p) {
void testMallocWithParam_2(int **p) {
*p = (int*) malloc(sizeof(int));
}
+
+// Pending on removal of the escaping on assignment to struct fields.
+void testStructLeak() {
+ StructWithPtr St;
+ St.memP = malloc(12);
+ return; // missing warning
+}
+
+void localArrayTest() {
+ char *p = (char*)malloc(12);
+ char *ArrayL[12];
+ ArrayL[0] = p;
+} // missing warning
+
+void localStructTest() {
+ StructWithPtr St;
+ StructWithPtr *pSt = &St;
+ pSt->memP = malloc(12);
+} // missing warning
+
+
+
OpenPOWER on IntegriCloud