diff options
author | Ted Kremenek <kremenek@apple.com> | 2009-03-04 23:30:42 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2009-03-04 23:30:42 +0000 |
commit | 3aa7ecd53f8e4965188fbbf33a82380c798f309c (patch) | |
tree | bf858a711a90a90d5141bfbcc07d8a1bb8d482e6 | |
parent | bbf842bb27c6e964359111b6a72a5f948c56fc41 (diff) |
For now, do not track NSWindow objects and it's subclasses.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66107 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Analysis/CFRefCount.cpp | 13 | ||||
-rw-r--r-- | test/Analysis/NSWindow.m | 3 |
2 files changed, 15 insertions, 1 deletions
diff --git a/lib/Analysis/CFRefCount.cpp b/lib/Analysis/CFRefCount.cpp index 7e6507cbe5..08f4b64f76 100644 --- a/lib/Analysis/CFRefCount.cpp +++ b/lib/Analysis/CFRefCount.cpp @@ -645,6 +645,13 @@ private: void addNSObjectMethSummary(Selector S, RetainSummary *Summ) { ObjCMethodSummaries[S] = Summ; } + + void addClassMethSummary(const char* Cls, const char* nullaryName, + RetainSummary *Summ) { + IdentifierInfo* ClsII = &Ctx.Idents.get(Cls); + Selector S = GetNullarySelector(nullaryName, Ctx); + ObjCClassMethodSummaries[ObjCSummaryKey(ClsII, S)] = Summ; + } void addInstMethSummary(const char* Cls, const char* nullaryName, RetainSummary *Summ) { @@ -1150,6 +1157,11 @@ void RetainSummaryManager::InitializeMethodSummaries() { // self-own themselves. However, they only do this once they are displayed. // Thus, we need to track an NSWindow's display status. // This is tracked in <rdar://problem/6062711>. + // See also http://llvm.org/bugs/show_bug.cgi?id=3714. + addClassMethSummary("NSWindow", "alloc", + getPersistentSummary(RetEffect::MakeNoRet())); + +#if 0 RetainSummary *NSWindowSumm = getPersistentSummary(RetEffect::MakeReceiverAlias(), StopTracking); @@ -1158,6 +1170,7 @@ void RetainSummaryManager::InitializeMethodSummaries() { addInstMethSummary("NSWindow", NSWindowSumm, "initWithContentRect", "styleMask", "backing", "defer", "screen", NULL); +#endif // For NSPanel (which subclasses NSWindow), allocated objects are not // self-owned. diff --git a/test/Analysis/NSWindow.m b/test/Analysis/NSWindow.m index 4cab918f50..6bddaeb695 100644 --- a/test/Analysis/NSWindow.m +++ b/test/Analysis/NSWindow.m @@ -84,5 +84,6 @@ void f2b() { void f3() { - NSWindow *window = [NSWindow alloc]; // expected-warning{{never read}} expected-warning{{leak}} + // FIXME: For now we don't track NSWindow. + NSWindow *window = [NSWindow alloc]; // expected-warning{{never read}} } |