Lines Matching defs:RD
303 StringRef CGDebugInfo::getClassName(const RecordDecl *RD) {
304 if (isa<ClassTemplateSpecializationDecl>(RD)) {
306 return internString(GetName(RD));
311 if (const IdentifierInfo *II = RD->getIdentifier())
318 if (const TypedefNameDecl *D = RD->getTypedefNameForAnonDecl()) {
319 assert(RD->getDeclContext() == D->getDeclContext() &&
330 if (const DeclaratorDecl *DD = Context.getDeclaratorForUnnamedTagDecl(RD))
335 Context.getTypedefNameForUnnamedTagDecl(RD))
341 if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD))
1132 if (const auto *RD = dyn_cast<CXXRecordDecl>(TD))
1133 if (RD->getDefinition())
1134 if (RD->isDynamicClass() &&
1135 CGM.getVTableLinkage(RD) == llvm::GlobalValue::ExternalLinkage)
1146 static llvm::dwarf::Tag getTagForRecord(const RecordDecl *RD) {
1148 if (RD->isStruct() || RD->isInterface())
1150 else if (RD->isUnion())
1155 assert(RD->isClass());
1164 const RecordDecl *RD = Ty->getDecl();
1165 if (llvm::DIType *T = getTypeOrNull(CGM.getContext().getRecordType(RD)))
1167 llvm::DIFile *DefUnit = getOrCreateFile(RD->getLocation());
1169 getLineNumber(RD->getLocation().isValid() ? RD->getLocation() : CurLoc);
1170 StringRef RDName = getClassName(RD);
1175 const RecordDecl *D = RD->getDefinition();
1184 if (const CXXRecordDecl *CXXRD = dyn_cast<CXXRecordDecl>(RD))
1195 getTagForRecord(RD), RDName, Ctx, DefUnit, Line, 0, Size, Align, Flags,
1198 if (auto *TSpecial = dyn_cast<ClassTemplateSpecializationDecl>(RD))
1458 const RecordDecl *RD) {
1460 if (RD && RD->isClass())
1462 else if (RD && (RD->isStruct() || RD->isUnion()))
1606 llvm::DIScope *RecordTy, const RecordDecl *RD) {
1620 CGM.getTypes().getCGRecordLayout(RD).getBitFieldInfo(BitFieldDecl);
1632 llvm::DINode::DIFlags Flags = getAccessFlag(BitFieldDecl->getAccess(), RD);
1641 llvm::ArrayRef<llvm::Metadata *> PreviousFieldsDI, const RecordDecl *RD) {
1680 auto PreviousBitfield = RD->field_begin();
1703 getAccessFlag(PreviousBitfield->getAccess(), RD);
1714 llvm::DIScope *scope, const RecordDecl *RD, llvm::DINodeArray Annotations) {
1730 llvm::DINode::DIFlags flags = getAccessFlag(AS, RD);
1802 const RecordDecl *RD) {
1825 llvm::DINode::DIFlags Flags = getAccessFlag(Var->getAccess(), RD);
1839 const RecordDecl *RD) {
1850 FieldType = BitFieldType = createBitFieldType(field, RecordTy, RD);
1852 createBitFieldSeparatorIfNeeded(field, BitFieldType, elements, RD))
1859 OffsetInBits, Align, tunit, RecordTy, RD, Annotations);
1977 const CXXRecordDecl *RD = ThisPtr->getPointeeCXXRecordDecl();
1978 if (isa<ClassTemplateSpecializationDecl>(RD)) {
2012 static bool isFunctionLocalClass(const CXXRecordDecl *RD) {
2013 if (const auto *NRD = dyn_cast<CXXRecordDecl>(RD->getDeclContext()))
2015 if (isa<FunctionDecl>(RD->getDeclContext()))
2139 const CXXRecordDecl *RD, llvm::DIFile *Unit,
2145 for (const auto *I : RD->decls()) {
2176 void CGDebugInfo::CollectCXXBases(const CXXRecordDecl *RD, llvm::DIFile *Unit,
2180 CollectCXXBasesAux(RD, Unit, EltTys, RecordTy, RD->bases(), SeenTypes,
2186 CollectCXXBasesAux(RD, Unit, EltTys, RecordTy, RD->vbases(), SeenTypes,
2192 const CXXRecordDecl *RD, llvm::DIFile *Unit,
2197 const ASTRecordLayout &RL = CGM.getContext().getASTRecordLayout(RD);
2213 .getVirtualBaseOffsetOffset(RD, Base)
2219 4 * CGM.getMicrosoftVTableContext().getVBTableIndex(RD, Base);
2221 .getASTRecordLayout(RD)
2231 BFlags |= getAccessFlag(BI.getAccessSpecifier(), RD);
2398 CGDebugInfo::GetTemplateArgs(const RecordDecl *RD) const {
2399 if (auto *TSpecial = dyn_cast<ClassTemplateSpecializationDecl>(RD)) {
2422 llvm::DINodeArray CGDebugInfo::CollectCXXTemplateParams(const RecordDecl *RD,
2424 return CollectTemplateParams(GetTemplateArgs(RD), Unit);
2462 StringRef CGDebugInfo::getVTableName(const CXXRecordDecl *RD) {
2464 return internString("_vptr$", RD->getNameAsString());
2521 void CGDebugInfo::CollectVTableInfo(const CXXRecordDecl *RD, llvm::DIFile *Unit,
2524 if (!RD->isDynamicClass())
2531 const ASTRecordLayout &RL = CGM.getContext().getASTRecordLayout(RD);
2545 CGM.getMicrosoftVTableContext().getVFTableLayout(RD, CharUnits::Zero());
2571 DBuilder.createMemberType(Unit, getVTableName(RD), Unit, 0, Size, 0, 0,
2627 void CGDebugInfo::completeType(const RecordDecl *RD) {
2630 completeRequiredType(RD);
2634 static bool isClassOrMethodDLLImport(const CXXRecordDecl *RD) {
2635 if (RD->hasAttr<DLLImportAttr>())
2637 for (const CXXMethodDecl *MD : RD->methods())
2644 static bool isDefinedInClangModule(const RecordDecl *RD) {
2646 if (!RD || !RD->isFromASTFile())
2649 if (!RD->isExternallyVisible() && RD->getName().empty())
2651 if (auto *CXXDecl = dyn_cast<CXXRecordDecl>(RD)) {
2654 // Check wether RD is a template.
2675 void CGDebugInfo::completeClassData(const RecordDecl *RD) {
2676 if (auto *CXXRD = dyn_cast<CXXRecordDecl>(RD))
2683 if (DebugTypeExtRefs && isDefinedInClangModule(RD->getDefinition()))
2686 completeClass(RD);
2689 void CGDebugInfo::completeClass(const RecordDecl *RD) {
2692 QualType Ty = CGM.getContext().getRecordType(RD);
2716 static bool canUseCtorHoming(const CXXRecordDecl *RD) {
2725 if (isClassOrMethodDLLImport(RD))
2728 if (RD->isLambda() || RD->isAggregate() ||
2729 RD->hasTrivialDefaultConstructor() ||
2730 RD->hasConstexprNonCopyMoveConstructor())
2733 for (const CXXConstructorDecl *Ctor : RD->ctors()) {
2743 bool DebugTypeExtRefs, const RecordDecl *RD,
2745 if (DebugTypeExtRefs && isDefinedInClangModule(RD->getDefinition()))
2748 if (auto *ES = RD->getASTContext().getExternalSource())
2749 if (ES->hasExternalDefinitions(RD) == ExternalASTSource::EK_Always)
2759 RD->hasAttr<StandaloneDebugAttr>())
2765 if (!RD->isCompleteDefinitionRequired())
2768 const auto *CXXDecl = dyn_cast<CXXRecordDecl>(RD);
2784 if (const auto *SD = dyn_cast<ClassTemplateSpecializationDecl>(RD))
2801 void CGDebugInfo::completeRequiredType(const RecordDecl *RD) {
2802 if (shouldOmitDefinition(DebugKind, DebugTypeExtRefs, RD, CGM.getLangOpts()))
2805 QualType Ty = CGM.getContext().getRecordType(RD);
2808 completeClassData(RD);
2812 RecordDecl *RD = Ty->getDecl();
2814 if (T || shouldOmitDefinition(DebugKind, DebugTypeExtRefs, RD,
2817 T = getOrCreateRecordFwdDecl(Ty, getDeclContextDescriptor(RD));
2826 llvm::DIType *CGDebugInfo::GetPreferredNameType(const CXXRecordDecl *RD,
2828 if (!RD)
2831 auto const *PNA = RD->getAttr<PreferredNameAttr>();
2840 RecordDecl *RD = Ty->getDecl();
2843 llvm::DIFile *DefUnit = getOrCreateFile(RD->getLocation());
2853 const RecordDecl *D = RD->getDefinition();
2857 if (const auto *CXXDecl = dyn_cast<CXXRecordDecl>(RD))
2872 const auto *CXXDecl = dyn_cast<CXXRecordDecl>(RD);
2879 CollectRecordFields(RD, DefUnit, EltTys, FwdDecl);
3856 RecordDecl *RD = Ty->getDecl();
3859 StringRef RDName = getClassName(RD);
3860 const SourceLocation Loc = RD->getLocation();
3868 llvm::DIScope *RDContext = getDeclContextDescriptor(RD);
3873 getTypeOrNull(CGM.getContext().getRecordType(RD)));
3874 if (T && (!T->isForwardDecl() || !RD->getDefinition()))
3879 const RecordDecl *D = RD->getDefinition();
3895 if (auto CXXRD = dyn_cast<CXXRecordDecl>(RD)) {
3915 getTagForRecord(RD), RDName, RDContext, DefUnit, Line, 0, Size, Align,
3946 if (const auto *TSpecial = dyn_cast<ClassTemplateSpecializationDecl>(RD))
3952 void CGDebugInfo::CollectContainingType(const CXXRecordDecl *RD,
3956 const ASTRecordLayout &RL = CGM.getContext().getASTRecordLayout(RD);
3968 getOrCreateFile(RD->getLocation()));
3969 } else if (RD->isDynamicClass())
4825 const RecordDecl *RD = RT->getDecl();
4826 if (RD->isUnion() && RD->isAnonymousStructOrUnion()) {
4834 for (const auto *Field : RD->fields()) {
5360 const RecordDecl *RD, llvm::DIFile *Unit, unsigned LineNo,
5364 for (const auto *Field : RD->fields()) {
5391 const auto *RD = dyn_cast<CXXRecordDecl>(RT->getDecl());
5392 if (!RD)
5394 if (!RD->getIdentifier())
5396 auto *TSpecial = dyn_cast<ClassTemplateSpecializationDecl>(RD);
5551 if (auto *RD = dyn_cast<CXXRecordDecl>(ND)) {
5552 Args = GetTemplateArgs(RD);
5654 const RecordDecl *RD = T->castAs<RecordType>()->getDecl();
5655 assert(RD->isAnonymousStructOrUnion() &&
5657 GVE = CollectAnonRecordDecls(RD, Unit, LineNo, LinkageName, Var, DContext);
5729 auto *RD = cast<RecordDecl>(VarD->getDeclContext());
5733 // FIXME: This is probably unnecessary, since Ty should reference RD
5736 CGM.getContext().getRecordType(RD).getAsOpaquePtr());