[cfe-dev] Implicitly defined special member functions

Douglas Gregor dgregor at apple.com
Mon Sep 20 09:49:58 PDT 2010


On Sep 19, 2010, at 12:52 AM, Martin Vejnár wrote:

> On 9/17/2010 8:46 PM, Douglas Gregor wrote:
>> On Sep 17, 2010, at 4:55 AM, Martin Vejnár wrote:
>>> I'm trying to use clang as a front end to a static analysis tool (Stanse,
>>> http://stanse.fi.muni.cz/). For that purpose, I'd like to get special
>>> member functions defined even if they are not used. Can I somehow achieve
>>> that? (Note that I'm consuming the AST in HandleTranslationUnit of my
>>> custom ASTConsumer.)
>> 
>> You'll need to ask the Sema object for the constructors, destructors,
>> and assignment operator, so that it will generate them.
> 
> Thanks, I've found the function Sema::MarkDeclarationReferenced, I'm calling it on all methods of all CXXRecordDecls, and it seems to work perfectly.

Yes, that will force the creation of the method.

>>> Furthermore, it seems that fn->isThisDeclarationADefinition() returns
>>> false for default constructors and destructors even when the function is
>>> used (and therefore implicitly defined). Is that correct? Shouldn't these
>>> functions receive an empty CompoundStatement as their bodies?
>> 
>> Yes, that would make sense. Care to submit a patch?
> 
> Attached.

Thanks! Committed as r114329.

	- Doug



More information about the cfe-dev mailing list