Lines Matching refs:D

162     void ReadCXXRecordDefinition(CXXRecordDecl *D, bool Update,
166 const CXXRecordDecl *D, Decl *LambdaContext,
168 void MergeDefinitionData(CXXRecordDecl *D,
171 void MergeDefinitionData(ObjCInterfaceDecl *D,
174 void MergeDefinitionData(ObjCProtocolDecl *D,
183 unsigned Index, NamedDecl *D);
259 FindExistingResult findExisting(NamedDecl *D);
269 void AddLazySpecializations(T *D, in AddLazySpecializations() argument
275 ASTContext &C = D->getASTContext(); in AddLazySpecializations()
277 auto *&LazySpecializations = D->getCommonPtr()->LazySpecializations; in AddLazySpecializations()
293 static Decl *getMostRecentDeclImpl(Redeclarable<DeclT> *D);
295 static Decl *getMostRecentDecl(Decl *D);
297 static void mergeInheritableAttributes(ASTReader &Reader, Decl *D,
302 Redeclarable<DeclT> *D, Decl *Previous,
305 static void attachPreviousDecl(ASTReader &Reader, Decl *D, Decl *Previous,
309 static void attachLatestDeclImpl(Redeclarable<DeclT> *D, Decl *Latest);
311 static void attachLatestDecl(Decl *D, Decl *latest);
314 static void markIncompleteDeclChainImpl(Redeclarable<DeclT> *D);
321 void Visit(Decl *D);
323 void UpdateDecl(Decl *D, SmallVectorImpl<serialization::DeclID> &);
330 void VisitDecl(Decl *D);
331 void VisitPragmaCommentDecl(PragmaCommentDecl *D);
332 void VisitPragmaDetectMismatchDecl(PragmaDetectMismatchDecl *D);
336 void VisitNamespaceDecl(NamespaceDecl *D);
337 void VisitHLSLBufferDecl(HLSLBufferDecl *D);
338 void VisitUsingDirectiveDecl(UsingDirectiveDecl *D);
339 void VisitNamespaceAliasDecl(NamespaceAliasDecl *D);
344 void VisitUnresolvedUsingTypenameDecl(UnresolvedUsingTypenameDecl *D);
345 void VisitUnresolvedUsingIfExistsDecl(UnresolvedUsingIfExistsDecl *D);
350 RedeclarableResult VisitCXXRecordDeclImpl(CXXRecordDecl *D);
351 void VisitCXXRecordDecl(CXXRecordDecl *D) { VisitCXXRecordDeclImpl(D); } in VisitCXXRecordDecl() argument
353 ClassTemplateSpecializationDecl *D);
356 ClassTemplateSpecializationDecl *D) { in VisitClassTemplateSpecializationDecl() argument
357 VisitClassTemplateSpecializationDeclImpl(D); in VisitClassTemplateSpecializationDecl()
361 ClassTemplatePartialSpecializationDecl *D);
363 VisitVarTemplateSpecializationDeclImpl(VarTemplateSpecializationDecl *D);
365 void VisitVarTemplateSpecializationDecl(VarTemplateSpecializationDecl *D) { in VisitVarTemplateSpecializationDecl() argument
366 VisitVarTemplateSpecializationDeclImpl(D); in VisitVarTemplateSpecializationDecl()
370 VarTemplatePartialSpecializationDecl *D);
371 void VisitTemplateTypeParmDecl(TemplateTypeParmDecl *D);
374 void VisitUnresolvedUsingValueDecl(UnresolvedUsingValueDecl *D);
378 void VisitCXXMethodDecl(CXXMethodDecl *D);
379 void VisitCXXConstructorDecl(CXXConstructorDecl *D);
380 void VisitCXXDestructorDecl(CXXDestructorDecl *D);
381 void VisitCXXConversionDecl(CXXConversionDecl *D);
384 void VisitMSGuidDecl(MSGuidDecl *D);
385 void VisitUnnamedGlobalConstantDecl(UnnamedGlobalConstantDecl *D);
386 void VisitTemplateParamObjectDecl(TemplateParamObjectDecl *D);
388 RedeclarableResult VisitVarDeclImpl(VarDecl *D);
395 void VisitNonTypeTemplateParmDecl(NonTypeTemplateParmDecl *D);
396 void VisitTemplateDecl(TemplateDecl *D);
397 void VisitConceptDecl(ConceptDecl *D);
399 ImplicitConceptSpecializationDecl *D);
400 void VisitRequiresExprBodyDecl(RequiresExprBodyDecl *D);
401 RedeclarableResult VisitRedeclarableTemplateDecl(RedeclarableTemplateDecl *D);
402 void VisitClassTemplateDecl(ClassTemplateDecl *D);
403 void VisitBuiltinTemplateDecl(BuiltinTemplateDecl *D);
404 void VisitVarTemplateDecl(VarTemplateDecl *D);
405 void VisitFunctionTemplateDecl(FunctionTemplateDecl *D);
406 void VisitTemplateTemplateParmDecl(TemplateTemplateParmDecl *D);
407 void VisitTypeAliasTemplateDecl(TypeAliasTemplateDecl *D);
408 void VisitUsingDecl(UsingDecl *D);
409 void VisitUsingEnumDecl(UsingEnumDecl *D);
410 void VisitUsingPackDecl(UsingPackDecl *D);
411 void VisitUsingShadowDecl(UsingShadowDecl *D);
412 void VisitConstructorUsingShadowDecl(ConstructorUsingShadowDecl *D);
413 void VisitLinkageSpecDecl(LinkageSpecDecl *D);
414 void VisitExportDecl(ExportDecl *D);
416 void VisitTopLevelStmtDecl(TopLevelStmtDecl *D);
417 void VisitImportDecl(ImportDecl *D);
418 void VisitAccessSpecDecl(AccessSpecDecl *D);
419 void VisitFriendDecl(FriendDecl *D);
420 void VisitFriendTemplateDecl(FriendTemplateDecl *D);
421 void VisitStaticAssertDecl(StaticAssertDecl *D);
424 void VisitEmptyDecl(EmptyDecl *D);
425 void VisitLifetimeExtendedTemporaryDecl(LifetimeExtendedTemporaryDecl *D);
430 RedeclarableResult VisitRedeclarable(Redeclarable<T> *D);
433 void mergeRedeclarable(Redeclarable<T> *D, RedeclarableResult &Redecl);
435 void mergeLambda(CXXRecordDecl *D, RedeclarableResult &Redecl,
438 void mergeRedeclarableTemplate(RedeclarableTemplateDecl *D,
442 void mergeRedeclarable(Redeclarable<T> *D, T *Existing,
446 void mergeMergeable(Mergeable<T> *D);
448 void mergeMergeable(LifetimeExtendedTemporaryDecl *D);
450 void mergeTemplatePattern(RedeclarableTemplateDecl *D,
457 void VisitObjCMethodDecl(ObjCMethodDecl *D);
458 void VisitObjCTypeParamDecl(ObjCTypeParamDecl *D);
459 void VisitObjCContainerDecl(ObjCContainerDecl *D);
460 void VisitObjCInterfaceDecl(ObjCInterfaceDecl *D);
461 void VisitObjCIvarDecl(ObjCIvarDecl *D);
462 void VisitObjCProtocolDecl(ObjCProtocolDecl *D);
463 void VisitObjCAtDefsFieldDecl(ObjCAtDefsFieldDecl *D);
464 void VisitObjCCategoryDecl(ObjCCategoryDecl *D);
465 void VisitObjCImplDecl(ObjCImplDecl *D);
466 void VisitObjCCategoryImplDecl(ObjCCategoryImplDecl *D);
467 void VisitObjCImplementationDecl(ObjCImplementationDecl *D);
468 void VisitObjCCompatibleAliasDecl(ObjCCompatibleAliasDecl *D);
469 void VisitObjCPropertyDecl(ObjCPropertyDecl *D);
470 void VisitObjCPropertyImplDecl(ObjCPropertyImplDecl *D);
471 void VisitOMPThreadPrivateDecl(OMPThreadPrivateDecl *D);
472 void VisitOMPAllocateDecl(OMPAllocateDecl *D);
473 void VisitOMPDeclareReductionDecl(OMPDeclareReductionDecl *D);
474 void VisitOMPDeclareMapperDecl(OMPDeclareMapperDecl *D);
475 void VisitOMPRequiresDecl(OMPRequiresDecl *D);
476 void VisitOMPCapturedExprDecl(OMPCapturedExprDecl *D);
522 merged_redecls(DeclT *D) { in merged_redecls() argument
523 return llvm::make_range(MergedRedeclIterator<DeclT>(D), in merged_redecls()
547 void ASTDeclReader::Visit(Decl *D) { in Visit() argument
548 DeclVisitor<ASTDeclReader, void>::Visit(D); in Visit()
552 D->getCanonicalDecl()->Used |= IsDeclMarkedUsed; in Visit()
555 if (auto *DD = dyn_cast<DeclaratorDecl>(D)) { in Visit()
560 if (auto *TD = dyn_cast<TypeDecl>(D)) { in Visit()
567 cast<TagDecl>(D)->TypedefNameDeclOrQualifier = in Visit()
569 } else if (auto *ID = dyn_cast<ObjCInterfaceDecl>(D)) { in Visit()
572 } else if (auto *FD = dyn_cast<FunctionDecl>(D)) { in Visit()
576 } else if (auto *VD = dyn_cast<VarDecl>(D)) { in Visit()
578 } else if (auto *FD = dyn_cast<FieldDecl>(D)) { in Visit()
585 void ASTDeclReader::VisitDecl(Decl *D) { in VisitDecl() argument
589 D->setReferenced(DeclBits.getNextBit()); in VisitDecl()
590 D->Used = DeclBits.getNextBit(); in VisitDecl()
591 IsDeclMarkedUsed |= D->Used; in VisitDecl()
592 D->setAccess((AccessSpecifier)DeclBits.getNextBits(/*Width=*/2)); in VisitDecl()
593 D->setImplicit(DeclBits.getNextBit()); in VisitDecl()
596 D->setTopLevelDeclInObjCContainer(DeclBits.getNextBit()); in VisitDecl()
597 D->InvalidDecl = DeclBits.getNextBit(); in VisitDecl()
598 D->FromASTFile = true; in VisitDecl()
600 if (D->isTemplateParameter() || D->isTemplateParameterPack() || in VisitDecl()
601 isa<ParmVarDecl, ObjCTypeParamDecl>(D)) { in VisitDecl()
613 Reader.addPendingDeclContextInfo(D, in VisitDecl()
616 D->setDeclContext(Reader.getContext().getTranslationUnitDecl()); in VisitDecl()
632 D->setDeclContextsImpl(MergedSemaDC ? MergedSemaDC : SemaDC, LexicalDC, in VisitDecl()
635 D->setLocation(ThisDeclLoc); in VisitDecl()
642 D->setAttrsImpl(Attrs, Reader.getContext()); in VisitDecl()
661 D->setModuleOwnershipKind(ModuleOwnership); in VisitDecl()
663 D->setOwningModuleID(SubmoduleID); in VisitDecl()
674 D->setVisibleDespiteOwningModule(); in VisitDecl()
676 Reader.HiddenNamesMap[Owner].push_back(D); in VisitDecl()
679 D->setModuleOwnershipKind(Decl::ModuleOwnershipKind::ModulePrivate); in VisitDecl()
683 void ASTDeclReader::VisitPragmaCommentDecl(PragmaCommentDecl *D) { in VisitPragmaCommentDecl() argument
684 VisitDecl(D); in VisitPragmaCommentDecl()
685 D->setLocation(readSourceLocation()); in VisitPragmaCommentDecl()
686 D->CommentKind = (PragmaMSCommentKind)Record.readInt(); in VisitPragmaCommentDecl()
688 memcpy(D->getTrailingObjects<char>(), Arg.data(), Arg.size()); in VisitPragmaCommentDecl()
689 D->getTrailingObjects<char>()[Arg.size()] = '\0'; in VisitPragmaCommentDecl()
692 void ASTDeclReader::VisitPragmaDetectMismatchDecl(PragmaDetectMismatchDecl *D) { in VisitPragmaDetectMismatchDecl() argument
693 VisitDecl(D); in VisitPragmaDetectMismatchDecl()
694 D->setLocation(readSourceLocation()); in VisitPragmaDetectMismatchDecl()
696 memcpy(D->getTrailingObjects<char>(), Name.data(), Name.size()); in VisitPragmaDetectMismatchDecl()
697 D->getTrailingObjects<char>()[Name.size()] = '\0'; in VisitPragmaDetectMismatchDecl()
699 D->ValueStart = Name.size() + 1; in VisitPragmaDetectMismatchDecl()
701 memcpy(D->getTrailingObjects<char>() + D->ValueStart, Value.data(), in VisitPragmaDetectMismatchDecl()
703 D->getTrailingObjects<char>()[D->ValueStart + Value.size()] = '\0'; in VisitPragmaDetectMismatchDecl()
822 for (auto *D : merged_redecls(ED->getCanonicalDecl())) { in VisitEnumDecl() local
823 if (!D->isFromASTFile() && D->isCompleteDefinition()) { in VisitEnumDecl()
824 OldDef = D; in VisitEnumDecl()
888 for (auto *D : merged_redecls(Canon)) { in VisitRecordDecl() local
889 if (!D->isFromASTFile() && D->isCompleteDefinition()) { in VisitRecordDecl()
890 OldDef = D; in VisitRecordDecl()
1208 void ASTDeclReader::VisitObjCTypeParamDecl(ObjCTypeParamDecl *D) { in VisitObjCTypeParamDecl() argument
1209 VisitTypedefNameDecl(D); in VisitObjCTypeParamDecl()
1211 D->Variance = Record.readInt(); in VisitObjCTypeParamDecl()
1212 D->Index = Record.readInt(); in VisitObjCTypeParamDecl()
1213 D->VarianceLoc = readSourceLocation(); in VisitObjCTypeParamDecl()
1214 D->ColonLoc = readSourceLocation(); in VisitObjCTypeParamDecl()
1278 void ASTDeclReader::MergeDefinitionData(ObjCInterfaceDecl *D, in MergeDefinitionData() argument
1280 struct ObjCInterfaceDecl::DefinitionData &DD = D->data(); in MergeDefinitionData()
1288 if (D->getODRHash() != NewDD.ODRHash) in MergeDefinitionData()
1390 ObjCProtocolDecl *D, struct ObjCProtocolDecl::DefinitionData &&NewDD) { in MergeDefinitionData() argument
1391 struct ObjCProtocolDecl::DefinitionData &DD = D->data(); in MergeDefinitionData()
1399 if (D->getODRHash() != NewDD.ODRHash) in MergeDefinitionData()
1474 void ASTDeclReader::VisitObjCPropertyDecl(ObjCPropertyDecl *D) { in VisitObjCPropertyDecl() argument
1475 VisitNamedDecl(D); in VisitObjCPropertyDecl()
1476 D->setAtLoc(readSourceLocation()); in VisitObjCPropertyDecl()
1477 D->setLParenLoc(readSourceLocation()); in VisitObjCPropertyDecl()
1480 D->setType(T, TSI); in VisitObjCPropertyDecl()
1481 D->setPropertyAttributes((ObjCPropertyAttribute::Kind)Record.readInt()); in VisitObjCPropertyDecl()
1482 D->setPropertyAttributesAsWritten( in VisitObjCPropertyDecl()
1484 D->setPropertyImplementation( in VisitObjCPropertyDecl()
1488 D->setGetterName(GetterName.getObjCSelector(), GetterLoc); in VisitObjCPropertyDecl()
1491 D->setSetterName(SetterName.getObjCSelector(), SetterLoc); in VisitObjCPropertyDecl()
1492 D->setGetterMethodDecl(readDeclAs<ObjCMethodDecl>()); in VisitObjCPropertyDecl()
1493 D->setSetterMethodDecl(readDeclAs<ObjCMethodDecl>()); in VisitObjCPropertyDecl()
1494 D->setPropertyIvarDecl(readDeclAs<ObjCIvarDecl>()); in VisitObjCPropertyDecl()
1497 void ASTDeclReader::VisitObjCImplDecl(ObjCImplDecl *D) { in VisitObjCImplDecl() argument
1498 VisitObjCContainerDecl(D); in VisitObjCImplDecl()
1499 D->setClassInterface(readDeclAs<ObjCInterfaceDecl>()); in VisitObjCImplDecl()
1502 void ASTDeclReader::VisitObjCCategoryImplDecl(ObjCCategoryImplDecl *D) { in VisitObjCCategoryImplDecl() argument
1503 VisitObjCImplDecl(D); in VisitObjCCategoryImplDecl()
1504 D->CategoryNameLoc = readSourceLocation(); in VisitObjCCategoryImplDecl()
1507 void ASTDeclReader::VisitObjCImplementationDecl(ObjCImplementationDecl *D) { in VisitObjCImplementationDecl() argument
1508 VisitObjCImplDecl(D); in VisitObjCImplementationDecl()
1509 D->setSuperClass(readDeclAs<ObjCInterfaceDecl>()); in VisitObjCImplementationDecl()
1510 D->SuperLoc = readSourceLocation(); in VisitObjCImplementationDecl()
1511 D->setIvarLBraceLoc(readSourceLocation()); in VisitObjCImplementationDecl()
1512 D->setIvarRBraceLoc(readSourceLocation()); in VisitObjCImplementationDecl()
1513 D->setHasNonZeroConstructors(Record.readInt()); in VisitObjCImplementationDecl()
1514 D->setHasDestructors(Record.readInt()); in VisitObjCImplementationDecl()
1515 D->NumIvarInitializers = Record.readInt(); in VisitObjCImplementationDecl()
1516 if (D->NumIvarInitializers) in VisitObjCImplementationDecl()
1517 D->IvarInitializers = ReadGlobalOffset(); in VisitObjCImplementationDecl()
1520 void ASTDeclReader::VisitObjCPropertyImplDecl(ObjCPropertyImplDecl *D) { in VisitObjCPropertyImplDecl() argument
1521 VisitDecl(D); in VisitObjCPropertyImplDecl()
1522 D->setAtLoc(readSourceLocation()); in VisitObjCPropertyImplDecl()
1523 D->setPropertyDecl(readDeclAs<ObjCPropertyDecl>()); in VisitObjCPropertyImplDecl()
1524 D->PropertyIvarDecl = readDeclAs<ObjCIvarDecl>(); in VisitObjCPropertyImplDecl()
1525 D->IvarLoc = readSourceLocation(); in VisitObjCPropertyImplDecl()
1526 D->setGetterMethodDecl(readDeclAs<ObjCMethodDecl>()); in VisitObjCPropertyImplDecl()
1527 D->setSetterMethodDecl(readDeclAs<ObjCMethodDecl>()); in VisitObjCPropertyImplDecl()
1528 D->setGetterCXXConstructor(Record.readExpr()); in VisitObjCPropertyImplDecl()
1529 D->setSetterCXXAssignment(Record.readExpr()); in VisitObjCPropertyImplDecl()
1557 void ASTDeclReader::VisitMSGuidDecl(MSGuidDecl *D) { in VisitMSGuidDecl() argument
1558 VisitValueDecl(D); in VisitMSGuidDecl()
1559 D->PartVal.Part1 = Record.readInt(); in VisitMSGuidDecl()
1560 D->PartVal.Part2 = Record.readInt(); in VisitMSGuidDecl()
1561 D->PartVal.Part3 = Record.readInt(); in VisitMSGuidDecl()
1562 for (auto &C : D->PartVal.Part4And5) in VisitMSGuidDecl()
1566 if (MSGuidDecl *Existing = Reader.getContext().MSGuidDecls.GetOrInsertNode(D)) in VisitMSGuidDecl()
1567 Reader.getContext().setPrimaryMergedDecl(D, Existing->getCanonicalDecl()); in VisitMSGuidDecl()
1571 UnnamedGlobalConstantDecl *D) { in VisitUnnamedGlobalConstantDecl() argument
1572 VisitValueDecl(D); in VisitUnnamedGlobalConstantDecl()
1573 D->Value = Record.readAPValue(); in VisitUnnamedGlobalConstantDecl()
1577 Reader.getContext().UnnamedGlobalConstantDecls.GetOrInsertNode(D)) in VisitUnnamedGlobalConstantDecl()
1578 Reader.getContext().setPrimaryMergedDecl(D, Existing->getCanonicalDecl()); in VisitUnnamedGlobalConstantDecl()
1581 void ASTDeclReader::VisitTemplateParamObjectDecl(TemplateParamObjectDecl *D) { in VisitTemplateParamObjectDecl() argument
1582 VisitValueDecl(D); in VisitTemplateParamObjectDecl()
1583 D->Value = Record.readAPValue(); in VisitTemplateParamObjectDecl()
1588 Reader.getContext().TemplateParamObjectDecls.GetOrInsertNode(D)) in VisitTemplateParamObjectDecl()
1589 Reader.getContext().setPrimaryMergedDecl(D, Existing->getCanonicalDecl()); in VisitTemplateParamObjectDecl()
1766 void ASTDeclReader::VisitTopLevelStmtDecl(TopLevelStmtDecl *D) { in VisitTopLevelStmtDecl() argument
1767 VisitDecl(D); in VisitTopLevelStmtDecl()
1768 D->Statement = Record.readStmt(); in VisitTopLevelStmtDecl()
1817 void ASTDeclReader::VisitLinkageSpecDecl(LinkageSpecDecl *D) { in VisitLinkageSpecDecl() argument
1818 VisitDecl(D); in VisitLinkageSpecDecl()
1819 D->setLanguage(static_cast<LinkageSpecLanguageIDs>(Record.readInt())); in VisitLinkageSpecDecl()
1820 D->setExternLoc(readSourceLocation()); in VisitLinkageSpecDecl()
1821 D->setRBraceLoc(readSourceLocation()); in VisitLinkageSpecDecl()
1824 void ASTDeclReader::VisitExportDecl(ExportDecl *D) { in VisitExportDecl() argument
1825 VisitDecl(D); in VisitExportDecl()
1826 D->RBraceLoc = readSourceLocation(); in VisitExportDecl()
1829 void ASTDeclReader::VisitLabelDecl(LabelDecl *D) { in VisitLabelDecl() argument
1830 VisitNamedDecl(D); in VisitLabelDecl()
1831 D->setLocStart(readSourceLocation()); in VisitLabelDecl()
1834 void ASTDeclReader::VisitNamespaceDecl(NamespaceDecl *D) { in VisitNamespaceDecl() argument
1835 RedeclarableResult Redecl = VisitRedeclarable(D); in VisitNamespaceDecl()
1836 VisitNamedDecl(D); in VisitNamespaceDecl()
1839 D->setInline(NamespaceDeclBits.getNextBit()); in VisitNamespaceDecl()
1840 D->setNested(NamespaceDeclBits.getNextBit()); in VisitNamespaceDecl()
1841 D->LocStart = readSourceLocation(); in VisitNamespaceDecl()
1842 D->RBraceLoc = readSourceLocation(); in VisitNamespaceDecl()
1854 D->AnonOrFirstNamespaceAndFlags.setPointer(D->getFirstDecl()); in VisitNamespaceDecl()
1857 mergeRedeclarable(D, Redecl); in VisitNamespaceDecl()
1865 D->setAnonymousNamespace(Anon); in VisitNamespaceDecl()
1869 void ASTDeclReader::VisitHLSLBufferDecl(HLSLBufferDecl *D) { in VisitHLSLBufferDecl() argument
1870 VisitNamedDecl(D); in VisitHLSLBufferDecl()
1871 VisitDeclContext(D); in VisitHLSLBufferDecl()
1872 D->IsCBuffer = Record.readBool(); in VisitHLSLBufferDecl()
1873 D->KwLoc = readSourceLocation(); in VisitHLSLBufferDecl()
1874 D->LBraceLoc = readSourceLocation(); in VisitHLSLBufferDecl()
1875 D->RBraceLoc = readSourceLocation(); in VisitHLSLBufferDecl()
1878 void ASTDeclReader::VisitNamespaceAliasDecl(NamespaceAliasDecl *D) { in VisitNamespaceAliasDecl() argument
1879 RedeclarableResult Redecl = VisitRedeclarable(D); in VisitNamespaceAliasDecl()
1880 VisitNamedDecl(D); in VisitNamespaceAliasDecl()
1881 D->NamespaceLoc = readSourceLocation(); in VisitNamespaceAliasDecl()
1882 D->IdentLoc = readSourceLocation(); in VisitNamespaceAliasDecl()
1883 D->QualifierLoc = Record.readNestedNameSpecifierLoc(); in VisitNamespaceAliasDecl()
1884 D->Namespace = readDeclAs<NamedDecl>(); in VisitNamespaceAliasDecl()
1885 mergeRedeclarable(D, Redecl); in VisitNamespaceAliasDecl()
1888 void ASTDeclReader::VisitUsingDecl(UsingDecl *D) { in VisitUsingDecl() argument
1889 VisitNamedDecl(D); in VisitUsingDecl()
1890 D->setUsingLoc(readSourceLocation()); in VisitUsingDecl()
1891 D->QualifierLoc = Record.readNestedNameSpecifierLoc(); in VisitUsingDecl()
1892 D->DNLoc = Record.readDeclarationNameLoc(D->getDeclName()); in VisitUsingDecl()
1893 D->FirstUsingShadow.setPointer(readDeclAs<UsingShadowDecl>()); in VisitUsingDecl()
1894 D->setTypename(Record.readInt()); in VisitUsingDecl()
1896 Reader.getContext().setInstantiatedFromUsingDecl(D, Pattern); in VisitUsingDecl()
1897 mergeMergeable(D); in VisitUsingDecl()
1900 void ASTDeclReader::VisitUsingEnumDecl(UsingEnumDecl *D) { in VisitUsingEnumDecl() argument
1901 VisitNamedDecl(D); in VisitUsingEnumDecl()
1902 D->setUsingLoc(readSourceLocation()); in VisitUsingEnumDecl()
1903 D->setEnumLoc(readSourceLocation()); in VisitUsingEnumDecl()
1904 D->setEnumType(Record.readTypeSourceInfo()); in VisitUsingEnumDecl()
1905 D->FirstUsingShadow.setPointer(readDeclAs<UsingShadowDecl>()); in VisitUsingEnumDecl()
1907 Reader.getContext().setInstantiatedFromUsingEnumDecl(D, Pattern); in VisitUsingEnumDecl()
1908 mergeMergeable(D); in VisitUsingEnumDecl()
1911 void ASTDeclReader::VisitUsingPackDecl(UsingPackDecl *D) { in VisitUsingPackDecl() argument
1912 VisitNamedDecl(D); in VisitUsingPackDecl()
1913 D->InstantiatedFrom = readDeclAs<NamedDecl>(); in VisitUsingPackDecl()
1914 auto **Expansions = D->getTrailingObjects<NamedDecl *>(); in VisitUsingPackDecl()
1915 for (unsigned I = 0; I != D->NumExpansions; ++I) in VisitUsingPackDecl()
1917 mergeMergeable(D); in VisitUsingPackDecl()
1920 void ASTDeclReader::VisitUsingShadowDecl(UsingShadowDecl *D) { in VisitUsingShadowDecl() argument
1921 RedeclarableResult Redecl = VisitRedeclarable(D); in VisitUsingShadowDecl()
1922 VisitNamedDecl(D); in VisitUsingShadowDecl()
1923 D->Underlying = readDeclAs<NamedDecl>(); in VisitUsingShadowDecl()
1924 D->IdentifierNamespace = Record.readInt(); in VisitUsingShadowDecl()
1925 D->UsingOrNextShadow = readDeclAs<NamedDecl>(); in VisitUsingShadowDecl()
1928 Reader.getContext().setInstantiatedFromUsingShadowDecl(D, Pattern); in VisitUsingShadowDecl()
1929 mergeRedeclarable(D, Redecl); in VisitUsingShadowDecl()
1933 ConstructorUsingShadowDecl *D) { in VisitConstructorUsingShadowDecl() argument
1934 VisitUsingShadowDecl(D); in VisitConstructorUsingShadowDecl()
1935 D->NominatedBaseClassShadowDecl = readDeclAs<ConstructorUsingShadowDecl>(); in VisitConstructorUsingShadowDecl()
1936 D->ConstructedBaseClassShadowDecl = readDeclAs<ConstructorUsingShadowDecl>(); in VisitConstructorUsingShadowDecl()
1937 D->IsVirtual = Record.readInt(); in VisitConstructorUsingShadowDecl()
1940 void ASTDeclReader::VisitUsingDirectiveDecl(UsingDirectiveDecl *D) { in VisitUsingDirectiveDecl() argument
1941 VisitNamedDecl(D); in VisitUsingDirectiveDecl()
1942 D->UsingLoc = readSourceLocation(); in VisitUsingDirectiveDecl()
1943 D->NamespaceLoc = readSourceLocation(); in VisitUsingDirectiveDecl()
1944 D->QualifierLoc = Record.readNestedNameSpecifierLoc(); in VisitUsingDirectiveDecl()
1945 D->NominatedNamespace = readDeclAs<NamedDecl>(); in VisitUsingDirectiveDecl()
1946 D->CommonAncestor = readDeclAs<DeclContext>(); in VisitUsingDirectiveDecl()
1949 void ASTDeclReader::VisitUnresolvedUsingValueDecl(UnresolvedUsingValueDecl *D) { in VisitUnresolvedUsingValueDecl() argument
1950 VisitValueDecl(D); in VisitUnresolvedUsingValueDecl()
1951 D->setUsingLoc(readSourceLocation()); in VisitUnresolvedUsingValueDecl()
1952 D->QualifierLoc = Record.readNestedNameSpecifierLoc(); in VisitUnresolvedUsingValueDecl()
1953 D->DNLoc = Record.readDeclarationNameLoc(D->getDeclName()); in VisitUnresolvedUsingValueDecl()
1954 D->EllipsisLoc = readSourceLocation(); in VisitUnresolvedUsingValueDecl()
1955 mergeMergeable(D); in VisitUnresolvedUsingValueDecl()
1959 UnresolvedUsingTypenameDecl *D) { in VisitUnresolvedUsingTypenameDecl() argument
1960 VisitTypeDecl(D); in VisitUnresolvedUsingTypenameDecl()
1961 D->TypenameLocation = readSourceLocation(); in VisitUnresolvedUsingTypenameDecl()
1962 D->QualifierLoc = Record.readNestedNameSpecifierLoc(); in VisitUnresolvedUsingTypenameDecl()
1963 D->EllipsisLoc = readSourceLocation(); in VisitUnresolvedUsingTypenameDecl()
1964 mergeMergeable(D); in VisitUnresolvedUsingTypenameDecl()
1968 UnresolvedUsingIfExistsDecl *D) { in VisitUnresolvedUsingIfExistsDecl() argument
1969 VisitNamedDecl(D); in VisitUnresolvedUsingIfExistsDecl()
1973 struct CXXRecordDecl::DefinitionData &Data, const CXXRecordDecl *D, in ReadCXXDefinitionData() argument
1996 Reader.DefinitionSource[D] = in ReadCXXDefinitionData()
2035 Reader.getContext().DeviceLambdaManglingNumbers[D] = DeviceManglingNumber; in ReadCXXDefinitionData()
2072 CXXRecordDecl *D, struct CXXRecordDecl::DefinitionData &&MergeDD) { in MergeDefinitionData() argument
2073 assert(D->DefinitionData && in MergeDefinitionData()
2075 auto &DD = *D->DefinitionData; in MergeDefinitionData()
2158 if (D->getODRHash() != MergeDD.ODRHash) { in MergeDefinitionData()
2167 void ASTDeclReader::ReadCXXRecordDefinition(CXXRecordDecl *D, bool Update, in ReadCXXRecordDefinition() argument
2180 D, nullptr, CXXRecordDecl::LDK_Unknown, false, LCD_None); in ReadCXXRecordDefinition()
2182 DD = new (C) struct CXXRecordDecl::DefinitionData(D); in ReadCXXRecordDefinition()
2184 CXXRecordDecl *Canon = D->getCanonicalDecl(); in ReadCXXRecordDefinition()
2190 D->DefinitionData = Canon->DefinitionData; in ReadCXXRecordDefinition()
2191 ReadCXXDefinitionData(*DD, D, LambdaContext, IndexInLambdaContext); in ReadCXXRecordDefinition()
2202 D->setCompleteDefinition(true); in ReadCXXRecordDefinition()
2207 if (Update || Canon != D) in ReadCXXRecordDefinition()
2208 Reader.PendingDefinitions.insert(D); in ReadCXXRecordDefinition()
2212 ASTDeclReader::VisitCXXRecordDeclImpl(CXXRecordDecl *D) { in VisitCXXRecordDeclImpl() argument
2213 RedeclarableResult Redecl = VisitRecordDeclImpl(D); in VisitCXXRecordDeclImpl()
2230 if (!isa<ClassTemplateSpecializationDecl>(D)) in VisitCXXRecordDeclImpl()
2231 mergeRedeclarable(D, Redecl); in VisitCXXRecordDeclImpl()
2236 D->TemplateOrInstantiation = Template; in VisitCXXRecordDeclImpl()
2254 D->TemplateOrInstantiation = MSI; in VisitCXXRecordDeclImpl()
2255 mergeRedeclarable(D, Redecl); in VisitCXXRecordDeclImpl()
2262 mergeLambda(D, Redecl, LambdaContext, IndexInLambdaContext); in VisitCXXRecordDeclImpl()
2269 ReadCXXRecordDefinition(D, /*Update=*/false, LambdaContext, in VisitCXXRecordDeclImpl()
2273 D->DefinitionData = D->getCanonicalDecl()->DefinitionData; in VisitCXXRecordDeclImpl()
2279 if (KeyFn && D->isCompleteDefinition()) in VisitCXXRecordDeclImpl()
2283 C.KeyFunctions[D] = KeyFn; in VisitCXXRecordDeclImpl()
2289 void ASTDeclReader::VisitCXXDeductionGuideDecl(CXXDeductionGuideDecl *D) { in VisitCXXDeductionGuideDecl() argument
2290 D->setExplicitSpecifier(Record.readExplicitSpec()); in VisitCXXDeductionGuideDecl()
2291 D->Ctor = readDeclAs<CXXConstructorDecl>(); in VisitCXXDeductionGuideDecl()
2292 VisitFunctionDecl(D); in VisitCXXDeductionGuideDecl()
2293 D->setDeductionCandidateKind( in VisitCXXDeductionGuideDecl()
2297 void ASTDeclReader::VisitCXXMethodDecl(CXXMethodDecl *D) { in VisitCXXMethodDecl() argument
2298 VisitFunctionDecl(D); in VisitCXXMethodDecl()
2301 if (D->isCanonicalDecl()) { in VisitCXXMethodDecl()
2306 Reader.getContext().addOverriddenMethod(D, MD->getCanonicalDecl()); in VisitCXXMethodDecl()
2315 void ASTDeclReader::VisitCXXConstructorDecl(CXXConstructorDecl *D) { in VisitCXXConstructorDecl() argument
2318 D->setExplicitSpecifier(Record.readExplicitSpec()); in VisitCXXConstructorDecl()
2319 if (D->isInheritingConstructor()) { in VisitCXXConstructorDecl()
2322 *D->getTrailingObjects<InheritedConstructor>() = in VisitCXXConstructorDecl()
2326 VisitCXXMethodDecl(D); in VisitCXXConstructorDecl()
2329 void ASTDeclReader::VisitCXXDestructorDecl(CXXDestructorDecl *D) { in VisitCXXDestructorDecl() argument
2330 VisitCXXMethodDecl(D); in VisitCXXDestructorDecl()
2333 CXXDestructorDecl *Canon = D->getCanonicalDecl(); in VisitCXXDestructorDecl()
2343 void ASTDeclReader::VisitCXXConversionDecl(CXXConversionDecl *D) { in VisitCXXConversionDecl() argument
2344 D->setExplicitSpecifier(Record.readExplicitSpec()); in VisitCXXConversionDecl()
2345 VisitCXXMethodDecl(D); in VisitCXXConversionDecl()
2348 void ASTDeclReader::VisitImportDecl(ImportDecl *D) { in VisitImportDecl() argument
2349 VisitDecl(D); in VisitImportDecl()
2350 D->ImportedModule = readModule(); in VisitImportDecl()
2351 D->setImportComplete(Record.readInt()); in VisitImportDecl()
2352 auto *StoredLocs = D->getTrailingObjects<SourceLocation>(); in VisitImportDecl()
2358 void ASTDeclReader::VisitAccessSpecDecl(AccessSpecDecl *D) { in VisitAccessSpecDecl() argument
2359 VisitDecl(D); in VisitAccessSpecDecl()
2360 D->setColonLoc(readSourceLocation()); in VisitAccessSpecDecl()
2363 void ASTDeclReader::VisitFriendDecl(FriendDecl *D) { in VisitFriendDecl() argument
2364 VisitDecl(D); in VisitFriendDecl()
2366 D->Friend = readDeclAs<NamedDecl>(); in VisitFriendDecl()
2368 D->Friend = readTypeSourceInfo(); in VisitFriendDecl()
2369 for (unsigned i = 0; i != D->NumTPLists; ++i) in VisitFriendDecl()
2370 D->getTrailingObjects<TemplateParameterList *>()[i] = in VisitFriendDecl()
2372 D->NextFriend = readDeclID(); in VisitFriendDecl()
2373 D->UnsupportedFriend = (Record.readInt() != 0); in VisitFriendDecl()
2374 D->FriendLoc = readSourceLocation(); in VisitFriendDecl()
2377 void ASTDeclReader::VisitFriendTemplateDecl(FriendTemplateDecl *D) { in VisitFriendTemplateDecl() argument
2378 VisitDecl(D); in VisitFriendTemplateDecl()
2380 D->NumParams = NumParams; in VisitFriendTemplateDecl()
2381 D->Params = new (Reader.getContext()) TemplateParameterList *[NumParams]; in VisitFriendTemplateDecl()
2383 D->Params[i] = Record.readTemplateParameterList(); in VisitFriendTemplateDecl()
2385 D->Friend = readDeclAs<NamedDecl>(); in VisitFriendTemplateDecl()
2387 D->Friend = readTypeSourceInfo(); in VisitFriendTemplateDecl()
2388 D->FriendLoc = readSourceLocation(); in VisitFriendTemplateDecl()
2391 void ASTDeclReader::VisitTemplateDecl(TemplateDecl *D) { in VisitTemplateDecl() argument
2392 VisitNamedDecl(D); in VisitTemplateDecl()
2394 assert(!D->TemplateParams && "TemplateParams already set!"); in VisitTemplateDecl()
2395 D->TemplateParams = Record.readTemplateParameterList(); in VisitTemplateDecl()
2396 D->init(readDeclAs<NamedDecl>()); in VisitTemplateDecl()
2399 void ASTDeclReader::VisitConceptDecl(ConceptDecl *D) { in VisitConceptDecl() argument
2400 VisitTemplateDecl(D); in VisitConceptDecl()
2401 D->ConstraintExpr = Record.readExpr(); in VisitConceptDecl()
2402 mergeMergeable(D); in VisitConceptDecl()
2406 ImplicitConceptSpecializationDecl *D) { in VisitImplicitConceptSpecializationDecl() argument
2409 VisitDecl(D); in VisitImplicitConceptSpecializationDecl()
2411 for (unsigned I = 0; I < D->NumTemplateArgs; ++I) in VisitImplicitConceptSpecializationDecl()
2413 D->setTemplateArguments(Args); in VisitImplicitConceptSpecializationDecl()
2416 void ASTDeclReader::VisitRequiresExprBodyDecl(RequiresExprBodyDecl *D) { in VisitRequiresExprBodyDecl() argument
2420 ASTDeclReader::VisitRedeclarableTemplateDecl(RedeclarableTemplateDecl *D) { in VisitRedeclarableTemplateDecl() argument
2421 RedeclarableResult Redecl = VisitRedeclarable(D); in VisitRedeclarableTemplateDecl()
2425 RedeclarableTemplateDecl *CanonD = D->getCanonicalDecl(); in VisitRedeclarableTemplateDecl()
2430 D->Common = CanonD->Common; in VisitRedeclarableTemplateDecl()
2436 assert(RTD->getKind() == D->getKind() && in VisitRedeclarableTemplateDecl()
2438 D->setInstantiatedFromMemberTemplate(RTD); in VisitRedeclarableTemplateDecl()
2440 D->setMemberSpecialization(); in VisitRedeclarableTemplateDecl()
2444 VisitTemplateDecl(D); in VisitRedeclarableTemplateDecl()
2445 D->IdentifierNamespace = Record.readInt(); in VisitRedeclarableTemplateDecl()
2450 void ASTDeclReader::VisitClassTemplateDecl(ClassTemplateDecl *D) { in VisitClassTemplateDecl() argument
2451 RedeclarableResult Redecl = VisitRedeclarableTemplateDecl(D); in VisitClassTemplateDecl()
2452 mergeRedeclarableTemplate(D, Redecl); in VisitClassTemplateDecl()
2459 ASTDeclReader::AddLazySpecializations(D, SpecIDs); in VisitClassTemplateDecl()
2462 if (D->getTemplatedDecl()->TemplateOrInstantiation) { in VisitClassTemplateDecl()
2467 D->getTemplatedDecl(), D->getInjectedClassNameSpecialization()); in VisitClassTemplateDecl()
2471 void ASTDeclReader::VisitBuiltinTemplateDecl(BuiltinTemplateDecl *D) { in VisitBuiltinTemplateDecl() argument
2478 void ASTDeclReader::VisitVarTemplateDecl(VarTemplateDecl *D) { in VisitVarTemplateDecl() argument
2479 RedeclarableResult Redecl = VisitRedeclarableTemplateDecl(D); in VisitVarTemplateDecl()
2480 mergeRedeclarableTemplate(D, Redecl); in VisitVarTemplateDecl()
2487 ASTDeclReader::AddLazySpecializations(D, SpecIDs); in VisitVarTemplateDecl()
2493 ClassTemplateSpecializationDecl *D) { in VisitClassTemplateSpecializationDeclImpl() argument
2494 RedeclarableResult Redecl = VisitCXXRecordDeclImpl(D); in VisitClassTemplateSpecializationDeclImpl()
2499 D->SpecializedTemplate = CTD; in VisitClassTemplateSpecializationDeclImpl()
2511 D->SpecializedTemplate = PS; in VisitClassTemplateSpecializationDeclImpl()
2517 D->TemplateArgs = TemplateArgumentList::CreateCopy(C, TemplArgs); in VisitClassTemplateSpecializationDeclImpl()
2518 D->PointOfInstantiation = readSourceLocation(); in VisitClassTemplateSpecializationDeclImpl()
2519 D->SpecializationKind = (TemplateSpecializationKind)Record.readInt(); in VisitClassTemplateSpecializationDeclImpl()
2524 if (D->isCanonicalDecl()) { // It's kept in the folding set. in VisitClassTemplateSpecializationDeclImpl()
2527 if (auto *Partial = dyn_cast<ClassTemplatePartialSpecializationDecl>(D)) { in VisitClassTemplateSpecializationDeclImpl()
2532 CanonPattern->getCommonPtr()->Specializations.GetOrInsertNode(D); in VisitClassTemplateSpecializationDeclImpl()
2535 if (CanonSpec != D) { in VisitClassTemplateSpecializationDeclImpl()
2536 mergeRedeclarable<TagDecl>(D, CanonSpec, Redecl); in VisitClassTemplateSpecializationDeclImpl()
2540 if (auto *DDD = D->DefinitionData) { in VisitClassTemplateSpecializationDeclImpl()
2544 CanonSpec->DefinitionData = D->DefinitionData; in VisitClassTemplateSpecializationDeclImpl()
2546 D->DefinitionData = CanonSpec->DefinitionData; in VisitClassTemplateSpecializationDeclImpl()
2558 D->ExplicitInfo = ExplicitInfo; in VisitClassTemplateSpecializationDeclImpl()
2565 ClassTemplatePartialSpecializationDecl *D) { in VisitClassTemplatePartialSpecializationDecl() argument
2569 D->TemplateParams = Params; in VisitClassTemplatePartialSpecializationDecl()
2570 D->ArgsAsWritten = Record.readASTTemplateArgumentListInfo(); in VisitClassTemplatePartialSpecializationDecl()
2572 RedeclarableResult Redecl = VisitClassTemplateSpecializationDeclImpl(D); in VisitClassTemplatePartialSpecializationDecl()
2576 D->InstantiatedFromMember.setPointer( in VisitClassTemplatePartialSpecializationDecl()
2578 D->InstantiatedFromMember.setInt(Record.readInt()); in VisitClassTemplatePartialSpecializationDecl()
2582 void ASTDeclReader::VisitFunctionTemplateDecl(FunctionTemplateDecl *D) { in VisitFunctionTemplateDecl() argument
2583 RedeclarableResult Redecl = VisitRedeclarableTemplateDecl(D); in VisitFunctionTemplateDecl()
2589 ASTDeclReader::AddLazySpecializations(D, SpecIDs); in VisitFunctionTemplateDecl()
2600 VarTemplateSpecializationDecl *D) { in VisitVarTemplateSpecializationDeclImpl() argument
2604 D->SpecializedTemplate = VTD; in VisitVarTemplateSpecializationDeclImpl()
2616 D->SpecializedTemplate = PS; in VisitVarTemplateSpecializationDeclImpl()
2627 D->ExplicitInfo = ExplicitInfo; in VisitVarTemplateSpecializationDeclImpl()
2632 D->TemplateArgs = TemplateArgumentList::CreateCopy(C, TemplArgs); in VisitVarTemplateSpecializationDeclImpl()
2633 D->PointOfInstantiation = readSourceLocation(); in VisitVarTemplateSpecializationDeclImpl()
2634 D->SpecializationKind = (TemplateSpecializationKind)Record.readInt(); in VisitVarTemplateSpecializationDeclImpl()
2635 D->IsCompleteDefinition = Record.readInt(); in VisitVarTemplateSpecializationDeclImpl()
2637 RedeclarableResult Redecl = VisitVarDeclImpl(D); in VisitVarTemplateSpecializationDeclImpl()
2642 if (D->isCanonicalDecl()) { // It's kept in the folding set. in VisitVarTemplateSpecializationDeclImpl()
2644 if (auto *Partial = dyn_cast<VarTemplatePartialSpecializationDecl>(D)) { in VisitVarTemplateSpecializationDeclImpl()
2649 CanonPattern->getCommonPtr()->Specializations.GetOrInsertNode(D); in VisitVarTemplateSpecializationDeclImpl()
2652 if (CanonSpec != D) in VisitVarTemplateSpecializationDeclImpl()
2653 mergeRedeclarable<VarDecl>(D, CanonSpec, Redecl); in VisitVarTemplateSpecializationDeclImpl()
2666 VarTemplatePartialSpecializationDecl *D) { in VisitVarTemplatePartialSpecializationDecl() argument
2668 D->TemplateParams = Params; in VisitVarTemplatePartialSpecializationDecl()
2669 D->ArgsAsWritten = Record.readASTTemplateArgumentListInfo(); in VisitVarTemplatePartialSpecializationDecl()
2671 RedeclarableResult Redecl = VisitVarTemplateSpecializationDeclImpl(D); in VisitVarTemplatePartialSpecializationDecl()
2675 D->InstantiatedFromMember.setPointer( in VisitVarTemplatePartialSpecializationDecl()
2677 D->InstantiatedFromMember.setInt(Record.readInt()); in VisitVarTemplatePartialSpecializationDecl()
2681 void ASTDeclReader::VisitTemplateTypeParmDecl(TemplateTypeParmDecl *D) { in VisitTemplateTypeParmDecl() argument
2682 VisitTypeDecl(D); in VisitTemplateTypeParmDecl()
2684 D->setDeclaredWithTypename(Record.readInt()); in VisitTemplateTypeParmDecl()
2686 if (D->hasTypeConstraint()) { in VisitTemplateTypeParmDecl()
2692 D->setTypeConstraint(CR, ImmediatelyDeclaredConstraint); in VisitTemplateTypeParmDecl()
2693 if ((D->ExpandedParameterPack = Record.readInt())) in VisitTemplateTypeParmDecl()
2694 D->NumExpanded = Record.readInt(); in VisitTemplateTypeParmDecl()
2698 D->setDefaultArgument(readTypeSourceInfo()); in VisitTemplateTypeParmDecl()
2701 void ASTDeclReader::VisitNonTypeTemplateParmDecl(NonTypeTemplateParmDecl *D) { in VisitNonTypeTemplateParmDecl() argument
2702 VisitDeclaratorDecl(D); in VisitNonTypeTemplateParmDecl()
2704 D->setDepth(Record.readInt()); in VisitNonTypeTemplateParmDecl()
2705 D->setPosition(Record.readInt()); in VisitNonTypeTemplateParmDecl()
2706 if (D->hasPlaceholderTypeConstraint()) in VisitNonTypeTemplateParmDecl()
2707 D->setPlaceholderTypeConstraint(Record.readExpr()); in VisitNonTypeTemplateParmDecl()
2708 if (D->isExpandedParameterPack()) { in VisitNonTypeTemplateParmDecl()
2710 D->getTrailingObjects<std::pair<QualType, TypeSourceInfo *>>(); in VisitNonTypeTemplateParmDecl()
2711 for (unsigned I = 0, N = D->getNumExpansionTypes(); I != N; ++I) { in VisitNonTypeTemplateParmDecl()
2717 D->ParameterPack = Record.readInt(); in VisitNonTypeTemplateParmDecl()
2719 D->setDefaultArgument(Record.readExpr()); in VisitNonTypeTemplateParmDecl()
2723 void ASTDeclReader::VisitTemplateTemplateParmDecl(TemplateTemplateParmDecl *D) { in VisitTemplateTemplateParmDecl() argument
2724 VisitTemplateDecl(D); in VisitTemplateTemplateParmDecl()
2726 D->setDepth(Record.readInt()); in VisitTemplateTemplateParmDecl()
2727 D->setPosition(Record.readInt()); in VisitTemplateTemplateParmDecl()
2728 if (D->isExpandedParameterPack()) { in VisitTemplateTemplateParmDecl()
2729 auto **Data = D->getTrailingObjects<TemplateParameterList *>(); in VisitTemplateTemplateParmDecl()
2730 for (unsigned I = 0, N = D->getNumExpansionTemplateParameters(); in VisitTemplateTemplateParmDecl()
2735 D->ParameterPack = Record.readInt(); in VisitTemplateTemplateParmDecl()
2737 D->setDefaultArgument(Reader.getContext(), in VisitTemplateTemplateParmDecl()
2742 void ASTDeclReader::VisitTypeAliasTemplateDecl(TypeAliasTemplateDecl *D) { in VisitTypeAliasTemplateDecl() argument
2743 RedeclarableResult Redecl = VisitRedeclarableTemplateDecl(D); in VisitTypeAliasTemplateDecl()
2744 mergeRedeclarableTemplate(D, Redecl); in VisitTypeAliasTemplateDecl()
2747 void ASTDeclReader::VisitStaticAssertDecl(StaticAssertDecl *D) { in VisitStaticAssertDecl() argument
2748 VisitDecl(D); in VisitStaticAssertDecl()
2749 D->AssertExprAndFailed.setPointer(Record.readExpr()); in VisitStaticAssertDecl()
2750 D->AssertExprAndFailed.setInt(Record.readInt()); in VisitStaticAssertDecl()
2751 D->Message = cast_or_null<StringLiteral>(Record.readExpr()); in VisitStaticAssertDecl()
2752 D->RParenLoc = readSourceLocation(); in VisitStaticAssertDecl()
2755 void ASTDeclReader::VisitEmptyDecl(EmptyDecl *D) { in VisitEmptyDecl() argument
2756 VisitDecl(D); in VisitEmptyDecl()
2760 LifetimeExtendedTemporaryDecl *D) { in VisitLifetimeExtendedTemporaryDecl() argument
2761 VisitDecl(D); in VisitLifetimeExtendedTemporaryDecl()
2762 D->ExtendingDecl = readDeclAs<ValueDecl>(); in VisitLifetimeExtendedTemporaryDecl()
2763 D->ExprWithTemporary = Record.readStmt(); in VisitLifetimeExtendedTemporaryDecl()
2765 D->Value = new (D->getASTContext()) APValue(Record.readAPValue()); in VisitLifetimeExtendedTemporaryDecl()
2766 D->getASTContext().addDestruction(D->Value); in VisitLifetimeExtendedTemporaryDecl()
2768 D->ManglingNumber = Record.readInt(); in VisitLifetimeExtendedTemporaryDecl()
2769 mergeMergeable(D); in VisitLifetimeExtendedTemporaryDecl()
2781 ASTDeclReader::VisitRedeclarable(Redeclarable<T> *D) { in VisitRedeclarable() argument
2818 if (FirstDecl != D) { in VisitRedeclarable()
2823 D->RedeclLink = Redeclarable<T>::PreviousDeclLink(FirstDecl); in VisitRedeclarable()
2824 D->First = FirstDecl->getCanonicalDecl(); in VisitRedeclarable()
2827 auto *DAsT = static_cast<T *>(D); in VisitRedeclarable()
2852 auto *D = static_cast<T *>(DBase); in mergeRedeclarable() local
2856 mergeRedeclarable(D, cast<T>(Existing), Redecl); in mergeRedeclarable()
2857 else if (FindExistingResult ExistingRes = findExisting(D)) in mergeRedeclarable()
2859 mergeRedeclarable(D, Existing, Redecl); in mergeRedeclarable()
2868 void ASTDeclReader::mergeLambda(CXXRecordDecl *D, RedeclarableResult &Redecl, in mergeLambda() argument
2873 return mergeRedeclarable(D, Redecl); in mergeLambda()
2880 if (!D->isFirstDecl()) in mergeLambda()
2885 mergeRedeclarable(D, cast<TagDecl>(Existing), Redecl); in mergeLambda()
2892 mergeRedeclarable(D, cast<TagDecl>(Slot), Redecl); in mergeLambda()
2894 Slot = D; in mergeLambda()
2897 void ASTDeclReader::mergeRedeclarableTemplate(RedeclarableTemplateDecl *D, in mergeRedeclarableTemplate() argument
2899 mergeRedeclarable(D, Redecl); in mergeRedeclarableTemplate()
2903 D->Common = D->getCanonicalDecl()->Common; in mergeRedeclarableTemplate()
2916 void ASTDeclReader::mergeTemplatePattern(RedeclarableTemplateDecl *D, in mergeTemplatePattern() argument
2919 auto *DPattern = D->getTemplatedDecl(); in mergeTemplatePattern()
2961 auto *D = static_cast<T *>(DBase); in mergeRedeclarable() local
2963 T *DCanon = D->getCanonicalDecl(); in mergeRedeclarable()
2968 D->RedeclLink = Redeclarable<T>::PreviousDeclLink(ExistingCanon); in mergeRedeclarable()
2969 D->First = ExistingCanon; in mergeRedeclarable()
2970 ExistingCanon->Used |= D->Used; in mergeRedeclarable()
2971 D->Used = false; in mergeRedeclarable()
2976 if (auto *Namespace = dyn_cast<NamespaceDecl>(D)) in mergeRedeclarable()
2981 if (auto *DTemplate = dyn_cast<RedeclarableTemplateDecl>(D)) in mergeRedeclarable()
3008 void ASTDeclReader::mergeMergeable(LifetimeExtendedTemporaryDecl *D) { in mergeMergeable() argument
3013 LifetimeExtendedTemporaryDecl *LETDecl = D; in mergeMergeable()
3030 void ASTDeclReader::mergeMergeable(Mergeable<T> *D) { in mergeMergeable() argument
3040 !allowODRLikeMergeInC(dyn_cast<NamedDecl>(static_cast<T*>(D)))) in mergeMergeable()
3043 if (FindExistingResult ExistingRes = findExisting(static_cast<T*>(D))) in mergeMergeable()
3045 Reader.getContext().setPrimaryMergedDecl(static_cast<T *>(D), in mergeMergeable()
3049 void ASTDeclReader::VisitOMPThreadPrivateDecl(OMPThreadPrivateDecl *D) { in VisitOMPThreadPrivateDecl() argument
3050 Record.readOMPChildren(D->Data); in VisitOMPThreadPrivateDecl()
3051 VisitDecl(D); in VisitOMPThreadPrivateDecl()
3054 void ASTDeclReader::VisitOMPAllocateDecl(OMPAllocateDecl *D) { in VisitOMPAllocateDecl() argument
3055 Record.readOMPChildren(D->Data); in VisitOMPAllocateDecl()
3056 VisitDecl(D); in VisitOMPAllocateDecl()
3059 void ASTDeclReader::VisitOMPRequiresDecl(OMPRequiresDecl * D) { in VisitOMPRequiresDecl() argument
3060 Record.readOMPChildren(D->Data); in VisitOMPRequiresDecl()
3061 VisitDecl(D); in VisitOMPRequiresDecl()
3064 void ASTDeclReader::VisitOMPDeclareReductionDecl(OMPDeclareReductionDecl *D) { in VisitOMPDeclareReductionDecl() argument
3065 VisitValueDecl(D); in VisitOMPDeclareReductionDecl()
3066 D->setLocation(readSourceLocation()); in VisitOMPDeclareReductionDecl()
3069 D->setCombinerData(In, Out); in VisitOMPDeclareReductionDecl()
3071 D->setCombiner(Combiner); in VisitOMPDeclareReductionDecl()
3074 D->setInitializerData(Orig, Priv); in VisitOMPDeclareReductionDecl()
3077 D->setInitializer(Init, IK); in VisitOMPDeclareReductionDecl()
3078 D->PrevDeclInScope = readDeclID(); in VisitOMPDeclareReductionDecl()
3081 void ASTDeclReader::VisitOMPDeclareMapperDecl(OMPDeclareMapperDecl *D) { in VisitOMPDeclareMapperDecl() argument
3082 Record.readOMPChildren(D->Data); in VisitOMPDeclareMapperDecl()
3083 VisitValueDecl(D); in VisitOMPDeclareMapperDecl()
3084 D->VarName = Record.readDeclarationName(); in VisitOMPDeclareMapperDecl()
3085 D->PrevDeclInScope = readDeclID(); in VisitOMPDeclareMapperDecl()
3088 void ASTDeclReader::VisitOMPCapturedExprDecl(OMPCapturedExprDecl *D) { in VisitOMPCapturedExprDecl() argument
3089 VisitVarDecl(D); in VisitOMPCapturedExprDecl()
3197 inline void ASTReader::LoadedDecl(unsigned Index, Decl *D) { in LoadedDecl() argument
3199 DeclsLoaded[Index] = D; in LoadedDecl()
3208 static bool isConsumerInterestedIn(ASTContext &Ctx, Decl *D, bool HasBody) { in isConsumerInterestedIn() argument
3214 if (isPartOfPerModuleInitializer(D)) { in isConsumerInterestedIn()
3215 auto *M = D->getImportedOwningModule(); in isConsumerInterestedIn()
3217 Ctx.DeclMustBeEmitted(D)) in isConsumerInterestedIn()
3222 ImportDecl, PragmaCommentDecl, PragmaDetectMismatchDecl>(D)) in isConsumerInterestedIn()
3225 OMPAllocateDecl, OMPRequiresDecl>(D)) in isConsumerInterestedIn()
3226 return !D->getDeclContext()->isFunctionOrMethod(); in isConsumerInterestedIn()
3227 if (const auto *Var = dyn_cast<VarDecl>(D)) in isConsumerInterestedIn()
3231 if (const auto *Func = dyn_cast<FunctionDecl>(D)) in isConsumerInterestedIn()
3234 if (auto *ES = D->getASTContext().getExternalSource()) in isConsumerInterestedIn()
3235 if (ES->hasExternalDefinitions(D) == ExternalASTSource::EK_Never) in isConsumerInterestedIn()
3384 for (auto *D : merged_redecls(cast<Decl>(LexicalDC))) { in getPrimaryDCForAnonymousDecl() local
3385 if (auto *FD = dyn_cast<FunctionDecl>(D)) in getPrimaryDCForAnonymousDecl()
3388 if (auto *MD = dyn_cast<ObjCMethodDecl>(D)) in getPrimaryDCForAnonymousDecl()
3391 if (auto *RD = dyn_cast<RecordDecl>(D)) in getPrimaryDCForAnonymousDecl()
3429 NamedDecl *D) { in setAnonymousDeclForMerging() argument
3436 Previous[Index] = D; in setAnonymousDeclForMerging()
3439 ASTDeclReader::FindExistingResult ASTDeclReader::findExisting(NamedDecl *D) { in findExisting() argument
3441 : D->getDeclName(); in findExisting()
3443 if (!Name && !needsAnonymousDeclarationNumber(D)) { in findExisting()
3446 FindExistingResult Result(Reader, D, /*Existing=*/nullptr, in findExisting()
3453 DeclContext *DC = D->getDeclContext()->getRedeclContext(); in findExisting()
3458 if (C.isSameEntity(It->second, D)) in findExisting()
3459 return FindExistingResult(Reader, D, It->second, AnonymousDeclNumber, in findExisting()
3465 if (needsAnonymousDeclarationNumber(D)) { in findExisting()
3469 Reader, D->getLexicalDeclContext(), AnonymousDeclNumber)) in findExisting()
3470 if (C.isSameEntity(Existing, D)) in findExisting()
3471 return FindExistingResult(Reader, D, Existing, AnonymousDeclNumber, in findExisting()
3502 if (C.isSameEntity(Existing, D)) in findExisting()
3503 return FindExistingResult(Reader, D, Existing, AnonymousDeclNumber, in findExisting()
3510 if (C.isSameEntity(Existing, D)) in findExisting()
3511 return FindExistingResult(Reader, D, Existing, AnonymousDeclNumber, in findExisting()
3527 auto MergedDCIt = Reader.MergedDeclContexts.find(D->getLexicalDeclContext()); in findExisting()
3529 !D->shouldSkipCheckingODR() && MergedDCIt->second == D->getDeclContext()) in findExisting()
3530 Reader.PendingOdrMergeChecks.push_back(D); in findExisting()
3532 return FindExistingResult(Reader, D, /*Existing=*/nullptr, in findExisting()
3537 Decl *ASTDeclReader::getMostRecentDeclImpl(Redeclarable<DeclT> *D) { in getMostRecentDeclImpl() argument
3538 return D->RedeclLink.getLatestNotUpdated(); in getMostRecentDeclImpl()
3545 Decl *ASTDeclReader::getMostRecentDecl(Decl *D) { in getMostRecentDecl() argument
3546 assert(D); in getMostRecentDecl()
3548 switch (D->getKind()) { in getMostRecentDecl()
3552 return getMostRecentDeclImpl(cast<TYPE##Decl>(D)); in getMostRecentDecl()
3558 Decl *ASTReader::getMostRecentExistingDecl(Decl *D) { in getMostRecentExistingDecl() argument
3559 return ASTDeclReader::getMostRecentDecl(D->getCanonicalDecl()); in getMostRecentExistingDecl()
3562 void ASTDeclReader::mergeInheritableAttributes(ASTReader &Reader, Decl *D, in mergeInheritableAttributes() argument
3568 if (IA && !D->hasAttr<MSInheritanceAttr>()) { in mergeInheritableAttributes()
3571 D->addAttr(NewAttr); in mergeInheritableAttributes()
3575 if (AA && !D->hasAttr<AvailabilityAttr>()) { in mergeInheritableAttributes()
3578 D->addAttr(NewAttr); in mergeInheritableAttributes()
3584 Redeclarable<DeclT> *D, in attachPreviousDeclImpl() argument
3586 D->RedeclLink.setPrevious(cast<DeclT>(Previous)); in attachPreviousDeclImpl()
3587 D->First = cast<DeclT>(Previous)->First; in attachPreviousDeclImpl()
3594 Redeclarable<VarDecl> *D, in attachPreviousDeclImpl() argument
3596 auto *VD = static_cast<VarDecl *>(D); in attachPreviousDeclImpl()
3598 D->RedeclLink.setPrevious(PrevVD); in attachPreviousDeclImpl()
3599 D->First = PrevVD->First; in attachPreviousDeclImpl()
3622 Redeclarable<FunctionDecl> *D, in attachPreviousDeclImpl() argument
3624 auto *FD = static_cast<FunctionDecl *>(D); in attachPreviousDeclImpl()
3713 void ASTDeclReader::attachPreviousDecl(ASTReader &Reader, Decl *D, in attachPreviousDecl() argument
3715 assert(D && Previous); in attachPreviousDecl()
3717 switch (D->getKind()) { in attachPreviousDecl()
3721 attachPreviousDeclImpl(Reader, cast<TYPE##Decl>(D), Previous, Canon); \ in attachPreviousDecl()
3731 D->IdentifierNamespace |= in attachPreviousDecl()
3737 if (auto *TD = dyn_cast<TemplateDecl>(D)) in attachPreviousDecl()
3745 mergeInheritableAttributes(Reader, D, Previous); in attachPreviousDecl()
3749 void ASTDeclReader::attachLatestDeclImpl(Redeclarable<DeclT> *D, Decl *Latest) { in attachLatestDeclImpl() argument
3750 D->RedeclLink.setLatest(cast<DeclT>(Latest)); in attachLatestDeclImpl()
3757 void ASTDeclReader::attachLatestDecl(Decl *D, Decl *Latest) { in attachLatestDecl() argument
3758 assert(D && Latest); in attachLatestDecl()
3760 switch (D->getKind()) { in attachLatestDecl()
3764 attachLatestDeclImpl(cast<TYPE##Decl>(D), Latest); \ in attachLatestDecl()
3771 void ASTDeclReader::markIncompleteDeclChainImpl(Redeclarable<DeclT> *D) { in markIncompleteDeclChainImpl() argument
3772 D->RedeclLink.markIncomplete(); in markIncompleteDeclChainImpl()
3779 void ASTReader::markIncompleteDeclChain(Decl *D) { in markIncompleteDeclChain() argument
3780 switch (D->getKind()) { in markIncompleteDeclChain()
3784 ASTDeclReader::markIncompleteDeclChainImpl(cast<TYPE##Decl>(D)); \ in markIncompleteDeclChain()
3820 Decl *D = nullptr; in ReadDeclRecord() local
3831 D = TypedefDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3834 D = TypeAliasDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3837 D = EnumDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3840 D = RecordDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3843 D = EnumConstantDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3846 D = FunctionDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3849 D = LinkageSpecDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3852 D = ExportDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3855 D = LabelDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3858 D = NamespaceDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3861 D = NamespaceAliasDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3864 D = UsingDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3867 D = UsingPackDecl::CreateDeserialized(Context, ID, Record.readInt()); in ReadDeclRecord()
3870 D = UsingShadowDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3873 D = UsingEnumDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3876 D = ConstructorUsingShadowDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3879 D = UsingDirectiveDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3882 D = UnresolvedUsingValueDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3885 D = UnresolvedUsingTypenameDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3888 D = UnresolvedUsingIfExistsDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3891 D = CXXRecordDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3894 D = CXXDeductionGuideDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3897 D = CXXMethodDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3900 D = CXXConstructorDecl::CreateDeserialized(Context, ID, Record.readInt()); in ReadDeclRecord()
3903 D = CXXDestructorDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3906 D = CXXConversionDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3909 D = AccessSpecDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3912 D = FriendDecl::CreateDeserialized(Context, ID, Record.readInt()); in ReadDeclRecord()
3915 D = FriendTemplateDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3918 D = ClassTemplateDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3921 D = ClassTemplateSpecializationDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3924 D = ClassTemplatePartialSpecializationDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3927 D = VarTemplateDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3930 D = VarTemplateSpecializationDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3933 D = VarTemplatePartialSpecializationDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3936 D = FunctionTemplateDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3940 D = TemplateTypeParmDecl::CreateDeserialized(Context, ID, in ReadDeclRecord()
3946 D = NonTypeTemplateParmDecl::CreateDeserialized(Context, ID, in ReadDeclRecord()
3952 D = NonTypeTemplateParmDecl::CreateDeserialized(Context, ID, in ReadDeclRecord()
3958 D = TemplateTemplateParmDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3961 D = TemplateTemplateParmDecl::CreateDeserialized(Context, ID, in ReadDeclRecord()
3965 D = TypeAliasTemplateDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3968 D = ConceptDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3971 D = RequiresExprBodyDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3974 D = StaticAssertDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3977 D = ObjCMethodDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3980 D = ObjCInterfaceDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3983 D = ObjCIvarDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3986 D = ObjCProtocolDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3989 D = ObjCAtDefsFieldDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3992 D = ObjCCategoryDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3995 D = ObjCCategoryImplDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
3998 D = ObjCImplementationDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4001 D = ObjCCompatibleAliasDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4004 D = ObjCPropertyDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4007 D = ObjCPropertyImplDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4010 D = FieldDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4013 D = IndirectFieldDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4016 D = VarDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4019 D = ImplicitParamDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4022 D = ParmVarDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4025 D = DecompositionDecl::CreateDeserialized(Context, ID, Record.readInt()); in ReadDeclRecord()
4028 D = BindingDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4031 D = FileScopeAsmDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4034 D = TopLevelStmtDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4037 D = BlockDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4040 D = MSPropertyDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4043 D = MSGuidDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4046 D = UnnamedGlobalConstantDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4049 D = TemplateParamObjectDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4052 D = CapturedDecl::CreateDeserialized(Context, ID, Record.readInt()); in ReadDeclRecord()
4063 D = ImportDecl::CreateDeserialized(Context, ID, Record.back()); in ReadDeclRecord()
4069 D = OMPThreadPrivateDecl::CreateDeserialized(Context, ID, NumChildren); in ReadDeclRecord()
4076 D = OMPAllocateDecl::CreateDeserialized(Context, ID, NumVars, NumClauses); in ReadDeclRecord()
4082 D = OMPRequiresDecl::CreateDeserialized(Context, ID, NumClauses); in ReadDeclRecord()
4086 D = OMPDeclareReductionDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4091 D = OMPDeclareMapperDecl::CreateDeserialized(Context, ID, NumClauses); in ReadDeclRecord()
4095 D = OMPCapturedExprDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4098 D = PragmaCommentDecl::CreateDeserialized(Context, ID, Record.readInt()); in ReadDeclRecord()
4101 D = PragmaDetectMismatchDecl::CreateDeserialized(Context, ID, in ReadDeclRecord()
4105 D = EmptyDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4108 D = LifetimeExtendedTemporaryDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4111 D = ObjCTypeParamDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4114 D = HLSLBufferDecl::CreateDeserialized(Context, ID); in ReadDeclRecord()
4117 D = ImplicitConceptSpecializationDecl::CreateDeserialized(Context, ID, in ReadDeclRecord()
4122 assert(D && "Unknown declaration reading AST file"); in ReadDeclRecord()
4123 LoadedDecl(Index, D); in ReadDeclRecord()
4127 D->setDeclContext(Context.getTranslationUnitDecl()); in ReadDeclRecord()
4128 Reader.Visit(D); in ReadDeclRecord()
4132 if (auto *DC = dyn_cast<DeclContext>(D)) { in ReadDeclRecord()
4145 PendingUpdateRecord(ID, D, /*JustLoaded=*/true)); in ReadDeclRecord()
4148 if (auto *Class = dyn_cast<ObjCInterfaceDecl>(D)) in ReadDeclRecord()
4160 InterestingDecl(D, Reader.hasPendingBody())); in ReadDeclRecord()
4162 return D; in ReadDeclRecord()
4182 InterestingDecl D = PotentiallyInterestingDecls.front(); in PassInterestingDeclsToConsumer() local
4184 if (isConsumerInterestedIn(getContext(), D.getDecl(), D.hasPendingBody())) in PassInterestingDeclsToConsumer()
4185 PassInterestingDeclToConsumer(D.getDecl()); in PassInterestingDeclsToConsumer()
4194 Decl *D = Record.D; in loadDeclUpdateRecords() local
4209 Record.JustLoaded || isConsumerInterestedIn(getContext(), D, false); in loadDeclUpdateRecords()
4237 Reader.UpdateDecl(D, PendingLazySpecializationIDs); in loadDeclUpdateRecords()
4242 isConsumerInterestedIn(getContext(), D, Reader.hasPendingBody())) { in loadDeclUpdateRecords()
4244 InterestingDecl(D, Reader.hasPendingBody())); in loadDeclUpdateRecords()
4250 assert((PendingLazySpecializationIDs.empty() || isa<ClassTemplateDecl>(D) || in loadDeclUpdateRecords()
4251 isa<FunctionTemplateDecl, VarTemplateDecl>(D)) && in loadDeclUpdateRecords()
4253 if (auto *CTD = dyn_cast<ClassTemplateDecl>(D)) in loadDeclUpdateRecords()
4255 else if (auto *FTD = dyn_cast<FunctionTemplateDecl>(D)) in loadDeclUpdateRecords()
4257 else if (auto *VTD = dyn_cast<VarTemplateDecl>(D)) in loadDeclUpdateRecords()
4267 auto *DC = cast<DeclContext>(D)->getPrimaryContext(); in loadDeclUpdateRecords()
4321 auto *D = GetLocalDecl(*M, Record[N - I - 1]); in loadPendingDeclChain() local
4322 ASTDeclReader::attachPreviousDecl(*this, D, MostRecent, CanonDecl); in loadPendingDeclChain()
4323 MostRecent = D; in loadPendingDeclChain()
4439 ObjCInterfaceDecl *D, in loadObjCCategories() argument
4441 ObjCCategoriesVisitor Visitor(*this, D, CategoriesDeserialized, ID, in loadObjCCategories()
4447 static void forAllLaterRedecls(DeclT *D, Fn F) { in forAllLaterRedecls() argument
4448 F(D); in forAllLaterRedecls()
4453 auto *MostRecent = D->getMostRecentDecl(); in forAllLaterRedecls()
4457 Found = (Redecl == D); in forAllLaterRedecls()
4461 for (auto *Redecl = MostRecent; Redecl != D; in forAllLaterRedecls()
4467 void ASTDeclReader::UpdateDecl(Decl *D, in UpdateDecl() argument
4472 auto *RD = cast<CXXRecordDecl>(D); in UpdateDecl()
4491 if (auto *TU = dyn_cast<TranslationUnitDecl>(D)) in UpdateDecl()
4494 cast<NamespaceDecl>(D)->setAnonymousNamespace(Anon); in UpdateDecl()
4500 auto *VD = cast<VarDecl>(D); in UpdateDecl()
4509 if (auto *VTSD = dyn_cast<VarTemplateSpecializationDecl>(D)) { in UpdateDecl()
4511 } else if (auto *VD = dyn_cast<VarDecl>(D)) { in UpdateDecl()
4516 auto *FD = cast<FunctionDecl>(D); in UpdateDecl()
4528 auto *Param = cast<ParmVarDecl>(D); in UpdateDecl()
4543 auto *FD = cast<FieldDecl>(D); in UpdateDecl()
4560 auto *FD = cast<FunctionDecl>(D); in UpdateDecl()
4582 auto *RD = cast<CXXRecordDecl>(D); in UpdateDecl()
4636 if (!D->hasAttrs()) in UpdateDecl()
4637 D->setAttrsImpl(Attrs, Reader.getContext()); in UpdateDecl()
4646 auto *First = cast<CXXDestructorDecl>(D->getCanonicalDecl()); in UpdateDecl()
4661 auto *FD = cast<FunctionDecl>(D); in UpdateDecl()
4679 auto *FD = cast<FunctionDecl>(D); in UpdateDecl()
4688 D->markUsed(Reader.getContext()); in UpdateDecl()
4692 Reader.getContext().setManglingNumber(cast<NamedDecl>(D), in UpdateDecl()
4697 Reader.getContext().setStaticLocalNumber(cast<VarDecl>(D), in UpdateDecl()
4702 D->addAttr(OMPThreadPrivateDeclAttr::CreateImplicit(Reader.getContext(), in UpdateDecl()
4712 D->addAttr(OMPAllocateDeclAttr::CreateImplicit( in UpdateDecl()
4719 auto *Exported = cast<NamedDecl>(D); in UpdateDecl()
4732 D->addAttr(OMPDeclareTargetDeclAttr::CreateImplicit( in UpdateDecl()
4742 D->addAttr(Attrs[0]); in UpdateDecl()