summaryrefslogtreecommitdiffstats
path: root/clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2012-07-02 19:27:43 +0000
committerJordan Rose <jordan_rose@apple.com>2012-07-02 19:27:43 +0000
commiteec1539a31e813c884c94942bf2ff8c183ff9487 (patch)
treeae201790dcfce199f7fdd55ea615074b0184670d /clang/lib/StaticAnalyzer/Core/ExprEngine.cpp
parent742920c8e7466e72220c571536e0aea21890233c (diff)
downloadbcm5719-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
OpenPOWER on IntegriCloud