[prev in list] [next in list] [prev in thread] [next in thread]
List: cfe-commits
Subject: r174104 - [analyzer]RetainCount: Fix an autorelease related false positive.
From: Anna Zaks <ganna () apple ! com>
Date: 2013-01-31 22:36:17
Message-ID: 20130131223618.1FE882A6C071 () llvm ! org
[Download RAW message or body]
Author: zaks
Date: Thu Jan 31 16:36:17 2013
New Revision: 174104
URL: http://llvm.org/viewvc/llvm-project?rev=174104&view=rev
Log:
[analyzer]RetainCount: Fix an autorelease related false positive.
The Cnt variable is adjusted (incremented) for simplification of
checking logic. The increment should not be stored in the state.
Modified:
cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
cfe/trunk/test/Analysis/retain-release.m
Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp?rev=174104&r1=174103&r2=174104&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp Thu Jan 31 16:36:17 \
2013 @@ -3487,7 +3487,7 @@ RetainCountChecker::handleAutoreleaseCou
else
V = V ^ RefVal::NotOwned;
} else {
- V.setCount(Cnt - ACnt);
+ V.setCount(V.getCount() - ACnt);
V.setAutoreleaseCount(0);
}
return setRefBinding(state, Sym, V);
Modified: cfe/trunk/test/Analysis/retain-release.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/retain-release.m?rev=174104&r1=174103&r2=174104&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/retain-release.m (original)
+++ cfe/trunk/test/Analysis/retain-release.m Thu Jan 31 16:36:17 2013
@@ -1784,6 +1784,13 @@ extern id NSApp;
id contextObject = (id)contextInfo;
[contextObject release];
}
+
+- (id)copyAutoreleaseRadar13081402 {
+ id x = [[[NSString alloc] initWithUTF8String:"foo"] autorelease];
+ [x retain];
+ return x; // no warning
+}
+
@end
//===----------------------------------------------------------------------===//
// Test returning allocated memory in a struct.
@@ -1961,6 +1968,7 @@ void test_drain() {
}
+
// CHECK: <key>diagnostics</key>
// CHECK-NEXT: <array>
// CHECK-NEXT: <dict>
_______________________________________________
cfe-commits mailing list
cfe-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic