[cfe-dev] Removing "TransferFuncs" from the analyzer
Ted Kremenek
kremenek at apple.com
Fri Jul 15 00:14:43 PDT 2011
On Jul 14, 2011, at 10:21 PM, Ted Kremenek wrote:
>> - CFBugReports use function call summaries to show the retain/release history of a leaked object. Function summaries are currently associated with ExplodedNodes in a DenseMap. In addition to being somewhat inefficient (summaries for calls that have nothing to do with ref-counting are also saved), Checkers are const, and so can't store summaries in a mutable data structure. (Marking the map 'mutable' doesn't feel like the right solution.) I don't have a solution for this.
>
> I don't actually see an issue here, but I recognize your concerns. Let's separate your two statements.
>
> First, the primary and original role of the function summaries is to memoize the behavior of a function/method call for quick application during evalCall. It's a computational hack. I should add that Checkers are not strictly const. They are allowed to contain data. What they shouldn't record is data specific to analyzing a given function or path. All that data should be in GRState. There is no reason, however, that Checkers cannot have any on-the-side data to cache computation that they do over and over again, particularly if it has nothing to do with a specific path.
One amendment: I do recognize that the checker call backs are currently marked 'const'. I took this road to enforce a mentality that the checker writers should think about keeping state in GRState, and not in the checker itself. First-time checker writers often don't understand why keeping information specific to a path in GRState is so critical. This decision can always be revisited.
My point, however, was that the idea of keeping data associated with a Checker is not strictly taboo if done correctly. If we want to enforce the 'const'ness strictly, then it may be worthwhile to provide checkers a way to store other side data.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20110715/c4e95b3e/attachment.html>
More information about the cfe-dev
mailing list