Home | History | Annotate | Download | only in CodeGen

Lines Matching refs:RD

49   RecordArgABI getRecordArgABI(const CXXRecordDecl *RD) const override;
64 llvm::GlobalVariable *getMSCompleteObjectLocator(const CXXRecordDecl *RD,
100 const CXXRecordDecl *RD) override;
103 const CXXRecordDecl *RD) override;
194 const CXXRecordDecl *RD) override;
205 llvm::GlobalVariable *getAddrOfVTable(const CXXRecordDecl *RD,
225 void emitVirtualInheritanceTables(const CXXRecordDecl *RD) override;
228 getAddrOfVBTable(const VPtrInfo &VBT, const CXXRecordDecl *RD,
231 void emitVBTableDefinition(const VPtrInfo &VBT, const CXXRecordDecl *RD,
453 const CXXRecordDecl *RD, llvm::Value *Base,
461 const CXXRecordDecl *RD,
464 llvm::Constant *BuildMemberPointer(const CXXRecordDecl *RD,
471 /// \brief - Initialize all vbptrs of 'this' with RD as the complete type.
472 void EmitVBPtrStores(CodeGenFunction &CGF, const CXXRecordDecl *RD);
475 const VBTableGlobals &enumerateVBTables(const CXXRecordDecl *RD);
557 MicrosoftCXXABI::getRecordArgABI(const CXXRecordDecl *RD) const {
570 if (!canCopyArgument(RD))
579 if (RD->hasNonTrivialCopyConstructor())
583 if (getContext().getTypeSize(RD->getTypeForDecl()) > 64)
589 for (const CXXConstructorDecl *CD : RD->ctors()) {
620 const CXXRecordDecl *RD,
622 const ASTContext &Context = RD->getASTContext();
623 for (const CXXBaseSpecifier &Base : RD->vbases())
627 CGF, Value, RD, Base.getType()->getAsCXXRecordDecl());
767 const CXXRecordDecl *RD = FI.getReturnType()->getAsCXXRecordDecl();
768 if (!RD)
777 } else if (!RD->isPOD()) {
806 const CXXRecordDecl *RD) {
821 EmitVBPtrStores(CGF, RD);
829 CodeGenFunction &CGF, const CXXRecordDecl *RD) {
843 const ASTRecordLayout &Layout = getContext().getASTRecordLayout(RD);
858 GetVirtualBaseClassOffset(CGF, getThisValue(CGF), RD, I->first);
865 // vtorDisp_for_vbase = vbptr[vbase_idx] - offsetof(RD, vbase).
889 const CXXRecordDecl *RD) {
892 const ASTRecordLayout &Layout = CGM.getContext().getASTRecordLayout(RD);
894 const VBTableGlobals &VBGlobals = enumerateVBTables(RD);
1175 const CXXRecordDecl *RD) {
1177 VPtrInfoVector VFPtrs = VFTContext.getVFPtrOffsets(RD);
1180 llvm::GlobalVariable *VTable = getAddrOfVTable(RD, Info->FullOffsetInMDC);
1184 llvm::Constant *RTTI = getMSCompleteObjectLocator(RD, Info);
1187 VFTContext.getVFTableLayout(RD, Info->FullOffsetInMDC);
1189 RD, VTLayout.vtable_component_begin(),
1213 const CXXRecordDecl *RD, const VPtrInfo *VFPtr,
1216 MangleContext.mangleCXXVFTable(RD, VFPtr->MangledPath, Out);
1228 llvm::GlobalVariable *MicrosoftCXXABI::getAddrOfVTable(const CXXRecordDecl *RD,
1233 VFTableIdTy ID(RD, VPtrOffset);
1243 const VPtrInfoVector &VFPtrs = VTContext.getVFPtrOffsets(RD);
1245 if (DeferredVFTables.insert(RD)) {
1248 CGM.addDeferredVTable(RD);
1256 mangleVFTableName(getMangleContext(), RD, VFPtrs[J], Name);
1267 mangleVFTableName(getMangleContext(), RD, VFPtrs[J], VFTableName);
1271 VTContext.getVFTableLayout(RD, VFPtrs[J]->FullOffsetInMDC)
1295 !RD->hasAttr<DLLImportAttr>()) {
1318 if (RD->hasAttr<DLLImportAttr>())
1320 else if (RD->hasAttr<DLLExportAttr>())
1323 llvm::GlobalValue::LinkageTypes VFTableLinkage = CGM.getVTableLinkage(RD);
1351 CGM.setGlobalVisibility(VFTable, RD);
1405 MicrosoftCXXABI::enumerateVBTables(const CXXRecordDecl *RD) {
1411 VBTablesMap.insert(std::make_pair(RD, VBTableGlobals()));
1417 VBGlobals.VBTables = &Context.enumerateVBTables(RD);
1421 llvm::GlobalVariable::LinkageTypes Linkage = CGM.getVTableLinkage(RD);
1425 VBGlobals.Globals.push_back(getAddrOfVBTable(**I, RD, Linkage));
1501 void MicrosoftCXXABI::emitVirtualInheritanceTables(const CXXRecordDecl *RD) {
1502 const VBTableGlobals &VBGlobals = enumerateVBTables(RD);
1506 emitVBTableDefinition(*VBT, RD, GV);
1511 MicrosoftCXXABI::getAddrOfVBTable(const VPtrInfo &VBT, const CXXRecordDecl *RD,
1515 getMangleContext().mangleCXXVBTable(RD, VBT.MangledPath, Out);
1528 if (RD->hasAttr<DLLImportAttr>())
1530 else if (RD->hasAttr<DLLExportAttr>())
1537 const CXXRecordDecl *RD,
1541 assert(RD->getNumVBases() && ReusingBase->getNumVBases() &&
1547 CGM.getContext().getASTRecordLayout(RD);
1583 CGM.setGlobalVisibility(GV, RD);
1813 const CXXRecordDecl *RD = MPT->getMostRecentCXXRecordDecl();
1814 MSInheritanceAttr::Spelling Inheritance = RD->getMSInheritanceModel();
1816 RD->nullFieldOffsetIsZero());
1821 const CXXRecordDecl *RD = MPT->getMostRecentCXXRecordDecl();
1822 MSInheritanceAttr::Spelling Inheritance = RD->getMSInheritanceModel();
1846 const CXXRecordDecl *RD = MPT->getMostRecentCXXRecordDecl();
1847 MSInheritanceAttr::Spelling Inheritance = RD->getMSInheritanceModel();
1852 if (RD->nullFieldOffsetIsZero())
1881 const CXXRecordDecl *RD,
1884 MSInheritanceAttr::Spelling Inheritance = RD->getMSInheritanceModel();
1900 if (RD->getNumVBases())
1901 Offs = getContext().getASTRecordLayout(RD).getVBPtrOffset();
1915 const CXXRecordDecl *RD = MPT->getMostRecentCXXRecordDecl();
1918 return EmitFullMemberPointer(FirstField, /*IsMemberFunction=*/false, RD,
1947 MicrosoftCXXABI::BuildMemberPointer(const CXXRecordDecl *RD,
1952 RD = RD->getMostRecentDecl();
1994 return EmitFullMemberPointer(FirstField, /*IsMemberFunction=*/true, RD,
2024 const CXXRecordDecl *RD = MPT->getMostRecentCXXRecordDecl();
2025 MSInheritanceAttr::Spelling Inheritance = RD->getMSInheritanceModel();
2147 CodeGenFunction &CGF, const Expr *E, const CXXRecordDecl *RD,
2170 // If we weren't given a dynamic vbptr offset, RD should be complete and we'll
2174 if (!RD->hasDefinition()) {
2180 Diags.Report(E->getExprLoc(), DiagID) << RD << E->getSourceRange();
2181 } else if (RD->getNumVBases())
2182 offs = getContext().getASTRecordLayout(RD).getVBPtrOffset();
2210 const CXXRecordDecl *RD = MPT->getMostRecentCXXRecordDecl();
2211 MSInheritanceAttr::Spelling Inheritance = RD->getMSInheritanceModel();
2229 Base = AdjustVirtualBase(CGF, E, RD, Base, VirtualBaseAdjustmentOffset,
2443 const CXXRecordDecl *RD = MPT->getMostRecentCXXRecordDecl();
2446 CGM.getTypes().arrangeCXXMethodType(RD, FPT));
2449 MSInheritanceAttr::Spelling Inheritance = RD->getMSInheritanceModel();
2470 This = AdjustVirtualBase(CGF, E, RD, This, VirtualBaseAdjustmentOffset,
2544 MSRTTIClass(const CXXRecordDecl *RD) : RD(RD) {}
2553 const CXXRecordDecl *RD, *VirtualRoot;
2569 VirtualRoot = RD;
2575 OffsetInVBase = Parent->OffsetInVBase + RD->getASTContext()
2576 .getASTRecordLayout(Parent->RD).getBaseClassOffset(RD).getQuantity();
2581 for (const CXXBaseSpecifier &Base : RD->bases()) {
2612 MSRTTIBuilder(MicrosoftCXXABI &ABI, const CXXRecordDecl *RD)
2614 VMContext(CGM.getLLVMContext()), Module(CGM.getModule()), RD(RD),
2615 Linkage(getLinkageForRTTI(CGM.getContext().getTagDeclType(RD))),
2628 const CXXRecordDecl *RD;
2638 const CXXRecordDecl *RD) {
2639 Classes.push_back(MSRTTIClass(RD));
2640 for (const CXXBaseSpecifier &Base : RD->bases())
2652 !VirtualBases.insert(Class->RD)) {
2656 if (!UniqueBases.insert(Class->RD))
2657 AmbiguousBases.insert(Class->RD);
2663 if (AmbiguousBases.count(Class.RD))
2671 ABI.getMangleContext().mangleCXXRTTIClassHierarchyDescriptor(RD, Out);
2680 serializeClassHierarchy(Classes, RD);
2685 if (Class.RD->getNumBases() > 1)
2692 if ((Flags & HasBranchingHierarchy) && RD->getNumVBases() != 0)
2723 ABI.getMangleContext().mangleCXXRTTIBaseClassArray(RD, Out);
2756 OffsetInVBTable = VTableContext.getVBTableIndex(RD, Class.VirtualRoot) * 4;
2757 VBPtrOffset = Context.getASTRecordLayout(RD).getVBPtrOffset().getQuantity();
2764 Class.RD
2781 ABI.getAddrOfRTTIDescriptor(Context.getTypeDeclType(Class.RD))),
2788 MSRTTIBuilder(ABI, Class.RD).getClassHierarchyDescriptor()),
2799 ABI.getMangleContext().mangleCXXRTTICompleteObjectLocator(RD, Info->MangledPath, Out);
2811 if (Context.getASTRecordLayout(RD)
2828 CGM.GetAddrOfRTTIDescriptor(Context.getTypeDeclType(RD))),
2878 MicrosoftCXXABI::getMSCompleteObjectLocator(const CXXRecordDecl *RD,
2880 return MSRTTIBuilder(*this, RD).getCompleteObjectLocator(Info);