[cfe-dev] CFG initializers and destructors patch

Ted Kremenek kremenek at apple.com
Thu Sep 2 21:39:40 PDT 2010


Hi Marcin,

Thanks again for doing this.  I will try and take a look at this in detail in the next 24 hours and come back with feedback.  As I mentioned to Zhongxing and Jordy in a private email, we should hold off and committing any of these changes until LLVM branches tomorrow for the 2.8 release.

I have one question/comment inline (below).  

On Sep 2, 2010, at 3:29 PM, Marcin Świderski <marcin.sfider at gmail.com> wrote:

> Hi
> 
> I'm sending a patch with implementation of C++
> - initializers from constructor initialization list,
> - implicit destructors for objects with automatic storage duration.
> 
> For destructors I've taken care of:
> - block local scopes,
> - if/switch/for/while/do local scopes (in case there's no block),
> - if/switch/for/while condition variables,
> - catch exception variable,
> - temporaries bound to const reference.
> 
> Is there something that I've missed?
> 
> As it have been suggested I've created hierarchy of CFGElements. Currently there're two unused types for implicit destructor calls in destructor. I've did not revert ability of CFGElement to cast/dyn_cast to Stmt, because it would lead to situation when cast<Stmt>(SomeCFGElement) would return null. I did however add method for downcasting CFGElement object to object of its implemntation class (returned by value, not pointer) with returning invalid object on invalid cast.
> 
> I did not add CFGElement for destructors of temporary objects. After giving it some thought I came to a conclusion that it shouldn't be covered by CFG, because it clearly needs path-sensitiveness.

How is this path-sensitive?  The compiler has to generate destructors calls at the IR level without doing any path-sensitive analysis at all (and actually no flow-sensitive analysis either).


> 
> Cheers
> Marcin
> <cfg-init-dtor.patch>




More information about the cfe-dev mailing list