<div dir="ltr">Yep, seems fine.</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Oct 22, 2013 at 7:58 AM, Timur Iskhodzhanov <span dir="ltr"><<a href="mailto:timurrrr@google.com" target="_blank">timurrrr@google.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Reid,<br>
Please review post-commit.<br>
Should be no rocket science here - we only add a method to a given<br>
vftable if it belongs to the right vbase, so carrying it around wasn't<br>
necessary.<br>
--Timur<br>
<br>
2013/10/22 Timur Iskhodzhanov <<a href="mailto:timurrrr@google.com">timurrrr@google.com</a>>:<br>
<div class="HOEnZb"><div class="h5">> Author: timurrrr<br>
> Date: Tue Oct 22 09:50:20 2013<br>
> New Revision: 193164<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=193164&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=193164&view=rev</a><br>
> Log:<br>
> Drop the unneeded VBase field from MethodInfo in the VFTableBuilder class<br>
><br>
> Modified:<br>
> cfe/trunk/lib/AST/VTableBuilder.cpp<br>
><br>
> Modified: cfe/trunk/lib/AST/VTableBuilder.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/VTableBuilder.cpp?rev=193164&r1=193163&r2=193164&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/VTableBuilder.cpp?rev=193164&r1=193163&r2=193164&view=diff</a><br>
> ==============================================================================<br>
> --- cfe/trunk/lib/AST/VTableBuilder.cpp (original)<br>
> +++ cfe/trunk/lib/AST/VTableBuilder.cpp Tue Oct 22 09:50:20 2013<br>
> @@ -2483,10 +2483,6 @@ private:<br>
> /// this method's base has, or zero.<br>
> const uint64_t VBTableIndex;<br>
><br>
> - /// VBase - If nonnull, holds the last vbase which contains the vfptr that<br>
> - /// the method definition is adjusted to.<br>
> - const CXXRecordDecl *VBase;<br>
> -<br>
> /// VFTableIndex - The index in the vftable that this method has.<br>
> const uint64_t VFTableIndex;<br>
><br>
> @@ -2495,13 +2491,11 @@ private:<br>
> /// or used for vcalls in the most derived class.<br>
> bool Shadowed;<br>
><br>
> - MethodInfo(uint64_t VBTableIndex, const CXXRecordDecl *VBase,<br>
> - uint64_t VFTableIndex)<br>
> - : VBTableIndex(VBTableIndex), VBase(VBase), VFTableIndex(VFTableIndex),<br>
> + MethodInfo(uint64_t VBTableIndex, uint64_t VFTableIndex)<br>
> + : VBTableIndex(VBTableIndex), VFTableIndex(VFTableIndex),<br>
> Shadowed(false) {}<br>
><br>
> - MethodInfo()<br>
> - : VBTableIndex(0), VBase(0), VFTableIndex(0), Shadowed(false) {}<br>
> + MethodInfo() : VBTableIndex(0), VFTableIndex(0), Shadowed(false) {}<br>
> };<br>
><br>
> typedef llvm::DenseMap<const CXXMethodDecl *, MethodInfo> MethodInfoMapTy;<br>
> @@ -2579,7 +2573,7 @@ private:<br>
> // and the entries shadowed by return adjusting thunks.<br>
> if (MD->getParent() != MostDerivedClass || MI.Shadowed)<br>
> continue;<br>
> - MethodVFTableLocation Loc(MI.VBTableIndex, MI.VBase,<br>
> + MethodVFTableLocation Loc(MI.VBTableIndex, WhichVFPtr.LastVBase,<br>
> WhichVFPtr.VFPtrOffset, MI.VFTableIndex);<br>
> if (const CXXDestructorDecl *DD = dyn_cast<CXXDestructorDecl>(MD)) {<br>
> MethodVFTableLocations[GlobalDecl(DD, Dtor_Deleting)] = Loc;<br>
> @@ -2873,7 +2867,6 @@ void VFTableBuilder::AddMethods(BaseSubo<br>
> // No return adjustment needed - just replace the overridden method info<br>
> // with the current info.<br>
> MethodInfo MI(OverriddenMethodInfo.VBTableIndex,<br>
> - OverriddenMethodInfo.VBase,<br>
> OverriddenMethodInfo.VFTableIndex);<br>
> MethodInfoMap.erase(OverriddenMDIterator);<br>
><br>
> @@ -2919,7 +2912,7 @@ void VFTableBuilder::AddMethods(BaseSubo<br>
> // it requires return adjustment. Insert the method info for this method.<br>
> unsigned VBIndex =<br>
> LastVBase ? GetVBTableIndex(MostDerivedClass, LastVBase) : 0;<br>
> - MethodInfo MI(VBIndex, LastVBase, Components.size());<br>
> + MethodInfo MI(VBIndex, Components.size());<br>
><br>
> assert(!MethodInfoMap.count(MD) &&<br>
> "Should not have method info for this method yet!");<br>
><br>
><br>
> _______________________________________________<br>
> cfe-commits mailing list<br>
> <a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</div></div></blockquote></div><br></div>