r188909 - [CGF] Get rid of passing redundant VTable pointer around in CodeGenFunction::InitializeVTablePointer[s]
David Blaikie
dblaikie at gmail.com
Wed Aug 21 14:08:38 PDT 2013
On Wed, Aug 21, 2013 at 10:33 AM, Timur Iskhodzhanov
<timurrrr at google.com> wrote:
> Author: timurrrr
> Date: Wed Aug 21 12:33:16 2013
> New Revision: 188909
>
> URL: http://llvm.org/viewvc/llvm-project?rev=188909&view=rev
> Log:
> [CGF] Get rid of passing redundant VTable pointer around in CodeGenFunction::InitializeVTablePointer[s]
Strangely, this appears to have regressed debug info (probably based
on a debug info feature I implemented over the weekend).
http://lab.llvm.org:8011/builders/clang-x86_64-ubuntu-gdb-75/builds/8031
I don't really know how your change connects to this, but I'll
investigate, etc - no action required on your part, just wanted to
note it down here in case anyone was looking at the bots, seeing weird
debug info, etc.
>
> Modified:
> cfe/trunk/lib/CodeGen/CGClass.cpp
> cfe/trunk/lib/CodeGen/CodeGenFunction.h
>
> Modified: cfe/trunk/lib/CodeGen/CGClass.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGClass.cpp?rev=188909&r1=188908&r2=188909&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CGClass.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CGClass.cpp Wed Aug 21 12:33:16 2013
> @@ -1852,7 +1852,6 @@ void
> CodeGenFunction::InitializeVTablePointer(BaseSubobject Base,
> const CXXRecordDecl *NearestVBase,
> CharUnits OffsetFromNearestVBase,
> - llvm::Constant *VTable,
> const CXXRecordDecl *VTableClass) {
> const CXXRecordDecl *RD = Base.getBase();
>
> @@ -1875,6 +1874,7 @@ CodeGenFunction::InitializeVTablePointer
> // And load the address point from the VTT.
> VTableAddressPoint = Builder.CreateLoad(VTT);
> } else {
> + llvm::Constant *VTable = CGM.getVTables().GetAddrOfVTable(VTableClass);
> uint64_t AddressPoint =
> CGM.getVTableContext().getVTableLayout(VTableClass).getAddressPoint(Base);
> VTableAddressPoint =
> @@ -1919,7 +1919,6 @@ CodeGenFunction::InitializeVTablePointer
> const CXXRecordDecl *NearestVBase,
> CharUnits OffsetFromNearestVBase,
> bool BaseIsNonVirtualPrimaryBase,
> - llvm::Constant *VTable,
> const CXXRecordDecl *VTableClass,
> VisitedVirtualBasesSetTy& VBases) {
> // If this base is a non-virtual primary base the address point has already
> @@ -1927,7 +1926,7 @@ CodeGenFunction::InitializeVTablePointer
> if (!BaseIsNonVirtualPrimaryBase) {
> // Initialize the vtable pointer for this base.
> InitializeVTablePointer(Base, NearestVBase, OffsetFromNearestVBase,
> - VTable, VTableClass);
> + VTableClass);
> }
>
> const CXXRecordDecl *RD = Base.getBase();
> @@ -1970,7 +1969,7 @@ CodeGenFunction::InitializeVTablePointer
> I->isVirtual() ? BaseDecl : NearestVBase,
> BaseOffsetFromNearestVBase,
> BaseDeclIsNonVirtualPrimaryBase,
> - VTable, VTableClass, VBases);
> + VTableClass, VBases);
> }
> }
>
> @@ -1979,16 +1978,12 @@ void CodeGenFunction::InitializeVTablePo
> if (!RD->isDynamicClass())
> return;
>
> - // Get the VTable.
> - llvm::Constant *VTable = CGM.getVTables().GetAddrOfVTable(RD);
> -
> // Initialize the vtable pointers for this class and all of its bases.
> VisitedVirtualBasesSetTy VBases;
> InitializeVTablePointers(BaseSubobject(RD, CharUnits::Zero()),
> /*NearestVBase=*/0,
> /*OffsetFromNearestVBase=*/CharUnits::Zero(),
> - /*BaseIsNonVirtualPrimaryBase=*/false,
> - VTable, RD, VBases);
> + /*BaseIsNonVirtualPrimaryBase=*/false, RD, VBases);
> }
>
> llvm::Value *CodeGenFunction::GetVTablePtr(llvm::Value *This,
>
> Modified: cfe/trunk/lib/CodeGen/CodeGenFunction.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenFunction.h?rev=188909&r1=188908&r2=188909&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CodeGenFunction.h (original)
> +++ cfe/trunk/lib/CodeGen/CodeGenFunction.h Wed Aug 21 12:33:16 2013
> @@ -1180,7 +1180,6 @@ public:
> void InitializeVTablePointer(BaseSubobject Base,
> const CXXRecordDecl *NearestVBase,
> CharUnits OffsetFromNearestVBase,
> - llvm::Constant *VTable,
> const CXXRecordDecl *VTableClass);
>
> typedef llvm::SmallPtrSet<const CXXRecordDecl *, 4> VisitedVirtualBasesSetTy;
> @@ -1188,7 +1187,6 @@ public:
> const CXXRecordDecl *NearestVBase,
> CharUnits OffsetFromNearestVBase,
> bool BaseIsNonVirtualPrimaryBase,
> - llvm::Constant *VTable,
> const CXXRecordDecl *VTableClass,
> VisitedVirtualBasesSetTy& VBases);
>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list