[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