diff options
| author | Jordan Rose <jordan_rose@apple.com> | 2013-01-14 18:58:33 +0000 |
|---|---|---|
| committer | Jordan Rose <jordan_rose@apple.com> | 2013-01-14 18:58:33 +0000 |
| commit | cb6a721920cbf5dad914221d7789466d6956204a (patch) | |
| tree | 2c6a55e1043a90ca40166a02f1f87062f5cc5592 /clang | |
| parent | d7931f70471d6ec68dc89cbf992aa6ac7cee9947 (diff) | |
| download | bcm5719-llvm-cb6a721920cbf5dad914221d7789466d6956204a.tar.gz bcm5719-llvm-cb6a721920cbf5dad914221d7789466d6956204a.zip | |
[analyzer] -drain is not an alias for -release.
This was previously added to support -[NSAutoreleasePool drain], which
behaves like -release under non-GC and "please collect" under GC. We're
not currently modeling the autorelease pool stack, though, so we can
just take this out entirely.
Fixes PR14927.
llvm-svn: 172444
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp | 4 | ||||
| -rw-r--r-- | clang/test/Analysis/retain-release.m | 15 |
2 files changed, 15 insertions, 4 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp index 02f8c25df48..f81168e3067 100644 --- a/clang/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp @@ -1570,10 +1570,6 @@ void RetainSummaryManager::InitializeMethodSummaries() { Summ = getPersistentSummary(NoRet, DecRefMsg); addNSObjectMethSummary(GetNullarySelector("release", Ctx), Summ); - // Create the "drain" selector. - Summ = getPersistentSummary(NoRet, isGCEnabled() ? DoNothing : DecRef); - addNSObjectMethSummary(GetNullarySelector("drain", Ctx), Summ); - // Create the -dealloc summary. Summ = getPersistentSummary(NoRet, Dealloc); addNSObjectMethSummary(GetNullarySelector("dealloc", Ctx), Summ); diff --git a/clang/test/Analysis/retain-release.m b/clang/test/Analysis/retain-release.m index 2b5a4adced9..1a9facd42f3 100644 --- a/clang/test/Analysis/retain-release.m +++ b/clang/test/Analysis/retain-release.m @@ -1938,6 +1938,21 @@ void test_CFPlugInInstanceCreate(CFUUIDRef factoryUUID, CFUUIDRef typeUUID) { CFPlugInInstanceCreate(kCFAllocatorDefault, factoryUUID, typeUUID); // no-warning } +//===----------------------------------------------------------------------===// +// PR14927: -drain only has retain-count semantics on NSAutoreleasePool. +//===----------------------------------------------------------------------===// + +@interface PR14927 : NSObject +- (void)drain; +@end + +void test_drain() { + PR14927 *obj = [[PR14927 alloc] init]; + [obj drain]; + [obj release]; // no-warning +} + + // CHECK: <key>diagnostics</key> // CHECK-NEXT: <array> // CHECK-NEXT: <dict> |

