[cfe-commits] r41258 - in /cfe/trunk: AST/CFG.cpp include/clang/AST/CFG.h

Chris Lattner clattner at apple.com
Wed Aug 22 14:07:19 PDT 2007


>>> The current design thought was to allow the construction of CFGs  
>>> for arbitrary subtrees of valid ASTs (that represent a function  
>>> body).
>>>
>>> However, a subtree of an AST may contain gotos that reference  
>>> labels in other subtrees of the AST (and thus the subtree is  
>>> "invalid" from the perspective of constructing a CFG).  If we  
>>> allow CFGs to be constructed from arbitrary subtrees of valid  
>>> ASTs, then I don't see how this cannot be a run-time check.
>>
>> Interesting point.  In that case, instead of 'return NULL' you  
>> should have 'continue'.
>>
>> -Chris
>
> This will result in CFGs where there will be blocks with gotos that  
> do not have any successors.  Is this the desired behavior?

I don't see how we could do anything else that would be better, do  
you?  In the code with a return, this means it will just stop  
backpatching gotos, which could include cases where the target is  
resolvable.

> Should we return a flag or something indicating that the control- 
> flow in the CFG is "not complete?"

Or the client can just "know" that CFGs for a subset of a function  
can just have blocks that end with gotos that have no successors.

-Chris



More information about the cfe-commits mailing list