[cfe-commits] r137309 - in /cfe/trunk: include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h lib/StaticAnalyzer/Core/SymbolManager.cpp

Ted Kremenek kremenek at apple.com
Thu Aug 11 16:08:32 PDT 2011


On Aug 11, 2011, at 3:52 PM, Jordy Rose wrote:

> On Aug 11, 2011, at 15:42, Ted Kremenek wrote:
> 
>> ]As for not many symbols having multiple dependents, I don't think that's a valid assumption.  The whole point of this addition was to give checkers the ability to tie two symbols together (e.g., parameter out value and a return value).  There's no reason why there can't be multiple dependents.  Even if it's just two checkers that need to track dependencies between a common symbol and another, two is still more than one.
> 
> Sorry, I meant multiple dependenCIES. My bad. With the dependency capabilities in this commit we have "this symbol survives if ANY of its base symbols are alive", and no way to express "all of its base symbols".

Ah, I see what you mean.

I think these are two separate concepts.  This commit supports the "this symbol survives if ANY of its base symbols are alive", and I think that's a valid feature to support.  The idea is that a checker indicates that it wants to extend the lifetime of one symbol to be at least as long as the lifetime of another.  I think the confusion here is the terminology "base".  This isn't an issue of one symbol being derived from another; it's about linking the lifetime of two existing symbols.

> I think we might want to say that multiple dependencies = undefined behavior.

I think for the intention of this feature, I don't think that's valid.

I think we have two things:

(1) Derived symbols.  Derived symbols are mostly used to lazily symbolicate memory.  They naturally have a notion of a *SINGLE* base.  There is no real reason to support multiple bases.  Lifetime of the derived symbol is dictated by the lifetime of the base symbol.

(2) Linked symbols.  Two symbols can be linked without having any other relationship to another.  That's the intention of this commit.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20110811/f4ce3e66/attachment.html>


More information about the cfe-commits mailing list