Lines Matching defs:RD
919 const CXXRecordDecl *RD, const BaseSubobject &Base, bool BaseIsVirtual,
927 Base.getBase(), Base.getBaseOffset(), BaseIsVirtual, RD));
936 .mangleCXXCtorVTable(RD, Base.getBaseOffset().getQuantity(),
980 CGM.setGVProperties(VTable, RD);
982 CGM.EmitVTableTypeMetadata(RD, VTable, *VTLayout.get());
1071 const CXXRecordDecl *RD) {
1073 CGM.getCXXABI().canSpeculativelyEmitVTable(RD);
1080 CodeGenModule::getVTableLinkage(const CXXRecordDecl *RD) {
1081 if (!RD->isExternallyVisible())
1086 RD->isInNamedModule();
1091 IsInNamedModule ? nullptr : Context.getCurrentKeyFunction(RD);
1092 if (IsInNamedModule || (keyFunction && !RD->hasAttr<DLLImportAttr>())) {
1100 IsInNamedModule ? RD->shouldEmitInExternalSource() : !def;
1103 IsInNamedModule ? RD->getTemplateSpecializationKind()
1148 if (RD->hasAttr<DLLExportAttr>()) {
1151 } else if (RD->hasAttr<DLLImportAttr>()) {
1157 switch (RD->getTemplateSpecializationKind()) {
1168 return shouldEmitAvailableExternallyVTable(*this, RD)
1190 CodeGenVTables::GenerateClassData(const CXXRecordDecl *RD) {
1192 DI->completeClassData(RD);
1194 if (RD->getNumVBases())
1195 CGM.getCXXABI().emitVirtualInheritanceTables(RD);
1197 CGM.getCXXABI().emitVTableDefinitions(*this, RD);
1210 bool CodeGenVTables::isVTableExternal(const CXXRecordDecl *RD) {
1211 assert(RD->isDynamicClass() && "Non-dynamic classes have no VTable.");
1220 TemplateSpecializationKind TSK = RD->getTemplateSpecializationKind();
1232 if (RD->isInNamedModule())
1233 return RD->shouldEmitInExternalSource();
1237 const CXXMethodDecl *keyFunction = CGM.getContext().getCurrentKeyFunction(RD);
1250 const CXXRecordDecl *RD) {
1252 if (!CGM.getVTables().isVTableExternal(RD))
1256 return shouldEmitAvailableExternallyVTable(CGM, RD);
1269 for (const CXXRecordDecl *RD : DeferredVTables)
1270 if (shouldEmitVTableAtEndOfTranslationUnit(*this, RD))
1271 VTables.GenerateClassData(RD);
1273 OpportunisticVTables.push_back(RD);
1280 bool CodeGenModule::AlwaysHasLTOVisibilityPublic(const CXXRecordDecl *RD) {
1281 if (RD->hasAttr<LTOVisibilityPublicAttr>() || RD->hasAttr<UuidAttr>() ||
1282 RD->hasAttr<DLLExportAttr>() || RD->hasAttr<DLLImportAttr>())
1288 const DeclContext *DC = RD;
1304 bool CodeGenModule::HasHiddenLTOVisibility(const CXXRecordDecl *RD) {
1305 LinkageInfo LV = RD->getLinkageAndVisibility();
1313 return !AlwaysHasLTOVisibilityPublic(RD);
1317 const CXXRecordDecl *RD, llvm::DenseSet<const CXXRecordDecl *> &Visited) {
1318 // If we have already visited this RD (which means this is a recursive call
1323 if (!Visited.insert(RD).second)
1326 LinkageInfo LV = RD->getLinkageAndVisibility();
1330 else if (HasHiddenLTOVisibility(RD))
1335 for (const auto &B : RD->bases())
1341 for (const auto &B : RD->vbases())
1350 void CodeGenModule::EmitVTableTypeMetadata(const CXXRecordDecl *RD,
1409 GetVCallVisibilityLevel(RD, Visited);