dcoughlin added a comment.

In https://reviews.llvm.org/D26768#619222, @malcolm.parsons wrote:

> In https://reviews.llvm.org/D26768#618651, @dcoughlin wrote:
> > The definite false positives were cases where the programmer seemed aware 
> > of the semantics of virtual calls during construction/destruction and had 
> > each subclass explicitly call its own version of the virtual method in 
> > question.
> How is this avoiding the check for a qualifier on the call?
>   if (CME->getQualifier())
>     callIsNonVirtual = true;

They didn't use the qualified version. Rather, each class had duplication of 
the same logic calling the virtual method its individual 
constructor/destructor. In the cases I examined either the virtual method 
didn't call super (most common pattern) or it did and was idempotent if called 
multiple times.

>> The likely false positives were cases where there was no subclass of the 
>> constructed class that overrode the method in question.
> I'd like to be told about these so that the class can be marked final.

I agree, but this produces too many alarms to be on by default in the analyzer. 
I put the check in it in the 'optin' package so individual projects can decide 
whether they want to enforce this rule or not.



cfe-commits mailing list

Reply via email to