[PATCH] Get rid of VTableContext::ComputeMethodVTableIndices() and VTableContext::getNumVirtualFunctionPointers()

Reid Kleckner rnk at google.com
Mon May 13 12:02:24 PDT 2013



================
Comment at: lib/AST/VTableBuilder.cpp:2319
@@ -2318,3 @@
-    //   If a class has an implicitly-defined virtual destructor, 
-    //   its entries come after the declared virtual function pointers.
-
----------------
Timur Iskhodzhanov wrote:
> Reid Kleckner wrote:
> > I don't think Test16::D triggers this case because ~D is overriding ~C, so it goes into the vtable first.
> > 
> > When can you have an implicitly defined virtual dtor without overriding the method of a base class?  Is that possible? Good question for Richard or John.
> Err, no.
> There's no ~D in Test16:D.
> 
>   struct C : ... { virtual ~C(); };
>   struct D : virtual C {
>     virtual void f(); 
>   };
> 
> So C has virtual ~C, thus D should have a virtual dtor.
> AFAIU, as there's no explicit ~D, there should be an implicit one.
> 
> Does that sound right?
Yes, it's implicit, but it wasn't triggering this code, because it should always hit the codepath for overrides and continue the loop before setting ImplicitVirtualDtor.  I'm looking for a counterexample to show that this code isn't dead.


http://llvm-reviews.chandlerc.com/D785



More information about the cfe-commits mailing list