<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>