diff options
author | Ted Kremenek <kremenek@apple.com> | 2008-06-30 16:57:41 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2008-06-30 16:57:41 +0000 |
commit | e19f449661a7d7f31a2ef0f86d21c232e583608b (patch) | |
tree | cb6b0a9e8deaa3f0cab9ce874c525846eb2a9f73 /lib/Analysis/CFRefCount.cpp | |
parent | d28f8e48e15c3c2f2f8b714a412f247466815538 (diff) |
Added "Autorelease" ArgEffect to better simulate "autorelease" messages. Right
now this does the same thing as "MayEscape", but more functionality will go in
here shortly.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52904 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Analysis/CFRefCount.cpp')
-rw-r--r-- | lib/Analysis/CFRefCount.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/lib/Analysis/CFRefCount.cpp b/lib/Analysis/CFRefCount.cpp index 03e886499b..60a1a6a9c9 100644 --- a/lib/Analysis/CFRefCount.cpp +++ b/lib/Analysis/CFRefCount.cpp @@ -100,7 +100,7 @@ namespace { /// ArgEffect is used to summarize a function/method call's effect on a /// particular argument. enum ArgEffect { IncRef, DecRef, DoNothing, StopTracking, MayEscape, - SelfOwn }; + SelfOwn, Autorelease }; /// ArgEffects summarizes the effects of a function/method call on all of /// its arguments. @@ -876,7 +876,7 @@ void RetainSummaryManager::InitializeMethodSummaries() { addNSObjectMethSummary(GetNullarySelector("drain", Ctx), Summ); // Create the "autorelease" selector. - Summ = getPersistentSummary(E, isGCEnabled() ? DoNothing : StopTracking); + Summ = getPersistentSummary(E, isGCEnabled() ? DoNothing : Autorelease); addNSObjectMethSummary(GetNullarySelector("autorelease", Ctx), Summ); // For NSWindow, allocated objects are (initially) self-owned. @@ -1818,7 +1818,7 @@ CFRefCount::RefBindings CFRefCount::Update(RefBindings B, SymbolID sym, default: assert (false && "Unhandled CFRef transition."); - + case Autorelease: case MayEscape: if (V.getKind() == RefVal::Owned) { V = V ^ RefVal::NotOwned; @@ -1835,7 +1835,7 @@ CFRefCount::RefBindings CFRefCount::Update(RefBindings B, SymbolID sym, } return B; - + case StopTracking: return RefBFactory.Remove(B, sym); |