Lines Matching +full:sys +full:- +full:mgr
1 //===- ASTWriter.cpp - AST File Writer ------------------------------------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
11 //===----------------------------------------------------------------------===//
151 //===----------------------------------------------------------------------===//
153 //===----------------------------------------------------------------------===//
181 M = M->getTopLevelModule(); in GetAffectingModuleMaps()
202 for (auto *SubM : Mod->submodules()) in GetAffectingModuleMaps()
217 for (const Module *ImportedModule : CurrentModule->Imports) in GetAffectingModuleMaps()
219 for (const Module *UndeclaredModule : CurrentModule->UndeclaredUses) in GetAffectingModuleMaps()
222 for (auto *M : CurrentModule->submodules()) in GetAffectingModuleMaps()
226 // Handle textually-included headers that belong to other modules. in GetAffectingModuleMaps()
242 if (!HFI->isCompilingModuleHeader && HFI->isModuleHeader) in GetAffectingModuleMaps()
243 continue; // Modular header, handled in the above module-based loop. in GetAffectingModuleMaps()
244 if (!HFI->isCompilingModuleHeader && !HFI->IsLocallyIncluded) in GetAffectingModuleMaps()
245 continue; // Non-modular header not included locally is not affecting. in GetAffectingModuleMaps()
253 // module map file defining a (sub)module of a top-level module X includes in GetAffectingModuleMaps()
254 // a module map file that defines a (sub)module of another top-level module Y. in GetAffectingModuleMaps()
293 return BasicWriter.Emit(getTypeCodeForTypeClass(typePtr->getTypeClass()), in write()
512 AddNestedNameSpecifierLoc(CR->getNestedNameSpecifierLoc()); in AddConceptReference()
513 AddSourceLocation(CR->getTemplateKWLoc()); in AddConceptReference()
514 AddDeclarationNameInfo(CR->getConceptNameInfo()); in AddConceptReference()
515 AddDeclRef(CR->getFoundDecl()); in AddConceptReference()
516 AddDeclRef(CR->getNamedConcept()); in AddConceptReference()
517 push_back(CR->getTemplateArgsAsWritten() != nullptr); in AddConceptReference()
518 if (CR->getTemplateArgsAsWritten()) in AddConceptReference()
519 AddASTTemplateArgumentListInfo(CR->getTemplateArgsAsWritten()); in AddConceptReference()
674 Abv->Add(BitCodeAbbrevOp(serialization::TYPE_EXT_QUAL)); in WriteTypeAbbrevs()
675 Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // Type in WriteTypeAbbrevs()
676 Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 3)); // Quals in WriteTypeAbbrevs()
680 //===----------------------------------------------------------------------===//
682 //===----------------------------------------------------------------------===//
873 // AST Top-Level Block. in WriteBlockInfoBlock()
1124 return Changed | llvm::sys::path::remove_dots(Path); in cleanPathForOutput()
1132 /// \param BaseDir When non-NULL, the PCH file is a relocatable AST file and
1156 if (!llvm::sys::path::is_separator(Filename[Pos])) { in adjustFilenameForRelocatableAST()
1157 if (!llvm::sys::path::is_separator(BaseDir.back())) in adjustFilenameForRelocatableAST()
1200 assert(WritingModule->isNamedModule()); in createSignatureForNamedModule()
1204 for (auto [ExportImported, _] : WritingModule->Exports) in createSignatureForNamedModule()
1205 Hasher.update(ExportImported->Signature); in createSignatureForNamedModule()
1230 Hasher.update(M->Signature); in createSignatureForNamedModule()
1251 !PP->getHeaderSearchInfo().getHeaderSearchOpts().ModulesHashContent) in backpatchSignature()
1283 // block - we're only able to compute those at the end of the serialization in writeUnhashedControlBlock()
1286 // The bitstream VBR-encodes record elements, which makes backpatching them in writeUnhashedControlBlock()
1287 // really difficult. Let's store the signatures as blobs instead - they are in writeUnhashedControlBlock()
1288 // guaranteed to be word-aligned, and we control their format/encoding. in writeUnhashedControlBlock()
1295 Abbrev->Add(BitCodeAbbrevOp(AST_BLOCK_HASH)); in writeUnhashedControlBlock()
1296 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); in writeUnhashedControlBlock()
1301 ASTBlockHashOffset = Stream.GetCurrentBitNo() - Blob.size() * 8; in writeUnhashedControlBlock()
1306 Abbrev->Add(BitCodeAbbrevOp(SIGNATURE)); in writeUnhashedControlBlock()
1307 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); in writeUnhashedControlBlock()
1312 SignatureOffset = Stream.GetCurrentBitNo() - Blob.size() * 8; in writeUnhashedControlBlock()
1372 Abbrev->Add(BitCodeAbbrevOp(HEADER_SEARCH_ENTRY_USAGE)); in writeUnhashedControlBlock()
1373 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); // Number of bits. in writeUnhashedControlBlock()
1374 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Bit vector. in writeUnhashedControlBlock()
1385 Abbrev->Add(BitCodeAbbrevOp(VFS_USAGE)); in writeUnhashedControlBlock()
1386 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); // Number of bits. in writeUnhashedControlBlock()
1387 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Bit vector. in writeUnhashedControlBlock()
1408 MetadataAbbrev->Add(BitCodeAbbrevOp(METADATA)); in WriteControlBlock()
1409 MetadataAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 16)); // Major in WriteControlBlock()
1410 MetadataAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 16)); // Minor in WriteControlBlock()
1411 MetadataAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 16)); // Clang maj. in WriteControlBlock()
1412 MetadataAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 16)); // Clang min. in WriteControlBlock()
1413 MetadataAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // Relocatable in WriteControlBlock()
1415 MetadataAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); in WriteControlBlock()
1416 MetadataAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // Timestamps in WriteControlBlock()
1417 MetadataAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // Errors in WriteControlBlock()
1418 MetadataAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // SVN branch/tag in WriteControlBlock()
1439 Abbrev->Add(BitCodeAbbrevOp(MODULE_NAME)); in WriteControlBlock()
1440 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Name in WriteControlBlock()
1443 Stream.EmitRecordWithBlob(AbbrevCode, Record, WritingModule->Name); in WriteControlBlock()
1446 if (WritingModule && WritingModule->Directory) { in WriteControlBlock()
1453 BaseDir.assign(CWD->getName()); in WriteControlBlock()
1455 BaseDir.assign(WritingModule->Directory->getName()); in WriteControlBlock()
1466 WritingModule->Directory->getName() != ".")) { in WriteControlBlock()
1469 Abbrev->Add(BitCodeAbbrevOp(MODULE_DIRECTORY)); in WriteControlBlock()
1470 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Directory in WriteControlBlock()
1485 if (WritingModule && WritingModule->Kind == Module::ModuleMapModule) { in WriteControlBlock()
1489 AddPath(WritingModule->PresumedModuleMapFile.empty() in WriteControlBlock()
1491 ->getNameAsRequested() in WriteControlBlock()
1492 : StringRef(WritingModule->PresumedModuleMapFile), in WriteControlBlock()
1498 Record.push_back(AdditionalModMaps->size()); in WriteControlBlock()
1499 SmallVector<FileEntryRef, 1> ModMaps(AdditionalModMaps->begin(), in WriteControlBlock()
1500 AdditionalModMaps->end()); in WriteControlBlock()
1515 serialization::ModuleManager &Mgr = Chain->getModuleManager(); in WriteControlBlock() local
1518 for (ModuleFile &M : Mgr) { in WriteControlBlock()
1674 FileAbbrev->Add(BitCodeAbbrevOp(ORIGINAL_FILE)); in WriteControlBlock()
1675 FileAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // File ID in WriteControlBlock()
1676 FileAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // File name in WriteControlBlock()
1682 EmitRecordWithPath(FileAbbrevCode, Record, MainFile->getName()); in WriteControlBlock()
1729 // Create input-file abbreviation. in WriteInputFiles()
1731 IFAbbrev->Add(BitCodeAbbrevOp(INPUT_FILE)); in WriteInputFiles()
1732 IFAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // ID in WriteInputFiles()
1733 IFAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 12)); // Size in WriteInputFiles()
1734 IFAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 32)); // Modification time in WriteInputFiles()
1735 IFAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // Overridden in WriteInputFiles()
1736 IFAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // Transient in WriteInputFiles()
1737 IFAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // Top-level in WriteInputFiles()
1738 IFAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // Module map in WriteInputFiles()
1739 IFAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 16)); // Name as req. len in WriteInputFiles()
1740 IFAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Name as req. + name in WriteInputFiles()
1745 IFHAbbrev->Add(BitCodeAbbrevOp(INPUT_FILE_HASH)); in WriteInputFiles()
1746 IFHAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); in WriteInputFiles()
1747 IFHAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); in WriteInputFiles()
1761 if (!SLoc->isFile()) in WriteInputFiles()
1763 const SrcMgr::FileInfo &File = SLoc->getFile(); in WriteInputFiles()
1765 if (!Cache->OrigEntry) in WriteInputFiles()
1772 InputFileEntry Entry(*Cache->OrigEntry); in WriteInputFiles()
1774 Entry.IsTransient = Cache->IsTransient; in WriteInputFiles()
1775 Entry.BufferOverridden = Cache->BufferOverridden; in WriteInputFiles()
1780 if (PP->getHeaderSearchInfo() in WriteInputFiles()
1783 auto MemBuff = Cache->getBufferIfLoaded(); in WriteInputFiles()
1785 ContentHash = xxh3_64bits(MemBuff->getBuffer()); in WriteInputFiles()
1787 PP->Diag(SourceLocation(), diag::err_module_unable_to_hash_content) in WriteInputFiles()
1811 InputFileOffsets.push_back(Stream.GetCurrentBitNo() - InputFilesOffsetBase); in WriteInputFiles()
1857 OffsetsAbbrev->Add(BitCodeAbbrevOp(INPUT_FILE_OFFSETS)); in WriteInputFiles()
1858 OffsetsAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // # input files in WriteInputFiles()
1859 OffsetsAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // # non-system in WriteInputFiles()
1861 OffsetsAbbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Array in WriteInputFiles()
1870 //===----------------------------------------------------------------------===//
1872 //===----------------------------------------------------------------------===//
1880 Abbrev->Add(BitCodeAbbrevOp(SM_SLOC_FILE_ENTRY)); in CreateSLocFileAbbrev()
1881 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); // Offset in CreateSLocFileAbbrev()
1882 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); // Include location in CreateSLocFileAbbrev()
1883 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 3)); // Characteristic in CreateSLocFileAbbrev()
1884 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // Line directives in CreateSLocFileAbbrev()
1886 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // Input File ID in CreateSLocFileAbbrev()
1887 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); // NumCreatedFIDs in CreateSLocFileAbbrev()
1888 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 24)); // FirstDeclIndex in CreateSLocFileAbbrev()
1889 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); // NumDecls in CreateSLocFileAbbrev()
1899 Abbrev->Add(BitCodeAbbrevOp(SM_SLOC_BUFFER_ENTRY)); in CreateSLocBufferAbbrev()
1900 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); // Offset in CreateSLocBufferAbbrev()
1901 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); // Include location in CreateSLocBufferAbbrev()
1902 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 3)); // Characteristic in CreateSLocBufferAbbrev()
1903 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // Line directives in CreateSLocBufferAbbrev()
1904 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Buffer name blob in CreateSLocBufferAbbrev()
1915 Abbrev->Add(BitCodeAbbrevOp(Compressed ? SM_SLOC_BUFFER_BLOB_COMPRESSED in CreateSLocBufferBlobAbbrev()
1918 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); // Uncompressed size in CreateSLocBufferBlobAbbrev()
1919 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Blob in CreateSLocBufferBlobAbbrev()
1929 Abbrev->Add(BitCodeAbbrevOp(SM_SLOC_EXPANSION_ENTRY)); in CreateSLocExpansionAbbrev()
1930 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); // Offset in CreateSLocExpansionAbbrev()
1931 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); // Spelling location in CreateSLocExpansionAbbrev()
1932 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // Start location in CreateSLocExpansionAbbrev()
1933 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // End location in CreateSLocExpansionAbbrev()
1934 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // Is token range in CreateSLocExpansionAbbrev()
1935 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // Token length in CreateSLocExpansionAbbrev()
1939 /// Emit key length and data length as ULEB-encoded data, and return them as a
1950 // Trait used for the on-disk hash table of header search information.
2015 KeyLen -= 8; in EmitKey()
2017 KeyLen -= 8; in EmitKey()
2054 Offset = Pos->second; in EmitData()
2071 assert(Out.tell() - Start == DataLen && "Wrong data length"); in EmitData()
2099 if (M->isUnimportable()) in WriteHeaderSearch()
2111 for (const auto &U : M->MissingHeaders) { in WriteHeaderSearch()
2115 PP->Diag(U.FileNameLoc, diag::err_module_no_size_mtime_for_header) in WriteHeaderSearch()
2116 << WritingModule->getFullModuleName() << U.Size.has_value() in WriteHeaderSearch()
2122 SmallString<128> Filename(M->Directory->getName()); in WriteHeaderSearch()
2123 llvm::sys::path::append(Filename, U.FileName); in WriteHeaderSearch()
2138 auto SubmodulesRange = M->submodules(); in WriteHeaderSearch()
2157 if (!HFI->isCompilingModuleHeader && HFI->isModuleHeader) in WriteHeaderSearch()
2159 if (!HFI->isCompilingModuleHeader && !PP->alreadyIncluded(*File)) in WriteHeaderSearch()
2160 continue; // Non-modular header not included is not needed. in WriteHeaderSearch()
2163 StringRef Filename = File->getName(); in WriteHeaderSearch()
2172 bool Included = PP->alreadyIncluded(*File); in WriteHeaderSearch()
2175 Filename, File->getSize(), getTimestampForOutput(*File) in WriteHeaderSearch()
2184 // Create the on-disk hash table in a buffer. in WriteHeaderSearch()
2200 Abbrev->Add(BitCodeAbbrevOp(HEADER_SEARCH_TABLE)); in WriteHeaderSearch()
2201 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); in WriteHeaderSearch()
2202 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); in WriteHeaderSearch()
2203 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); in WriteHeaderSearch()
2204 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); in WriteHeaderSearch()
2229 RecordDataType Record[] = {SM_SLOC_BUFFER_BLOB_COMPRESSED, Blob.size() - 1}; in emitBlob()
2237 RecordDataType Record[] = {SM_SLOC_BUFFER_BLOB_COMPRESSED, Blob.size() - 1}; in emitBlob()
2250 /// TODO: We should probably use an on-disk hash table (stored in a
2263 // Abbreviations for the various kinds of source-location entries. in WriteSourceManagerBlock()
2275 SLocEntryOffsets.reserve(SourceMgr.local_sloc_entry_size() - 1); in WriteSourceManagerBlock()
2283 // Record the offset of this source-location entry. in WriteSourceManagerBlock()
2284 uint64_t Offset = Stream.GetCurrentBitNo() - SLocEntryOffsetsBase; in WriteSourceManagerBlock()
2289 if (SLoc->isFile()) { in WriteSourceManagerBlock()
2290 const SrcMgr::ContentCache *Cache = &SLoc->getFile().getContentCache(); in WriteSourceManagerBlock()
2291 if (Cache->OrigEntry) { in WriteSourceManagerBlock()
2300 if (SLoc->isFile()) { in WriteSourceManagerBlock()
2301 const SrcMgr::FileInfo &File = SLoc->getFile(); in WriteSourceManagerBlock()
2308 Record.push_back(getAdjustedOffset(SLoc->getOffset()) - 2); in WriteSourceManagerBlock()
2314 if (Content->OrigEntry) { in WriteSourceManagerBlock()
2315 assert(Content->OrigEntry == Content->ContentsEntry && in WriteSourceManagerBlock()
2319 assert(InputFileIDs[*Content->OrigEntry] != 0 && "Missed file entry"); in WriteSourceManagerBlock()
2320 Record.push_back(InputFileIDs[*Content->OrigEntry]); in WriteSourceManagerBlock()
2326 Record.push_back(FDI->second->FirstDeclIndex); in WriteSourceManagerBlock()
2327 Record.push_back(FDI->second->DeclIDs.size()); in WriteSourceManagerBlock()
2335 if (Content->BufferOverridden || Content->IsTransient) in WriteSourceManagerBlock()
2345 Content->getBufferOrNone(PP.getDiagnostics(), PP.getFileManager()); in WriteSourceManagerBlock()
2346 StringRef Name = Buffer ? Buffer->getBufferIdentifier() : ""; in WriteSourceManagerBlock()
2353 // Include the implicit terminating null character in the on-disk buffer in WriteSourceManagerBlock()
2356 Content->getBufferOrNone(PP.getDiagnostics(), PP.getFileManager()); in WriteSourceManagerBlock()
2359 StringRef Blob(Buffer->getBufferStart(), Buffer->getBufferSize() + 1); in WriteSourceManagerBlock()
2365 const SrcMgr::ExpansionInfo &Expansion = SLoc->getExpansion(); in WriteSourceManagerBlock()
2368 Record.push_back(getAdjustedOffset(SLoc->getOffset()) - 2); in WriteSourceManagerBlock()
2382 Record.push_back(getAdjustedOffset(NextOffset - SLoc->getOffset()) - 1); in WriteSourceManagerBlock()
2392 // Write the source-location offsets table into the AST block. This in WriteSourceManagerBlock()
2393 // table is used for lazily loading source-location information. in WriteSourceManagerBlock()
2397 Abbrev->Add(BitCodeAbbrevOp(SOURCE_LOCATION_OFFSETS)); in WriteSourceManagerBlock()
2398 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 16)); // # of slocs in WriteSourceManagerBlock()
2399 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 16)); // total size in WriteSourceManagerBlock()
2400 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 32)); // base offset in WriteSourceManagerBlock()
2401 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // offsets in WriteSourceManagerBlock()
2406 getAdjustedOffset(SourceMgr.getNextLocalOffset()) - 1 /* skip dummy */, in WriteSourceManagerBlock()
2407 SLocEntryOffsetsBase - SourceManagerBlockOffset}; in WriteSourceManagerBlock()
2421 FilenameMap[-1] = -1; // For unspecified filenames. in WriteSourceManagerBlock()
2427 FilenameMap.size() - 1)).second) in WriteSourceManagerBlock()
2456 //===----------------------------------------------------------------------===//
2458 //===----------------------------------------------------------------------===//
2462 if (MacroInfo *MI = MD->getMacroInfo()) in shouldIgnoreMacro()
2463 if (MI->isBuiltinMacro()) in shouldIgnoreMacro()
2467 SourceLocation Loc = MD->getLocation(); in shouldIgnoreMacro()
2511 AddSourceLocation(SkipInfo->HashTokenLoc, Record); in WritePreprocessor()
2512 AddSourceLocation(SkipInfo->IfTokenLoc, Record); in WritePreprocessor()
2513 Record.push_back(SkipInfo->FoundNonSkipPortion); in WritePreprocessor()
2514 Record.push_back(SkipInfo->FoundElse); in WritePreprocessor()
2515 AddSourceLocation(SkipInfo->ElseLoc, Record); in WritePreprocessor()
2529 // Write the safe buffer opt-out region map in PP in WritePreprocessor()
2553 if (Id.second->hadMacroDefinition() && in WritePreprocessor()
2554 (!Id.second->isFromAST() || in WritePreprocessor()
2555 Id.second->hasChangedSinceDeserialization())) in WritePreprocessor()
2565 uint64_t StartOffset = Stream.GetCurrentBitNo() - MacroOffsetsBase; in WritePreprocessor()
2574 // do not have sub-modules (although they might import other header units). in WritePreprocessor()
2577 if (IsModule && WritingModule->isHeaderUnit()) { in WritePreprocessor()
2582 MD->getKind() == MacroDirective::MD_Undefine) in WritePreprocessor()
2584 AddSourceLocation(MD->getLocation(), Record); in WritePreprocessor()
2585 Record.push_back(MD->getKind()); in WritePreprocessor()
2587 Record.push_back(getMacroRef(DefMD->getInfo(), Name)); in WritePreprocessor()
2589 Record.push_back(VisMD->isPublic()); in WritePreprocessor()
2592 ModuleMacroRecord.push_back(getMacroRef(MD->getMacroInfo(), Name)); in WritePreprocessor()
2598 for (; MD; MD = MD->getPrevious()) { in WritePreprocessor()
2603 AddSourceLocation(MD->getLocation(), Record); in WritePreprocessor()
2604 Record.push_back(MD->getKind()); in WritePreprocessor()
2606 Record.push_back(getMacroRef(DefMD->getInfo(), Name)); in WritePreprocessor()
2608 Record.push_back(VisMD->isPublic()); in WritePreprocessor()
2620 ModuleMacroRecord.push_back(getSubmoduleID(Macro->getOwningModule())); in WritePreprocessor()
2621 ModuleMacroRecord.push_back(getMacroRef(Macro->getMacroInfo(), Name)); in WritePreprocessor()
2622 for (auto *M : Macro->overrides()) in WritePreprocessor()
2623 ModuleMacroRecord.push_back(getSubmoduleID(M->getOwningModule())); in WritePreprocessor()
2629 for (auto *M : Macro->overrides()) in WritePreprocessor()
2630 if (++Visits[M] == M->getNumOverridingMacros()) in WritePreprocessor()
2663 unsigned Index = ID - FirstMacroID; in WritePreprocessor()
2667 uint64_t Offset = Stream.GetCurrentBitNo() - MacroOffsetsBase; in WritePreprocessor()
2672 AddSourceLocation(MI->getDefinitionLoc(), Record); in WritePreprocessor()
2673 AddSourceLocation(MI->getDefinitionEndLoc(), Record); in WritePreprocessor()
2674 Record.push_back(MI->isUsed()); in WritePreprocessor()
2675 Record.push_back(MI->isUsedForHeaderGuard()); in WritePreprocessor()
2676 Record.push_back(MI->getNumTokens()); in WritePreprocessor()
2678 if (MI->isObjectLike()) { in WritePreprocessor()
2683 Record.push_back(MI->isC99Varargs()); in WritePreprocessor()
2684 Record.push_back(MI->isGNUVarargs()); in WritePreprocessor()
2685 Record.push_back(MI->hasCommaPasting()); in WritePreprocessor()
2686 Record.push_back(MI->getNumParams()); in WritePreprocessor()
2687 for (const IdentifierInfo *Param : MI->params()) in WritePreprocessor()
2694 Record.push_back(MacroDefinitions[PPRec->findMacroDefinition(MI)]); in WritePreprocessor()
2700 for (unsigned TokNo = 0, e = MI->getNumTokens(); TokNo != e; ++TokNo) { in WritePreprocessor()
2704 const Token &Tok = MI->getReplacementToken(TokNo); in WritePreprocessor()
2718 Abbrev->Add(BitCodeAbbrevOp(MACRO_OFFSET)); in WritePreprocessor()
2719 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); // # of macros in WritePreprocessor()
2720 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); // first ID in WritePreprocessor()
2721 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 32)); // base offset in WritePreprocessor()
2722 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); in WritePreprocessor()
2727 FirstMacroID - NUM_PREDEF_MACRO_IDS, in WritePreprocessor()
2728 MacroOffsetsBase - ASTBlockStartOffset}; in WritePreprocessor()
2751 Abbrev->Add(BitCodeAbbrevOp(PPD_INCLUSION_DIRECTIVE)); in WritePreprocessorDetail()
2752 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); // filename length in WritePreprocessorDetail()
2753 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // in quotes in WritePreprocessorDetail()
2754 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 2)); // kind in WritePreprocessorDetail()
2755 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // imported module in WritePreprocessorDetail()
2756 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); in WritePreprocessorDetail()
2771 uint64_t Offset = Stream.GetCurrentBitNo() - MacroOffsetsBase; in WritePreprocessorDetail()
2773 SourceRange R = getAdjustedRange((*E)->getSourceRange()); in WritePreprocessorDetail()
2782 AddIdentifierRef(MD->getName(), Record); in WritePreprocessorDetail()
2788 Record.push_back(ME->isBuiltinMacro()); in WritePreprocessorDetail()
2789 if (ME->isBuiltinMacro()) in WritePreprocessorDetail()
2790 AddIdentifierRef(ME->getName(), Record); in WritePreprocessorDetail()
2792 Record.push_back(MacroDefinitions[ME->getDefinition()]); in WritePreprocessorDetail()
2799 Record.push_back(ID->getFileName().size()); in WritePreprocessorDetail()
2800 Record.push_back(ID->wasInQuotes()); in WritePreprocessorDetail()
2801 Record.push_back(static_cast<unsigned>(ID->getKind())); in WritePreprocessorDetail()
2802 Record.push_back(ID->importedModule()); in WritePreprocessorDetail()
2804 Buffer += ID->getFileName(); in WritePreprocessorDetail()
2807 if (ID->getFile()) in WritePreprocessorDetail()
2808 Buffer += ID->getFile()->getName(); in WritePreprocessorDetail()
2825 Abbrev->Add(BitCodeAbbrevOp(PPD_ENTITIES_OFFSETS)); in WritePreprocessorDetail()
2826 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); // first pp entity in WritePreprocessorDetail()
2827 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); in WritePreprocessorDetail()
2831 FirstPreprocessorEntityID - in WritePreprocessorDetail()
2849 Abbrev->Add(BitCodeAbbrevOp(PPD_SKIPPED_RANGES)); in WritePreprocessorDetail()
2850 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); in WritePreprocessorDetail()
2866 return Known->second; in getLocalOrImportedSubmoduleID()
2868 auto *Top = Mod->getTopLevelModule(); in getLocalOrImportedSubmoduleID()
2871 !Top->fullModuleNameIs(StringRef(getLangOpts().CurrentModule)))) in getLocalOrImportedSubmoduleID()
2881 // instance, a cross-top-level-module 'conflict' declaration will hit this. in getSubmoduleID()
2883 // "asked for module ID for non-local, non-imported module"); in getSubmoduleID()
2891 for (auto *Submodule : Mod->submodules()) in getNumberOfModules()
2905 Abbrev->Add(BitCodeAbbrevOp(SUBMODULE_DEFINITION)); in WriteSubmodules()
2906 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // ID in WriteSubmodules()
2907 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // Parent in WriteSubmodules()
2908 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 4)); // Kind in WriteSubmodules()
2909 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 8)); // Definition location in WriteSubmodules()
2910 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // IsFramework in WriteSubmodules()
2911 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // IsExplicit in WriteSubmodules()
2912 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // IsSystem in WriteSubmodules()
2913 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // IsExternC in WriteSubmodules()
2914 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // InferSubmodules... in WriteSubmodules()
2915 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // InferExplicit... in WriteSubmodules()
2916 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // InferExportWild... in WriteSubmodules()
2917 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // ConfigMacrosExh... in WriteSubmodules()
2918 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // ModuleMapIsPriv... in WriteSubmodules()
2919 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // NamedModuleHasN... in WriteSubmodules()
2920 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Name in WriteSubmodules()
2924 Abbrev->Add(BitCodeAbbrevOp(SUBMODULE_UMBRELLA_HEADER)); in WriteSubmodules()
2925 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Name in WriteSubmodules()
2929 Abbrev->Add(BitCodeAbbrevOp(SUBMODULE_HEADER)); in WriteSubmodules()
2930 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Name in WriteSubmodules()
2934 Abbrev->Add(BitCodeAbbrevOp(SUBMODULE_TOPHEADER)); in WriteSubmodules()
2935 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Name in WriteSubmodules()
2939 Abbrev->Add(BitCodeAbbrevOp(SUBMODULE_UMBRELLA_DIR)); in WriteSubmodules()
2940 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Name in WriteSubmodules()
2944 Abbrev->Add(BitCodeAbbrevOp(SUBMODULE_REQUIRES)); in WriteSubmodules()
2945 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // State in WriteSubmodules()
2946 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Feature in WriteSubmodules()
2950 Abbrev->Add(BitCodeAbbrevOp(SUBMODULE_EXCLUDED_HEADER)); in WriteSubmodules()
2951 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Name in WriteSubmodules()
2955 Abbrev->Add(BitCodeAbbrevOp(SUBMODULE_TEXTUAL_HEADER)); in WriteSubmodules()
2956 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Name in WriteSubmodules()
2960 Abbrev->Add(BitCodeAbbrevOp(SUBMODULE_PRIVATE_HEADER)); in WriteSubmodules()
2961 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Name in WriteSubmodules()
2965 Abbrev->Add(BitCodeAbbrevOp(SUBMODULE_PRIVATE_TEXTUAL_HEADER)); in WriteSubmodules()
2966 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Name in WriteSubmodules()
2970 Abbrev->Add(BitCodeAbbrevOp(SUBMODULE_LINK_LIBRARY)); in WriteSubmodules()
2971 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // IsFramework in WriteSubmodules()
2972 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Name in WriteSubmodules()
2976 Abbrev->Add(BitCodeAbbrevOp(SUBMODULE_CONFIG_MACRO)); in WriteSubmodules()
2977 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Macro name in WriteSubmodules()
2981 Abbrev->Add(BitCodeAbbrevOp(SUBMODULE_CONFLICT)); in WriteSubmodules()
2982 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // Other module in WriteSubmodules()
2983 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Message in WriteSubmodules()
2987 Abbrev->Add(BitCodeAbbrevOp(SUBMODULE_EXPORT_AS)); in WriteSubmodules()
2988 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // Macro name in WriteSubmodules()
2994 FirstSubmoduleID - NUM_PREDEF_SUBMODULE_IDS}; in WriteSubmodules()
3006 if (Mod->Parent) { in WriteSubmodules()
3007 assert(SubmoduleIDs[Mod->Parent] && "Submodule parent not written?"); in WriteSubmodules()
3008 ParentID = SubmoduleIDs[Mod->Parent]; in WriteSubmodules()
3012 getRawSourceLocationEncoding(getAdjustedLocation(Mod->DefinitionLoc)); in WriteSubmodules()
3019 (RecordData::value_type)Mod->Kind, in WriteSubmodules()
3021 Mod->IsFramework, in WriteSubmodules()
3022 Mod->IsExplicit, in WriteSubmodules()
3023 Mod->IsSystem, in WriteSubmodules()
3024 Mod->IsExternC, in WriteSubmodules()
3025 Mod->InferSubmodules, in WriteSubmodules()
3026 Mod->InferExplicitSubmodules, in WriteSubmodules()
3027 Mod->InferExportWildcard, in WriteSubmodules()
3028 Mod->ConfigMacrosExhaustive, in WriteSubmodules()
3029 Mod->ModuleMapIsPrivate, in WriteSubmodules()
3030 Mod->NamedModuleHasInit}; in WriteSubmodules()
3031 Stream.EmitRecordWithBlob(DefinitionAbbrev, Record, Mod->Name); in WriteSubmodules()
3035 for (const auto &R : Mod->Requirements) { in WriteSubmodules()
3042 Mod->getUmbrellaHeaderAsWritten()) { in WriteSubmodules()
3045 UmbrellaHeader->NameAsWritten); in WriteSubmodules()
3047 Mod->getUmbrellaDirAsWritten()) { in WriteSubmodules()
3050 UmbrellaDir->NameAsWritten); in WriteSubmodules()
3068 for (auto &H : Mod->Headers[HL.HeaderKind]) in WriteSubmodules()
3075 for (FileEntryRef H : Mod->getTopHeaders(PP->getFileManager())) { in WriteSubmodules()
3083 if (!Mod->Imports.empty()) { in WriteSubmodules()
3085 for (auto *I : Mod->Imports) in WriteSubmodules()
3091 if (!Mod->AffectingClangModules.empty()) { in WriteSubmodules()
3093 for (auto *I : Mod->AffectingClangModules) in WriteSubmodules()
3099 if (!Mod->Exports.empty()) { in WriteSubmodules()
3101 for (const auto &E : Mod->Exports) { in WriteSubmodules()
3117 for (const auto &LL : Mod->LinkLibraries) { in WriteSubmodules()
3124 for (const auto &C : Mod->Conflicts) { in WriteSubmodules()
3133 for (const auto &CM : Mod->ConfigMacros) { in WriteSubmodules()
3141 for (Decl *D : Context->getModuleInitializers(Mod)) in WriteSubmodules()
3147 // Emit the name of the re-exported module, if any. in WriteSubmodules()
3148 if (!Mod->ExportAsModule.empty()) { in WriteSubmodules()
3150 Stream.EmitRecordWithBlob(ExportAsAbbrev, Record, Mod->ExportAsModule); in WriteSubmodules()
3154 for (auto *M : Mod->submodules()) in WriteSubmodules()
3160 assert((NextSubmoduleID - FirstSubmoduleID == in WriteSubmodules()
3162 "Wrong # of submodules; found a reference to a non-local, " in WriteSubmodules()
3163 "non-imported submodule?"); in WriteSubmodules()
3174 [](const DiagnosticsEngine::DiagState *DS) -> unsigned { in WritePragmaDiagnosticMappings()
3175 unsigned Result = (unsigned)DS->ExtBehavior; in WritePragmaDiagnosticMappings()
3177 {(unsigned)DS->IgnoreAllWarnings, (unsigned)DS->EnableAllWarnings, in WritePragmaDiagnosticMappings()
3178 (unsigned)DS->WarningsAsErrors, (unsigned)DS->ErrorsAsFatal, in WritePragmaDiagnosticMappings()
3179 (unsigned)DS->SuppressSystemWarnings}) in WritePragmaDiagnosticMappings()
3190 // We will not correctly round-trip this information otherwise. in WritePragmaDiagnosticMappings()
3194 // If we ever serialize non-pragma mappings outside the initial state, the in WritePragmaDiagnosticMappings()
3210 // Maybe skip non-pragmas. in WritePragmaDiagnosticMappings()
3229 Record[SizeIdx] = (Record.size() - SizeIdx) / 2; in WritePragmaDiagnosticMappings()
3262 // -Werror settings for implicit modules in the ASTReader, where reading in WritePragmaDiagnosticMappings()
3271 //===----------------------------------------------------------------------===//
3273 //===----------------------------------------------------------------------===//
3282 assert(Idx.getModuleFileIndex() == 0 && "Re-writing a type from a prior AST"); in WriteType()
3286 uint64_t Offset = ASTTypeWriter(*this).write(T) - DeclTypesBlockStartOffset; in WriteType()
3289 uint64_t Index = Idx.getValue() - FirstTypeID; in WriteType()
3300 //===----------------------------------------------------------------------===//
3302 //===----------------------------------------------------------------------===//
3309 if (!D->getDeclContext()->getRedeclContext()->isFileContext()) in IsInternalDeclFromFileContext()
3312 return ND->getFormalLinkage() == Linkage::Internal; in IsInternalDeclFromFileContext()
3322 if (DC->decls_empty()) in WriteDeclContextLexicalBlock()
3326 if (GeneratingReducedBMI && DC->isFunctionOrMethod()) in WriteDeclContextLexicalBlock()
3331 for (const auto *D : DC->decls()) { in WriteDeclContextLexicalBlock()
3340 if (GeneratingReducedBMI && !D->isFromExplicitGlobalModule() && in WriteDeclContextLexicalBlock()
3344 KindDeclPairs.push_back(D->getKind()); in WriteDeclContextLexicalBlock()
3360 Abbrev->Add(BitCodeAbbrevOp(TYPE_OFFSET)); in WriteTypeDeclOffsets()
3361 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); // # of types in WriteTypeDeclOffsets()
3362 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // types block in WriteTypeDeclOffsets()
3371 Abbrev->Add(BitCodeAbbrevOp(DECL_OFFSET)); in WriteTypeDeclOffsets()
3372 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); // # of declarations in WriteTypeDeclOffsets()
3373 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); // declarations block in WriteTypeDeclOffsets()
3401 Abbrev->Add(BitCodeAbbrevOp(FILE_SORTED_DECLS)); in WriteFileDeclIDsMap()
3402 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); in WriteFileDeclIDsMap()
3403 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); in WriteFileDeclIDsMap()
3413 if (!PP->getPreprocessorOpts().WriteCommentListToPCH) in WriteComments()
3423 for (const auto &FO : Context->Comments.OrderedComments) { in WriteComments()
3427 AddSourceRange(I->getSourceRange(), Record); in WriteComments()
3428 Record.push_back(I->getKind()); in WriteComments()
3429 Record.push_back(I->isTrailingComment()); in WriteComments()
3430 Record.push_back(I->isAlmostTrailingComment()); in WriteComments()
3436 //===----------------------------------------------------------------------===//
3438 //===----------------------------------------------------------------------===//
3442 // Trait used for the on-disk hash table used in the method pool.
3473 Method = Method->getNext()) in EmitKeyDataLength()
3477 Method = Method->getNext()) in EmitKeyDataLength()
3508 Method = Method->getNext()) in EmitData()
3514 Method = Method->getNext()) in EmitData()
3535 Method = Method->getNext()) in EmitData()
3537 LE.write<DeclID>((DeclID)Writer.getDeclID(Method->getMethod())); in EmitData()
3539 Method = Method->getNext()) in EmitData()
3541 LE.write<DeclID>((DeclID)Writer.getDeclID(Method->getMethod())); in EmitData()
3543 assert(Out.tell() - Start == DataLen && "Data length is wrong"); in EmitData()
3548 return (Node->getMethod() && !Node->getMethod()->isFromASTFile()); in ShouldWriteMethodListNode()
3557 /// in an on-disk hash table indexed by the selector. The hash table also
3571 // Create the on-disk hash table representation. We walk through every in WriteSelectors()
3573 SelectorOffsets.resize(NextSelectorID - FirstSelectorID); in WriteSelectors()
3585 Data.Instance = F->second.first; in WriteSelectors()
3586 Data.Factory = F->second.second; in WriteSelectors()
3593 for (ObjCMethodList *M = &Data.Instance; M && M->getMethod(); in WriteSelectors()
3594 M = M->getNext()) { in WriteSelectors()
3595 if (!M->getMethod()->isFromASTFile()) { in WriteSelectors()
3601 for (ObjCMethodList *M = &Data.Factory; M && M->getMethod(); in WriteSelectors()
3602 M = M->getNext()) { in WriteSelectors()
3603 if (!M->getMethod()->isFromASTFile()) { in WriteSelectors()
3618 // Create the on-disk hash table in a buffer. in WriteSelectors()
3633 Abbrev->Add(BitCodeAbbrevOp(METHOD_POOL)); in WriteSelectors()
3634 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); in WriteSelectors()
3635 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); in WriteSelectors()
3636 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); in WriteSelectors()
3648 Abbrev->Add(BitCodeAbbrevOp(SELECTOR_OFFSETS)); in WriteSelectors()
3649 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); // size in WriteSelectors()
3650 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); // first ID in WriteSelectors()
3651 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); in WriteSelectors()
3658 FirstSelectorID - NUM_PREDEF_SELECTOR_IDS}; in WriteSelectors()
3687 //===----------------------------------------------------------------------===//
3689 //===----------------------------------------------------------------------===//
3698 if (!LangOpts.Modules || !D->isFromASTFile()) in getDeclForLocalLookup()
3701 if (Decl *Redecl = D->getPreviousDecl()) { in getDeclForLocalLookup()
3703 for (; Redecl; Redecl = Redecl->getPreviousDecl()) { in getDeclForLocalLookup()
3705 if (!Redecl->isFromASTFile()) { in getDeclForLocalLookup()
3706 // Exception: in very rare cases (for injected-class-names), not all in getDeclForLocalLookup()
3709 if (!Redecl->getDeclContext()->getRedeclContext()->Equals( in getDeclForLocalLookup()
3710 D->getDeclContext()->getRedeclContext())) in getDeclForLocalLookup()
3715 // If we find a decl from a (chained-)PCH stop since we won't find a in getDeclForLocalLookup()
3717 if (Redecl->getOwningModuleID() == 0) in getDeclForLocalLookup()
3720 } else if (Decl *First = D->getCanonicalDecl()) { in getDeclForLocalLookup()
3722 if (!First->isFromASTFile()) in getDeclForLocalLookup()
3738 II->getNotableIdentifierID() != tok::NotableIdentifierKind::not_notable || in IsInterestingIdentifier()
3739 II->getBuiltinID() != Builtin::ID::NotBuiltin || in IsInterestingIdentifier()
3740 II->getObjCKeywordID() != tok::ObjCKeywordKind::objc_not_keyword; in IsInterestingIdentifier()
3741 if (MacroOffset || II->isPoisoned() || (!IsModule && IsInteresting) || in IsInterestingIdentifier()
3742 II->hasRevertedTokenIDToIdentifier() || in IsInterestingIdentifier()
3743 (NeedDecls && II->getFETokenInfo())) in IsInterestingIdentifier()
3793 return llvm::djbHash(II->getName()); in ComputeHash()
3813 InterestingIdentifierOffsets->push_back(Out.tell()); in EmitKeyDataLength()
3815 unsigned KeyLen = II->getLength() + 1; in EmitKeyDataLength()
3831 Out.write(II->getNameStart(), KeyLen); in EmitKey()
3847 uint32_t Bits = (uint32_t)II->getObjCOrBuiltinID(); in EmitData()
3853 Bits = (Bits << 1) | unsigned(II->isExtensionToken()); in EmitData()
3854 Bits = (Bits << 1) | unsigned(II->isPoisoned()); in EmitData()
3855 Bits = (Bits << 1) | unsigned(II->hasRevertedTokenIDToIdentifier()); in EmitData()
3856 Bits = (Bits << 1) | unsigned(II->isCPlusPlusOperatorKeyword()); in EmitData()
3902 // Create the on-disk hash table representation. We only store offsets in WriteIdentifierTable()
3904 IdentifierOffsets.resize(NextIdentID - FirstIdentID); in WriteIdentifierTable()
3912 if (isLocalIdentifierID(ID) || II->hasChangedSinceDeserialization() || in WriteIdentifierTable()
3914 II->hasFETokenInfoChangedSinceDeserialization())) in WriteIdentifierTable()
3918 // Create the on-disk hash table in a buffer. in WriteIdentifierTable()
3932 Abbrev->Add(BitCodeAbbrevOp(IDENTIFIER_TABLE)); in WriteIdentifierTable()
3933 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); in WriteIdentifierTable()
3934 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); in WriteIdentifierTable()
3944 Abbrev->Add(BitCodeAbbrevOp(IDENTIFIER_OFFSET)); in WriteIdentifierTable()
3945 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 32)); // # of identifiers in WriteIdentifierTable()
3946 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); in WriteIdentifierTable()
3966 if (!RD->isInNamedModule()) in handleVTable()
3972 //===----------------------------------------------------------------------===//
3974 //===----------------------------------------------------------------------===//
3978 // Trait used for the on-disk hash table used in the method pool.
4010 !DeclForLocalLookup->isFromExplicitGlobalModule() && in getData()
4042 endian::write<uint32_t>(Out, Writer.getChain()->getModuleFileID(F), in EmitFileRef()
4072 unsigned DataLen = sizeof(DeclID) * (Lookup.second - Lookup.first); in EmitKeyDataLength()
4116 assert(Out.tell() - Start == DataLen && "Data length is wrong"); in EmitData()
4125 DC->hasNeedToReconcileExternalVisibleStorage(); in isLookupResultExternal()
4136 if (LocalD->isFromASTFile()) in isLookupResultNotInteresting()
4157 assert(!ConstDC->hasLazyLocalLexicalLookups() && in GenerateNameLookupTable()
4158 !ConstDC->hasLazyExternalLexicalLookups() && in GenerateNameLookupTable()
4163 assert(DC == DC->getPrimaryContext() && "only primary DC has lookup table"); in GenerateNameLookupTable()
4165 // Create the on-disk hash table representation. in GenerateNameLookupTable()
4179 for (auto &Lookup : *DC->buildLookup()) { in GenerateNameLookupTable()
4195 // https://github.com/llvm/llvm-project/issues/61065 for details. in GenerateNameLookupTable()
4206 // FIXME: While we might want to start emitting on-disk entries for negative in GenerateNameLookupTable()
4247 // lexical context -- when that name is an implicit constructor merged from in GenerateNameLookupTable()
4248 // another declaration in the redecl chain. Any non-implicit constructor or in GenerateNameLookupTable()
4251 auto ImplicitCtorName = Context->DeclarationNames.getCXXConstructorName( in GenerateNameLookupTable()
4252 Context->getCanonicalType(Context->getRecordType(D))); in GenerateNameLookupTable()
4260 for (Decl *ChildD : cast<CXXRecordDecl>(DC)->decls()) in GenerateNameLookupTable()
4262 auto Name = ChildND->getDeclName(); in GenerateNameLookupTable()
4295 DC->lookup(Name); in GenerateNameLookupTable()
4307 DeclContext::lookup_result Result = DC->noload_lookup(Name); in GenerateNameLookupTable()
4328 Generator.insert(ConstructorDecls.front()->getDeclName(), in GenerateNameLookupTable()
4331 Generator.insert(ConversionDecls.front()->getDeclName(), in GenerateNameLookupTable()
4334 // Create the on-disk hash table. Also emit the existing imported and in GenerateNameLookupTable()
4336 auto *Lookups = Chain ? Chain->getLoadedLookupTables(DC) : nullptr; in GenerateNameLookupTable()
4337 Generator.emit(LookupTable, Trait, Lookups ? &Lookups->Table : nullptr); in GenerateNameLookupTable()
4351 Chain->getKeyDeclaration(cast<Decl>(DC))->isFromASTFile()) { in WriteDeclContextVisibleBlock()
4353 for (auto *Prev = cast<NamespaceDecl>(DC)->getPreviousDecl(); Prev; in WriteDeclContextVisibleBlock()
4354 Prev = Prev->getPreviousDecl()) in WriteDeclContextVisibleBlock()
4355 if (!Prev->isFromASTFile()) in WriteDeclContextVisibleBlock()
4359 UpdatedDeclContexts.insert(DC->getPrimaryContext()); in WriteDeclContextVisibleBlock()
4364 StoredDeclsMap *Map = DC->getPrimaryContext()->buildLookup(); in WriteDeclContextVisibleBlock()
4368 LookupResults.reserve(Map->size()); in WriteDeclContextVisibleBlock()
4389 if (ND->isFromASTFile()) in WriteDeclContextVisibleBlock()
4397 if (GeneratingReducedBMI && !ND->isFromExplicitGlobalModule() && in WriteDeclContextVisibleBlock()
4408 if (DC->getPrimaryContext() != DC) in WriteDeclContextVisibleBlock()
4412 if (!DC->isLookupContext()) in WriteDeclContextVisibleBlock()
4416 // IdentifierInfo chains, don't bother to build a visible-declarations table. in WriteDeclContextVisibleBlock()
4417 if (DC->isTranslationUnit() && !Context.getLangOpts().CPlusPlus) in WriteDeclContextVisibleBlock()
4426 StoredDeclsMap *Map = DC->buildLookup(); in WriteDeclContextVisibleBlock()
4427 if (!Map || Map->empty()) in WriteDeclContextVisibleBlock()
4430 // Create the on-disk hash table in a buffer. in WriteDeclContextVisibleBlock()
4446 /// (in C++), for namespaces, and for classes with forward-declared unscoped
4449 StoredDeclsMap *Map = DC->getLookupPtr(); in WriteDeclContextVisibleUpdate()
4450 if (!Map || Map->empty()) in WriteDeclContextVisibleUpdate()
4453 // Create the on-disk hash table in a buffer. in WriteDeclContextVisibleUpdate()
4460 DC = cast<DeclContext>(Chain->getKeyDeclaration(cast<Decl>(DC))); in WriteDeclContextVisibleUpdate()
4515 Cat = Class->known_categories_begin(), in WriteObjCCategories()
4516 CatEnd = Class->known_categories_end(); in WriteObjCCategories()
4525 // Record this interface -> category map. in WriteObjCCategories()
4538 Abbrev->Add(BitCodeAbbrevOp(OBJC_CATEGORIES_MAP)); in WriteObjCCategories()
4539 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::VBR, 6)); // # of entries in WriteObjCCategories()
4540 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); in WriteObjCCategories()
4601 // take effect on a per-submodule basis. in WritePackPragmaOptions()
4621 // since it should only take effect on a per-submodule basis. in WriteFloatControlPragmaOptions()
4645 Abv->Add(llvm::BitCodeAbbrevOp(EXTENSION_METADATA)); in WriteModuleFileExtension()
4646 Abv->Add(llvm::BitCodeAbbrevOp(llvm::BitCodeAbbrevOp::VBR, 6)); in WriteModuleFileExtension()
4647 Abv->Add(llvm::BitCodeAbbrevOp(llvm::BitCodeAbbrevOp::VBR, 6)); in WriteModuleFileExtension()
4648 Abv->Add(llvm::BitCodeAbbrevOp(llvm::BitCodeAbbrevOp::VBR, 6)); in WriteModuleFileExtension()
4649 Abv->Add(llvm::BitCodeAbbrevOp(llvm::BitCodeAbbrevOp::VBR, 6)); in WriteModuleFileExtension()
4650 Abv->Add(llvm::BitCodeAbbrevOp(llvm::BitCodeAbbrevOp::Blob)); in WriteModuleFileExtension()
4655 auto Metadata = Writer.getExtension()->getExtensionMetadata(); in WriteModuleFileExtension()
4673 //===----------------------------------------------------------------------===//
4675 //===----------------------------------------------------------------------===//
4681 // https://github.com/llvm/llvm-project/issues/56490 for example. in AddAttr()
4683 Writer->isWritingStdCXXNamedModules())) in AddAttr()
4686 Record.push_back(A->getKind() + 1); // FIXME: stable encoding, target attrs in AddAttr()
4688 Record.AddIdentifierRef(A->getAttrName()); in AddAttr()
4689 Record.AddIdentifierRef(A->getScopeName()); in AddAttr()
4690 Record.AddSourceRange(A->getRange()); in AddAttr()
4691 Record.AddSourceLocation(A->getScopeLoc()); in AddAttr()
4692 Record.push_back(A->getParsedKind()); in AddAttr()
4693 Record.push_back(A->getSyntax()); in AddAttr()
4694 Record.push_back(A->getAttributeSpellingListIndexRaw()); in AddAttr()
4695 Record.push_back(A->isRegularKeywordAttribute()); in AddAttr()
4719 AddToken(Info->PragmaName, Record); in AddToken()
4720 AddToken(Info->Option, Record); in AddToken()
4721 Record.push_back(Info->Toks.size()); in AddToken()
4722 for (const auto &T : Info->Toks) in AddToken()
4729 Record.push_back(static_cast<unsigned>(Info->Action)); in AddToken()
4730 AddString(Info->SlotLabel, Record); in AddToken()
4731 AddToken(Info->Alignment, Record); in AddToken()
4762 if (PathStr == "<built-in>" || PathStr == "<command line>") in PreparePathForOutput()
4766 cleanPathForOutput(Context->getSourceManager().getFileManager(), Path); in PreparePathForOutput()
4773 Path.erase(Path.begin(), Path.begin() + (PathPtr - PathBegin)); in PreparePathForOutput()
4818 ID -= NUM_PREDEF_IDENT_IDS; in SetIdentifierOffset()
4832 SelectorOffsets[ID - FirstSelectorID] = Offset; in SetSelectorOffset()
4846 if (auto Writer = Ext->createExtensionWriter(*this)) in ASTWriter()
4855 return Context->getLangOpts(); in getLangOpts()
4859 return IncludeTimestamps ? E->getModificationTime() : 0; in getTimestampForOutput()
4881 this->WritingModule = WritingModule; in WriteAST()
4885 this->WritingModule = nullptr; in WriteAST()
4886 this->BaseDirectory.clear(); in WriteAST()
4916 SourceManager &SrcMgr = PP->getSourceManager(); in computeNonAffectingInputFiles()
4940 if (!SLoc->isFile()) in computeNonAffectingInputFiles()
4942 const SrcMgr::FileInfo &File = SLoc->getFile(); in computeNonAffectingInputFiles()
4944 if (!Cache->OrigEntry) in computeNonAffectingInputFiles()
4956 if (llvm::is_contained(*AffectingModuleMaps, *Cache->OrigEntry)) in computeNonAffectingInputFiles()
4965 // If the previous file was non-affecting as well, just extend its entry in computeNonAffectingInputFiles()
4968 NonAffectingFileIDs.back().ID == FID.ID - 1) { in computeNonAffectingInputFiles()
4983 if (!PP->getHeaderSearchInfo().getHeaderSearchOpts().ModulesIncludeVFSUsage) in computeNonAffectingInputFiles()
4986 FileManager &FileMgr = PP->getFileManager(); in computeNonAffectingInputFiles()
4988 // Lookup the paths in the VFS to trigger `-ivfsoverlay` usage tracking. in computeNonAffectingInputFiles()
4990 PP->getHeaderSearchInfo().getHeaderSearchOpts().VFSOverlayFiles) in computeNonAffectingInputFiles()
4995 if (!SLoc->isFile()) in computeNonAffectingInputFiles()
4997 const SrcMgr::FileInfo &File = SLoc->getFile(); in computeNonAffectingInputFiles()
4999 if (!Cache->OrigEntry) in computeNonAffectingInputFiles()
5002 Cache->OrigEntry->getNameAsRequested()); in computeNonAffectingInputFiles()
5016 assert(D->isCanonicalDecl() && "predefined decl is not canonical"); in PrepareWritingSpecialDecls()
5054 for (const auto *D : TU->noload_decls()) { in PrepareWritingSpecialDecls()
5055 if (D->isFromASTFile()) in PrepareWritingSpecialDecls()
5059 if (D->isFromExplicitGlobalModule()) in PrepareWritingSpecialDecls()
5065 // language also specifies that the program exposes TU-local entities in PrepareWritingSpecialDecls()
5066 // is ill-formed. However, in practice, there are a lot of projects in PrepareWritingSpecialDecls()
5077 if (isWritingStdCXXNamedModules() && !D->getOwningModule() && in PrepareWritingSpecialDecls()
5078 D->isImplicit()) in PrepareWritingSpecialDecls()
5141 // Writing all delete-expressions that we would like to in PrepareWritingSpecialDecls()
5161 if (!Chain || !II->isFromAST() || II->hasChangedSinceDeserialization()) in PrepareWritingSpecialDecls()
5277 // Write the record containing CUDA-specific declaration references. in WriteSpecialDeclRecords()
5316 // Write all delete-expressions that we would like to in WriteSpecialDeclRecords()
5356 Chain->finalizeForWriting(); in WriteASTCore()
5368 // modules since we want to support no-transitive-change model for named in WriteASTCore()
5369 // modules. The theory for no-transitive-change model is, in WriteASTCore()
5460 // *(module-kind:i8 in WriteASTCore()
5461 // module-name-len:i16 module-name:len*i8 in WriteASTCore()
5462 // source-location-offset:i32 in WriteASTCore()
5463 // identifier-id:i32 in WriteASTCore()
5464 // preprocessed-entity-id:i32 in WriteASTCore()
5465 // macro-definition-id:i32 in WriteASTCore()
5466 // submodule-id:i32 in WriteASTCore()
5467 // selector-id:i32 in WriteASTCore()
5468 // declaration-id:i32 in WriteASTCore()
5469 // c++-base-specifiers-id:i32 in WriteASTCore()
5470 // type-id:i32) in WriteASTCore()
5472 // module-kind is the ModuleKind enum value. If it is MK_PrebuiltModule, in WriteASTCore()
5473 // MK_ExplicitModule or MK_ImplicitModule, then the module-name is the in WriteASTCore()
5476 Abbrev->Add(BitCodeAbbrevOp(MODULE_OFFSET_MAP)); in WriteASTCore()
5477 Abbrev->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Blob)); in WriteASTCore()
5482 for (ModuleFile &M : Chain->ModuleMgr) { in WriteASTCore()
5554 assert(SubmoduleIDs.contains(I->getImportedModule())); in WriteASTCore()
5555 Imports.push_back(ModuleInfo(SubmoduleIDs[I->getImportedModule()], in WriteASTCore()
5556 I->getImportedModule())); in WriteASTCore()
5620 if (D->isFromASTFile()) in AddedManglingNumber()
5626 if (D->isFromASTFile()) in AddedStaticLocalNumbers()
5637 if (NamespaceDecl *NS = TU->getAnonymousNamespace()) { in AddedAnonymousNamespace()
5676 LexicalOffset -= DeclTypesBlockStartOffset; in WriteDeclAndTypes()
5679 VisibleOffset -= DeclTypesBlockStartOffset; in WriteDeclAndTypes()
5706 for (const auto *D : TU->noload_decls()) { in WriteDeclAndTypes()
5707 if (D->isFromASTFile()) in WriteDeclAndTypes()
5714 NewGlobalKindDeclPairs.push_back(D->getKind()); in WriteDeclAndTypes()
5719 Abv->Add(llvm::BitCodeAbbrevOp(TU_UPDATE_LEXICAL)); in WriteDeclAndTypes()
5720 Abv->Add(llvm::BitCodeAbbrevOp(llvm::BitCodeAbbrevOp::Blob)); in WriteDeclAndTypes()
5728 Abv->Add(llvm::BitCodeAbbrevOp(UPDATE_VISIBLE)); in WriteDeclAndTypes()
5729 Abv->Add(llvm::BitCodeAbbrevOp(llvm::BitCodeAbbrevOp::VBR, 6)); in WriteDeclAndTypes()
5730 Abv->Add(llvm::BitCodeAbbrevOp(llvm::BitCodeAbbrevOp::Blob)); in WriteDeclAndTypes()
5790 cast<ParmVarDecl>(Update.getDecl())->getDefaultArg()); in WriteDeclUpdatesBlocks()
5795 cast<FieldDecl>(Update.getDecl())->getInClassInitializer()); in WriteDeclUpdatesBlocks()
5800 UpdatedDeclContexts.insert(RD->getPrimaryContext()); in WriteDeclUpdatesBlocks()
5801 Record.push_back(RD->isParamDestroyedInCallee()); in WriteDeclUpdatesBlocks()
5802 Record.push_back(llvm::to_underlying(RD->getArgPassingRestrictions())); in WriteDeclUpdatesBlocks()
5809 if (auto *MSInfo = RD->getMemberSpecializationInfo()) { in WriteDeclUpdatesBlocks()
5810 Record.push_back(MSInfo->getTemplateSpecializationKind()); in WriteDeclUpdatesBlocks()
5811 Record.AddSourceLocation(MSInfo->getPointOfInstantiation()); in WriteDeclUpdatesBlocks()
5814 Record.push_back(Spec->getTemplateSpecializationKind()); in WriteDeclUpdatesBlocks()
5815 Record.AddSourceLocation(Spec->getPointOfInstantiation()); in WriteDeclUpdatesBlocks()
5819 auto From = Spec->getInstantiatedFrom(); in WriteDeclUpdatesBlocks()
5825 &Spec->getTemplateInstantiationArgs()); in WriteDeclUpdatesBlocks()
5830 Record.push_back(llvm::to_underlying(RD->getTagKind())); in WriteDeclUpdatesBlocks()
5831 Record.AddSourceLocation(RD->getLocation()); in WriteDeclUpdatesBlocks()
5832 Record.AddSourceLocation(RD->getBeginLoc()); in WriteDeclUpdatesBlocks()
5833 Record.AddSourceRange(RD->getBraceRange()); in WriteDeclUpdatesBlocks()
5836 Record.push_back(D->hasAttrs()); in WriteDeclUpdatesBlocks()
5837 if (D->hasAttrs()) in WriteDeclUpdatesBlocks()
5838 Record.AddAttributes(D->getAttrs()); in WriteDeclUpdatesBlocks()
5846 Record.AddStmt(cast<CXXDestructorDecl>(D)->getOperatorDeleteThisArg()); in WriteDeclUpdatesBlocks()
5851 cast<FunctionDecl>(D)->getType()->castAs<FunctionProtoType>(); in WriteDeclUpdatesBlocks()
5852 Record.writeExceptionSpecInfo(prototype->getExceptionSpecInfo()); in WriteDeclUpdatesBlocks()
5870 D->getAttr<OMPThreadPrivateDeclAttr>()->getRange()); in WriteDeclUpdatesBlocks()
5874 auto *A = D->getAttr<OMPAllocateDeclAttr>(); in WriteDeclUpdatesBlocks()
5875 Record.push_back(A->getAllocatorType()); in WriteDeclUpdatesBlocks()
5876 Record.AddStmt(A->getAllocator()); in WriteDeclUpdatesBlocks()
5877 Record.AddStmt(A->getAlignment()); in WriteDeclUpdatesBlocks()
5878 Record.AddSourceRange(A->getRange()); in WriteDeclUpdatesBlocks()
5883 Record.push_back(D->getAttr<OMPDeclareTargetDeclAttr>()->getMapType()); in WriteDeclUpdatesBlocks()
5885 D->getAttr<OMPDeclareTargetDeclAttr>()->getRange()); in WriteDeclUpdatesBlocks()
5904 Record.push_back(Def->isInlined()); in WriteDeclUpdatesBlocks()
5905 Record.AddSourceLocation(Def->getInnerLocStart()); in WriteDeclUpdatesBlocks()
5910 Record.push_back(VD->isInline()); in WriteDeclUpdatesBlocks()
5911 Record.push_back(VD->isInlineSpecified()); in WriteDeclUpdatesBlocks()
5928 if (FID.isInvalid() || PP->getSourceManager().isLoadedFileID(FID) || in getAdjustedFileID()
5934 return FileID::get(FID.getOpaqueValue() - Offset); in getAdjustedFileID()
5938 unsigned NumCreatedFIDs = PP->getSourceManager() in getAdjustedNumCreatedFIDs()
5953 return Loc.getLocWithOffset(-getAdjustment(Loc.getOffset())); in getAdjustedLocation()
5963 return Offset - getAdjustment(Offset); in getAdjustedOffset()
5971 if (PP->getSourceManager().isLoadedOffset(Offset)) in getAdjustment()
5999 if (Context->getSourceManager().isLoadedSourceLocation(Loc) && in getRawSourceLocationEncoding()
6002 auto SLocMapI = getChain()->GlobalSLocOffsetMap.find( in getRawSourceLocationEncoding()
6003 SourceManager::MaxLoadedOffset - Loc.getOffset() - 1); in getRawSourceLocationEncoding()
6004 assert(SLocMapI != getChain()->GlobalSLocOffsetMap.end() && in getRawSourceLocationEncoding()
6006 ModuleFile *F = SLocMapI->second; in getRawSourceLocationEncoding()
6007 BaseOffset = F->SLocEntryBaseOffset - 2; in getRawSourceLocationEncoding()
6010 ModuleFileIndex = F->Index + 1; in getRawSourceLocationEncoding()
6011 assert(&getChain()->getModuleManager()[F->Index] == F); in getRawSourceLocationEncoding()
6051 if (!MI || MI->isBuiltinMacro()) in getMacroRef()
6064 if (!MI || MI->isBuiltinMacro()) in getMacroID()
6076 Record->push_back(Writer->getSelectorRef(SelRef)); in AddSelectorRef()
6088 Chain->LoadSelector(Sel); in getSelectorRef()
6099 AddDeclRef(Temp->getDestructor()); in AddCXXTemporary()
6137 Record->push_back(InfoHasSameExpr); in AddTemplateArgumentLoc()
6150 AddTypeRef(TInfo->getType()); in AddTypeSourceInfo()
6151 AddTypeLoc(TInfo->getTypeLoc()); in AddTypeSourceInfo()
6192 return MakeTypeID(*Context, T, [&](QualType T) -> TypeIdx { in GetOrCreateTypeID()
6234 for (DeclUpdate &Update : Iter->second) in GetDeclRef()
6241 if (D->isFromASTFile()) { in GetDeclRef()
6242 if (isWritingStdCXXNamedModules() && D->getOwningModule()) in GetDeclRef()
6243 TouchedTopLevelModules.insert(D->getOwningModule()->getTopLevelModule()); in GetDeclRef()
6245 return LocalDeclID(D->getGlobalID()); in GetDeclRef()
6271 if (D->isFromASTFile()) in getDeclID()
6272 return LocalDeclID(D->getGlobalID()); in getDeclID()
6284 if (D->isFromASTFile()) in wasDeclEmitted()
6288 assert((Emitted || (!D->getOwningModule() && isWritingStdCXXNamedModules()) || in wasDeclEmitted()
6298 SourceLocation Loc = D->getLocation(); in associateDeclWithFile()
6302 // We only keep track of the file-level declarations of each file. in associateDeclWithFile()
6303 if (!D->getLexicalDeclContext()->isFileContext()) in associateDeclWithFile()
6312 SourceManager &SM = Context->getSourceManager(); in associateDeclWithFile()
6328 LocDeclIDsTy &Decls = Info->DeclIDs; in associateDeclWithFile()
6340 auto *DC = D->getLexicalDeclContext(); in getAnonymousDeclarationNumber()
6350 return It->second; in getAnonymousDeclarationNumber()
6389 Record->push_back(Info.NumTemplParamLists); in AddQualifierInfo()
6399 // Push each of the nested-name-specifiers's onto a stack for in AddNestedNameSpecifierLoc()
6406 Record->push_back(NestedNames.size()); in AddNestedNameSpecifierLoc()
6410 = NNS.getNestedNameSpecifier()->getKind(); in AddNestedNameSpecifierLoc()
6411 Record->push_back(Kind); in AddNestedNameSpecifierLoc()
6414 AddIdentifierRef(NNS.getNestedNameSpecifier()->getAsIdentifier()); in AddNestedNameSpecifierLoc()
6419 AddDeclRef(NNS.getNestedNameSpecifier()->getAsNamespace()); in AddNestedNameSpecifierLoc()
6424 AddDeclRef(NNS.getNestedNameSpecifier()->getAsNamespaceAlias()); in AddNestedNameSpecifierLoc()
6430 Record->push_back(Kind == NestedNameSpecifier::TypeSpecWithTemplate); in AddNestedNameSpecifierLoc()
6441 AddDeclRef(NNS.getNestedNameSpecifier()->getAsRecordDecl()); in AddNestedNameSpecifierLoc()
6451 AddSourceLocation(TemplateParams->getTemplateLoc()); in AddTemplateParameterList()
6452 AddSourceLocation(TemplateParams->getLAngleLoc()); in AddTemplateParameterList()
6453 AddSourceLocation(TemplateParams->getRAngleLoc()); in AddTemplateParameterList()
6455 Record->push_back(TemplateParams->size()); in AddTemplateParameterList()
6458 if (const Expr *RequiresClause = TemplateParams->getRequiresClause()) { in AddTemplateParameterList()
6459 Record->push_back(true); in AddTemplateParameterList()
6462 Record->push_back(false); in AddTemplateParameterList()
6470 Record->push_back(TemplateArgs->size()); in AddTemplateArgumentList()
6471 for (int i = 0, e = TemplateArgs->size(); i != e; ++i) in AddTemplateArgumentList()
6472 AddTemplateArgument(TemplateArgs->get(i)); in AddTemplateArgumentList()
6478 AddSourceLocation(ASTTemplArgList->LAngleLoc); in AddASTTemplateArgumentListInfo()
6479 AddSourceLocation(ASTTemplArgList->RAngleLoc); in AddASTTemplateArgumentListInfo()
6480 Record->push_back(ASTTemplArgList->NumTemplateArgs); in AddASTTemplateArgumentListInfo()
6481 const TemplateArgumentLoc *TemplArgs = ASTTemplArgList->getTemplateArgs(); in AddASTTemplateArgumentListInfo()
6482 for (int i = 0, e = ASTTemplArgList->NumTemplateArgs; i != e; ++i) in AddASTTemplateArgumentListInfo()
6487 Record->push_back(Set.size()); in AddUnresolvedSet()
6491 Record->push_back(I.getAccess()); in AddUnresolvedSet()
6497 Record->push_back(Base.isVirtual()); in AddCXXBaseSpecifier()
6498 Record->push_back(Base.isBaseOfClass()); in AddCXXBaseSpecifier()
6499 Record->push_back(Base.getAccessSpecifierAsWritten()); in AddCXXBaseSpecifier()
6500 Record->push_back(Base.getInheritConstructors()); in AddCXXBaseSpecifier()
6532 if (Init->isBaseInitializer()) { in EmitCXXCtorInitializers()
6534 Writer.AddTypeSourceInfo(Init->getTypeSourceInfo()); in EmitCXXCtorInitializers()
6535 Writer.push_back(Init->isBaseVirtual()); in EmitCXXCtorInitializers()
6536 } else if (Init->isDelegatingInitializer()) { in EmitCXXCtorInitializers()
6538 Writer.AddTypeSourceInfo(Init->getTypeSourceInfo()); in EmitCXXCtorInitializers()
6539 } else if (Init->isMemberInitializer()){ in EmitCXXCtorInitializers()
6541 Writer.AddDeclRef(Init->getMember()); in EmitCXXCtorInitializers()
6544 Writer.AddDeclRef(Init->getIndirectMember()); in EmitCXXCtorInitializers()
6547 Writer.AddSourceLocation(Init->getMemberLocation()); in EmitCXXCtorInitializers()
6548 Writer.AddStmt(Init->getInit()); in EmitCXXCtorInitializers()
6549 Writer.AddSourceLocation(Init->getLParenLoc()); in EmitCXXCtorInitializers()
6550 Writer.AddSourceLocation(Init->getRParenLoc()); in EmitCXXCtorInitializers()
6551 Writer.push_back(Init->isWritten()); in EmitCXXCtorInitializers()
6552 if (Init->isWritten()) in EmitCXXCtorInitializers()
6553 Writer.push_back(Init->getSourceOrder()); in EmitCXXCtorInitializers()
6566 auto &Data = D->data(); in AddCXXDefinitionData()
6568 Record->push_back(Data.IsLambda); in AddCXXDefinitionData()
6574 Record->push_back(DefinitionBits); \ in AddCXXDefinitionData()
6582 Record->push_back(DefinitionBits); in AddCXXDefinitionData()
6586 Record->push_back(D->getODRHash()); in AddCXXDefinitionData()
6589 !D->isDependentType() && in AddCXXDefinitionData()
6590 (Writer->Context->getLangOpts().ModulesDebugInfo || in AddCXXDefinitionData()
6591 D->isInNamedModule()); in AddCXXDefinitionData()
6592 Record->push_back(ModulesCodegen); in AddCXXDefinitionData()
6594 Writer->AddDeclRef(D, Writer->ModularCodegenDecls); in AddCXXDefinitionData()
6598 AddUnresolvedSet(Data.Conversions.get(*Writer->Context)); in AddCXXDefinitionData()
6599 Record->push_back(Data.ComputedVisibleConversions); in AddCXXDefinitionData()
6601 AddUnresolvedSet(Data.VisibleConversions.get(*Writer->Context)); in AddCXXDefinitionData()
6605 Record->push_back(Data.NumBases); in AddCXXDefinitionData()
6610 Record->push_back(Data.NumVBases); in AddCXXDefinitionData()
6614 AddDeclRef(D->getFirstFriend()); in AddCXXDefinitionData()
6616 auto &Lambda = D->getLambdaData(); in AddCXXDefinitionData()
6624 Record->push_back(LambdaBits); in AddCXXDefinitionData()
6626 Record->push_back(Lambda.NumExplicitCaptures); in AddCXXDefinitionData()
6627 Record->push_back(Lambda.ManglingNumber); in AddCXXDefinitionData()
6628 Record->push_back(D->getDeviceLambdaManglingNumber()); in AddCXXDefinitionData()
6639 Record->push_back(CaptureBits); in AddCXXDefinitionData()
6660 const Expr *Init = VD->getInit(); in AddVarDeclInit()
6667 if (EvaluatedStmt *ES = VD->getEvaluatedStmt()) { in AddVarDeclInit()
6668 Val |= (ES->HasConstantInitialization ? 2 : 0); in AddVarDeclInit()
6669 Val |= (ES->HasConstantDestruction ? 4 : 0); in AddVarDeclInit()
6670 APValue *Evaluated = VD->getEvaluatedValue(); in AddVarDeclInit()
6672 if (Evaluated && (Evaluated->isInt() || Evaluated->isFloat())) in AddVarDeclInit()
6677 AddAPValue(*VD->getEvaluatedValue()); in AddVarDeclInit()
6698 FirstMacroID = NUM_PREDEF_MACRO_IDS + Chain->getTotalNumMacros(); in ReaderInitialized()
6699 FirstSubmoduleID = NUM_PREDEF_SUBMODULE_IDS + Chain->getTotalNumSubmodules(); in ReaderInitialized()
6700 FirstSelectorID = NUM_PREDEF_SELECTOR_IDS + Chain->getTotalNumSelectors(); in ReaderInitialized()
6761 assert(D->isCanonicalDecl() && "predefined decl is not canonical"); in PredefinedDeclBuilt()
6785 if (Chain && Chain->isProcessingUpdateRecords()) return; in CompletedTagDefinition()
6786 assert(D->isCompleteDefinition()); in CompletedTagDefinition()
6790 if (RD->isFromASTFile()) { in CompletedTagDefinition()
6794 assert(isTemplateInstantiation(RD->getTemplateSpecializationKind()) && in CompletedTagDefinition()
6803 if (D->isFromASTFile()) in isImportedDeclContext()
6808 return D == D->getASTContext().getVaListTagDecl(); in isImportedDeclContext()
6812 if (Chain && Chain->isProcessingUpdateRecords()) return; in AddedVisibleDecl()
6813 assert(DC->isLookupContext() && in AddedVisibleDecl()
6814 "Should not add lookup results to non-lookup contexts!"); in AddedVisibleDecl()
6824 if (isa<NamespaceDecl>(DC) && D->getFriendObjectKind() == Decl::FOK_None && in AddedVisibleDecl()
6830 if (D->isFromASTFile() || !isImportedDeclContext(Chain, cast<Decl>(DC))) in AddedVisibleDecl()
6833 assert(DC == DC->getPrimaryContext() && "added to non-primary context"); in AddedVisibleDecl()
6836 if (UpdatedDeclContexts.insert(DC) && !cast<Decl>(DC)->isFromASTFile()) { in AddedVisibleDecl()
6840 llvm::append_range(DeclsToEmitEvenIfUnreferenced, DC->decls()); in AddedVisibleDecl()
6846 if (Chain && Chain->isProcessingUpdateRecords()) return; in AddedCXXImplicitMember()
6847 assert(D->isImplicit()); in AddedCXXImplicitMember()
6851 if (D->isFromASTFile() || !isImportedDeclContext(Chain, RD)) in AddedCXXImplicitMember()
6858 assert(RD->isCompleteDefinition()); in AddedCXXImplicitMember()
6864 if (Chain && Chain->isProcessingUpdateRecords()) return; in ResolvedExceptionSpec()
6867 Chain->forEachImportedKeyDecl(FD, [&](const Decl *D) { in ResolvedExceptionSpec()
6871 ->getType() in ResolvedExceptionSpec()
6872 ->castAs<FunctionProtoType>() in ResolvedExceptionSpec()
6873 ->getExceptionSpecType())) in ResolvedExceptionSpec()
6879 if (Chain && Chain->isProcessingUpdateRecords()) return; in DeducedReturnType()
6882 Chain->forEachImportedKeyDecl(FD, [&](const Decl *D) { in DeducedReturnType()
6891 if (Chain && Chain->isProcessingUpdateRecords()) return; in ResolvedOperatorDelete()
6895 Chain->forEachImportedKeyDecl(DD, [&](const Decl *D) { in ResolvedOperatorDelete()
6901 if (Chain && Chain->isProcessingUpdateRecords()) return; in CompletedImplicitDefinition()
6903 if (!D->isFromASTFile()) in CompletedImplicitDefinition()
6911 if (Chain && Chain->isProcessingUpdateRecords()) return; in VariableDefinitionInstantiated()
6913 if (!D->isFromASTFile()) in VariableDefinitionInstantiated()
6920 if (Chain && Chain->isProcessingUpdateRecords()) return; in FunctionDefinitionInstantiated()
6922 if (!D->isFromASTFile()) in FunctionDefinitionInstantiated()
6929 if (Chain && Chain->isProcessingUpdateRecords()) return; in InstantiationRequested()
6931 if (!D->isFromASTFile()) in InstantiationRequested()
6938 POI = VD->getPointOfInstantiation(); in InstantiationRequested()
6940 POI = cast<FunctionDecl>(D)->getPointOfInstantiation(); in InstantiationRequested()
6945 if (Chain && Chain->isProcessingUpdateRecords()) return; in DefaultArgumentInstantiated()
6947 if (!D->isFromASTFile()) in DefaultArgumentInstantiated()
6956 if (!D->isFromASTFile()) in DefaultMemberInitializerInstantiated()
6965 if (Chain && Chain->isProcessingUpdateRecords()) return; in AddedObjCCategoryToInterface()
6967 if (!IFD->isFromASTFile()) in AddedObjCCategoryToInterface()
6970 assert(IFD->getDefinition() && "Category on a class without a definition?"); in AddedObjCCategoryToInterface()
6972 const_cast<ObjCInterfaceDecl *>(IFD->getDefinition())); in AddedObjCCategoryToInterface()
6976 if (Chain && Chain->isProcessingUpdateRecords()) return; in DeclarationMarkedUsed()
6982 for (auto Prev = D->getMostRecentDecl(); Prev; Prev = Prev->getPreviousDecl()) in DeclarationMarkedUsed()
6990 if (Chain && Chain->isProcessingUpdateRecords()) return; in DeclarationMarkedOpenMPThreadPrivate()
6992 if (!D->isFromASTFile()) in DeclarationMarkedOpenMPThreadPrivate()
6999 if (Chain && Chain->isProcessingUpdateRecords()) return; in DeclarationMarkedOpenMPAllocate()
7001 if (!D->isFromASTFile()) in DeclarationMarkedOpenMPAllocate()
7009 if (Chain && Chain->isProcessingUpdateRecords()) return; in DeclarationMarkedOpenMPDeclareTarget()
7011 if (!D->isFromASTFile()) in DeclarationMarkedOpenMPDeclareTarget()
7019 if (Chain && Chain->isProcessingUpdateRecords()) return; in RedefinedHiddenDefinition()
7021 assert(!D->isUnconditionallyVisible() && "expected a hidden declaration"); in RedefinedHiddenDefinition()
7027 if (Chain && Chain->isProcessingUpdateRecords()) return; in AddedAttributeToRecord()
7029 if (!Record->isFromASTFile()) in AddedAttributeToRecord()
7038 if (!TD->getFirstDecl()->isFromASTFile()) in AddedCXXTemplateSpecialization()
7040 if (Chain && Chain->isProcessingUpdateRecords()) in AddedCXXTemplateSpecialization()
7050 if (!TD->getFirstDecl()->isFromASTFile()) in AddedCXXTemplateSpecialization()
7052 if (Chain && Chain->isProcessingUpdateRecords()) in AddedCXXTemplateSpecialization()
7062 if (!TD->getFirstDecl()->isFromASTFile()) in AddedCXXTemplateSpecialization()
7064 if (Chain && Chain->isProcessingUpdateRecords()) in AddedCXXTemplateSpecialization()
7070 //===----------------------------------------------------------------------===//
7072 ////===----------------------------------------------------------------------===//
7096 Record.push_back(unsigned(C->getClauseKind())); in writeClause()
7098 Record.AddSourceLocation(C->getBeginLoc()); in writeClause()
7099 Record.AddSourceLocation(C->getEndLoc()); in writeClause()
7103 Record.push_back(uint64_t(C->getCaptureRegion())); in VisitOMPClauseWithPreInit()
7104 Record.AddStmt(C->getPreInitStmt()); in VisitOMPClauseWithPreInit()
7109 Record.AddStmt(C->getPostUpdateExpr()); in VisitOMPClauseWithPostUpdate()
7114 Record.push_back(uint64_t(C->getNameModifier())); in VisitOMPIfClause()
7115 Record.AddSourceLocation(C->getNameModifierLoc()); in VisitOMPIfClause()
7116 Record.AddSourceLocation(C->getColonLoc()); in VisitOMPIfClause()
7117 Record.AddStmt(C->getCondition()); in VisitOMPIfClause()
7118 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPIfClause()
7123 Record.AddStmt(C->getCondition()); in VisitOMPFinalClause()
7124 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPFinalClause()
7129 Record.AddStmt(C->getNumThreads()); in VisitOMPNumThreadsClause()
7130 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPNumThreadsClause()
7134 Record.AddStmt(C->getSafelen()); in VisitOMPSafelenClause()
7135 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPSafelenClause()
7139 Record.AddStmt(C->getSimdlen()); in VisitOMPSimdlenClause()
7140 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPSimdlenClause()
7144 Record.push_back(C->getNumSizes()); in VisitOMPSizesClause()
7145 for (Expr *Size : C->getSizesRefs()) in VisitOMPSizesClause()
7147 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPSizesClause()
7153 Record.AddStmt(C->getFactor()); in VisitOMPPartialClause()
7154 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPPartialClause()
7158 Record.AddStmt(C->getAllocator()); in VisitOMPAllocatorClause()
7159 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPAllocatorClause()
7163 Record.AddStmt(C->getNumForLoops()); in VisitOMPCollapseClause()
7164 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPCollapseClause()
7168 Record.AddStmt(C->getEventHandler()); in VisitOMPDetachClause()
7169 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPDetachClause()
7173 Record.push_back(unsigned(C->getDefaultKind())); in VisitOMPDefaultClause()
7174 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPDefaultClause()
7175 Record.AddSourceLocation(C->getDefaultKindKwLoc()); in VisitOMPDefaultClause()
7179 Record.push_back(unsigned(C->getProcBindKind())); in VisitOMPProcBindClause()
7180 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPProcBindClause()
7181 Record.AddSourceLocation(C->getProcBindKindKwLoc()); in VisitOMPProcBindClause()
7186 Record.push_back(C->getScheduleKind()); in VisitOMPScheduleClause()
7187 Record.push_back(C->getFirstScheduleModifier()); in VisitOMPScheduleClause()
7188 Record.push_back(C->getSecondScheduleModifier()); in VisitOMPScheduleClause()
7189 Record.AddStmt(C->getChunkSize()); in VisitOMPScheduleClause()
7190 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPScheduleClause()
7191 Record.AddSourceLocation(C->getFirstScheduleModifierLoc()); in VisitOMPScheduleClause()
7192 Record.AddSourceLocation(C->getSecondScheduleModifierLoc()); in VisitOMPScheduleClause()
7193 Record.AddSourceLocation(C->getScheduleKindLoc()); in VisitOMPScheduleClause()
7194 Record.AddSourceLocation(C->getCommaLoc()); in VisitOMPScheduleClause()
7198 Record.push_back(C->getLoopNumIterations().size()); in VisitOMPOrderedClause()
7199 Record.AddStmt(C->getNumForLoops()); in VisitOMPOrderedClause()
7200 for (Expr *NumIter : C->getLoopNumIterations()) in VisitOMPOrderedClause()
7202 for (unsigned I = 0, E = C->getLoopNumIterations().size(); I <E; ++I) in VisitOMPOrderedClause()
7203 Record.AddStmt(C->getLoopCounter(I)); in VisitOMPOrderedClause()
7204 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPOrderedClause()
7218 Record.push_back(C->isExtended() ? 1 : 0); in VisitOMPUpdateClause()
7219 if (C->isExtended()) { in VisitOMPUpdateClause()
7220 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPUpdateClause()
7221 Record.AddSourceLocation(C->getArgumentLoc()); in VisitOMPUpdateClause()
7222 Record.writeEnum(C->getDependencyKind()); in VisitOMPUpdateClause()
7232 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPFailClause()
7233 Record.AddSourceLocation(C->getFailParameterLoc()); in VisitOMPFailClause()
7234 Record.writeEnum(C->getFailParameter()); in VisitOMPFailClause()
7256 Record.push_back(C->varlist_size()); in VisitOMPInitClause()
7257 for (Expr *VE : C->varlists()) in VisitOMPInitClause()
7259 Record.writeBool(C->getIsTarget()); in VisitOMPInitClause()
7260 Record.writeBool(C->getIsTargetSync()); in VisitOMPInitClause()
7261 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPInitClause()
7262 Record.AddSourceLocation(C->getVarLoc()); in VisitOMPInitClause()
7266 Record.AddStmt(C->getInteropVar()); in VisitOMPUseClause()
7267 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPUseClause()
7268 Record.AddSourceLocation(C->getVarLoc()); in VisitOMPUseClause()
7272 Record.AddStmt(C->getInteropVar()); in VisitOMPDestroyClause()
7273 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPDestroyClause()
7274 Record.AddSourceLocation(C->getVarLoc()); in VisitOMPDestroyClause()
7279 Record.AddStmt(C->getCondition()); in VisitOMPNovariantsClause()
7280 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPNovariantsClause()
7285 Record.AddStmt(C->getCondition()); in VisitOMPNocontextClause()
7286 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPNocontextClause()
7291 Record.AddStmt(C->getThreadID()); in VisitOMPFilterClause()
7292 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPFilterClause()
7296 Record.AddStmt(C->getAlignment()); in VisitOMPAlignClause()
7297 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPAlignClause()
7301 Record.push_back(C->varlist_size()); in VisitOMPPrivateClause()
7302 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPPrivateClause()
7303 for (auto *VE : C->varlists()) { in VisitOMPPrivateClause()
7306 for (auto *VE : C->private_copies()) { in VisitOMPPrivateClause()
7312 Record.push_back(C->varlist_size()); in VisitOMPFirstprivateClause()
7314 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPFirstprivateClause()
7315 for (auto *VE : C->varlists()) { in VisitOMPFirstprivateClause()
7318 for (auto *VE : C->private_copies()) { in VisitOMPFirstprivateClause()
7321 for (auto *VE : C->inits()) { in VisitOMPFirstprivateClause()
7327 Record.push_back(C->varlist_size()); in VisitOMPLastprivateClause()
7329 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPLastprivateClause()
7330 Record.writeEnum(C->getKind()); in VisitOMPLastprivateClause()
7331 Record.AddSourceLocation(C->getKindLoc()); in VisitOMPLastprivateClause()
7332 Record.AddSourceLocation(C->getColonLoc()); in VisitOMPLastprivateClause()
7333 for (auto *VE : C->varlists()) in VisitOMPLastprivateClause()
7335 for (auto *E : C->private_copies()) in VisitOMPLastprivateClause()
7337 for (auto *E : C->source_exprs()) in VisitOMPLastprivateClause()
7339 for (auto *E : C->destination_exprs()) in VisitOMPLastprivateClause()
7341 for (auto *E : C->assignment_ops()) in VisitOMPLastprivateClause()
7346 Record.push_back(C->varlist_size()); in VisitOMPSharedClause()
7347 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPSharedClause()
7348 for (auto *VE : C->varlists()) in VisitOMPSharedClause()
7353 Record.push_back(C->varlist_size()); in VisitOMPReductionClause()
7354 Record.writeEnum(C->getModifier()); in VisitOMPReductionClause()
7356 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPReductionClause()
7357 Record.AddSourceLocation(C->getModifierLoc()); in VisitOMPReductionClause()
7358 Record.AddSourceLocation(C->getColonLoc()); in VisitOMPReductionClause()
7359 Record.AddNestedNameSpecifierLoc(C->getQualifierLoc()); in VisitOMPReductionClause()
7360 Record.AddDeclarationNameInfo(C->getNameInfo()); in VisitOMPReductionClause()
7361 for (auto *VE : C->varlists()) in VisitOMPReductionClause()
7363 for (auto *VE : C->privates()) in VisitOMPReductionClause()
7365 for (auto *E : C->lhs_exprs()) in VisitOMPReductionClause()
7367 for (auto *E : C->rhs_exprs()) in VisitOMPReductionClause()
7369 for (auto *E : C->reduction_ops()) in VisitOMPReductionClause()
7371 if (C->getModifier() == clang::OMPC_REDUCTION_inscan) { in VisitOMPReductionClause()
7372 for (auto *E : C->copy_ops()) in VisitOMPReductionClause()
7374 for (auto *E : C->copy_array_temps()) in VisitOMPReductionClause()
7376 for (auto *E : C->copy_array_elems()) in VisitOMPReductionClause()
7382 Record.push_back(C->varlist_size()); in VisitOMPTaskReductionClause()
7384 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPTaskReductionClause()
7385 Record.AddSourceLocation(C->getColonLoc()); in VisitOMPTaskReductionClause()
7386 Record.AddNestedNameSpecifierLoc(C->getQualifierLoc()); in VisitOMPTaskReductionClause()
7387 Record.AddDeclarationNameInfo(C->getNameInfo()); in VisitOMPTaskReductionClause()
7388 for (auto *VE : C->varlists()) in VisitOMPTaskReductionClause()
7390 for (auto *VE : C->privates()) in VisitOMPTaskReductionClause()
7392 for (auto *E : C->lhs_exprs()) in VisitOMPTaskReductionClause()
7394 for (auto *E : C->rhs_exprs()) in VisitOMPTaskReductionClause()
7396 for (auto *E : C->reduction_ops()) in VisitOMPTaskReductionClause()
7401 Record.push_back(C->varlist_size()); in VisitOMPInReductionClause()
7403 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPInReductionClause()
7404 Record.AddSourceLocation(C->getColonLoc()); in VisitOMPInReductionClause()
7405 Record.AddNestedNameSpecifierLoc(C->getQualifierLoc()); in VisitOMPInReductionClause()
7406 Record.AddDeclarationNameInfo(C->getNameInfo()); in VisitOMPInReductionClause()
7407 for (auto *VE : C->varlists()) in VisitOMPInReductionClause()
7409 for (auto *VE : C->privates()) in VisitOMPInReductionClause()
7411 for (auto *E : C->lhs_exprs()) in VisitOMPInReductionClause()
7413 for (auto *E : C->rhs_exprs()) in VisitOMPInReductionClause()
7415 for (auto *E : C->reduction_ops()) in VisitOMPInReductionClause()
7417 for (auto *E : C->taskgroup_descriptors()) in VisitOMPInReductionClause()
7422 Record.push_back(C->varlist_size()); in VisitOMPLinearClause()
7424 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPLinearClause()
7425 Record.AddSourceLocation(C->getColonLoc()); in VisitOMPLinearClause()
7426 Record.push_back(C->getModifier()); in VisitOMPLinearClause()
7427 Record.AddSourceLocation(C->getModifierLoc()); in VisitOMPLinearClause()
7428 for (auto *VE : C->varlists()) { in VisitOMPLinearClause()
7431 for (auto *VE : C->privates()) { in VisitOMPLinearClause()
7434 for (auto *VE : C->inits()) { in VisitOMPLinearClause()
7437 for (auto *VE : C->updates()) { in VisitOMPLinearClause()
7440 for (auto *VE : C->finals()) { in VisitOMPLinearClause()
7443 Record.AddStmt(C->getStep()); in VisitOMPLinearClause()
7444 Record.AddStmt(C->getCalcStep()); in VisitOMPLinearClause()
7445 for (auto *VE : C->used_expressions()) in VisitOMPLinearClause()
7450 Record.push_back(C->varlist_size()); in VisitOMPAlignedClause()
7451 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPAlignedClause()
7452 Record.AddSourceLocation(C->getColonLoc()); in VisitOMPAlignedClause()
7453 for (auto *VE : C->varlists()) in VisitOMPAlignedClause()
7455 Record.AddStmt(C->getAlignment()); in VisitOMPAlignedClause()
7459 Record.push_back(C->varlist_size()); in VisitOMPCopyinClause()
7460 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPCopyinClause()
7461 for (auto *VE : C->varlists()) in VisitOMPCopyinClause()
7463 for (auto *E : C->source_exprs()) in VisitOMPCopyinClause()
7465 for (auto *E : C->destination_exprs()) in VisitOMPCopyinClause()
7467 for (auto *E : C->assignment_ops()) in VisitOMPCopyinClause()
7472 Record.push_back(C->varlist_size()); in VisitOMPCopyprivateClause()
7473 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPCopyprivateClause()
7474 for (auto *VE : C->varlists()) in VisitOMPCopyprivateClause()
7476 for (auto *E : C->source_exprs()) in VisitOMPCopyprivateClause()
7478 for (auto *E : C->destination_exprs()) in VisitOMPCopyprivateClause()
7480 for (auto *E : C->assignment_ops()) in VisitOMPCopyprivateClause()
7485 Record.push_back(C->varlist_size()); in VisitOMPFlushClause()
7486 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPFlushClause()
7487 for (auto *VE : C->varlists()) in VisitOMPFlushClause()
7492 Record.AddStmt(C->getDepobj()); in VisitOMPDepobjClause()
7493 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPDepobjClause()
7497 Record.push_back(C->varlist_size()); in VisitOMPDependClause()
7498 Record.push_back(C->getNumLoops()); in VisitOMPDependClause()
7499 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPDependClause()
7500 Record.AddStmt(C->getModifier()); in VisitOMPDependClause()
7501 Record.push_back(C->getDependencyKind()); in VisitOMPDependClause()
7502 Record.AddSourceLocation(C->getDependencyLoc()); in VisitOMPDependClause()
7503 Record.AddSourceLocation(C->getColonLoc()); in VisitOMPDependClause()
7504 Record.AddSourceLocation(C->getOmpAllMemoryLoc()); in VisitOMPDependClause()
7505 for (auto *VE : C->varlists()) in VisitOMPDependClause()
7507 for (unsigned I = 0, E = C->getNumLoops(); I < E; ++I) in VisitOMPDependClause()
7508 Record.AddStmt(C->getLoopData(I)); in VisitOMPDependClause()
7513 Record.writeEnum(C->getModifier()); in VisitOMPDeviceClause()
7514 Record.AddStmt(C->getDevice()); in VisitOMPDeviceClause()
7515 Record.AddSourceLocation(C->getModifierLoc()); in VisitOMPDeviceClause()
7516 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPDeviceClause()
7520 Record.push_back(C->varlist_size()); in VisitOMPMapClause()
7521 Record.push_back(C->getUniqueDeclarationsNum()); in VisitOMPMapClause()
7522 Record.push_back(C->getTotalComponentListNum()); in VisitOMPMapClause()
7523 Record.push_back(C->getTotalComponentsNum()); in VisitOMPMapClause()
7524 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPMapClause()
7527 Record.push_back(C->getMapTypeModifier(I)); in VisitOMPMapClause()
7528 Record.AddSourceLocation(C->getMapTypeModifierLoc(I)); in VisitOMPMapClause()
7529 if (C->getMapTypeModifier(I) == OMPC_MAP_MODIFIER_iterator) in VisitOMPMapClause()
7532 Record.AddNestedNameSpecifierLoc(C->getMapperQualifierLoc()); in VisitOMPMapClause()
7533 Record.AddDeclarationNameInfo(C->getMapperIdInfo()); in VisitOMPMapClause()
7534 Record.push_back(C->getMapType()); in VisitOMPMapClause()
7535 Record.AddSourceLocation(C->getMapLoc()); in VisitOMPMapClause()
7536 Record.AddSourceLocation(C->getColonLoc()); in VisitOMPMapClause()
7537 for (auto *E : C->varlists()) in VisitOMPMapClause()
7539 for (auto *E : C->mapperlists()) in VisitOMPMapClause()
7542 Record.AddStmt(C->getIteratorModifier()); in VisitOMPMapClause()
7543 for (auto *D : C->all_decls()) in VisitOMPMapClause()
7545 for (auto N : C->all_num_lists()) in VisitOMPMapClause()
7547 for (auto N : C->all_lists_sizes()) in VisitOMPMapClause()
7549 for (auto &M : C->all_components()) { in VisitOMPMapClause()
7556 Record.push_back(C->varlist_size()); in VisitOMPAllocateClause()
7557 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPAllocateClause()
7558 Record.AddSourceLocation(C->getColonLoc()); in VisitOMPAllocateClause()
7559 Record.AddStmt(C->getAllocator()); in VisitOMPAllocateClause()
7560 for (auto *VE : C->varlists()) in VisitOMPAllocateClause()
7566 Record.AddStmt(C->getNumTeams()); in VisitOMPNumTeamsClause()
7567 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPNumTeamsClause()
7572 Record.AddStmt(C->getThreadLimit()); in VisitOMPThreadLimitClause()
7573 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPThreadLimitClause()
7578 Record.AddStmt(C->getPriority()); in VisitOMPPriorityClause()
7579 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPPriorityClause()
7584 Record.writeEnum(C->getModifier()); in VisitOMPGrainsizeClause()
7585 Record.AddStmt(C->getGrainsize()); in VisitOMPGrainsizeClause()
7586 Record.AddSourceLocation(C->getModifierLoc()); in VisitOMPGrainsizeClause()
7587 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPGrainsizeClause()
7592 Record.writeEnum(C->getModifier()); in VisitOMPNumTasksClause()
7593 Record.AddStmt(C->getNumTasks()); in VisitOMPNumTasksClause()
7594 Record.AddSourceLocation(C->getModifierLoc()); in VisitOMPNumTasksClause()
7595 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPNumTasksClause()
7599 Record.AddStmt(C->getHint()); in VisitOMPHintClause()
7600 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPHintClause()
7605 Record.push_back(C->getDistScheduleKind()); in VisitOMPDistScheduleClause()
7606 Record.AddStmt(C->getChunkSize()); in VisitOMPDistScheduleClause()
7607 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPDistScheduleClause()
7608 Record.AddSourceLocation(C->getDistScheduleKindLoc()); in VisitOMPDistScheduleClause()
7609 Record.AddSourceLocation(C->getCommaLoc()); in VisitOMPDistScheduleClause()
7613 Record.push_back(C->getDefaultmapKind()); in VisitOMPDefaultmapClause()
7614 Record.push_back(C->getDefaultmapModifier()); in VisitOMPDefaultmapClause()
7615 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPDefaultmapClause()
7616 Record.AddSourceLocation(C->getDefaultmapModifierLoc()); in VisitOMPDefaultmapClause()
7617 Record.AddSourceLocation(C->getDefaultmapKindLoc()); in VisitOMPDefaultmapClause()
7621 Record.push_back(C->varlist_size()); in VisitOMPToClause()
7622 Record.push_back(C->getUniqueDeclarationsNum()); in VisitOMPToClause()
7623 Record.push_back(C->getTotalComponentListNum()); in VisitOMPToClause()
7624 Record.push_back(C->getTotalComponentsNum()); in VisitOMPToClause()
7625 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPToClause()
7627 Record.push_back(C->getMotionModifier(I)); in VisitOMPToClause()
7628 Record.AddSourceLocation(C->getMotionModifierLoc(I)); in VisitOMPToClause()
7630 Record.AddNestedNameSpecifierLoc(C->getMapperQualifierLoc()); in VisitOMPToClause()
7631 Record.AddDeclarationNameInfo(C->getMapperIdInfo()); in VisitOMPToClause()
7632 Record.AddSourceLocation(C->getColonLoc()); in VisitOMPToClause()
7633 for (auto *E : C->varlists()) in VisitOMPToClause()
7635 for (auto *E : C->mapperlists()) in VisitOMPToClause()
7637 for (auto *D : C->all_decls()) in VisitOMPToClause()
7639 for (auto N : C->all_num_lists()) in VisitOMPToClause()
7641 for (auto N : C->all_lists_sizes()) in VisitOMPToClause()
7643 for (auto &M : C->all_components()) { in VisitOMPToClause()
7651 Record.push_back(C->varlist_size()); in VisitOMPFromClause()
7652 Record.push_back(C->getUniqueDeclarationsNum()); in VisitOMPFromClause()
7653 Record.push_back(C->getTotalComponentListNum()); in VisitOMPFromClause()
7654 Record.push_back(C->getTotalComponentsNum()); in VisitOMPFromClause()
7655 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPFromClause()
7657 Record.push_back(C->getMotionModifier(I)); in VisitOMPFromClause()
7658 Record.AddSourceLocation(C->getMotionModifierLoc(I)); in VisitOMPFromClause()
7660 Record.AddNestedNameSpecifierLoc(C->getMapperQualifierLoc()); in VisitOMPFromClause()
7661 Record.AddDeclarationNameInfo(C->getMapperIdInfo()); in VisitOMPFromClause()
7662 Record.AddSourceLocation(C->getColonLoc()); in VisitOMPFromClause()
7663 for (auto *E : C->varlists()) in VisitOMPFromClause()
7665 for (auto *E : C->mapperlists()) in VisitOMPFromClause()
7667 for (auto *D : C->all_decls()) in VisitOMPFromClause()
7669 for (auto N : C->all_num_lists()) in VisitOMPFromClause()
7671 for (auto N : C->all_lists_sizes()) in VisitOMPFromClause()
7673 for (auto &M : C->all_components()) { in VisitOMPFromClause()
7681 Record.push_back(C->varlist_size()); in VisitOMPUseDevicePtrClause()
7682 Record.push_back(C->getUniqueDeclarationsNum()); in VisitOMPUseDevicePtrClause()
7683 Record.push_back(C->getTotalComponentListNum()); in VisitOMPUseDevicePtrClause()
7684 Record.push_back(C->getTotalComponentsNum()); in VisitOMPUseDevicePtrClause()
7685 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPUseDevicePtrClause()
7686 for (auto *E : C->varlists()) in VisitOMPUseDevicePtrClause()
7688 for (auto *VE : C->private_copies()) in VisitOMPUseDevicePtrClause()
7690 for (auto *VE : C->inits()) in VisitOMPUseDevicePtrClause()
7692 for (auto *D : C->all_decls()) in VisitOMPUseDevicePtrClause()
7694 for (auto N : C->all_num_lists()) in VisitOMPUseDevicePtrClause()
7696 for (auto N : C->all_lists_sizes()) in VisitOMPUseDevicePtrClause()
7698 for (auto &M : C->all_components()) { in VisitOMPUseDevicePtrClause()
7705 Record.push_back(C->varlist_size()); in VisitOMPUseDeviceAddrClause()
7706 Record.push_back(C->getUniqueDeclarationsNum()); in VisitOMPUseDeviceAddrClause()
7707 Record.push_back(C->getTotalComponentListNum()); in VisitOMPUseDeviceAddrClause()
7708 Record.push_back(C->getTotalComponentsNum()); in VisitOMPUseDeviceAddrClause()
7709 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPUseDeviceAddrClause()
7710 for (auto *E : C->varlists()) in VisitOMPUseDeviceAddrClause()
7712 for (auto *D : C->all_decls()) in VisitOMPUseDeviceAddrClause()
7714 for (auto N : C->all_num_lists()) in VisitOMPUseDeviceAddrClause()
7716 for (auto N : C->all_lists_sizes()) in VisitOMPUseDeviceAddrClause()
7718 for (auto &M : C->all_components()) { in VisitOMPUseDeviceAddrClause()
7725 Record.push_back(C->varlist_size()); in VisitOMPIsDevicePtrClause()
7726 Record.push_back(C->getUniqueDeclarationsNum()); in VisitOMPIsDevicePtrClause()
7727 Record.push_back(C->getTotalComponentListNum()); in VisitOMPIsDevicePtrClause()
7728 Record.push_back(C->getTotalComponentsNum()); in VisitOMPIsDevicePtrClause()
7729 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPIsDevicePtrClause()
7730 for (auto *E : C->varlists()) in VisitOMPIsDevicePtrClause()
7732 for (auto *D : C->all_decls()) in VisitOMPIsDevicePtrClause()
7734 for (auto N : C->all_num_lists()) in VisitOMPIsDevicePtrClause()
7736 for (auto N : C->all_lists_sizes()) in VisitOMPIsDevicePtrClause()
7738 for (auto &M : C->all_components()) { in VisitOMPIsDevicePtrClause()
7745 Record.push_back(C->varlist_size()); in VisitOMPHasDeviceAddrClause()
7746 Record.push_back(C->getUniqueDeclarationsNum()); in VisitOMPHasDeviceAddrClause()
7747 Record.push_back(C->getTotalComponentListNum()); in VisitOMPHasDeviceAddrClause()
7748 Record.push_back(C->getTotalComponentsNum()); in VisitOMPHasDeviceAddrClause()
7749 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPHasDeviceAddrClause()
7750 for (auto *E : C->varlists()) in VisitOMPHasDeviceAddrClause()
7752 for (auto *D : C->all_decls()) in VisitOMPHasDeviceAddrClause()
7754 for (auto N : C->all_num_lists()) in VisitOMPHasDeviceAddrClause()
7756 for (auto N : C->all_lists_sizes()) in VisitOMPHasDeviceAddrClause()
7758 for (auto &M : C->all_components()) { in VisitOMPHasDeviceAddrClause()
7777 Record.push_back(C->getAtomicDefaultMemOrderKind()); in VisitOMPAtomicDefaultMemOrderClause()
7778 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPAtomicDefaultMemOrderClause()
7779 Record.AddSourceLocation(C->getAtomicDefaultMemOrderKindKwLoc()); in VisitOMPAtomicDefaultMemOrderClause()
7783 Record.push_back(C->getAtKind()); in VisitOMPAtClause()
7784 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPAtClause()
7785 Record.AddSourceLocation(C->getAtKindKwLoc()); in VisitOMPAtClause()
7789 Record.push_back(C->getSeverityKind()); in VisitOMPSeverityClause()
7790 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPSeverityClause()
7791 Record.AddSourceLocation(C->getSeverityKindKwLoc()); in VisitOMPSeverityClause()
7795 Record.AddStmt(C->getMessageString()); in VisitOMPMessageClause()
7796 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPMessageClause()
7800 Record.push_back(C->varlist_size()); in VisitOMPNontemporalClause()
7801 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPNontemporalClause()
7802 for (auto *VE : C->varlists()) in VisitOMPNontemporalClause()
7804 for (auto *E : C->private_refs()) in VisitOMPNontemporalClause()
7809 Record.push_back(C->varlist_size()); in VisitOMPInclusiveClause()
7810 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPInclusiveClause()
7811 for (auto *VE : C->varlists()) in VisitOMPInclusiveClause()
7816 Record.push_back(C->varlist_size()); in VisitOMPExclusiveClause()
7817 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPExclusiveClause()
7818 for (auto *VE : C->varlists()) in VisitOMPExclusiveClause()
7823 Record.writeEnum(C->getKind()); in VisitOMPOrderClause()
7824 Record.writeEnum(C->getModifier()); in VisitOMPOrderClause()
7825 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPOrderClause()
7826 Record.AddSourceLocation(C->getKindKwLoc()); in VisitOMPOrderClause()
7827 Record.AddSourceLocation(C->getModifierKwLoc()); in VisitOMPOrderClause()
7831 Record.push_back(C->getNumberOfAllocators()); in VisitOMPUsesAllocatorsClause()
7832 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPUsesAllocatorsClause()
7833 for (unsigned I = 0, E = C->getNumberOfAllocators(); I < E; ++I) { in VisitOMPUsesAllocatorsClause()
7834 OMPUsesAllocatorsClause::Data Data = C->getAllocatorData(I); in VisitOMPUsesAllocatorsClause()
7843 Record.push_back(C->varlist_size()); in VisitOMPAffinityClause()
7844 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPAffinityClause()
7845 Record.AddStmt(C->getModifier()); in VisitOMPAffinityClause()
7846 Record.AddSourceLocation(C->getColonLoc()); in VisitOMPAffinityClause()
7847 for (Expr *E : C->varlists()) in VisitOMPAffinityClause()
7852 Record.writeEnum(C->getBindKind()); in VisitOMPBindClause()
7853 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPBindClause()
7854 Record.AddSourceLocation(C->getBindKindLoc()); in VisitOMPBindClause()
7859 Record.AddStmt(C->getSize()); in VisitOMPXDynCGroupMemClause()
7860 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPXDynCGroupMemClause()
7864 Record.push_back(C->varlist_size()); in VisitOMPDoacrossClause()
7865 Record.push_back(C->getNumLoops()); in VisitOMPDoacrossClause()
7866 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPDoacrossClause()
7867 Record.push_back(C->getDependenceType()); in VisitOMPDoacrossClause()
7868 Record.AddSourceLocation(C->getDependenceLoc()); in VisitOMPDoacrossClause()
7869 Record.AddSourceLocation(C->getColonLoc()); in VisitOMPDoacrossClause()
7870 for (auto *VE : C->varlists()) in VisitOMPDoacrossClause()
7872 for (unsigned I = 0, E = C->getNumLoops(); I < E; ++I) in VisitOMPDoacrossClause()
7873 Record.AddStmt(C->getLoopData(I)); in VisitOMPDoacrossClause()
7877 Record.AddAttributes(C->getAttrs()); in VisitOMPXAttributeClause()
7878 Record.AddSourceLocation(C->getBeginLoc()); in VisitOMPXAttributeClause()
7879 Record.AddSourceLocation(C->getLParenLoc()); in VisitOMPXAttributeClause()
7880 Record.AddSourceLocation(C->getEndLoc()); in VisitOMPXAttributeClause()
7886 writeUInt32(TI->Sets.size()); in writeOMPTraitInfo()
7887 for (const auto &Set : TI->Sets) { in writeOMPTraitInfo()
7905 writeUInt32(Data->getNumClauses()); in writeOMPChildren()
7906 writeUInt32(Data->getNumChildren()); in writeOMPChildren()
7907 writeBool(Data->hasAssociatedStmt()); in writeOMPChildren()
7908 for (unsigned I = 0, E = Data->getNumClauses(); I < E; ++I) in writeOMPChildren()
7909 writeOMPClause(Data->getClauses()[I]); in writeOMPChildren()
7910 if (Data->hasAssociatedStmt()) in writeOMPChildren()
7911 AddStmt(Data->getAssociatedStmt()); in writeOMPChildren()
7912 for (unsigned I = 0, E = Data->getNumChildren(); I < E; ++I) in writeOMPChildren()
7913 AddStmt(Data->getChildren()[I]); in writeOMPChildren()
7917 writeUInt32(C->getVarList().size()); in writeOpenACCVarList()
7918 for (Expr *E : C->getVarList()) in writeOpenACCVarList()
7929 writeEnum(C->getClauseKind()); in writeOpenACCClause()
7930 writeSourceLocation(C->getBeginLoc()); in writeOpenACCClause()
7931 writeSourceLocation(C->getEndLoc()); in writeOpenACCClause()
7933 switch (C->getClauseKind()) { in writeOpenACCClause()
7936 writeSourceLocation(DC->getLParenLoc()); in writeOpenACCClause()
7937 writeEnum(DC->getDefaultClauseKind()); in writeOpenACCClause()
7942 writeSourceLocation(IC->getLParenLoc()); in writeOpenACCClause()
7943 AddStmt(const_cast<Expr*>(IC->getConditionExpr())); in writeOpenACCClause()
7948 writeSourceLocation(SC->getLParenLoc()); in writeOpenACCClause()
7949 writeBool(SC->hasConditionExpr()); in writeOpenACCClause()
7950 if (SC->hasConditionExpr()) in writeOpenACCClause()
7951 AddStmt(const_cast<Expr*>(SC->getConditionExpr())); in writeOpenACCClause()
7956 writeSourceLocation(NGC->getLParenLoc()); in writeOpenACCClause()
7957 writeUInt32(NGC->getIntExprs().size()); in writeOpenACCClause()
7958 for (Expr *E : NGC->getIntExprs()) in writeOpenACCClause()
7964 writeSourceLocation(NWC->getLParenLoc()); in writeOpenACCClause()
7965 AddStmt(const_cast<Expr*>(NWC->getIntExpr())); in writeOpenACCClause()
7970 writeSourceLocation(NWC->getLParenLoc()); in writeOpenACCClause()
7971 AddStmt(const_cast<Expr*>(NWC->getIntExpr())); in writeOpenACCClause()
7976 writeSourceLocation(PC->getLParenLoc()); in writeOpenACCClause()
7982 writeSourceLocation(FPC->getLParenLoc()); in writeOpenACCClause()
7988 writeSourceLocation(AC->getLParenLoc()); in writeOpenACCClause()
7994 writeSourceLocation(DPC->getLParenLoc()); in writeOpenACCClause()
8000 writeSourceLocation(NCC->getLParenLoc()); in writeOpenACCClause()
8006 writeSourceLocation(PC->getLParenLoc()); in writeOpenACCClause()
8014 writeSourceLocation(CC->getLParenLoc()); in writeOpenACCClause()
8022 writeSourceLocation(CIC->getLParenLoc()); in writeOpenACCClause()
8023 writeBool(CIC->isReadOnly()); in writeOpenACCClause()
8031 writeSourceLocation(COC->getLParenLoc()); in writeOpenACCClause()
8032 writeBool(COC->isZero()); in writeOpenACCClause()
8040 writeSourceLocation(CC->getLParenLoc()); in writeOpenACCClause()
8041 writeBool(CC->isZero()); in writeOpenACCClause()
8047 writeSourceLocation(AC->getLParenLoc()); in writeOpenACCClause()
8048 writeBool(AC->hasIntExpr()); in writeOpenACCClause()
8049 if (AC->hasIntExpr()) in writeOpenACCClause()
8050 AddStmt(const_cast<Expr*>(AC->getIntExpr())); in writeOpenACCClause()
8055 writeSourceLocation(WC->getLParenLoc()); in writeOpenACCClause()
8056 writeBool(WC->getDevNumExpr()); in writeOpenACCClause()
8057 if (Expr *DNE = WC->getDevNumExpr()) in writeOpenACCClause()
8059 writeSourceLocation(WC->getQueuesLoc()); in writeOpenACCClause()
8061 writeOpenACCIntExprList(WC->getQueueIdExprs()); in writeOpenACCClause()
8067 writeSourceLocation(DTC->getLParenLoc()); in writeOpenACCClause()
8068 writeUInt32(DTC->getArchitectures().size()); in writeOpenACCClause()
8069 for (const DeviceTypeArgument &Arg : DTC->getArchitectures()) { in writeOpenACCClause()
8079 writeSourceLocation(RC->getLParenLoc()); in writeOpenACCClause()
8080 writeEnum(RC->getReductionOp()); in writeOpenACCClause()