[cfe-dev] Replacing the analyzer's CallOrObjCMessage with something more general

Jordan Rose jordan_rose at apple.com
Tue Jun 26 17:41:40 PDT 2012


(copying to list with compressed patches, because the series of patches resulted in a 400kb message)

All right, I think this ready to be merged into trunk!

Since there's really way too much here, I'll try to condense the important things:
- CallEvent is a wrapper around some part of the source that triggers a call to something (function, constructor, method, etc.)
- CallEvent is path-sensitive; it captures the state and location context where the call happens.
- CallEvent and its subclasses replace CallOrObjCMessage everywhere possible.
- CallEvent subclass ObjCMethodCall and its subclasses replace ObjCMessage everywhere possible.
- Inlining for C++ constructors is now totally feasible, but still disabled because we don't track destructors yet.
- New checker callbacks check::preCall and check::postCall should be called any time ExprEngine processes something that could call outside code.
- Calls.h attached for your convenience; everything else is in the ten patch files. (Sorry! If you'd prefer per-patch review or something, we can do that too.)

% git log1
5ed29a5 [analyzer] Convert existing checkers to use check::preCall and check::postCall.
a1940c6 [analyzer] Add generic preCall and postCall checks.
ef97dfa [analyzer] Convert CXXConstructExpr over to use CallEvent for evaluation.
ebf2c52 [analyzer] Use CallEvent for inlining and call default-evaluation.
94dde7d [analyzer] Finish replacing ObjCMessage with ObjCMethodDecl and friends.
7afaef7 [analyzer] Begin replacing ObjCMessage with ObjCMethodCall and friends.
ba3cb76 [analyzer] Move the last bits of CallOrObjCMessage over to CallEvent.
321bb87 [analyzer] Convert CallAndMessageChecker and ObjCSelfInitChecker to CallEvent.
30502d6 [analyzer] Convert RetainCountChecker to use CallEvent as much as possible.
bc61f9d [analyzer] Add a new abstraction over all types of calls: CallEvent


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20120626/ccc353c0/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Calls.h
Type: application/octet-stream
Size: 13658 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20120626/ccc353c0/attachment.obj>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20120626/ccc353c0/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Patches.zip
Type: application/zip
Size: 69501 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20120626/ccc353c0/attachment.zip>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20120626/ccc353c0/attachment-0002.html>


More information about the cfe-dev mailing list