[cfe-dev] CFGElement changes and initializers addition (with patch)

Jordy Rose jediknil at belkadan.com
Mon Aug 23 20:18:25 PDT 2010


On Tue, 24 Aug 2010 10:44:42 +0800, Zhongxing Xu <xuzhongxing at gmail.com>
wrote:
> On Tue, Aug 24, 2010 at 10:41 AM, Zhongxing Xu <xuzhongxing at gmail.com>
> wrote:
>> 2010/8/20 Ted Kremenek <kremenek at apple.com>:
>>> On Aug 19, 2010, at 11:34 PM, Marcin Świderski wrote:
>>>> One thing that would be needed and could be questionable (I think)
>>>> would be end of scope element. This element wouldn't have start of
>>>> scope element counterpart, and it would be used only if sequance of
>>>> destructors for automatic objects would not end with block
termination
>>>> statement. CFG clients would have to ignore it always as it would be
of
>>>> no use to them.
>>>
>>> I'm not quite certain what this means.  We can have a block that
>>> contains a bunch destructor calls with a single successor to the block
>>> in the outer scope.  An explicit "end scope element" isn't strictly
>>> needed.
>>>
>>
>> Sorry for the late reply. There is a case where we need explicit scope
>> delimiters. We need them to detect resource leaks accurately. Consider
>> code:
> 
> void f() {
>   {
>       int *p = malloc(4);
>   }
>   ...
> }
> 
> Without a scope delimiter, we can only detect that the block pointed
> to by 'p' is leaked when getting to the end of 'f'. That's far from
> where it happened.

Unless we have destructor nodes for /all/ objects, whether the destructor
is trivial or not.

(Not trying to push either side, just presenting another possibility.)



More information about the cfe-dev mailing list