Lines Matching refs:D
159 void ReadCXXRecordDefinition(CXXRecordDecl *D, bool Update,
163 const CXXRecordDecl *D, Decl *LambdaContext,
165 void MergeDefinitionData(CXXRecordDecl *D,
168 void MergeDefinitionData(ObjCInterfaceDecl *D,
171 void MergeDefinitionData(ObjCProtocolDecl *D,
180 unsigned Index, NamedDecl *D);
256 FindExistingResult findExisting(NamedDecl *D);
266 static void AddLazySpecializations(T *D, in AddLazySpecializations() argument
272 ASTContext &C = D->getASTContext(); in AddLazySpecializations()
274 auto *&LazySpecializations = D->getCommonPtr()->LazySpecializations; in AddLazySpecializations()
291 static Decl *getMostRecentDeclImpl(Redeclarable<DeclT> *D);
293 static Decl *getMostRecentDecl(Decl *D);
295 static void mergeInheritableAttributes(ASTReader &Reader, Decl *D,
300 Redeclarable<DeclT> *D, Decl *Previous,
303 static void attachPreviousDecl(ASTReader &Reader, Decl *D, Decl *Previous,
307 static void attachLatestDeclImpl(Redeclarable<DeclT> *D, Decl *Latest);
309 static void attachLatestDecl(Decl *D, Decl *latest);
312 static void markIncompleteDeclChainImpl(Redeclarable<DeclT> *D);
316 void Visit(Decl *D);
318 void UpdateDecl(Decl *D, SmallVectorImpl<GlobalDeclID> &);
325 void VisitDecl(Decl *D);
326 void VisitPragmaCommentDecl(PragmaCommentDecl *D);
327 void VisitPragmaDetectMismatchDecl(PragmaDetectMismatchDecl *D);
331 void VisitNamespaceDecl(NamespaceDecl *D);
332 void VisitHLSLBufferDecl(HLSLBufferDecl *D);
333 void VisitUsingDirectiveDecl(UsingDirectiveDecl *D);
334 void VisitNamespaceAliasDecl(NamespaceAliasDecl *D);
339 void VisitUnresolvedUsingTypenameDecl(UnresolvedUsingTypenameDecl *D);
340 void VisitUnresolvedUsingIfExistsDecl(UnresolvedUsingIfExistsDecl *D);
345 RedeclarableResult VisitCXXRecordDeclImpl(CXXRecordDecl *D);
346 void VisitCXXRecordDecl(CXXRecordDecl *D) { VisitCXXRecordDeclImpl(D); } in VisitCXXRecordDecl() argument
348 ClassTemplateSpecializationDecl *D);
351 ClassTemplateSpecializationDecl *D) { in VisitClassTemplateSpecializationDecl() argument
352 VisitClassTemplateSpecializationDeclImpl(D); in VisitClassTemplateSpecializationDecl()
356 ClassTemplatePartialSpecializationDecl *D);
358 VisitVarTemplateSpecializationDeclImpl(VarTemplateSpecializationDecl *D);
360 void VisitVarTemplateSpecializationDecl(VarTemplateSpecializationDecl *D) { in VisitVarTemplateSpecializationDecl() argument
361 VisitVarTemplateSpecializationDeclImpl(D); in VisitVarTemplateSpecializationDecl()
365 VarTemplatePartialSpecializationDecl *D);
366 void VisitTemplateTypeParmDecl(TemplateTypeParmDecl *D);
369 void VisitUnresolvedUsingValueDecl(UnresolvedUsingValueDecl *D);
373 void VisitCXXMethodDecl(CXXMethodDecl *D);
374 void VisitCXXConstructorDecl(CXXConstructorDecl *D);
375 void VisitCXXDestructorDecl(CXXDestructorDecl *D);
376 void VisitCXXConversionDecl(CXXConversionDecl *D);
379 void VisitMSGuidDecl(MSGuidDecl *D);
380 void VisitUnnamedGlobalConstantDecl(UnnamedGlobalConstantDecl *D);
381 void VisitTemplateParamObjectDecl(TemplateParamObjectDecl *D);
383 RedeclarableResult VisitVarDeclImpl(VarDecl *D);
390 void VisitNonTypeTemplateParmDecl(NonTypeTemplateParmDecl *D);
391 void VisitTemplateDecl(TemplateDecl *D);
392 void VisitConceptDecl(ConceptDecl *D);
394 ImplicitConceptSpecializationDecl *D);
395 void VisitRequiresExprBodyDecl(RequiresExprBodyDecl *D);
396 RedeclarableResult VisitRedeclarableTemplateDecl(RedeclarableTemplateDecl *D);
397 void VisitClassTemplateDecl(ClassTemplateDecl *D);
398 void VisitBuiltinTemplateDecl(BuiltinTemplateDecl *D);
399 void VisitVarTemplateDecl(VarTemplateDecl *D);
400 void VisitFunctionTemplateDecl(FunctionTemplateDecl *D);
401 void VisitTemplateTemplateParmDecl(TemplateTemplateParmDecl *D);
402 void VisitTypeAliasTemplateDecl(TypeAliasTemplateDecl *D);
403 void VisitUsingDecl(UsingDecl *D);
404 void VisitUsingEnumDecl(UsingEnumDecl *D);
405 void VisitUsingPackDecl(UsingPackDecl *D);
406 void VisitUsingShadowDecl(UsingShadowDecl *D);
407 void VisitConstructorUsingShadowDecl(ConstructorUsingShadowDecl *D);
408 void VisitLinkageSpecDecl(LinkageSpecDecl *D);
409 void VisitExportDecl(ExportDecl *D);
411 void VisitTopLevelStmtDecl(TopLevelStmtDecl *D);
412 void VisitImportDecl(ImportDecl *D);
413 void VisitAccessSpecDecl(AccessSpecDecl *D);
414 void VisitFriendDecl(FriendDecl *D);
415 void VisitFriendTemplateDecl(FriendTemplateDecl *D);
416 void VisitStaticAssertDecl(StaticAssertDecl *D);
419 void VisitEmptyDecl(EmptyDecl *D);
420 void VisitLifetimeExtendedTemporaryDecl(LifetimeExtendedTemporaryDecl *D);
425 RedeclarableResult VisitRedeclarable(Redeclarable<T> *D);
428 void mergeRedeclarable(Redeclarable<T> *D, RedeclarableResult &Redecl);
430 void mergeLambda(CXXRecordDecl *D, RedeclarableResult &Redecl,
433 void mergeRedeclarableTemplate(RedeclarableTemplateDecl *D,
437 void mergeRedeclarable(Redeclarable<T> *D, T *Existing,
441 void mergeMergeable(Mergeable<T> *D);
443 void mergeMergeable(LifetimeExtendedTemporaryDecl *D);
445 void mergeTemplatePattern(RedeclarableTemplateDecl *D,
452 void VisitObjCMethodDecl(ObjCMethodDecl *D);
453 void VisitObjCTypeParamDecl(ObjCTypeParamDecl *D);
454 void VisitObjCContainerDecl(ObjCContainerDecl *D);
455 void VisitObjCInterfaceDecl(ObjCInterfaceDecl *D);
456 void VisitObjCIvarDecl(ObjCIvarDecl *D);
457 void VisitObjCProtocolDecl(ObjCProtocolDecl *D);
458 void VisitObjCAtDefsFieldDecl(ObjCAtDefsFieldDecl *D);
459 void VisitObjCCategoryDecl(ObjCCategoryDecl *D);
460 void VisitObjCImplDecl(ObjCImplDecl *D);
461 void VisitObjCCategoryImplDecl(ObjCCategoryImplDecl *D);
462 void VisitObjCImplementationDecl(ObjCImplementationDecl *D);
463 void VisitObjCCompatibleAliasDecl(ObjCCompatibleAliasDecl *D);
464 void VisitObjCPropertyDecl(ObjCPropertyDecl *D);
465 void VisitObjCPropertyImplDecl(ObjCPropertyImplDecl *D);
466 void VisitOMPThreadPrivateDecl(OMPThreadPrivateDecl *D);
467 void VisitOMPAllocateDecl(OMPAllocateDecl *D);
468 void VisitOMPDeclareReductionDecl(OMPDeclareReductionDecl *D);
469 void VisitOMPDeclareMapperDecl(OMPDeclareMapperDecl *D);
470 void VisitOMPRequiresDecl(OMPRequiresDecl *D);
471 void VisitOMPCapturedExprDecl(OMPCapturedExprDecl *D);
517 merged_redecls(DeclT *D) { in merged_redecls() argument
518 return llvm::make_range(MergedRedeclIterator<DeclT>(D), in merged_redecls()
541 void ASTDeclReader::Visit(Decl *D) { in Visit() argument
542 DeclVisitor<ASTDeclReader, void>::Visit(D); in Visit()
546 D->getCanonicalDecl()->Used |= IsDeclMarkedUsed; in Visit()
549 if (auto *DD = dyn_cast<DeclaratorDecl>(D)) { in Visit()
554 if (auto *TD = dyn_cast<TypeDecl>(D)) { in Visit()
561 cast<TagDecl>(D)->TypedefNameDeclOrQualifier = in Visit()
563 } else if (auto *ID = dyn_cast<ObjCInterfaceDecl>(D)) { in Visit()
566 } else if (auto *FD = dyn_cast<FunctionDecl>(D)) { in Visit()
570 } else if (auto *VD = dyn_cast<VarDecl>(D)) { in Visit()
572 } else if (auto *FD = dyn_cast<FieldDecl>(D)) { in Visit()
579 void ASTDeclReader::VisitDecl(Decl *D) { in VisitDecl() argument
583 D->setReferenced(DeclBits.getNextBit()); in VisitDecl()
584 D->Used = DeclBits.getNextBit(); in VisitDecl()
585 IsDeclMarkedUsed |= D->Used; in VisitDecl()
586 D->setAccess((AccessSpecifier)DeclBits.getNextBits(/*Width=*/2)); in VisitDecl()
587 D->setImplicit(DeclBits.getNextBit()); in VisitDecl()
590 D->setTopLevelDeclInObjCContainer(DeclBits.getNextBit()); in VisitDecl()
591 D->InvalidDecl = DeclBits.getNextBit(); in VisitDecl()
592 D->FromASTFile = true; in VisitDecl()
594 if (D->isTemplateParameter() || D->isTemplateParameterPack() || in VisitDecl()
595 isa<ParmVarDecl, ObjCTypeParamDecl>(D)) { in VisitDecl()
607 Reader.addPendingDeclContextInfo(D, in VisitDecl()
610 D->setDeclContext(Reader.getContext().getTranslationUnitDecl()); in VisitDecl()
626 D->setDeclContextsImpl(MergedSemaDC ? MergedSemaDC : SemaDC, LexicalDC, in VisitDecl()
629 D->setLocation(ThisDeclLoc); in VisitDecl()
636 D->setAttrsImpl(Attrs, Reader.getContext()); in VisitDecl()
655 D->setModuleOwnershipKind(ModuleOwnership); in VisitDecl()
657 D->setOwningModuleID(SubmoduleID); in VisitDecl()
668 D->setVisibleDespiteOwningModule(); in VisitDecl()
670 Reader.HiddenNamesMap[Owner].push_back(D); in VisitDecl()
673 D->setModuleOwnershipKind(Decl::ModuleOwnershipKind::ModulePrivate); in VisitDecl()
677 void ASTDeclReader::VisitPragmaCommentDecl(PragmaCommentDecl *D) { in VisitPragmaCommentDecl() argument
678 VisitDecl(D); in VisitPragmaCommentDecl()
679 D->setLocation(readSourceLocation()); in VisitPragmaCommentDecl()
680 D->CommentKind = (PragmaMSCommentKind)Record.readInt(); in VisitPragmaCommentDecl()
682 memcpy(D->getTrailingObjects<char>(), Arg.data(), Arg.size()); in VisitPragmaCommentDecl()
683 D->getTrailingObjects<char>()[Arg.size()] = '\0'; in VisitPragmaCommentDecl()
686 void ASTDeclReader::VisitPragmaDetectMismatchDecl(PragmaDetectMismatchDecl *D) { in VisitPragmaDetectMismatchDecl() argument
687 VisitDecl(D); in VisitPragmaDetectMismatchDecl()
688 D->setLocation(readSourceLocation()); in VisitPragmaDetectMismatchDecl()
690 memcpy(D->getTrailingObjects<char>(), Name.data(), Name.size()); in VisitPragmaDetectMismatchDecl()
691 D->getTrailingObjects<char>()[Name.size()] = '\0'; in VisitPragmaDetectMismatchDecl()
693 D->ValueStart = Name.size() + 1; in VisitPragmaDetectMismatchDecl()
695 memcpy(D->getTrailingObjects<char>() + D->ValueStart, Value.data(), in VisitPragmaDetectMismatchDecl()
697 D->getTrailingObjects<char>()[D->ValueStart + Value.size()] = '\0'; in VisitPragmaDetectMismatchDecl()
811 for (auto *D : merged_redecls(ED->getCanonicalDecl())) { in VisitEnumDecl() local
812 if (!D->isFromASTFile() && D->isCompleteDefinition()) { in VisitEnumDecl()
813 OldDef = D; in VisitEnumDecl()
874 for (auto *D : merged_redecls(Canon)) { in VisitRecordDecl() local
875 if (!D->isFromASTFile() && D->isCompleteDefinition()) { in VisitRecordDecl()
876 OldDef = D; in VisitRecordDecl()
1200 void ASTDeclReader::VisitObjCTypeParamDecl(ObjCTypeParamDecl *D) { in VisitObjCTypeParamDecl() argument
1201 VisitTypedefNameDecl(D); in VisitObjCTypeParamDecl()
1203 D->Variance = Record.readInt(); in VisitObjCTypeParamDecl()
1204 D->Index = Record.readInt(); in VisitObjCTypeParamDecl()
1205 D->VarianceLoc = readSourceLocation(); in VisitObjCTypeParamDecl()
1206 D->ColonLoc = readSourceLocation(); in VisitObjCTypeParamDecl()
1270 void ASTDeclReader::MergeDefinitionData(ObjCInterfaceDecl *D, in MergeDefinitionData() argument
1272 struct ObjCInterfaceDecl::DefinitionData &DD = D->data(); in MergeDefinitionData()
1280 if (D->getODRHash() != NewDD.ODRHash) in MergeDefinitionData()
1382 ObjCProtocolDecl *D, struct ObjCProtocolDecl::DefinitionData &&NewDD) { in MergeDefinitionData() argument
1383 struct ObjCProtocolDecl::DefinitionData &DD = D->data(); in MergeDefinitionData()
1391 if (D->getODRHash() != NewDD.ODRHash) in MergeDefinitionData()
1466 void ASTDeclReader::VisitObjCPropertyDecl(ObjCPropertyDecl *D) { in VisitObjCPropertyDecl() argument
1467 VisitNamedDecl(D); in VisitObjCPropertyDecl()
1468 D->setAtLoc(readSourceLocation()); in VisitObjCPropertyDecl()
1469 D->setLParenLoc(readSourceLocation()); in VisitObjCPropertyDecl()
1472 D->setType(T, TSI); in VisitObjCPropertyDecl()
1473 D->setPropertyAttributes((ObjCPropertyAttribute::Kind)Record.readInt()); in VisitObjCPropertyDecl()
1474 D->setPropertyAttributesAsWritten( in VisitObjCPropertyDecl()
1476 D->setPropertyImplementation( in VisitObjCPropertyDecl()
1480 D->setGetterName(GetterName.getObjCSelector(), GetterLoc); in VisitObjCPropertyDecl()
1483 D->setSetterName(SetterName.getObjCSelector(), SetterLoc); in VisitObjCPropertyDecl()
1484 D->setGetterMethodDecl(readDeclAs<ObjCMethodDecl>()); in VisitObjCPropertyDecl()
1485 D->setSetterMethodDecl(readDeclAs<ObjCMethodDecl>()); in VisitObjCPropertyDecl()
1486 D->setPropertyIvarDecl(readDeclAs<ObjCIvarDecl>()); in VisitObjCPropertyDecl()
1489 void ASTDeclReader::VisitObjCImplDecl(ObjCImplDecl *D) { in VisitObjCImplDecl() argument
1490 VisitObjCContainerDecl(D); in VisitObjCImplDecl()
1491 D->setClassInterface(readDeclAs<ObjCInterfaceDecl>()); in VisitObjCImplDecl()
1494 void ASTDeclReader::VisitObjCCategoryImplDecl(ObjCCategoryImplDecl *D) { in VisitObjCCategoryImplDecl() argument
1495 VisitObjCImplDecl(D); in VisitObjCCategoryImplDecl()
1496 D->CategoryNameLoc = readSourceLocation(); in VisitObjCCategoryImplDecl()
1499 void ASTDeclReader::VisitObjCImplementationDecl(ObjCImplementationDecl *D) { in VisitObjCImplementationDecl() argument
1500 VisitObjCImplDecl(D); in VisitObjCImplementationDecl()
1501 D->setSuperClass(readDeclAs<ObjCInterfaceDecl>()); in VisitObjCImplementationDecl()
1502 D->SuperLoc = readSourceLocation(); in VisitObjCImplementationDecl()
1503 D->setIvarLBraceLoc(readSourceLocation()); in VisitObjCImplementationDecl()
1504 D->setIvarRBraceLoc(readSourceLocation()); in VisitObjCImplementationDecl()
1505 D->setHasNonZeroConstructors(Record.readInt()); in VisitObjCImplementationDecl()
1506 D->setHasDestructors(Record.readInt()); in VisitObjCImplementationDecl()
1507 D->NumIvarInitializers = Record.readInt(); in VisitObjCImplementationDecl()
1508 if (D->NumIvarInitializers) in VisitObjCImplementationDecl()
1509 D->IvarInitializers = ReadGlobalOffset(); in VisitObjCImplementationDecl()
1512 void ASTDeclReader::VisitObjCPropertyImplDecl(ObjCPropertyImplDecl *D) { in VisitObjCPropertyImplDecl() argument
1513 VisitDecl(D); in VisitObjCPropertyImplDecl()
1514 D->setAtLoc(readSourceLocation()); in VisitObjCPropertyImplDecl()
1515 D->setPropertyDecl(readDeclAs<ObjCPropertyDecl>()); in VisitObjCPropertyImplDecl()
1516 D->PropertyIvarDecl = readDeclAs<ObjCIvarDecl>(); in VisitObjCPropertyImplDecl()
1517 D->IvarLoc = readSourceLocation(); in VisitObjCPropertyImplDecl()
1518 D->setGetterMethodDecl(readDeclAs<ObjCMethodDecl>()); in VisitObjCPropertyImplDecl()
1519 D->setSetterMethodDecl(readDeclAs<ObjCMethodDecl>()); in VisitObjCPropertyImplDecl()
1520 D->setGetterCXXConstructor(Record.readExpr()); in VisitObjCPropertyImplDecl()
1521 D->setSetterCXXAssignment(Record.readExpr()); in VisitObjCPropertyImplDecl()
1549 void ASTDeclReader::VisitMSGuidDecl(MSGuidDecl *D) { in VisitMSGuidDecl() argument
1550 VisitValueDecl(D); in VisitMSGuidDecl()
1551 D->PartVal.Part1 = Record.readInt(); in VisitMSGuidDecl()
1552 D->PartVal.Part2 = Record.readInt(); in VisitMSGuidDecl()
1553 D->PartVal.Part3 = Record.readInt(); in VisitMSGuidDecl()
1554 for (auto &C : D->PartVal.Part4And5) in VisitMSGuidDecl()
1558 if (MSGuidDecl *Existing = Reader.getContext().MSGuidDecls.GetOrInsertNode(D)) in VisitMSGuidDecl()
1559 Reader.getContext().setPrimaryMergedDecl(D, Existing->getCanonicalDecl()); in VisitMSGuidDecl()
1563 UnnamedGlobalConstantDecl *D) { in VisitUnnamedGlobalConstantDecl() argument
1564 VisitValueDecl(D); in VisitUnnamedGlobalConstantDecl()
1565 D->Value = Record.readAPValue(); in VisitUnnamedGlobalConstantDecl()
1569 Reader.getContext().UnnamedGlobalConstantDecls.GetOrInsertNode(D)) in VisitUnnamedGlobalConstantDecl()
1570 Reader.getContext().setPrimaryMergedDecl(D, Existing->getCanonicalDecl()); in VisitUnnamedGlobalConstantDecl()
1573 void ASTDeclReader::VisitTemplateParamObjectDecl(TemplateParamObjectDecl *D) { in VisitTemplateParamObjectDecl() argument
1574 VisitValueDecl(D); in VisitTemplateParamObjectDecl()
1575 D->Value = Record.readAPValue(); in VisitTemplateParamObjectDecl()
1580 Reader.getContext().TemplateParamObjectDecls.GetOrInsertNode(D)) in VisitTemplateParamObjectDecl()
1581 Reader.getContext().setPrimaryMergedDecl(D, Existing->getCanonicalDecl()); in VisitTemplateParamObjectDecl()
1758 void ASTDeclReader::VisitTopLevelStmtDecl(TopLevelStmtDecl *D) { in VisitTopLevelStmtDecl() argument
1759 VisitDecl(D); in VisitTopLevelStmtDecl()
1760 D->Statement = Record.readStmt(); in VisitTopLevelStmtDecl()
1809 void ASTDeclReader::VisitLinkageSpecDecl(LinkageSpecDecl *D) { in VisitLinkageSpecDecl() argument
1810 VisitDecl(D); in VisitLinkageSpecDecl()
1811 D->setLanguage(static_cast<LinkageSpecLanguageIDs>(Record.readInt())); in VisitLinkageSpecDecl()
1812 D->setExternLoc(readSourceLocation()); in VisitLinkageSpecDecl()
1813 D->setRBraceLoc(readSourceLocation()); in VisitLinkageSpecDecl()
1816 void ASTDeclReader::VisitExportDecl(ExportDecl *D) { in VisitExportDecl() argument
1817 VisitDecl(D); in VisitExportDecl()
1818 D->RBraceLoc = readSourceLocation(); in VisitExportDecl()
1821 void ASTDeclReader::VisitLabelDecl(LabelDecl *D) { in VisitLabelDecl() argument
1822 VisitNamedDecl(D); in VisitLabelDecl()
1823 D->setLocStart(readSourceLocation()); in VisitLabelDecl()
1826 void ASTDeclReader::VisitNamespaceDecl(NamespaceDecl *D) { in VisitNamespaceDecl() argument
1827 RedeclarableResult Redecl = VisitRedeclarable(D); in VisitNamespaceDecl()
1828 VisitNamedDecl(D); in VisitNamespaceDecl()
1831 D->setInline(NamespaceDeclBits.getNextBit()); in VisitNamespaceDecl()
1832 D->setNested(NamespaceDeclBits.getNextBit()); in VisitNamespaceDecl()
1833 D->LocStart = readSourceLocation(); in VisitNamespaceDecl()
1834 D->RBraceLoc = readSourceLocation(); in VisitNamespaceDecl()
1844 mergeRedeclarable(D, Redecl); in VisitNamespaceDecl()
1852 D->setAnonymousNamespace(Anon); in VisitNamespaceDecl()
1856 void ASTDeclReader::VisitHLSLBufferDecl(HLSLBufferDecl *D) { in VisitHLSLBufferDecl() argument
1857 VisitNamedDecl(D); in VisitHLSLBufferDecl()
1858 VisitDeclContext(D); in VisitHLSLBufferDecl()
1859 D->IsCBuffer = Record.readBool(); in VisitHLSLBufferDecl()
1860 D->KwLoc = readSourceLocation(); in VisitHLSLBufferDecl()
1861 D->LBraceLoc = readSourceLocation(); in VisitHLSLBufferDecl()
1862 D->RBraceLoc = readSourceLocation(); in VisitHLSLBufferDecl()
1865 void ASTDeclReader::VisitNamespaceAliasDecl(NamespaceAliasDecl *D) { in VisitNamespaceAliasDecl() argument
1866 RedeclarableResult Redecl = VisitRedeclarable(D); in VisitNamespaceAliasDecl()
1867 VisitNamedDecl(D); in VisitNamespaceAliasDecl()
1868 D->NamespaceLoc = readSourceLocation(); in VisitNamespaceAliasDecl()
1869 D->IdentLoc = readSourceLocation(); in VisitNamespaceAliasDecl()
1870 D->QualifierLoc = Record.readNestedNameSpecifierLoc(); in VisitNamespaceAliasDecl()
1871 D->Namespace = readDeclAs<NamedDecl>(); in VisitNamespaceAliasDecl()
1872 mergeRedeclarable(D, Redecl); in VisitNamespaceAliasDecl()
1875 void ASTDeclReader::VisitUsingDecl(UsingDecl *D) { in VisitUsingDecl() argument
1876 VisitNamedDecl(D); in VisitUsingDecl()
1877 D->setUsingLoc(readSourceLocation()); in VisitUsingDecl()
1878 D->QualifierLoc = Record.readNestedNameSpecifierLoc(); in VisitUsingDecl()
1879 D->DNLoc = Record.readDeclarationNameLoc(D->getDeclName()); in VisitUsingDecl()
1880 D->FirstUsingShadow.setPointer(readDeclAs<UsingShadowDecl>()); in VisitUsingDecl()
1881 D->setTypename(Record.readInt()); in VisitUsingDecl()
1883 Reader.getContext().setInstantiatedFromUsingDecl(D, Pattern); in VisitUsingDecl()
1884 mergeMergeable(D); in VisitUsingDecl()
1887 void ASTDeclReader::VisitUsingEnumDecl(UsingEnumDecl *D) { in VisitUsingEnumDecl() argument
1888 VisitNamedDecl(D); in VisitUsingEnumDecl()
1889 D->setUsingLoc(readSourceLocation()); in VisitUsingEnumDecl()
1890 D->setEnumLoc(readSourceLocation()); in VisitUsingEnumDecl()
1891 D->setEnumType(Record.readTypeSourceInfo()); in VisitUsingEnumDecl()
1892 D->FirstUsingShadow.setPointer(readDeclAs<UsingShadowDecl>()); in VisitUsingEnumDecl()
1894 Reader.getContext().setInstantiatedFromUsingEnumDecl(D, Pattern); in VisitUsingEnumDecl()
1895 mergeMergeable(D); in VisitUsingEnumDecl()
1898 void ASTDeclReader::VisitUsingPackDecl(UsingPackDecl *D) { in VisitUsingPackDecl() argument
1899 VisitNamedDecl(D); in VisitUsingPackDecl()
1900 D->InstantiatedFrom = readDeclAs<NamedDecl>(); in VisitUsingPackDecl()
1901 auto **Expansions = D->getTrailingObjects<NamedDecl *>(); in VisitUsingPackDecl()
1902 for (unsigned I = 0; I != D->NumExpansions; ++I) in VisitUsingPackDecl()
1904 mergeMergeable(D); in VisitUsingPackDecl()
1907 void ASTDeclReader::VisitUsingShadowDecl(UsingShadowDecl *D) { in VisitUsingShadowDecl() argument
1908 RedeclarableResult Redecl = VisitRedeclarable(D); in VisitUsingShadowDecl()
1909 VisitNamedDecl(D); in VisitUsingShadowDecl()
1910 D->Underlying = readDeclAs<NamedDecl>(); in VisitUsingShadowDecl()
1911 D->IdentifierNamespace = Record.readInt(); in VisitUsingShadowDecl()
1912 D->UsingOrNextShadow = readDeclAs<NamedDecl>(); in VisitUsingShadowDecl()
1915 Reader.getContext().setInstantiatedFromUsingShadowDecl(D, Pattern); in VisitUsingShadowDecl()
1916 mergeRedeclarable(D, Redecl); in VisitUsingShadowDecl()
1920 ConstructorUsingShadowDecl *D) { in VisitConstructorUsingShadowDecl() argument
1921 VisitUsingShadowDecl(D); in VisitConstructorUsingShadowDecl()
1922 D->NominatedBaseClassShadowDecl = readDeclAs<ConstructorUsingShadowDecl>(); in VisitConstructorUsingShadowDecl()
1923 D->ConstructedBaseClassShadowDecl = readDeclAs<ConstructorUsingShadowDecl>(); in VisitConstructorUsingShadowDecl()
1924 D->IsVirtual = Record.readInt(); in VisitConstructorUsingShadowDecl()
1927 void ASTDeclReader::VisitUsingDirectiveDecl(UsingDirectiveDecl *D) { in VisitUsingDirectiveDecl() argument
1928 VisitNamedDecl(D); in VisitUsingDirectiveDecl()
1929 D->UsingLoc = readSourceLocation(); in VisitUsingDirectiveDecl()
1930 D->NamespaceLoc = readSourceLocation(); in VisitUsingDirectiveDecl()
1931 D->QualifierLoc = Record.readNestedNameSpecifierLoc(); in VisitUsingDirectiveDecl()
1932 D->NominatedNamespace = readDeclAs<NamedDecl>(); in VisitUsingDirectiveDecl()
1933 D->CommonAncestor = readDeclAs<DeclContext>(); in VisitUsingDirectiveDecl()
1936 void ASTDeclReader::VisitUnresolvedUsingValueDecl(UnresolvedUsingValueDecl *D) { in VisitUnresolvedUsingValueDecl() argument
1937 VisitValueDecl(D); in VisitUnresolvedUsingValueDecl()
1938 D->setUsingLoc(readSourceLocation()); in VisitUnresolvedUsingValueDecl()
1939 D->QualifierLoc = Record.readNestedNameSpecifierLoc(); in VisitUnresolvedUsingValueDecl()
1940 D->DNLoc = Record.readDeclarationNameLoc(D->getDeclName()); in VisitUnresolvedUsingValueDecl()
1941 D->EllipsisLoc = readSourceLocation(); in VisitUnresolvedUsingValueDecl()
1942 mergeMergeable(D); in VisitUnresolvedUsingValueDecl()
1946 UnresolvedUsingTypenameDecl *D) { in VisitUnresolvedUsingTypenameDecl() argument
1947 VisitTypeDecl(D); in VisitUnresolvedUsingTypenameDecl()
1948 D->TypenameLocation = readSourceLocation(); in VisitUnresolvedUsingTypenameDecl()
1949 D->QualifierLoc = Record.readNestedNameSpecifierLoc(); in VisitUnresolvedUsingTypenameDecl()
1950 D->EllipsisLoc = readSourceLocation(); in VisitUnresolvedUsingTypenameDecl()
1951 mergeMergeable(D); in VisitUnresolvedUsingTypenameDecl()
1955 UnresolvedUsingIfExistsDecl *D) { in VisitUnresolvedUsingIfExistsDecl() argument
1956 VisitNamedDecl(D); in VisitUnresolvedUsingIfExistsDecl()
1960 struct CXXRecordDecl::DefinitionData &Data, const CXXRecordDecl *D, in ReadCXXDefinitionData() argument
1978 Reader.DefinitionSource[D] = in ReadCXXDefinitionData()
2017 Reader.getContext().DeviceLambdaManglingNumbers[D] = DeviceManglingNumber; in ReadCXXDefinitionData()
2054 CXXRecordDecl *D, struct CXXRecordDecl::DefinitionData &&MergeDD) { in MergeDefinitionData() argument
2055 assert(D->DefinitionData && in MergeDefinitionData()
2057 auto &DD = *D->DefinitionData; in MergeDefinitionData()
2137 if (shouldSkipCheckingODR(MergeDD.Definition) || shouldSkipCheckingODR(D)) in MergeDefinitionData()
2140 if (D->getODRHash() != MergeDD.ODRHash) { in MergeDefinitionData()
2149 void ASTDeclReader::ReadCXXRecordDefinition(CXXRecordDecl *D, bool Update, in ReadCXXRecordDefinition() argument
2162 D, nullptr, CXXRecordDecl::LDK_Unknown, false, LCD_None); in ReadCXXRecordDefinition()
2164 DD = new (C) struct CXXRecordDecl::DefinitionData(D); in ReadCXXRecordDefinition()
2166 CXXRecordDecl *Canon = D->getCanonicalDecl(); in ReadCXXRecordDefinition()
2172 D->DefinitionData = Canon->DefinitionData; in ReadCXXRecordDefinition()
2173 ReadCXXDefinitionData(*DD, D, LambdaContext, IndexInLambdaContext); in ReadCXXRecordDefinition()
2184 D->setCompleteDefinition(true); in ReadCXXRecordDefinition()
2189 if (Update || Canon != D) in ReadCXXRecordDefinition()
2190 Reader.PendingDefinitions.insert(D); in ReadCXXRecordDefinition()
2194 ASTDeclReader::VisitCXXRecordDeclImpl(CXXRecordDecl *D) { in VisitCXXRecordDeclImpl() argument
2195 RedeclarableResult Redecl = VisitRecordDeclImpl(D); in VisitCXXRecordDeclImpl()
2212 if (!isa<ClassTemplateSpecializationDecl>(D)) in VisitCXXRecordDeclImpl()
2213 mergeRedeclarable(D, Redecl); in VisitCXXRecordDeclImpl()
2218 D->TemplateOrInstantiation = Template; in VisitCXXRecordDeclImpl()
2236 D->TemplateOrInstantiation = MSI; in VisitCXXRecordDeclImpl()
2237 mergeRedeclarable(D, Redecl); in VisitCXXRecordDeclImpl()
2244 mergeLambda(D, Redecl, LambdaContext, IndexInLambdaContext); in VisitCXXRecordDeclImpl()
2251 ReadCXXRecordDefinition(D, /*Update=*/false, LambdaContext, in VisitCXXRecordDeclImpl()
2255 D->DefinitionData = D->getCanonicalDecl()->DefinitionData; in VisitCXXRecordDeclImpl()
2261 if (KeyFn.isValid() && D->isCompleteDefinition()) in VisitCXXRecordDeclImpl()
2265 C.KeyFunctions[D] = KeyFn.getRawValue(); in VisitCXXRecordDeclImpl()
2271 void ASTDeclReader::VisitCXXDeductionGuideDecl(CXXDeductionGuideDecl *D) { in VisitCXXDeductionGuideDecl() argument
2272 D->setExplicitSpecifier(Record.readExplicitSpec()); in VisitCXXDeductionGuideDecl()
2273 D->Ctor = readDeclAs<CXXConstructorDecl>(); in VisitCXXDeductionGuideDecl()
2274 VisitFunctionDecl(D); in VisitCXXDeductionGuideDecl()
2275 D->setDeductionCandidateKind( in VisitCXXDeductionGuideDecl()
2279 void ASTDeclReader::VisitCXXMethodDecl(CXXMethodDecl *D) { in VisitCXXMethodDecl() argument
2280 VisitFunctionDecl(D); in VisitCXXMethodDecl()
2283 if (D->isCanonicalDecl()) { in VisitCXXMethodDecl()
2288 Reader.getContext().addOverriddenMethod(D, MD->getCanonicalDecl()); in VisitCXXMethodDecl()
2297 void ASTDeclReader::VisitCXXConstructorDecl(CXXConstructorDecl *D) { in VisitCXXConstructorDecl() argument
2300 D->setExplicitSpecifier(Record.readExplicitSpec()); in VisitCXXConstructorDecl()
2301 if (D->isInheritingConstructor()) { in VisitCXXConstructorDecl()
2304 *D->getTrailingObjects<InheritedConstructor>() = in VisitCXXConstructorDecl()
2308 VisitCXXMethodDecl(D); in VisitCXXConstructorDecl()
2311 void ASTDeclReader::VisitCXXDestructorDecl(CXXDestructorDecl *D) { in VisitCXXDestructorDecl() argument
2312 VisitCXXMethodDecl(D); in VisitCXXDestructorDecl()
2315 CXXDestructorDecl *Canon = D->getCanonicalDecl(); in VisitCXXDestructorDecl()
2325 void ASTDeclReader::VisitCXXConversionDecl(CXXConversionDecl *D) { in VisitCXXConversionDecl() argument
2326 D->setExplicitSpecifier(Record.readExplicitSpec()); in VisitCXXConversionDecl()
2327 VisitCXXMethodDecl(D); in VisitCXXConversionDecl()
2330 void ASTDeclReader::VisitImportDecl(ImportDecl *D) { in VisitImportDecl() argument
2331 VisitDecl(D); in VisitImportDecl()
2332 D->ImportedModule = readModule(); in VisitImportDecl()
2333 D->setImportComplete(Record.readInt()); in VisitImportDecl()
2334 auto *StoredLocs = D->getTrailingObjects<SourceLocation>(); in VisitImportDecl()
2340 void ASTDeclReader::VisitAccessSpecDecl(AccessSpecDecl *D) { in VisitAccessSpecDecl() argument
2341 VisitDecl(D); in VisitAccessSpecDecl()
2342 D->setColonLoc(readSourceLocation()); in VisitAccessSpecDecl()
2345 void ASTDeclReader::VisitFriendDecl(FriendDecl *D) { in VisitFriendDecl() argument
2346 VisitDecl(D); in VisitFriendDecl()
2348 D->Friend = readDeclAs<NamedDecl>(); in VisitFriendDecl()
2350 D->Friend = readTypeSourceInfo(); in VisitFriendDecl()
2351 for (unsigned i = 0; i != D->NumTPLists; ++i) in VisitFriendDecl()
2352 D->getTrailingObjects<TemplateParameterList *>()[i] = in VisitFriendDecl()
2354 D->NextFriend = readDeclID().getRawValue(); in VisitFriendDecl()
2355 D->UnsupportedFriend = (Record.readInt() != 0); in VisitFriendDecl()
2356 D->FriendLoc = readSourceLocation(); in VisitFriendDecl()
2359 void ASTDeclReader::VisitFriendTemplateDecl(FriendTemplateDecl *D) { in VisitFriendTemplateDecl() argument
2360 VisitDecl(D); in VisitFriendTemplateDecl()
2362 D->NumParams = NumParams; in VisitFriendTemplateDecl()
2363 D->Params = new (Reader.getContext()) TemplateParameterList *[NumParams]; in VisitFriendTemplateDecl()
2365 D->Params[i] = Record.readTemplateParameterList(); in VisitFriendTemplateDecl()
2367 D->Friend = readDeclAs<NamedDecl>(); in VisitFriendTemplateDecl()
2369 D->Friend = readTypeSourceInfo(); in VisitFriendTemplateDecl()
2370 D->FriendLoc = readSourceLocation(); in VisitFriendTemplateDecl()
2373 void ASTDeclReader::VisitTemplateDecl(TemplateDecl *D) { in VisitTemplateDecl() argument
2374 VisitNamedDecl(D); in VisitTemplateDecl()
2376 assert(!D->TemplateParams && "TemplateParams already set!"); in VisitTemplateDecl()
2377 D->TemplateParams = Record.readTemplateParameterList(); in VisitTemplateDecl()
2378 D->init(readDeclAs<NamedDecl>()); in VisitTemplateDecl()
2381 void ASTDeclReader::VisitConceptDecl(ConceptDecl *D) { in VisitConceptDecl() argument
2382 VisitTemplateDecl(D); in VisitConceptDecl()
2383 D->ConstraintExpr = Record.readExpr(); in VisitConceptDecl()
2384 mergeMergeable(D); in VisitConceptDecl()
2388 ImplicitConceptSpecializationDecl *D) { in VisitImplicitConceptSpecializationDecl() argument
2391 VisitDecl(D); in VisitImplicitConceptSpecializationDecl()
2393 for (unsigned I = 0; I < D->NumTemplateArgs; ++I) in VisitImplicitConceptSpecializationDecl()
2395 D->setTemplateArguments(Args); in VisitImplicitConceptSpecializationDecl()
2398 void ASTDeclReader::VisitRequiresExprBodyDecl(RequiresExprBodyDecl *D) { in VisitRequiresExprBodyDecl() argument
2402 ASTDeclReader::VisitRedeclarableTemplateDecl(RedeclarableTemplateDecl *D) { in VisitRedeclarableTemplateDecl() argument
2403 RedeclarableResult Redecl = VisitRedeclarable(D); in VisitRedeclarableTemplateDecl()
2407 RedeclarableTemplateDecl *CanonD = D->getCanonicalDecl(); in VisitRedeclarableTemplateDecl()
2412 D->Common = CanonD->Common; in VisitRedeclarableTemplateDecl()
2418 assert(RTD->getKind() == D->getKind() && in VisitRedeclarableTemplateDecl()
2420 D->setInstantiatedFromMemberTemplate(RTD); in VisitRedeclarableTemplateDecl()
2422 D->setMemberSpecialization(); in VisitRedeclarableTemplateDecl()
2426 VisitTemplateDecl(D); in VisitRedeclarableTemplateDecl()
2427 D->IdentifierNamespace = Record.readInt(); in VisitRedeclarableTemplateDecl()
2432 void ASTDeclReader::VisitClassTemplateDecl(ClassTemplateDecl *D) { in VisitClassTemplateDecl() argument
2433 RedeclarableResult Redecl = VisitRedeclarableTemplateDecl(D); in VisitClassTemplateDecl()
2434 mergeRedeclarableTemplate(D, Redecl); in VisitClassTemplateDecl()
2441 ASTDeclReader::AddLazySpecializations(D, SpecIDs); in VisitClassTemplateDecl()
2444 if (D->getTemplatedDecl()->TemplateOrInstantiation) { in VisitClassTemplateDecl()
2449 D->getTemplatedDecl(), D->getInjectedClassNameSpecialization()); in VisitClassTemplateDecl()
2453 void ASTDeclReader::VisitBuiltinTemplateDecl(BuiltinTemplateDecl *D) { in VisitBuiltinTemplateDecl() argument
2460 void ASTDeclReader::VisitVarTemplateDecl(VarTemplateDecl *D) { in VisitVarTemplateDecl() argument
2461 RedeclarableResult Redecl = VisitRedeclarableTemplateDecl(D); in VisitVarTemplateDecl()
2462 mergeRedeclarableTemplate(D, Redecl); in VisitVarTemplateDecl()
2469 ASTDeclReader::AddLazySpecializations(D, SpecIDs); in VisitVarTemplateDecl()
2475 ClassTemplateSpecializationDecl *D) { in VisitClassTemplateSpecializationDeclImpl() argument
2476 RedeclarableResult Redecl = VisitCXXRecordDeclImpl(D); in VisitClassTemplateSpecializationDeclImpl()
2481 D->SpecializedTemplate = CTD; in VisitClassTemplateSpecializationDeclImpl()
2493 D->SpecializedTemplate = PS; in VisitClassTemplateSpecializationDeclImpl()
2499 D->TemplateArgs = TemplateArgumentList::CreateCopy(C, TemplArgs); in VisitClassTemplateSpecializationDeclImpl()
2500 D->PointOfInstantiation = readSourceLocation(); in VisitClassTemplateSpecializationDeclImpl()
2501 D->SpecializationKind = (TemplateSpecializationKind)Record.readInt(); in VisitClassTemplateSpecializationDeclImpl()
2506 if (D->isCanonicalDecl()) { // It's kept in the folding set. in VisitClassTemplateSpecializationDeclImpl()
2509 if (auto *Partial = dyn_cast<ClassTemplatePartialSpecializationDecl>(D)) { in VisitClassTemplateSpecializationDeclImpl()
2514 CanonPattern->getCommonPtr()->Specializations.GetOrInsertNode(D); in VisitClassTemplateSpecializationDeclImpl()
2517 if (CanonSpec != D) { in VisitClassTemplateSpecializationDeclImpl()
2518 mergeRedeclarable<TagDecl>(D, CanonSpec, Redecl); in VisitClassTemplateSpecializationDeclImpl()
2522 if (auto *DDD = D->DefinitionData) { in VisitClassTemplateSpecializationDeclImpl()
2526 CanonSpec->DefinitionData = D->DefinitionData; in VisitClassTemplateSpecializationDeclImpl()
2528 D->DefinitionData = CanonSpec->DefinitionData; in VisitClassTemplateSpecializationDeclImpl()
2538 D->ExplicitInfo = ExplicitInfo; in VisitClassTemplateSpecializationDeclImpl()
2542 D->setTemplateArgsAsWritten(Record.readASTTemplateArgumentListInfo()); in VisitClassTemplateSpecializationDeclImpl()
2548 ClassTemplatePartialSpecializationDecl *D) { in VisitClassTemplatePartialSpecializationDecl() argument
2552 D->TemplateParams = Params; in VisitClassTemplatePartialSpecializationDecl()
2554 RedeclarableResult Redecl = VisitClassTemplateSpecializationDeclImpl(D); in VisitClassTemplatePartialSpecializationDecl()
2558 D->InstantiatedFromMember.setPointer( in VisitClassTemplatePartialSpecializationDecl()
2560 D->InstantiatedFromMember.setInt(Record.readInt()); in VisitClassTemplatePartialSpecializationDecl()
2564 void ASTDeclReader::VisitFunctionTemplateDecl(FunctionTemplateDecl *D) { in VisitFunctionTemplateDecl() argument
2565 RedeclarableResult Redecl = VisitRedeclarableTemplateDecl(D); in VisitFunctionTemplateDecl()
2571 ASTDeclReader::AddLazySpecializations(D, SpecIDs); in VisitFunctionTemplateDecl()
2582 VarTemplateSpecializationDecl *D) { in VisitVarTemplateSpecializationDeclImpl() argument
2586 D->SpecializedTemplate = VTD; in VisitVarTemplateSpecializationDeclImpl()
2598 D->SpecializedTemplate = PS; in VisitVarTemplateSpecializationDeclImpl()
2607 D->ExplicitInfo = ExplicitInfo; in VisitVarTemplateSpecializationDeclImpl()
2611 D->setTemplateArgsAsWritten(Record.readASTTemplateArgumentListInfo()); in VisitVarTemplateSpecializationDeclImpl()
2615 D->TemplateArgs = TemplateArgumentList::CreateCopy(C, TemplArgs); in VisitVarTemplateSpecializationDeclImpl()
2616 D->PointOfInstantiation = readSourceLocation(); in VisitVarTemplateSpecializationDeclImpl()
2617 D->SpecializationKind = (TemplateSpecializationKind)Record.readInt(); in VisitVarTemplateSpecializationDeclImpl()
2618 D->IsCompleteDefinition = Record.readInt(); in VisitVarTemplateSpecializationDeclImpl()
2620 RedeclarableResult Redecl = VisitVarDeclImpl(D); in VisitVarTemplateSpecializationDeclImpl()
2625 if (D->isCanonicalDecl()) { // It's kept in the folding set. in VisitVarTemplateSpecializationDeclImpl()
2627 if (auto *Partial = dyn_cast<VarTemplatePartialSpecializationDecl>(D)) { in VisitVarTemplateSpecializationDeclImpl()
2632 CanonPattern->getCommonPtr()->Specializations.GetOrInsertNode(D); in VisitVarTemplateSpecializationDeclImpl()
2635 if (CanonSpec != D) in VisitVarTemplateSpecializationDeclImpl()
2636 mergeRedeclarable<VarDecl>(D, CanonSpec, Redecl); in VisitVarTemplateSpecializationDeclImpl()
2649 VarTemplatePartialSpecializationDecl *D) { in VisitVarTemplatePartialSpecializationDecl() argument
2651 D->TemplateParams = Params; in VisitVarTemplatePartialSpecializationDecl()
2653 RedeclarableResult Redecl = VisitVarTemplateSpecializationDeclImpl(D); in VisitVarTemplatePartialSpecializationDecl()
2657 D->InstantiatedFromMember.setPointer( in VisitVarTemplatePartialSpecializationDecl()
2659 D->InstantiatedFromMember.setInt(Record.readInt()); in VisitVarTemplatePartialSpecializationDecl()
2663 void ASTDeclReader::VisitTemplateTypeParmDecl(TemplateTypeParmDecl *D) { in VisitTemplateTypeParmDecl() argument
2664 VisitTypeDecl(D); in VisitTemplateTypeParmDecl()
2666 D->setDeclaredWithTypename(Record.readInt()); in VisitTemplateTypeParmDecl()
2669 if (TypeConstraintInitialized && D->hasTypeConstraint()) { in VisitTemplateTypeParmDecl()
2675 D->setTypeConstraint(CR, ImmediatelyDeclaredConstraint); in VisitTemplateTypeParmDecl()
2676 if ((D->ExpandedParameterPack = Record.readInt())) in VisitTemplateTypeParmDecl()
2677 D->NumExpanded = Record.readInt(); in VisitTemplateTypeParmDecl()
2681 D->setDefaultArgument(Reader.getContext(), in VisitTemplateTypeParmDecl()
2685 void ASTDeclReader::VisitNonTypeTemplateParmDecl(NonTypeTemplateParmDecl *D) { in VisitNonTypeTemplateParmDecl() argument
2686 VisitDeclaratorDecl(D); in VisitNonTypeTemplateParmDecl()
2688 D->setDepth(Record.readInt()); in VisitNonTypeTemplateParmDecl()
2689 D->setPosition(Record.readInt()); in VisitNonTypeTemplateParmDecl()
2690 if (D->hasPlaceholderTypeConstraint()) in VisitNonTypeTemplateParmDecl()
2691 D->setPlaceholderTypeConstraint(Record.readExpr()); in VisitNonTypeTemplateParmDecl()
2692 if (D->isExpandedParameterPack()) { in VisitNonTypeTemplateParmDecl()
2694 D->getTrailingObjects<std::pair<QualType, TypeSourceInfo *>>(); in VisitNonTypeTemplateParmDecl()
2695 for (unsigned I = 0, N = D->getNumExpansionTypes(); I != N; ++I) { in VisitNonTypeTemplateParmDecl()
2701 D->ParameterPack = Record.readInt(); in VisitNonTypeTemplateParmDecl()
2703 D->setDefaultArgument(Reader.getContext(), in VisitNonTypeTemplateParmDecl()
2708 void ASTDeclReader::VisitTemplateTemplateParmDecl(TemplateTemplateParmDecl *D) { in VisitTemplateTemplateParmDecl() argument
2709 VisitTemplateDecl(D); in VisitTemplateTemplateParmDecl()
2710 D->setDeclaredWithTypename(Record.readBool()); in VisitTemplateTemplateParmDecl()
2712 D->setDepth(Record.readInt()); in VisitTemplateTemplateParmDecl()
2713 D->setPosition(Record.readInt()); in VisitTemplateTemplateParmDecl()
2714 if (D->isExpandedParameterPack()) { in VisitTemplateTemplateParmDecl()
2715 auto **Data = D->getTrailingObjects<TemplateParameterList *>(); in VisitTemplateTemplateParmDecl()
2716 for (unsigned I = 0, N = D->getNumExpansionTemplateParameters(); in VisitTemplateTemplateParmDecl()
2721 D->ParameterPack = Record.readInt(); in VisitTemplateTemplateParmDecl()
2723 D->setDefaultArgument(Reader.getContext(), in VisitTemplateTemplateParmDecl()
2728 void ASTDeclReader::VisitTypeAliasTemplateDecl(TypeAliasTemplateDecl *D) { in VisitTypeAliasTemplateDecl() argument
2729 RedeclarableResult Redecl = VisitRedeclarableTemplateDecl(D); in VisitTypeAliasTemplateDecl()
2730 mergeRedeclarableTemplate(D, Redecl); in VisitTypeAliasTemplateDecl()
2733 void ASTDeclReader::VisitStaticAssertDecl(StaticAssertDecl *D) { in VisitStaticAssertDecl() argument
2734 VisitDecl(D); in VisitStaticAssertDecl()
2735 D->AssertExprAndFailed.setPointer(Record.readExpr()); in VisitStaticAssertDecl()
2736 D->AssertExprAndFailed.setInt(Record.readInt()); in VisitStaticAssertDecl()
2737 D->Message = cast_or_null<StringLiteral>(Record.readExpr()); in VisitStaticAssertDecl()
2738 D->RParenLoc = readSourceLocation(); in VisitStaticAssertDecl()
2741 void ASTDeclReader::VisitEmptyDecl(EmptyDecl *D) { in VisitEmptyDecl() argument
2742 VisitDecl(D); in VisitEmptyDecl()
2746 LifetimeExtendedTemporaryDecl *D) { in VisitLifetimeExtendedTemporaryDecl() argument
2747 VisitDecl(D); in VisitLifetimeExtendedTemporaryDecl()
2748 D->ExtendingDecl = readDeclAs<ValueDecl>(); in VisitLifetimeExtendedTemporaryDecl()
2749 D->ExprWithTemporary = Record.readStmt(); in VisitLifetimeExtendedTemporaryDecl()
2751 D->Value = new (D->getASTContext()) APValue(Record.readAPValue()); in VisitLifetimeExtendedTemporaryDecl()
2752 D->getASTContext().addDestruction(D->Value); in VisitLifetimeExtendedTemporaryDecl()
2754 D->ManglingNumber = Record.readInt(); in VisitLifetimeExtendedTemporaryDecl()
2755 mergeMergeable(D); in VisitLifetimeExtendedTemporaryDecl()
2767 ASTDeclReader::VisitRedeclarable(Redeclarable<T> *D) { in VisitRedeclarable() argument
2804 if (FirstDecl != D) { in VisitRedeclarable()
2809 D->RedeclLink = Redeclarable<T>::PreviousDeclLink(FirstDecl); in VisitRedeclarable()
2810 D->First = FirstDecl->getCanonicalDecl(); in VisitRedeclarable()
2813 auto *DAsT = static_cast<T *>(D); in VisitRedeclarable()
2838 auto *D = static_cast<T *>(DBase); in mergeRedeclarable() local
2842 mergeRedeclarable(D, cast<T>(Existing), Redecl); in mergeRedeclarable()
2843 else if (FindExistingResult ExistingRes = findExisting(D)) in mergeRedeclarable()
2845 mergeRedeclarable(D, Existing, Redecl); in mergeRedeclarable()
2854 void ASTDeclReader::mergeLambda(CXXRecordDecl *D, RedeclarableResult &Redecl, in mergeLambda() argument
2859 return mergeRedeclarable(D, Redecl); in mergeLambda()
2866 if (!D->isFirstDecl()) in mergeLambda()
2871 mergeRedeclarable(D, cast<TagDecl>(Existing), Redecl); in mergeLambda()
2878 mergeRedeclarable(D, cast<TagDecl>(Slot), Redecl); in mergeLambda()
2880 Slot = D; in mergeLambda()
2883 void ASTDeclReader::mergeRedeclarableTemplate(RedeclarableTemplateDecl *D, in mergeRedeclarableTemplate() argument
2885 mergeRedeclarable(D, Redecl); in mergeRedeclarableTemplate()
2889 D->Common = D->getCanonicalDecl()->Common; in mergeRedeclarableTemplate()
2902 void ASTDeclReader::mergeTemplatePattern(RedeclarableTemplateDecl *D, in mergeTemplatePattern() argument
2905 auto *DPattern = D->getTemplatedDecl(); in mergeTemplatePattern()
2947 auto *D = static_cast<T *>(DBase); in mergeRedeclarable() local
2949 T *DCanon = D->getCanonicalDecl(); in mergeRedeclarable()
2954 D->RedeclLink = Redeclarable<T>::PreviousDeclLink(ExistingCanon); in mergeRedeclarable()
2955 D->First = ExistingCanon; in mergeRedeclarable()
2956 ExistingCanon->Used |= D->Used; in mergeRedeclarable()
2957 D->Used = false; in mergeRedeclarable()
2960 if (auto *DTemplate = dyn_cast<RedeclarableTemplateDecl>(D)) in mergeRedeclarable()
2987 void ASTDeclReader::mergeMergeable(LifetimeExtendedTemporaryDecl *D) { in mergeMergeable() argument
2992 LifetimeExtendedTemporaryDecl *LETDecl = D; in mergeMergeable()
3009 void ASTDeclReader::mergeMergeable(Mergeable<T> *D) { in mergeMergeable() argument
3019 !allowODRLikeMergeInC(dyn_cast<NamedDecl>(static_cast<T*>(D)))) in mergeMergeable()
3022 if (FindExistingResult ExistingRes = findExisting(static_cast<T*>(D))) in mergeMergeable()
3024 Reader.getContext().setPrimaryMergedDecl(static_cast<T *>(D), in mergeMergeable()
3028 void ASTDeclReader::VisitOMPThreadPrivateDecl(OMPThreadPrivateDecl *D) { in VisitOMPThreadPrivateDecl() argument
3029 Record.readOMPChildren(D->Data); in VisitOMPThreadPrivateDecl()
3030 VisitDecl(D); in VisitOMPThreadPrivateDecl()
3033 void ASTDeclReader::VisitOMPAllocateDecl(OMPAllocateDecl *D) { in VisitOMPAllocateDecl() argument
3034 Record.readOMPChildren(D->Data); in VisitOMPAllocateDecl()
3035 VisitDecl(D); in VisitOMPAllocateDecl()
3038 void ASTDeclReader::VisitOMPRequiresDecl(OMPRequiresDecl * D) { in VisitOMPRequiresDecl() argument
3039 Record.readOMPChildren(D->Data); in VisitOMPRequiresDecl()
3040 VisitDecl(D); in VisitOMPRequiresDecl()
3043 void ASTDeclReader::VisitOMPDeclareReductionDecl(OMPDeclareReductionDecl *D) { in VisitOMPDeclareReductionDecl() argument
3044 VisitValueDecl(D); in VisitOMPDeclareReductionDecl()
3045 D->setLocation(readSourceLocation()); in VisitOMPDeclareReductionDecl()
3048 D->setCombinerData(In, Out); in VisitOMPDeclareReductionDecl()
3050 D->setCombiner(Combiner); in VisitOMPDeclareReductionDecl()
3053 D->setInitializerData(Orig, Priv); in VisitOMPDeclareReductionDecl()
3056 D->setInitializer(Init, IK); in VisitOMPDeclareReductionDecl()
3057 D->PrevDeclInScope = readDeclID().getRawValue(); in VisitOMPDeclareReductionDecl()
3060 void ASTDeclReader::VisitOMPDeclareMapperDecl(OMPDeclareMapperDecl *D) { in VisitOMPDeclareMapperDecl() argument
3061 Record.readOMPChildren(D->Data); in VisitOMPDeclareMapperDecl()
3062 VisitValueDecl(D); in VisitOMPDeclareMapperDecl()
3063 D->VarName = Record.readDeclarationName(); in VisitOMPDeclareMapperDecl()
3064 D->PrevDeclInScope = readDeclID().getRawValue(); in VisitOMPDeclareMapperDecl()
3067 void ASTDeclReader::VisitOMPCapturedExprDecl(OMPCapturedExprDecl *D) { in VisitOMPCapturedExprDecl() argument
3068 VisitVarDecl(D); in VisitOMPCapturedExprDecl()
3174 inline void ASTReader::LoadedDecl(unsigned Index, Decl *D) { in LoadedDecl() argument
3176 DeclsLoaded[Index] = D; in LoadedDecl()
3185 bool ASTReader::isConsumerInterestedIn(Decl *D) { in isConsumerInterestedIn() argument
3191 if (isPartOfPerModuleInitializer(D)) { in isConsumerInterestedIn()
3192 auto *M = D->getImportedOwningModule(); in isConsumerInterestedIn()
3194 getContext().DeclMustBeEmitted(D)) in isConsumerInterestedIn()
3199 ImportDecl, PragmaCommentDecl, PragmaDetectMismatchDecl>(D)) in isConsumerInterestedIn()
3202 OMPAllocateDecl, OMPRequiresDecl>(D)) in isConsumerInterestedIn()
3203 return !D->getDeclContext()->isFunctionOrMethod(); in isConsumerInterestedIn()
3204 if (const auto *Var = dyn_cast<VarDecl>(D)) in isConsumerInterestedIn()
3208 if (const auto *Func = dyn_cast<FunctionDecl>(D)) in isConsumerInterestedIn()
3209 return Func->doesThisDeclarationHaveABody() || PendingBodies.count(D); in isConsumerInterestedIn()
3211 if (auto *ES = D->getASTContext().getExternalSource()) in isConsumerInterestedIn()
3212 if (ES->hasExternalDefinitions(D) == ExternalASTSource::EK_Never) in isConsumerInterestedIn()
3359 for (auto *D : merged_redecls(cast<Decl>(LexicalDC))) { in getPrimaryDCForAnonymousDecl() local
3360 if (auto *FD = dyn_cast<FunctionDecl>(D)) in getPrimaryDCForAnonymousDecl()
3363 if (auto *MD = dyn_cast<ObjCMethodDecl>(D)) in getPrimaryDCForAnonymousDecl()
3366 if (auto *RD = dyn_cast<RecordDecl>(D)) in getPrimaryDCForAnonymousDecl()
3404 NamedDecl *D) { in setAnonymousDeclForMerging() argument
3411 Previous[Index] = D; in setAnonymousDeclForMerging()
3414 ASTDeclReader::FindExistingResult ASTDeclReader::findExisting(NamedDecl *D) { in findExisting() argument
3416 : D->getDeclName(); in findExisting()
3418 if (!Name && !needsAnonymousDeclarationNumber(D)) { in findExisting()
3421 FindExistingResult Result(Reader, D, /*Existing=*/nullptr, in findExisting()
3428 DeclContext *DC = D->getDeclContext()->getRedeclContext(); in findExisting()
3433 if (C.isSameEntity(It->second, D)) in findExisting()
3434 return FindExistingResult(Reader, D, It->second, AnonymousDeclNumber, in findExisting()
3440 if (needsAnonymousDeclarationNumber(D)) { in findExisting()
3444 Reader, D->getLexicalDeclContext(), AnonymousDeclNumber)) in findExisting()
3445 if (C.isSameEntity(Existing, D)) in findExisting()
3446 return FindExistingResult(Reader, D, Existing, AnonymousDeclNumber, in findExisting()
3477 if (C.isSameEntity(Existing, D)) in findExisting()
3478 return FindExistingResult(Reader, D, Existing, AnonymousDeclNumber, in findExisting()
3485 if (C.isSameEntity(Existing, D)) in findExisting()
3486 return FindExistingResult(Reader, D, Existing, AnonymousDeclNumber, in findExisting()
3502 auto MergedDCIt = Reader.MergedDeclContexts.find(D->getLexicalDeclContext()); in findExisting()
3504 !shouldSkipCheckingODR(D) && MergedDCIt->second == D->getDeclContext()) in findExisting()
3505 Reader.PendingOdrMergeChecks.push_back(D); in findExisting()
3507 return FindExistingResult(Reader, D, /*Existing=*/nullptr, in findExisting()
3512 Decl *ASTDeclReader::getMostRecentDeclImpl(Redeclarable<DeclT> *D) { in getMostRecentDeclImpl() argument
3513 return D->RedeclLink.getLatestNotUpdated(); in getMostRecentDeclImpl()
3520 Decl *ASTDeclReader::getMostRecentDecl(Decl *D) { in getMostRecentDecl() argument
3521 assert(D); in getMostRecentDecl()
3523 switch (D->getKind()) { in getMostRecentDecl()
3527 return getMostRecentDeclImpl(cast<TYPE##Decl>(D)); in getMostRecentDecl()
3533 Decl *ASTReader::getMostRecentExistingDecl(Decl *D) { in getMostRecentExistingDecl() argument
3534 return ASTDeclReader::getMostRecentDecl(D->getCanonicalDecl()); in getMostRecentExistingDecl()
3537 void ASTDeclReader::mergeInheritableAttributes(ASTReader &Reader, Decl *D, in mergeInheritableAttributes() argument
3543 if (IA && !D->hasAttr<MSInheritanceAttr>()) { in mergeInheritableAttributes()
3546 D->addAttr(NewAttr); in mergeInheritableAttributes()
3550 if (AA && !D->hasAttr<AvailabilityAttr>()) { in mergeInheritableAttributes()
3553 D->addAttr(NewAttr); in mergeInheritableAttributes()
3559 Redeclarable<DeclT> *D, in attachPreviousDeclImpl() argument
3561 D->RedeclLink.setPrevious(cast<DeclT>(Previous)); in attachPreviousDeclImpl()
3562 D->First = cast<DeclT>(Previous)->First; in attachPreviousDeclImpl()
3569 Redeclarable<VarDecl> *D, in attachPreviousDeclImpl() argument
3571 auto *VD = static_cast<VarDecl *>(D); in attachPreviousDeclImpl()
3573 D->RedeclLink.setPrevious(PrevVD); in attachPreviousDeclImpl()
3574 D->First = PrevVD->First; in attachPreviousDeclImpl()
3597 Redeclarable<FunctionDecl> *D, in attachPreviousDeclImpl() argument
3599 auto *FD = static_cast<FunctionDecl *>(D); in attachPreviousDeclImpl()
3691 static void checkMultipleDefinitionInNamedModules(ASTReader &Reader, Decl *D, in checkMultipleDefinitionInNamedModules() argument
3727 if (Reader.getContext().isInSameModule(M, D->getOwningModule())) in checkMultipleDefinitionInNamedModules()
3733 Reader.Diag(D->getLocation(), diag::note_also_found); in checkMultipleDefinitionInNamedModules()
3736 void ASTDeclReader::attachPreviousDecl(ASTReader &Reader, Decl *D, in attachPreviousDecl() argument
3738 assert(D && Previous); in attachPreviousDecl()
3740 switch (D->getKind()) { in attachPreviousDecl()
3744 attachPreviousDeclImpl(Reader, cast<TYPE##Decl>(D), Previous, Canon); \ in attachPreviousDecl()
3749 checkMultipleDefinitionInNamedModules(Reader, D, Previous); in attachPreviousDecl()
3756 D->IdentifierNamespace |= in attachPreviousDecl()
3762 if (auto *TD = dyn_cast<TemplateDecl>(D)) in attachPreviousDecl()
3770 mergeInheritableAttributes(Reader, D, Previous); in attachPreviousDecl()
3774 void ASTDeclReader::attachLatestDeclImpl(Redeclarable<DeclT> *D, Decl *Latest) { in attachLatestDeclImpl() argument
3775 D->RedeclLink.setLatest(cast<DeclT>(Latest)); in attachLatestDeclImpl()
3782 void ASTDeclReader::attachLatestDecl(Decl *D, Decl *Latest) { in attachLatestDecl() argument
3783 assert(D && Latest); in attachLatestDecl()
3785 switch (D->getKind()) { in attachLatestDecl()
3789 attachLatestDeclImpl(cast<TYPE##Decl>(D), Latest); \ in attachLatestDecl()
3796 void ASTDeclReader::markIncompleteDeclChainImpl(Redeclarable<DeclT> *D) { in markIncompleteDeclChainImpl() argument
3797 D->RedeclLink.markIncomplete(); in markIncompleteDeclChainImpl()
3804 void ASTReader::markIncompleteDeclChain(Decl *D) { in markIncompleteDeclChain() argument
3805 switch (D->getKind()) { in markIncompleteDeclChain()
3809 ASTDeclReader::markIncompleteDeclChainImpl(cast<TYPE##Decl>(D)); \ in markIncompleteDeclChain()
3844 Decl *D = nullptr; in ReadDeclRecord() local
3856 D = TypedefDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3859 D = TypeAliasDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3862 D = EnumDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3865 D = RecordDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3868 D = EnumConstantDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3871 D = FunctionDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3874 D = LinkageSpecDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3877 D = ExportDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3880 D = LabelDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3883 D = NamespaceDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3886 D = NamespaceAliasDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3889 D = UsingDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3892 D = UsingPackDecl::CreateDeserialized(Context, ID, Record.readInt()); in ReadDeclRecord()
3895 D = UsingShadowDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3898 D = UsingEnumDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3901 D = ConstructorUsingShadowDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3904 D = UsingDirectiveDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3907 D = UnresolvedUsingValueDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3910 D = UnresolvedUsingTypenameDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3913 D = UnresolvedUsingIfExistsDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3916 D = CXXRecordDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3919 D = CXXDeductionGuideDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3922 D = CXXMethodDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3925 D = CXXConstructorDecl::CreateDeserialized(Context, ID, Record.readInt()); in ReadDeclRecord()
3928 D = CXXDestructorDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3931 D = CXXConversionDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3934 D = AccessSpecDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3937 D = FriendDecl::CreateDeserialized(Context, ID, Record.readInt()); in ReadDeclRecord()
3940 D = FriendTemplateDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3943 D = ClassTemplateDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3946 D = ClassTemplateSpecializationDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3949 D = ClassTemplatePartialSpecializationDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3952 D = VarTemplateDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3955 D = VarTemplateSpecializationDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3958 D = VarTemplatePartialSpecializationDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3961 D = FunctionTemplateDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3965 D = TemplateTypeParmDecl::CreateDeserialized(Context, ID, in ReadDeclRecord()
3971 D = NonTypeTemplateParmDecl::CreateDeserialized(Context, ID, in ReadDeclRecord()
3977 D = NonTypeTemplateParmDecl::CreateDeserialized( in ReadDeclRecord()
3982 D = TemplateTemplateParmDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3985 D = TemplateTemplateParmDecl::CreateDeserialized(Context, ID, in ReadDeclRecord()
3989 D = TypeAliasTemplateDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3992 D = ConceptDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3995 D = RequiresExprBodyDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3998 D = StaticAssertDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4001 D = ObjCMethodDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4004 D = ObjCInterfaceDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4007 D = ObjCIvarDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4010 D = ObjCProtocolDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4013 D = ObjCAtDefsFieldDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4016 D = ObjCCategoryDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4019 D = ObjCCategoryImplDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4022 D = ObjCImplementationDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4025 D = ObjCCompatibleAliasDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4028 D = ObjCPropertyDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4031 D = ObjCPropertyImplDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4034 D = FieldDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4037 D = IndirectFieldDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4040 D = VarDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4043 D = ImplicitParamDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4046 D = ParmVarDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4049 D = DecompositionDecl::CreateDeserialized(Context, ID, Record.readInt()); in ReadDeclRecord()
4052 D = BindingDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4055 D = FileScopeAsmDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4058 D = TopLevelStmtDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4061 D = BlockDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4064 D = MSPropertyDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4067 D = MSGuidDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4070 D = UnnamedGlobalConstantDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4073 D = TemplateParamObjectDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4076 D = CapturedDecl::CreateDeserialized(Context, ID, Record.readInt()); in ReadDeclRecord()
4087 D = ImportDecl::CreateDeserialized(Context, ID, Record.back()); in ReadDeclRecord()
4093 D = OMPThreadPrivateDecl::CreateDeserialized(Context, ID, NumChildren); in ReadDeclRecord()
4100 D = OMPAllocateDecl::CreateDeserialized(Context, ID, NumVars, NumClauses); in ReadDeclRecord()
4106 D = OMPRequiresDecl::CreateDeserialized(Context, ID, NumClauses); in ReadDeclRecord()
4110 D = OMPDeclareReductionDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4115 D = OMPDeclareMapperDecl::CreateDeserialized(Context, ID, NumClauses); in ReadDeclRecord()
4119 D = OMPCapturedExprDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4122 D = PragmaCommentDecl::CreateDeserialized(Context, ID, Record.readInt()); in ReadDeclRecord()
4125 D = PragmaDetectMismatchDecl::CreateDeserialized(Context, ID, in ReadDeclRecord()
4129 D = EmptyDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4132 D = LifetimeExtendedTemporaryDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4135 D = ObjCTypeParamDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4138 D = HLSLBufferDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4141 D = ImplicitConceptSpecializationDecl::CreateDeserialized(Context, ID, in ReadDeclRecord()
4146 assert(D && "Unknown declaration reading AST file"); in ReadDeclRecord()
4147 LoadedDecl(translateGlobalDeclIDToIndex(ID), D); in ReadDeclRecord()
4151 D->setDeclContext(Context.getTranslationUnitDecl()); in ReadDeclRecord()
4155 [&] { Reader.Visit(D); }); in ReadDeclRecord()
4159 if (auto *DC = dyn_cast<DeclContext>(D)) { in ReadDeclRecord()
4165 if (!Offsets.first && !Offsets.second && isa<NamespaceDecl>(D)) in ReadDeclRecord()
4181 PendingUpdateRecord(ID, D, /*JustLoaded=*/true)); in ReadDeclRecord()
4184 if (auto *Class = dyn_cast<ObjCInterfaceDecl>(D)) in ReadDeclRecord()
4195 PotentiallyInterestingDecls.push_back(D); in ReadDeclRecord()
4197 return D; in ReadDeclRecord()
4218 Decl *D = PotentiallyInterestingDecls.front(); in PassInterestingDeclsToConsumer() local
4220 if (isConsumerInterestedIn(D)) in PassInterestingDeclsToConsumer()
4221 PassInterestingDeclToConsumer(D); in PassInterestingDeclsToConsumer()
4229 Decl *D = MaybeInterestingDecls.front(); in PassInterestingDeclsToConsumer() local
4236 if (auto *VD = dyn_cast<VarDecl>(D); in PassInterestingDeclsToConsumer()
4240 if (isConsumerInterestedIn(D)) in PassInterestingDeclsToConsumer()
4241 PassInterestingDeclToConsumer(D); in PassInterestingDeclsToConsumer()
4260 Decl *D = Record.D; in loadDeclUpdateRecords() local
4274 bool WasInteresting = Record.JustLoaded || isConsumerInterestedIn(D); in loadDeclUpdateRecords()
4302 Reader.UpdateDecl(D, PendingLazySpecializationIDs); in loadDeclUpdateRecords()
4306 if (!WasInteresting && isConsumerInterestedIn(D)) { in loadDeclUpdateRecords()
4307 PotentiallyInterestingDecls.push_back(D); in loadDeclUpdateRecords()
4313 assert((PendingLazySpecializationIDs.empty() || isa<ClassTemplateDecl>(D) || in loadDeclUpdateRecords()
4314 isa<FunctionTemplateDecl, VarTemplateDecl>(D)) && in loadDeclUpdateRecords()
4316 if (auto *CTD = dyn_cast<ClassTemplateDecl>(D)) in loadDeclUpdateRecords()
4318 else if (auto *FTD = dyn_cast<FunctionTemplateDecl>(D)) in loadDeclUpdateRecords()
4320 else if (auto *VTD = dyn_cast<VarTemplateDecl>(D)) in loadDeclUpdateRecords()
4330 auto *DC = cast<DeclContext>(D)->getPrimaryContext(); in loadDeclUpdateRecords()
4385 auto *D = ReadDecl(*M, Record, Idx); in loadPendingDeclChain() local
4386 ASTDeclReader::attachPreviousDecl(*this, D, MostRecent, CanonDecl); in loadPendingDeclChain()
4387 MostRecent = D; in loadPendingDeclChain()
4501 void ASTReader::loadObjCCategories(GlobalDeclID ID, ObjCInterfaceDecl *D, in loadObjCCategories() argument
4503 ObjCCategoriesVisitor Visitor(*this, D, CategoriesDeserialized, ID, in loadObjCCategories()
4509 static void forAllLaterRedecls(DeclT *D, Fn F) { in forAllLaterRedecls() argument
4510 F(D); in forAllLaterRedecls()
4515 auto *MostRecent = D->getMostRecentDecl(); in forAllLaterRedecls()
4519 Found = (Redecl == D); in forAllLaterRedecls()
4523 for (auto *Redecl = MostRecent; Redecl != D; in forAllLaterRedecls()
4530 Decl *D, in UpdateDecl() argument
4535 auto *RD = cast<CXXRecordDecl>(D); in UpdateDecl()
4554 if (auto *TU = dyn_cast<TranslationUnitDecl>(D)) in UpdateDecl()
4557 cast<NamespaceDecl>(D)->setAnonymousNamespace(Anon); in UpdateDecl()
4563 auto *VD = cast<VarDecl>(D); in UpdateDecl()
4572 if (auto *VTSD = dyn_cast<VarTemplateSpecializationDecl>(D)) { in UpdateDecl()
4574 } else if (auto *VD = dyn_cast<VarDecl>(D)) { in UpdateDecl()
4579 auto *FD = cast<FunctionDecl>(D); in UpdateDecl()
4591 auto *Param = cast<ParmVarDecl>(D); in UpdateDecl()
4606 auto *FD = cast<FieldDecl>(D); in UpdateDecl()
4623 auto *FD = cast<FunctionDecl>(D); in UpdateDecl()
4645 auto *RD = cast<CXXRecordDecl>(D); in UpdateDecl()
4699 if (!D->hasAttrs()) in UpdateDecl()
4700 D->setAttrsImpl(Attrs, Reader.getContext()); in UpdateDecl()
4709 auto *First = cast<CXXDestructorDecl>(D->getCanonicalDecl()); in UpdateDecl()
4724 auto *FD = cast<FunctionDecl>(D); in UpdateDecl()
4742 auto *FD = cast<FunctionDecl>(D); in UpdateDecl()
4751 D->markUsed(Reader.getContext()); in UpdateDecl()
4755 Reader.getContext().setManglingNumber(cast<NamedDecl>(D), in UpdateDecl()
4760 Reader.getContext().setStaticLocalNumber(cast<VarDecl>(D), in UpdateDecl()
4765 D->addAttr(OMPThreadPrivateDeclAttr::CreateImplicit(Reader.getContext(), in UpdateDecl()
4775 D->addAttr(OMPAllocateDeclAttr::CreateImplicit( in UpdateDecl()
4782 auto *Exported = cast<NamedDecl>(D); in UpdateDecl()
4795 D->addAttr(OMPDeclareTargetDeclAttr::CreateImplicit( in UpdateDecl()
4805 D->addAttr(Attrs[0]); in UpdateDecl()