diff options
author | Jordan Rose <jordan_rose@apple.com> | 2012-07-02 19:27:43 +0000 |
---|---|---|
committer | Jordan Rose <jordan_rose@apple.com> | 2012-07-02 19:27:43 +0000 |
commit | eec1539a31e813c884c94942bf2ff8c183ff9487 (patch) | |
tree | ae201790dcfce199f7fdd55ea615074b0184670d /clang/lib/StaticAnalyzer/Core/ExprEngine.cpp | |
parent | 742920c8e7466e72220c571536e0aea21890233c (diff) | |
download | bcm5719-llvm-eec1539a31e813c884c94942bf2ff8c183ff9487.tar.gz bcm5719-llvm-eec1539a31e813c884c94942bf2ff8c183ff9487.zip |
[analyzer] Convert RetainCountChecker to use CallEvent as much as possible.
This ended allowing quite a bit of cleanup, and some minor changes.
- CallEvent makes it easy to use hasNonZeroCallbackArg more aggressively, which
we check in order to avoid false positives with callbacks that might release
the object.
- In order to support this for functions which consume their arguments, there
are two new ArgEffects: DecRefAndStopTracking and DecRefMsgAndStopTracking.
These act just like StopTracking, except that if the object only had a
return count of +1 it's now considered released instead (so we still get
use-after-free messages).
- On the plus side, we no longer have to special-case
+[NSObject performSelector:withObject:afterDelay:] and friends.
- The use of IdentifierInfos in the method summary cache is now hidden; only
the ObjCInterfaceDecl gets passed around most of the time.
- Since we cache all "simple" summaries and check every function call, there is
no real benefit to having NULL stand in for default summaries anymore.
- Whitespace, unused methods, etc.
Even more simplification to come when we get check::postCall and can unify all
these other post* checks.
llvm-svn: 159555
Diffstat (limited to 'clang/lib/StaticAnalyzer/Core/ExprEngine.cpp')
0 files changed, 0 insertions, 0 deletions