Prazek added inline comments. ================ Comment at: lib/CodeGen/CodeGenFunction.h:1328-1334 @@ -1320,8 +1327,9 @@ typedef llvm::SmallPtrSet<const CXXRecordDecl *, 4> VisitedVirtualBasesSetTy; - void InitializeVTablePointers(BaseSubobject Base, - const CXXRecordDecl *NearestVBase, - CharUnits OffsetFromNearestVBase, - bool BaseIsNonVirtualPrimaryBase, - const CXXRecordDecl *VTableClass, - VisitedVirtualBasesSetTy& VBases); + VPtrsVector getVTablePointers(const CXXRecordDecl *VTableClass); + + void getVTablePointers(BaseSubobject Base, const CXXRecordDecl *NearestVBase, + CharUnits OffsetFromNearestVBase, + bool BaseIsNonVirtualPrimaryBase, + const CXXRecordDecl *VTableClass, + VisitedVirtualBasesSetTy &VBases, VPtrsVector &vptrs); ---------------- majnemer wrote: > Would it make more sense for these to live in `CGClass` ? What do You mean? These functions are defined in CGClass.cpp
================ Comment at: lib/CodeGen/MicrosoftCXXABI.cpp:223-228 @@ +222,8 @@ + // with the 'novtable' attribute. + bool canInitilizeVPtr(const CXXRecordDecl *VTableClass, + const CXXRecordDecl *Base, + const CXXRecordDecl *NearestVBase) override { + return !VTableClass->hasAttr<MSNoVTableAttr>() || + (Base != VTableClass && Base != NearestVBase); + } + ---------------- Prazek wrote: > majnemer wrote: > > In the MS ABI, derived classes never share vtables with bases. Why do you > > need to do anything other than check that the most derived class doesn't > > have the `__declspec(novtable)` ? > I don't know, I just took previous code assuming it is correct. ok, I see. I just took code that suposed to work with microsoft and itanium abi. You are right http://reviews.llvm.org/D11859 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits