diff options
author | Anders Carlsson <andersca@mac.com> | 2010-03-29 01:04:16 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2010-03-29 01:04:16 +0000 |
commit | f6da6a082cc97cd496260875742241f9457185f5 (patch) | |
tree | 4f429e222ca2add916e89b0940df2425bf3ab2db /lib/CodeGen/CGVTT.cpp | |
parent | 6a6aa53ec6c89ae0881309b0a0dd84b6868b576b (diff) |
Two bug fixes, we weren't updating the thunk index when creating the vtable initializer and we weren't storing the secondary virtual pointer indices.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@99786 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CGVTT.cpp')
-rw-r--r-- | lib/CodeGen/CGVTT.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/CodeGen/CGVTT.cpp b/lib/CodeGen/CGVTT.cpp index f2b2945290..6b21046b4c 100644 --- a/lib/CodeGen/CGVTT.cpp +++ b/lib/CodeGen/CGVTT.cpp @@ -165,6 +165,13 @@ VTTBuilder::GetAddrOfVTable(BaseSubobject Base, bool BaseIsVirtual, void VTTBuilder::AddVTablePointer(BaseSubobject Base, llvm::Constant *VTable, const CXXRecordDecl *VTableClass, const AddressPointsMapTy& AddressPoints) { + // Store the vtable pointer index if we're generating the primary VTT. + if (Base.getBase() == MostDerivedClass) { + assert(!SecondaryVirtualPointerIndices.count(Base) && + "A virtual pointer index already exists for this base subobject!"); + SecondaryVirtualPointerIndices[Base] = VTTComponents.size(); + } + if (!GenerateDefinition) { VTTComponents.push_back(0); return; |