LGTM, but John should review it.

================
Comment at: lib/AST/VTableBuilder.cpp:2562
@@ +2561,3 @@
+
+    for (CXXRecordDecl::base_class_const_iterator I = RD->bases_begin(),
+          E = RD->bases_end(); I != E; ++I) {
----------------
Timur Iskhodzhanov wrote:
> Reid Kleckner wrote:
> > Timur Iskhodzhanov wrote:
> > > Reid Kleckner wrote:
> > > > Can you explain why we can't use the base subobjects from 
> > > > FinalOverriders to get a list of all BaseSubobjects?  Then we should be 
> > > > able to find the base with the smallest offset.
> > > This might be possible, but I haven't found a simple way to do that... 
> > > It's not "all subobjects" but rather "all the subobjects that have the 
> > > same method declared", and even a bit more complex than that (see the O_o 
> > > test for the reordered virtual bases).
> > I think I understand what this is doing now.  Would this algorithm be 
> > simpler (no recursion) and do the same thing?
> > 
> > Call ComputeAllOverriddenMethods to get the set of all overridden methods.
> > Compute the set of bases in which those methods are declared. (getParent 
> > loop)
> > Call MostDerived->lookupInBases(BaseInSet, &BaseSet, &Paths)
> > For all base paths, walk the path to compute the offsets using the funky 
> > logic for virtual bases
> > Pick the minimum offset
> > 
> > This could probably be improved to avoid the lookupInBases inside a loop 
> > over every virtual method decl, but that's more of a FIXME level thing.
> Wow, it worked!
> Can't say the code is that shorter but yeah, it's definitely a bit easier to 
> read.
Nice!


http://llvm-reviews.chandlerc.com/D1076
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to