On Aug 17, 2012, at 19:15 , Anna Zaks <[email protected]> wrote:

> 
> On Aug 17, 2012, at 5:30 PM, Jordan Rose wrote:
> 
>> Modified: cfe/trunk/lib/StaticAnalyzer/Core/ExprEngine.cpp
>> URL: 
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/ExprEngine.cpp?rev=162156&r1=162155&r2=162156&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/StaticAnalyzer/Core/ExprEngine.cpp (original)
>> +++ cfe/trunk/lib/StaticAnalyzer/Core/ExprEngine.cpp Fri Aug 17 19:30:20 2012
>> @@ -889,7 +889,7 @@
>>    case Stmt::ObjCAtThrowStmtClass: {
>>      // FIXME: This is not complete.  We basically treat @throw as
>>      // an abort.
>> -      Bldr.generateNode(S, Pred, Pred->getState());
>> +      Bldr.generateNode(S, Pred, Pred->getState(), /*IsSink=*/true);
> Please remove the C style comment.
> You can mention that we are generating a sink in a comment or better yet add 
> another API to the node builder spelling out what we do:
> "Bldr.generateSink"

This is a common way to annotate otherwise cryptic parameters in Clang, though 
admittedly most of the uses in the analyzer specifically were introduced by me. 
I don't understand why it's an issue, at least right now. (I agree that in this 
case a "generateSink" method would be a little clearer.)

In the longer term, as you suggested offline, C++ 'throw' may be best modeled 
by having more than one kind of sink node. I actually started down this path, 
at which point the third parameter here became the node type (Node, Sink, or 
Jump -- my name for "program continues but analysis cannot"). That wasn't 
actually sufficient to model C++ 'throw', however, and so I opted for the 
simplest and least-intrusive solution.

(...but that's a mild argument against introducing a new method now; having 
more than two kinds of nodes means possibly adding another extra method in 
every place we can generate nodes, rather than just changing the third 
parameter.)

Jordan
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to