> On 03/11/2014 05:08 PM, Jan Hubicka wrote:
> >Jason, I was looking into this and I think I have patch that works.  I would
> >just like to verify I inderstnad things right.  First thing I implemented is 
> >to
> >consistently skip dtors of abstract classes as per the comment in
> >abstract_class_dtor_p there is no way to call those by virtual table pointer.
> >Unlike your patch it will i.e. enable better unreachable code removal since
> >they will not appear in possible target lists of polymorphic calls.
> 
> Makes sense.
> 
> >The second change I did is to move methods that are reachable only
> >via abstract class into the part of list that is in construction,
> >since obviously we do not have instances of these classes.
> 
> I'm not sure how you would tell that a method that is reachable only
> via abstract class; a derived class doesn't have to override methods
> other than the destructor, so we could get the abstract class method
> for an object of a derived class.

Yep, this can apply only to anonymous namespace types where we know the
derivations. So it is not a big win.
> 
> >What I would like to verify with you shtat I also changed walk when looking
> >for destructors to not consider types in construction. I believe there is no 
> >way
> >to get destructor call via construction vtable as we always know the type.
> >Is that right?
> 
> I guess it would be possible to get the abstract destructor via
> construction vtable if someone deletes the object while it's being
> constructed.  But surely that's undefined behavior anyway.
> 
> >also if abstract_class_dtor_p functions are never called via vtables, is 
> >there
> >reason for C++ FE to put them there? I understand that there is a slot in 
> >vtable initializer
> >for them, but things would go smoother if it was initialized to NULL or some 
> >other marker
> >different from cxa_pure_virtual.  Then gimple-fold will already substitute 
> >it for
> >builtin_unreachable and they will get ignored during the ipa-devirt's walks.
> 
> Hmm, interesting idea.  Shall I implement that?

Less we have in the vtables, the better, so if you can implement this, it would 
be
great.

Honza
> 
> Jason

Reply via email to