clang 20.0.0git
Classes | Public Types | Friends | List of all members
clang::ASTReader Class Reference

Reads an AST files chain containing the contents of a translation unit. More...

#include "clang/Serialization/ASTReader.h"

Inheritance diagram for clang::ASTReader:
Inheritance graph
[legend]

Classes

class  ListenerScope
 RAII object to temporarily add an AST callback listener. More...
 
class  ModuleDeclIterator
 

Public Types

enum  ASTReadResult {
  Success , Failure , Missing , OutOfDate ,
  VersionMismatch , ConfigurationMismatch , HadErrors
}
 The result of reading the control block of an AST file, which can fail for various reasons. More...
 
using RecordData = SmallVector< uint64_t, 64 >
 
using RecordDataImpl = SmallVectorImpl< uint64_t >
 
using ModuleFile = serialization::ModuleFile
 
using ModuleKind = serialization::ModuleKind
 
using ModuleManager = serialization::ModuleManager
 
using ModuleIterator = ModuleManager::ModuleIterator
 
using ModuleConstIterator = ModuleManager::ModuleConstIterator
 
using ModuleReverseIterator = ModuleManager::ModuleReverseIterator
 
- Public Types inherited from clang::ExternalASTSource
enum  ExtKind { EK_Always , EK_Never , EK_ReplyHazy }
 

Friends

class ASTDeclMerger
 Types of AST files.
 
class ASTDeclReader
 
class ASTIdentifierIterator
 
class ASTRecordReader
 
class ASTUnit
 
class ASTWriter
 
class PCHValidator
 
class serialization::reader::ASTIdentifierLookupTrait
 
class serialization::ReadMethodPoolVisitor
 
class TypeLocReader
 
class LocalDeclID
 

Sema-relevant special data

Fields containing data that is used for semantic analysis

enum  LoadFailureCapabilities {
  ARR_None = 0 , ARR_Missing = 0x1 , ARR_OutOfDate = 0x2 , ARR_VersionMismatch = 0x4 ,
  ARR_ConfigurationMismatch = 0x8 , ARR_TreatModuleWithErrorsAsOutOfDate = 0x10
}
 Flags that indicate what kind of AST loading failures the client of the AST reader can directly handle. More...
 
using RawLocEncoding = SourceLocationEncoding::RawLocEncoding
 
SmallVector< GlobalDeclID, 16 > PreloadedDeclIDs
 
SmallVector< std::pair< llvm::BitstreamCursor, serialization::ModuleFile * >, 8 > CommentsCursors
 Cursors for comments blocks.
 
SmallString< 0 > & getPathBuf ()
 Get the buffer for resolving paths.
 
DeclgetKeyDeclaration (Decl *D)
 Returns the first key declaration for the given declaration.
 
const DeclgetKeyDeclaration (const Decl *D)
 
template<typename Fn >
void forEachImportedKeyDecl (const Decl *D, Fn Visit)
 Run a callback on each imported key declaration of D.
 
const serialization::reader::DeclContextLookupTablegetLoadedLookupTables (DeclContext *Primary) const
 Get the loaded lookup tables for Primary, if any.
 
serialization::reader::LazySpecializationInfoLookupTablegetLoadedSpecializationsLookupTables (const Decl *D, bool IsPartial)
 Get the loaded specializations lookup tables for D, if any.
 
bool haveUnloadedSpecializations (const Decl *D) const
 If we have any unloaded specialization for D.
 
llvm::iterator_range< ModuleDeclIteratorgetModuleFileLevelDecls (ModuleFile &Mod)
 
 ASTReader (Preprocessor &PP, InMemoryModuleCache &ModuleCache, ASTContext *Context, const PCHContainerReader &PCHContainerRdr, ArrayRef< std::shared_ptr< ModuleFileExtension > > Extensions, StringRef isysroot="", DisableValidationForModuleKind DisableValidationKind=DisableValidationForModuleKind::None, bool AllowASTWithCompilerErrors=false, bool AllowConfigurationMismatch=false, bool ValidateSystemInputs=false, bool ValidateASTInputFilesContent=false, bool UseGlobalIndex=true, std::unique_ptr< llvm::Timer > ReadTimer={})
 Load the AST file and validate its contents against the given Preprocessor.
 
 ASTReader (const ASTReader &)=delete
 
ASTReaderoperator= (const ASTReader &)=delete
 
 ~ASTReader () override
 
SourceManagergetSourceManager () const
 
FileManagergetFileManager () const
 
DiagnosticsEnginegetDiags () const
 
ASTReadResult ReadAST (StringRef FileName, ModuleKind Type, SourceLocation ImportLoc, unsigned ClientLoadCapabilities, ModuleFile **NewLoadedModuleFile=nullptr)
 Load the AST file designated by the given file name.
 
void makeModuleVisible (Module *Mod, Module::NameVisibilityKind NameVisibility, SourceLocation ImportLoc)
 Make the entities in the given module and any of its (non-explicit) submodules visible to name lookup.
 
void makeNamesVisible (const HiddenNames &Names, Module *Owner)
 Make the names within this set of hidden names visible.
 
void mergeDefinitionVisibility (NamedDecl *Def, NamedDecl *MergedDef)
 Note that MergedDef is a redefinition of the canonical definition Def, so Def should be visible whenever MergedDef is.
 
std::unique_ptr< ASTReaderListenertakeListener ()
 Take the AST callbacks listener.
 
void setListener (std::unique_ptr< ASTReaderListener > Listener)
 Set the AST callbacks listener.
 
void addListener (std::unique_ptr< ASTReaderListener > L)
 Add an AST callback listener.
 
void setDeserializationListener (ASTDeserializationListener *Listener, bool TakeOwnership=false)
 Set the AST deserialization listener.
 
ASTDeserializationListenergetDeserializationListener ()
 Get the AST deserialization listener.
 
bool hasGlobalIndex () const
 Determine whether this AST reader has a global index.
 
GlobalModuleIndexgetGlobalIndex ()
 Return global module index.
 
void resetForReload ()
 Reset reader for a reload try.
 
bool loadGlobalIndex ()
 Attempts to load the global index.
 
bool isGlobalIndexUnavailable () const
 Determine whether we tried to load the global index, but failed, e.g., because it is out-of-date or does not exist.
 
void InitializeContext ()
 Initializes the ASTContext.
 
void UpdateSema ()
 Update the state of Sema after loading some additional modules.
 
void addInMemoryBuffer (StringRef &FileName, std::unique_ptr< llvm::MemoryBuffer > Buffer)
 Add in-memory (virtual file) buffer.
 
void finalizeForWriting ()
 Finalizes the AST reader's state before writing an AST file to disk.
 
ModuleManagergetModuleManager ()
 Retrieve the module manager.
 
const ModuleManagergetModuleManager () const
 
PreprocessorgetPreprocessor () const
 Retrieve the preprocessor.
 
StringRef getOriginalSourceFile ()
 Retrieve the name of the original source file name for the primary module file.
 
const std::string & getSuggestedPredefines ()
 Returns the suggested contents of the predefines buffer, which contains a (typically-empty) subset of the predefines build prior to including the precompiled header.
 
PreprocessedEntityReadPreprocessedEntity (unsigned Index) override
 Read a preallocated preprocessed entity from the external source.
 
std::pair< unsigned, unsignedfindPreprocessedEntitiesInRange (SourceRange Range) override
 Returns a pair of [Begin, End) indices of preallocated preprocessed entities that Range encompasses.
 
std::optional< boolisPreprocessedEntityInFileID (unsigned Index, FileID FID) override
 Optionally returns true or false if the preallocated preprocessed entity with index Index came from file FID.
 
SourceRange ReadSkippedRange (unsigned Index) override
 Read a preallocated skipped range from the external source.
 
HeaderFileInfo GetHeaderFileInfo (FileEntryRef FE) override
 Read the header file information for the given file entry.
 
void ReadPragmaDiagnosticMappings (DiagnosticsEngine &Diag)
 
unsigned getTotalNumSLocs () const
 Returns the number of source locations found in the chain.
 
unsigned getTotalNumIdentifiers () const
 Returns the number of identifiers found in the chain.
 
unsigned getTotalNumMacros () const
 Returns the number of macros found in the chain.
 
unsigned getTotalNumTypes () const
 Returns the number of types found in the chain.
 
unsigned getTotalNumDecls () const
 Returns the number of declarations found in the chain.
 
unsigned getTotalNumSubmodules () const
 Returns the number of submodules known.
 
unsigned getTotalNumSelectors () const
 Returns the number of selectors found in the chain.
 
unsigned getTotalNumPreprocessedEntities () const
 Returns the number of preprocessed entities known to the AST reader.
 
QualType GetType (serialization::TypeID ID)
 Resolve a type ID into a type, potentially building a new type.
 
QualType getLocalType (ModuleFile &F, serialization::LocalTypeID LocalID)
 Resolve a local type ID within a given AST file into a type.
 
serialization::TypeID getGlobalTypeID (ModuleFile &F, serialization::LocalTypeID LocalID) const
 Map a local type ID within a given AST file into a global type ID.
 
QualType readType (ModuleFile &F, const RecordData &Record, unsigned &Idx)
 Read a type from the current position in the given record, which was read from the given AST file.
 
GlobalDeclID getGlobalDeclID (ModuleFile &F, LocalDeclID LocalID) const
 Map from a local declaration ID within a given module to a global declaration ID.
 
bool isDeclIDFromModule (GlobalDeclID ID, ModuleFile &M) const
 Returns true if global DeclID ID originated from module M.
 
ModuleFilegetOwningModuleFile (const Decl *D) const
 Retrieve the module file that owns the given declaration, or NULL if the declaration is not from a module file.
 
ModuleFilegetOwningModuleFile (GlobalDeclID ID) const
 
SourceLocation getSourceLocationForDeclID (GlobalDeclID ID)
 Returns the source location for the decl ID.
 
DeclGetDecl (GlobalDeclID ID)
 Resolve a declaration ID into a declaration, potentially building a new declaration.
 
DeclGetExternalDecl (GlobalDeclID ID) override
 Resolve a declaration ID into a declaration, potentially building a new declaration.
 
DeclGetExistingDecl (GlobalDeclID ID)
 Resolve a declaration ID into a declaration.
 
DeclGetLocalDecl (ModuleFile &F, LocalDeclID LocalID)
 Reads a declaration with the given local ID in the given module.
 
template<typename T >
TGetLocalDeclAs (ModuleFile &F, LocalDeclID LocalID)
 Reads a declaration with the given local ID in the given module.
 
LocalDeclID mapGlobalIDToModuleFileGlobalID (ModuleFile &M, GlobalDeclID GlobalID)
 Map a global declaration ID into the declaration ID used to refer to this declaration within the given module fule.
 
GlobalDeclID ReadDeclID (ModuleFile &F, const RecordDataImpl &Record, unsigned &Idx)
 Reads a declaration ID from the given position in a record in the given module.
 
DeclReadDecl (ModuleFile &F, const RecordDataImpl &R, unsigned &I)
 Reads a declaration from the given position in a record in the given module.
 
template<typename T >
TReadDeclAs (ModuleFile &F, const RecordDataImpl &R, unsigned &I)
 Reads a declaration from the given position in a record in the given module.
 
void CompleteRedeclChain (const Decl *D) override
 If any redeclarations of D have been imported since it was last checked, this digs out those redeclarations and adds them to the redeclaration chain for D.
 
CXXBaseSpecifierGetExternalCXXBaseSpecifiers (uint64_t Offset) override
 Resolve the offset of a set of C++ base specifiers in the decl stream into an array of specifiers.
 
StmtGetExternalDeclStmt (uint64_t Offset) override
 Resolve the offset of a statement into a statement.
 
bool LoadExternalSpecializations (const Decl *D, bool OnlyPartial) override
 Load all the external specializations for the Decl.
 
bool LoadExternalSpecializations (const Decl *D, ArrayRef< TemplateArgument > TemplateArgs) override
 Load all the specializations for the Decl.
 
bool FindExternalVisibleDeclsByName (const DeclContext *DC, DeclarationName Name) override
 Finds all the visible declarations with a given name.
 
void FindExternalLexicalDecls (const DeclContext *DC, llvm::function_ref< bool(Decl::Kind)> IsKindWeWant, SmallVectorImpl< Decl * > &Decls) override
 Read all of the declarations lexically stored in a declaration context.
 
void FindFileRegionDecls (FileID File, unsigned Offset, unsigned Length, SmallVectorImpl< Decl * > &Decls) override
 Get the decls that are contained in a file in the Offset/Length range.
 
void StartedDeserializing () override
 Notify ASTReader that we started deserialization of a decl or type so until FinishedDeserializing is called there may be decls that are initializing.
 
void FinishedDeserializing () override
 Notify ASTReader that we finished the deserialization of a decl or type.
 
void StartTranslationUnit (ASTConsumer *Consumer) override
 Function that will be invoked when we begin parsing a new translation unit involving this external AST source.
 
void PrintStats () override
 Print some statistics about AST usage.
 
void dump ()
 Dump information about the AST reader to standard error.
 
void getMemoryBufferSizes (MemoryBufferSizes &sizes) const override
 Return the amount of memory used by memory buffers, breaking down by heap-backed versus mmap'ed memory.
 
void InitializeSema (Sema &S) override
 Initialize the semantic source with the Sema instance being used to perform semantic analysis on the abstract syntax tree.
 
void ForgetSema () override
 Inform the semantic consumer that Sema is no longer available.
 
IdentifierInfoget (StringRef Name) override
 Retrieve the IdentifierInfo for the named identifier.
 
IdentifierIteratorgetIdentifiers () override
 Retrieve an iterator into the set of all identifiers in all loaded AST files.
 
void ReadMethodPool (Selector Sel) override
 Load the contents of the global method pool for a given selector.
 
void updateOutOfDateSelector (Selector Sel) override
 Load the contents of the global method pool for a given selector if necessary.
 
void ReadKnownNamespaces (SmallVectorImpl< NamespaceDecl * > &Namespaces) override
 Load the set of namespaces that are known to the external source, which will be used during typo correction.
 
void ReadUndefinedButUsed (llvm::MapVector< NamedDecl *, SourceLocation > &Undefined) override
 Load the set of used but not defined functions or variables with internal linkage, or used but not defined internal functions.
 
void ReadMismatchingDeleteExpressions (llvm::MapVector< FieldDecl *, llvm::SmallVector< std::pair< SourceLocation, bool >, 4 > > &Exprs) override
 
void ReadTentativeDefinitions (SmallVectorImpl< VarDecl * > &TentativeDefs) override
 Read the set of tentative definitions known to the external Sema source.
 
void ReadUnusedFileScopedDecls (SmallVectorImpl< const DeclaratorDecl * > &Decls) override
 Read the set of unused file-scope declarations known to the external Sema source.
 
void ReadDelegatingConstructors (SmallVectorImpl< CXXConstructorDecl * > &Decls) override
 Read the set of delegating constructors known to the external Sema source.
 
void ReadExtVectorDecls (SmallVectorImpl< TypedefNameDecl * > &Decls) override
 Read the set of ext_vector type declarations known to the external Sema source.
 
void ReadUnusedLocalTypedefNameCandidates (llvm::SmallSetVector< const TypedefNameDecl *, 4 > &Decls) override
 Read the set of potentially unused typedefs known to the source.
 
void ReadDeclsToCheckForDeferredDiags (llvm::SmallSetVector< Decl *, 4 > &Decls) override
 Read the set of decls to be checked for deferred diags.
 
void ReadReferencedSelectors (SmallVectorImpl< std::pair< Selector, SourceLocation > > &Sels) override
 Read the set of referenced selectors known to the external Sema source.
 
void ReadWeakUndeclaredIdentifiers (SmallVectorImpl< std::pair< IdentifierInfo *, WeakInfo > > &WeakIDs) override
 Read the set of weak, undeclared identifiers known to the external Sema source.
 
void ReadUsedVTables (SmallVectorImpl< ExternalVTableUse > &VTables) override
 Read the set of used vtables known to the external Sema source.
 
void ReadPendingInstantiations (SmallVectorImpl< std::pair< ValueDecl *, SourceLocation > > &Pending) override
 Read the set of pending instantiations known to the external Sema source.
 
void ReadLateParsedTemplates (llvm::MapVector< const FunctionDecl *, std::unique_ptr< LateParsedTemplate > > &LPTMap) override
 Read the set of late parsed template functions for this source.
 
void AssignedLambdaNumbering (CXXRecordDecl *Lambda) override
 Notify the external source that a lambda was assigned a mangling number.
 
void LoadSelector (Selector Sel)
 Load a selector from disk, registering its ID if it exists.
 
void SetIdentifierInfo (serialization::IdentifierID ID, IdentifierInfo *II)
 
void SetGloballyVisibleDecls (IdentifierInfo *II, const SmallVectorImpl< GlobalDeclID > &DeclIDs, SmallVectorImpl< Decl * > *Decls=nullptr)
 Set the globally-visible declarations associated with the given identifier.
 
DiagnosticBuilder Diag (unsigned DiagID) const
 Report a diagnostic.
 
DiagnosticBuilder Diag (SourceLocation Loc, unsigned DiagID) const
 Report a diagnostic.
 
void runWithSufficientStackSpace (SourceLocation Loc, llvm::function_ref< void()> Fn)
 
IdentifierInfoDecodeIdentifierInfo (serialization::IdentifierID ID)
 
IdentifierInforeadIdentifier (ModuleFile &M, const RecordData &Record, unsigned &Idx)
 
IdentifierInfoGetIdentifier (serialization::IdentifierID ID) override
 Return the identifier associated with the given ID number.
 
IdentifierInfogetLocalIdentifier (ModuleFile &M, uint64_t LocalID)
 
serialization::IdentifierID getGlobalIdentifierID (ModuleFile &M, uint64_t LocalID)
 
void resolvePendingMacro (IdentifierInfo *II, const PendingMacroInfo &PMInfo)
 
MacroInfogetMacro (serialization::MacroID ID)
 Retrieve the macro with the given ID.
 
serialization::MacroID getGlobalMacroID (ModuleFile &M, unsigned LocalID)
 Retrieve the global macro ID corresponding to the given local ID within the given module file.
 
bool ReadSLocEntry (int ID) override
 Read the source location entry with index ID.
 
int getSLocEntryID (SourceLocation::UIntTy SLocOffset) override
 Get the index ID for the loaded SourceLocation offset.
 
llvm::Expected< SourceLocation::UIntTyreadSLocOffset (ModuleFile *F, unsigned Index)
 Try to read the offset of the SLocEntry at the given index in the given module file.
 
std::pair< SourceLocation, StringRef > getModuleImportLoc (int ID) override
 Retrieve the module import location and module name for the given source manager entry ID.
 
serialization::SubmoduleID getGlobalSubmoduleID (ModuleFile &M, unsigned LocalID) const
 Retrieve the global submodule ID given a module and its local ID number.
 
ModulegetSubmodule (serialization::SubmoduleID GlobalID)
 Retrieve the submodule that corresponds to a global submodule ID.
 
ModulegetModule (unsigned ID) override
 Retrieve the module that corresponds to the given module ID.
 
ModuleFilegetLocalModuleFile (ModuleFile &M, unsigned ID) const
 Retrieve the module file with a given local ID within the specified ModuleFile.
 
unsigned getModuleFileID (ModuleFile *M)
 Get an ID for the given module file.
 
std::optional< ASTSourceDescriptorgetSourceDescriptor (unsigned ID) override
 Return a descriptor for the corresponding module.
 
ExtKind hasExternalDefinitions (const Decl *D) override
 
Selector getLocalSelector (ModuleFile &M, unsigned LocalID)
 Retrieve a selector from the given module with its local ID number.
 
Selector DecodeSelector (serialization::SelectorID Idx)
 
Selector GetExternalSelector (serialization::SelectorID ID) override
 Resolve a selector ID into a selector.
 
uint32_t GetNumExternalSelectors () override
 Returns the number of selectors known to the external AST source.
 
Selector ReadSelector (ModuleFile &M, const RecordData &Record, unsigned &Idx)
 
serialization::SelectorID getGlobalSelectorID (ModuleFile &M, unsigned LocalID) const
 Retrieve the global selector ID that corresponds to this the local selector ID in a given module.
 
CXXCtorInitializer ** GetExternalCXXCtorInitializers (uint64_t Offset) override
 Read the contents of a CXXCtorInitializer array.
 
Sema::AlignPackInfo ReadAlignPackInfo (uint32_t Raw) const
 Read a AlignPackInfo from raw form.
 
std::pair< SourceLocation, unsignedReadUntranslatedSourceLocation (RawLocEncoding Raw, LocSeq *Seq=nullptr) const
 Read a source location from raw form and return it in its originating module file's source location space.
 
SourceLocation ReadSourceLocation (ModuleFile &MF, RawLocEncoding Raw, LocSeq *Seq=nullptr) const
 Read a source location from raw form.
 
SourceLocation TranslateSourceLocation (ModuleFile &ModuleFile, SourceLocation Loc) const
 Translate a source location from another module file's source location space into ours.
 
SourceLocation ReadSourceLocation (ModuleFile &ModuleFile, const RecordDataImpl &Record, unsigned &Idx, LocSeq *Seq=nullptr)
 Read a source location.
 
FileID ReadFileID (ModuleFile &F, const RecordDataImpl &Record, unsigned &Idx) const
 Read a FileID.
 
FileID TranslateFileID (ModuleFile &F, FileID FID) const
 Translate a FileID from another module file's FileID space into ours.
 
SourceRange ReadSourceRange (ModuleFile &F, const RecordData &Record, unsigned &Idx, LocSeq *Seq=nullptr)
 Read a source range.
 
std::string ReadPath (ModuleFile &F, const RecordData &Record, unsigned &Idx)
 
std::string ReadPath (StringRef BaseDirectory, const RecordData &Record, unsigned &Idx)
 
std::string ReadPathBlob (StringRef BaseDirectory, const RecordData &Record, unsigned &Idx, StringRef &Blob)
 
CXXTemporaryReadCXXTemporary (ModuleFile &F, const RecordData &Record, unsigned &Idx)
 
StmtReadStmt (ModuleFile &F)
 Reads a statement.
 
ExprReadExpr (ModuleFile &F)
 Reads an expression.
 
StmtReadSubStmt ()
 Reads a sub-statement operand during statement reading.
 
ExprReadSubExpr ()
 Reads a sub-expression operand during statement reading.
 
Token ReadToken (ModuleFile &M, const RecordDataImpl &Record, unsigned &Idx)
 Reads a token out of a record.
 
MacroInfoReadMacroRecord (ModuleFile &F, uint64_t Offset)
 Reads the macro record located at the given offset.
 
serialization::PreprocessedEntityID getGlobalPreprocessedEntityID (ModuleFile &M, unsigned LocalID) const
 Determine the global preprocessed entity ID that corresponds to the given local ID within the given module.
 
void addPendingMacro (IdentifierInfo *II, ModuleFile *M, uint32_t MacroDirectivesOffset)
 Add a macro to deserialize its macro directive history.
 
void ReadDefinedMacros () override
 Read the set of macros defined by this external macro source.
 
void updateOutOfDateIdentifier (const IdentifierInfo &II) override
 Update an out-of-date identifier.
 
void markIdentifierUpToDate (const IdentifierInfo *II)
 Note that this identifier is up-to-date.
 
void completeVisibleDeclsMap (const DeclContext *DC) override
 Load all external visible decls in the given DeclContext.
 
ASTContextgetContext ()
 Retrieve the AST context that this AST reader supplements.
 
SemagetSema ()
 Retrieve the semantic analysis object used to analyze the translation unit in which the precompiled header is being imported.
 
IdentifierResolvergetIdResolver ()
 Get the identifier resolver used for name lookup / updates in the translation unit scope.
 
IdentifierTablegetIdentifierTable ()
 Retrieve the identifier table associated with the preprocessor.
 
void RecordSwitchCaseID (SwitchCase *SC, unsigned ID)
 Record that the given ID maps to the given switch-case statement.
 
SwitchCasegetSwitchCaseWithID (unsigned ID)
 Retrieve the switch-case statement with the given ID.
 
void ClearSwitchCaseIDs ()
 
void ReadComments () override
 Loads comments ranges.
 
void visitInputFileInfos (serialization::ModuleFile &MF, bool IncludeSystem, llvm::function_ref< void(const serialization::InputFileInfo &IFI, bool IsSystem)> Visitor)
 Visit all the input file infos of the given module file.
 
void visitInputFiles (serialization::ModuleFile &MF, bool IncludeSystem, bool Complain, llvm::function_ref< void(const serialization::InputFile &IF, bool isSystem)> Visitor)
 Visit all the input files of the given module file.
 
void visitTopLevelModuleMaps (serialization::ModuleFile &MF, llvm::function_ref< void(FileEntryRef)> Visitor)
 Visit all the top-level module maps loaded when building the given module file.
 
bool isProcessingUpdateRecords ()
 
static TemporarilyOwnedStringRef ResolveImportedPath (SmallString< 0 > &Buf, StringRef Path, ModuleFile &ModF)
 Resolve Path in the context of module file M.
 
static TemporarilyOwnedStringRef ResolveImportedPath (SmallString< 0 > &Buf, StringRef Path, StringRef Prefix)
 Resolve Path in the context of the Prefix directory.
 
static std::string ResolveImportedPathAndAllocate (SmallString< 0 > &Buf, StringRef Path, ModuleFile &ModF)
 Resolve Path in the context of module file M.
 
static std::string ResolveImportedPathAndAllocate (SmallString< 0 > &Buf, StringRef Path, StringRef Prefix)
 Resolve Path in the context of the Prefix directory.
 
static std::string getOriginalSourceFile (const std::string &ASTFileName, FileManager &FileMgr, const PCHContainerReader &PCHContainerRdr, DiagnosticsEngine &Diags)
 Retrieve the name of the original source file name directly from the AST file, without actually loading the AST file.
 
static bool readASTFileControlBlock (StringRef Filename, FileManager &FileMgr, const InMemoryModuleCache &ModuleCache, const PCHContainerReader &PCHContainerRdr, bool FindModuleFileExtensions, ASTReaderListener &Listener, bool ValidateDiagnosticOptions, unsigned ClientLoadCapabilities=ARR_ConfigurationMismatch|ARR_OutOfDate)
 Read the control block for the named AST file.
 
static bool isAcceptableASTFile (StringRef Filename, FileManager &FileMgr, const InMemoryModuleCache &ModuleCache, const PCHContainerReader &PCHContainerRdr, const LangOptions &LangOpts, const TargetOptions &TargetOpts, const PreprocessorOptions &PPOpts, StringRef ExistingModuleCachePath, bool RequireStrictOptionMatches=false)
 Determine whether the given AST file is acceptable to load into a translation unit with the given language and target options.
 
static llvm::Error ReadBlockAbbrevs (llvm::BitstreamCursor &Cursor, unsigned BlockID, uint64_t *StartOfBlockOffset=nullptr)
 ReadBlockAbbrevs - Enter a subblock of the specified BlockID with the specified cursor.
 
static llvm::BitVector ReadBitVector (const RecordData &Record, const StringRef Blob)
 
static std::string ReadString (const RecordDataImpl &Record, unsigned &Idx)
 
static StringRef ReadStringBlob (const RecordDataImpl &Record, unsigned &Idx, StringRef &Blob)
 
static VersionTuple ReadVersionTuple (const RecordData &Record, unsigned &Idx)
 Read a version tuple.
 

Additional Inherited Members

- Public Member Functions inherited from clang::ExternalPreprocessorSource
virtual ~ExternalPreprocessorSource ()
 
virtual void ReadDefinedMacros ()=0
 Read the set of macros defined by this external macro source.
 
virtual void updateOutOfDateIdentifier (const IdentifierInfo &II)=0
 Update an out-of-date identifier.
 
virtual IdentifierInfoGetIdentifier (uint64_t ID)=0
 Return the identifier associated with the given ID number.
 
virtual ModulegetModule (unsigned ModuleID)=0
 Map a module ID to a module.
 
- Public Member Functions inherited from clang::ExternalPreprocessingRecordSource
virtual ~ExternalPreprocessingRecordSource ()
 
virtual PreprocessedEntityReadPreprocessedEntity (unsigned Index)=0
 Read a preallocated preprocessed entity from the external source.
 
virtual std::pair< unsigned, unsignedfindPreprocessedEntitiesInRange (SourceRange Range)=0
 Returns a pair of [Begin, End) indices of preallocated preprocessed entities that Range encompasses.
 
virtual std::optional< boolisPreprocessedEntityInFileID (unsigned Index, FileID FID)
 Optionally returns true or false if the preallocated preprocessed entity with index Index came from file FID.
 
virtual SourceRange ReadSkippedRange (unsigned Index)=0
 Read a preallocated skipped range from the external source.
 
- Public Member Functions inherited from clang::ExternalHeaderFileInfoSource
virtual ~ExternalHeaderFileInfoSource ()
 
virtual HeaderFileInfo GetHeaderFileInfo (FileEntryRef FE)=0
 Retrieve the header file information for the given file entry.
 
- Public Member Functions inherited from clang::ExternalSemaSource
 ExternalSemaSource ()=default
 
 ~ExternalSemaSource () override
 
virtual void InitializeSema (Sema &S)
 Initialize the semantic source with the Sema instance being used to perform semantic analysis on the abstract syntax tree.
 
virtual void ForgetSema ()
 Inform the semantic consumer that Sema is no longer available.
 
virtual void ReadMethodPool (Selector Sel)
 Load the contents of the global method pool for a given selector.
 
virtual void updateOutOfDateSelector (Selector Sel)
 Load the contents of the global method pool for a given selector if necessary.
 
virtual void ReadKnownNamespaces (SmallVectorImpl< NamespaceDecl * > &Namespaces)
 Load the set of namespaces that are known to the external source, which will be used during typo correction.
 
virtual void ReadUndefinedButUsed (llvm::MapVector< NamedDecl *, SourceLocation > &Undefined)
 Load the set of used but not defined functions or variables with internal linkage, or used but not defined internal functions.
 
virtual void ReadMismatchingDeleteExpressions (llvm::MapVector< FieldDecl *, llvm::SmallVector< std::pair< SourceLocation, bool >, 4 > > &)
 
virtual bool LookupUnqualified (LookupResult &R, Scope *S)
 Do last resort, unqualified lookup on a LookupResult that Sema cannot find.
 
virtual void ReadTentativeDefinitions (SmallVectorImpl< VarDecl * > &TentativeDefs)
 Read the set of tentative definitions known to the external Sema source.
 
virtual void ReadUnusedFileScopedDecls (SmallVectorImpl< const DeclaratorDecl * > &Decls)
 Read the set of unused file-scope declarations known to the external Sema source.
 
virtual void ReadDelegatingConstructors (SmallVectorImpl< CXXConstructorDecl * > &Decls)
 Read the set of delegating constructors known to the external Sema source.
 
virtual void ReadExtVectorDecls (SmallVectorImpl< TypedefNameDecl * > &Decls)
 Read the set of ext_vector type declarations known to the external Sema source.
 
virtual void ReadUnusedLocalTypedefNameCandidates (llvm::SmallSetVector< const TypedefNameDecl *, 4 > &Decls)
 Read the set of potentially unused typedefs known to the source.
 
virtual void ReadReferencedSelectors (SmallVectorImpl< std::pair< Selector, SourceLocation > > &Sels)
 Read the set of referenced selectors known to the external Sema source.
 
virtual void ReadWeakUndeclaredIdentifiers (SmallVectorImpl< std::pair< IdentifierInfo *, WeakInfo > > &WI)
 Read the set of weak, undeclared identifiers known to the external Sema source.
 
virtual void ReadUsedVTables (SmallVectorImpl< ExternalVTableUse > &VTables)
 Read the set of used vtables known to the external Sema source.
 
virtual void ReadPendingInstantiations (SmallVectorImpl< std::pair< ValueDecl *, SourceLocation > > &Pending)
 Read the set of pending instantiations known to the external Sema source.
 
virtual void ReadLateParsedTemplates (llvm::MapVector< const FunctionDecl *, std::unique_ptr< LateParsedTemplate > > &LPTMap)
 Read the set of late parsed template functions for this source.
 
virtual void ReadDeclsToCheckForDeferredDiags (llvm::SmallSetVector< Decl *, 4 > &Decls)
 Read the set of decls to be checked for deferred diags.
 
virtual TypoCorrection CorrectTypo (const DeclarationNameInfo &Typo, int LookupKind, Scope *S, CXXScopeSpec *SS, CorrectionCandidateCallback &CCC, DeclContext *MemberContext, bool EnteringContext, const ObjCObjectPointerType *OPT)
 Try to "correct" a typo in the source code by finding visible declarations whose names are similar to the name that was present in the source code.
 
virtual bool MaybeDiagnoseMissingCompleteType (SourceLocation Loc, QualType T)
 Produces a diagnostic note if the external source contains a complete definition for T.
 
virtual void AssignedLambdaNumbering (CXXRecordDecl *Lambda)
 Notify the external source that a lambda was assigned a mangling number.
 
bool isA (const void *ClassID) const override
 LLVM-style RTTI.
 
- Public Member Functions inherited from clang::ExternalASTSource
 ExternalASTSource ()=default
 
virtual ~ExternalASTSource ()
 
uint32_t getGeneration () const
 Get the current generation of this AST source.
 
virtual DeclGetExternalDecl (GlobalDeclID ID)
 Resolve a declaration ID into a declaration, potentially building a new declaration.
 
virtual Selector GetExternalSelector (uint32_t ID)
 Resolve a selector ID into a selector.
 
virtual uint32_t GetNumExternalSelectors ()
 Returns the number of selectors known to the external AST source.
 
virtual StmtGetExternalDeclStmt (uint64_t Offset)
 Resolve the offset of a statement in the decl stream into a statement.
 
virtual CXXCtorInitializer ** GetExternalCXXCtorInitializers (uint64_t Offset)
 Resolve the offset of a set of C++ constructor initializers in the decl stream into an array of initializers.
 
virtual CXXBaseSpecifierGetExternalCXXBaseSpecifiers (uint64_t Offset)
 Resolve the offset of a set of C++ base specifiers in the decl stream into an array of specifiers.
 
virtual void updateOutOfDateIdentifier (const IdentifierInfo &II)
 Update an out-of-date identifier.
 
virtual bool FindExternalVisibleDeclsByName (const DeclContext *DC, DeclarationName Name)
 Find all declarations with the given name in the given context, and add them to the context by calling SetExternalVisibleDeclsForName or SetNoExternalVisibleDeclsForName.
 
virtual bool LoadExternalSpecializations (const Decl *D, bool OnlyPartial)
 Load all the external specializations for the Decl.
 
virtual bool LoadExternalSpecializations (const Decl *D, ArrayRef< TemplateArgument > TemplateArgs)
 Load all the specializations for the Decl.
 
virtual void completeVisibleDeclsMap (const DeclContext *DC)
 Ensures that the table of all visible declarations inside this context is up to date.
 
virtual ModulegetModule (unsigned ID)
 Retrieve the module that corresponds to the given module ID.
 
virtual std::optional< ASTSourceDescriptorgetSourceDescriptor (unsigned ID)
 Return a descriptor for the corresponding module, if one exists.
 
virtual ExtKind hasExternalDefinitions (const Decl *D)
 
virtual void FindExternalLexicalDecls (const DeclContext *DC, llvm::function_ref< bool(Decl::Kind)> IsKindWeWant, SmallVectorImpl< Decl * > &Result)
 Finds all declarations lexically contained within the given DeclContext, after applying an optional filter predicate.
 
void FindExternalLexicalDecls (const DeclContext *DC, SmallVectorImpl< Decl * > &Result)
 Finds all declarations lexically contained within the given DeclContext.
 
virtual void FindFileRegionDecls (FileID File, unsigned Offset, unsigned Length, SmallVectorImpl< Decl * > &Decls)
 Get the decls that are contained in a file in the Offset/Length range.
 
virtual void CompleteRedeclChain (const Decl *D)
 Gives the external AST source an opportunity to complete the redeclaration chain for a declaration.
 
virtual void CompleteType (TagDecl *Tag)
 Gives the external AST source an opportunity to complete an incomplete type.
 
virtual void CompleteType (ObjCInterfaceDecl *Class)
 Gives the external AST source an opportunity to complete an incomplete Objective-C class.
 
virtual void ReadComments ()
 Loads comment ranges.
 
virtual void StartedDeserializing ()
 Notify ExternalASTSource that we started deserialization of a decl or type so until FinishedDeserializing is called there may be decls that are initializing.
 
virtual void FinishedDeserializing ()
 Notify ExternalASTSource that we finished the deserialization of a decl or type.
 
virtual void StartTranslationUnit (ASTConsumer *Consumer)
 Function that will be invoked when we begin parsing a new translation unit involving this external AST source.
 
virtual void PrintStats ()
 Print any statistics that have been gathered regarding the external AST source.
 
virtual bool layoutRecordType (const RecordDecl *Record, uint64_t &Size, uint64_t &Alignment, llvm::DenseMap< const FieldDecl *, uint64_t > &FieldOffsets, llvm::DenseMap< const CXXRecordDecl *, CharUnits > &BaseOffsets, llvm::DenseMap< const CXXRecordDecl *, CharUnits > &VirtualBaseOffsets)
 Perform layout on the given record.
 
MemoryBufferSizes getMemoryBufferSizes () const
 Return the amount of memory used by memory buffers, breaking down by heap-backed versus mmap'ed memory.
 
virtual void getMemoryBufferSizes (MemoryBufferSizes &sizes) const
 
- Public Member Functions inherited from clang::IdentifierInfoLookup
virtual ~IdentifierInfoLookup ()
 
virtual IdentifierInfoget (StringRef Name)=0
 Return the IdentifierInfo for the specified named identifier.
 
virtual IdentifierIteratorgetIdentifiers ()
 Retrieve an iterator into the set of all identifiers known to this identifier lookup source.
 
- Public Member Functions inherited from clang::ExternalSLocEntrySource
virtual ~ExternalSLocEntrySource ()
 
virtual bool ReadSLocEntry (int ID)=0
 Read the source location entry with index ID, which will always be less than -1.
 
virtual int getSLocEntryID (SourceLocation::UIntTy SLocOffset)=0
 Get the index ID for the loaded SourceLocation offset.
 
virtual std::pair< SourceLocation, StringRef > getModuleImportLoc (int ID)=0
 Retrieve the module import location and name for the given ID, if in fact it was loaded from a module (rather than, say, a precompiled header).
 
- Static Public Member Functions inherited from clang::ExternalSemaSource
static bool classof (const ExternalASTSource *S)
 
- Static Public Member Functions inherited from clang::ExternalASTSource
static bool classof (const ExternalASTSource *S)
 
- Protected Member Functions inherited from clang::ExternalASTSource
uint32_t incrementGeneration (ASTContext &C)
 Increment the current generation.
 
- Static Protected Member Functions inherited from clang::ExternalASTSource
static DeclContextLookupResult SetExternalVisibleDeclsForName (const DeclContext *DC, DeclarationName Name, ArrayRef< NamedDecl * > Decls)
 
static DeclContextLookupResult SetNoExternalVisibleDeclsForName (const DeclContext *DC, DeclarationName Name)
 

Detailed Description

Reads an AST files chain containing the contents of a translation unit.

The ASTReader class reads bitstreams (produced by the ASTWriter class) containing the serialized representation of a given abstract syntax tree and its supporting data structures. An instance of the ASTReader can be attached to an ASTContext object, which will provide access to the contents of the AST files.

The AST reader provides lazy de-serialization of declarations, as required when traversing the AST. Only those AST nodes that are actually required will be de-serialized.

Definition at line 376 of file ASTReader.h.

Member Typedef Documentation

◆ ModuleConstIterator

Definition at line 433 of file ASTReader.h.

◆ ModuleFile

Definition at line 429 of file ASTReader.h.

◆ ModuleIterator

Definition at line 432 of file ASTReader.h.

◆ ModuleKind

Definition at line 430 of file ASTReader.h.

◆ ModuleManager

Definition at line 431 of file ASTReader.h.

◆ ModuleReverseIterator

Definition at line 434 of file ASTReader.h.

◆ RawLocEncoding

Definition at line 2359 of file ASTReader.h.

◆ RecordData

Definition at line 398 of file ASTReader.h.

◆ RecordDataImpl

Definition at line 399 of file ASTReader.h.

Member Enumeration Documentation

◆ ASTReadResult

The result of reading the control block of an AST file, which can fail for various reasons.

Enumerator
Success 

The control block was read successfully.

Aside from failures, the AST file is safe to read into the current context.

Failure 

The AST file itself appears corrupted.

Missing 

The AST file was missing.

OutOfDate 

The AST file is out-of-date relative to its input files, and needs to be regenerated.

VersionMismatch 

The AST file was written by a different version of Clang.

ConfigurationMismatch 

The AST file was written with a different language/target configuration.

HadErrors 

The AST file has errors.

Definition at line 403 of file ASTReader.h.

◆ LoadFailureCapabilities

Flags that indicate what kind of AST loading failures the client of the AST reader can directly handle.

When a client states that it can handle a particular kind of failure, the AST reader will not emit errors when producing that kind of failure.

Enumerator
ARR_None 

The client can't handle any AST loading failures.

ARR_Missing 

The client can handle an AST file that cannot load because it is missing.

ARR_OutOfDate 

The client can handle an AST file that cannot load because it is out-of-date relative to its input files.

ARR_VersionMismatch 

The client can handle an AST file that cannot load because it was built with a different version of Clang.

ARR_ConfigurationMismatch 

The client can handle an AST file that cannot load because it's compiled configuration doesn't match that of the context it was loaded into.

ARR_TreatModuleWithErrorsAsOutOfDate 

If a module file is marked with errors treat it as out-of-date so the caller can rebuild it.

Definition at line 1726 of file ASTReader.h.

Constructor & Destructor Documentation

◆ ASTReader() [1/2]

ASTReader::ASTReader ( Preprocessor PP,
InMemoryModuleCache ModuleCache,
ASTContext Context,
const PCHContainerReader PCHContainerRdr,
ArrayRef< std::shared_ptr< ModuleFileExtension > >  Extensions,
StringRef  isysroot = "",
DisableValidationForModuleKind  DisableValidationKind = DisableValidationForModuleKind::None,
bool  AllowASTWithCompilerErrors = false,
bool  AllowConfigurationMismatch = false,
bool  ValidateSystemInputs = false,
bool  ValidateASTInputFilesContent = false,
bool  UseGlobalIndex = true,
std::unique_ptr< llvm::Timer >  ReadTimer = {} 
)

Load the AST file and validate its contents against the given Preprocessor.

Parameters
PPthe preprocessor associated with the context in which this precompiled header will be loaded.
Contextthe AST context that this precompiled header will be loaded into, if any.
PCHContainerRdrthe PCHContainerOperations to use for loading and creating modules.
Extensionsthe list of module file extensions that can be loaded from the AST files.
isysrootIf non-NULL, the system include path specified by the user. This is only used with relocatable PCH files. If non-NULL, a relocatable PCH file will use the default path "/".
DisableValidationKindIf set, the AST reader will suppress most of its regular consistency checking, allowing the use of precompiled headers and module files that cannot be determined to be compatible.
AllowASTWithCompilerErrorsIf true, the AST reader will accept an AST file the was created out of an AST with compiler errors, otherwise it will reject it.
AllowConfigurationMismatchIf true, the AST reader will not check for configuration differences between the AST file and the invocation.
ValidateSystemInputsIf true, the AST reader will validate system input files in addition to user input files. This is only meaningful if DisableValidation is false.
UseGlobalIndexIf true, the AST reader will try to load and use the global module index.
ReadTimerIf non-null, a timer used to track the time spent deserializing.

Definition at line 10712 of file ASTReader.cpp.

References bool, clang::cast(), clang::DiagnosticsEngine::Report(), and clang::SourceManager::setExternalSLocEntrySource().

◆ ASTReader() [2/2]

clang::ASTReader::ASTReader ( const ASTReader )
delete

◆ ~ASTReader()

ASTReader::~ASTReader ( )
override

Definition at line 10754 of file ASTReader.cpp.

Member Function Documentation

◆ addInMemoryBuffer()

void clang::ASTReader::addInMemoryBuffer ( StringRef &  FileName,
std::unique_ptr< llvm::MemoryBuffer >  Buffer 
)
inline

Add in-memory (virtual file) buffer.

Definition at line 1877 of file ASTReader.h.

References clang::serialization::ModuleManager::addInMemoryBuffer(), and clang::FileName.

◆ addListener()

void clang::ASTReader::addListener ( std::unique_ptr< ASTReaderListener L)
inline

Add an AST callback listener.

Takes ownership of L.

Definition at line 1811 of file ASTReader.h.

Referenced by clang::DependencyCollector::attachToASTReader(), and clang::ModuleDependencyCollector::attachToASTReader().

◆ addPendingMacro()

void ASTReader::addPendingMacro ( IdentifierInfo II,
ModuleFile M,
uint32_t  MacroDirectivesOffset 
)

Add a macro to deserialize its macro directive history.

Parameters
IIThe name of the macro.
MThe module file.
MacroDirectivesOffsetOffset of the serialized macro directive history.

Definition at line 2239 of file ASTReader.cpp.

◆ AssignedLambdaNumbering()

void ASTReader::AssignedLambdaNumbering ( CXXRecordDecl Lambda)
overridevirtual

Notify the external source that a lambda was assigned a mangling number.

This enables the external source to track the correspondence between lambdas and mangling numbers if necessary.

Reimplemented from clang::ExternalSemaSource.

Definition at line 9215 of file ASTReader.cpp.

References clang::Decl::getCanonicalDecl(), clang::Redeclarable< decl_type >::getFirstDecl(), clang::CXXRecordDecl::getLambdaContextDecl(), clang::CXXRecordDecl::getLambdaIndexInContext(), Iter, Previous, and clang::Redeclarable< decl_type >::setPreviousDecl().

◆ ClearSwitchCaseIDs()

void ASTReader::ClearSwitchCaseIDs ( )

Definition at line 9909 of file ASTReader.cpp.

◆ CompleteRedeclChain()

void ASTReader::CompleteRedeclChain ( const Decl D)
overridevirtual

If any redeclarations of D have been imported since it was last checked, this digs out those redeclarations and adds them to the redeclaration chain for D.

Reimplemented from clang::ExternalASTSource.

Definition at line 7719 of file ASTReader.cpp.

References clang::CPlusPlus, D, clang::Decl::getDeclContext(), clang::Decl::getKind(), clang::Decl::getLexicalDeclContext(), clang::DeclContext::getRedeclContext(), clang::isa(), clang::RedeclarableTemplateDecl::loadLazySpecializationsImpl(), clang::DeclContext::lookup(), and clang::serialization::needsAnonymousDeclarationNumber().

◆ completeVisibleDeclsMap()

void ASTReader::completeVisibleDeclsMap ( const DeclContext DC)
overridevirtual

Load all external visible decls in the given DeclContext.

Reimplemented from clang::ExternalASTSource.

Definition at line 8398 of file ASTReader.cpp.

References E, clang::NamedDecl::getDeclName(), and clang::DeclContext::hasExternalVisibleStorage().

◆ DecodeIdentifierInfo()

IdentifierInfo * ASTReader::DecodeIdentifierInfo ( serialization::IdentifierID  ID)

◆ DecodeSelector()

Selector ASTReader::DecodeSelector ( serialization::SelectorID  Idx)

◆ Diag() [1/2]

DiagnosticBuilder ASTReader::Diag ( SourceLocation  Loc,
unsigned  DiagID 
) const

Report a diagnostic.

Definition at line 9874 of file ASTReader.cpp.

References Loc, and clang::DiagnosticsEngine::Report().

◆ Diag() [2/2]

DiagnosticBuilder ASTReader::Diag ( unsigned  DiagID) const

Report a diagnostic.

Definition at line 9870 of file ASTReader.cpp.

References Diag().

Referenced by clang::ASTDeclReader::checkMultipleDefinitionInNamedModules(), Diag(), and clang::ASTDeclReader::VisitObjCIvarDecl().

◆ dump()

LLVM_DUMP_METHOD void ASTReader::dump ( )

Dump information about the AST reader to standard error.

Definition at line 8583 of file ASTReader.cpp.

References clang::serialization::ModuleFile::dump(), and dumpModuleIDMap().

◆ finalizeForWriting()

void ASTReader::finalizeForWriting ( )

Finalizes the AST reader's state before writing an AST file to disk.

This operation may undo temporary state in the AST that should not be emitted.

Definition at line 5369 of file ASTReader.cpp.

◆ FindExternalLexicalDecls()

void ASTReader::FindExternalLexicalDecls ( const DeclContext DC,
llvm::function_ref< bool(Decl::Kind)>  IsKindWeWant,
SmallVectorImpl< Decl * > &  Decls 
)
overridevirtual

Read all of the declarations lexically stored in a declaration context.

Parameters
DCThe declaration context whose declarations will be read.
IsKindWeWantA predicate indicating which declaration kinds we are interested in.
DeclsVector that will contain the declarations loaded from the external source. The caller is responsible for merging these declarations with any declarations already stored in the declaration context.

Reimplemented from clang::ExternalASTSource.

Definition at line 8248 of file ASTReader.cpp.

References D, clang::LocalDeclID::get(), clang::Decl::getKind(), clang::DeclContext::isDeclInLexicalTraversal(), and clang::NUM_PREDEF_DECL_IDS.

◆ FindExternalVisibleDeclsByName()

bool ASTReader::FindExternalVisibleDeclsByName ( const DeclContext DC,
DeclarationName  Name 
)
overridevirtual

Finds all the visible declarations with a given name.

The current implementation of this method just loads the entire lookup table as unmaterialized references.

Reimplemented from clang::ExternalASTSource.

Definition at line 8370 of file ASTReader.cpp.

References clang::Found, clang::NamedDecl::getDeclName(), clang::DeclContext::getPrimaryContext(), and clang::DeclContext::hasExternalVisibleStorage().

◆ FindFileRegionDecls()

void ASTReader::FindFileRegionDecls ( FileID  File,
unsigned  Offset,
unsigned  Length,
SmallVectorImpl< Decl * > &  Decls 
)
overridevirtual

Get the decls that are contained in a file in the Offset/Length range.

Length can be 0 to indicate a point at Offset instead of a range.

Reimplemented from clang::ExternalASTSource.

Definition at line 8326 of file ASTReader.cpp.

References clang::File, clang::LocalDeclID::get(), clang::SourceLocation::getLocWithOffset(), and SM.

◆ findPreprocessedEntitiesInRange()

std::pair< unsigned, unsigned > ASTReader::findPreprocessedEntitiesInRange ( SourceRange  Range)
overridevirtual

Returns a pair of [Begin, End) indices of preallocated preprocessed entities that Range encompasses.

Returns a pair of [Begin, End) indices of preallocated preprocessed entities that.

  • Range encompasses.

Implements clang::ExternalPreprocessingRecordSource.

Definition at line 6621 of file ASTReader.cpp.

References clang::SourceRange::getBegin(), clang::SourceRange::getEnd(), clang::SourceRange::isInvalid(), and Range.

◆ FinishedDeserializing()

void ASTReader::FinishedDeserializing ( )
overridevirtual

◆ forEachImportedKeyDecl()

template<typename Fn >
void clang::ASTReader::forEachImportedKeyDecl ( const Decl D,
Fn  Visit 
)
inline

Run a callback on each imported key declaration of D.

Definition at line 1432 of file ASTReader.h.

References D, and GetExistingDecl().

◆ ForgetSema()

void clang::ASTReader::ForgetSema ( )
inlineoverridevirtual

Inform the semantic consumer that Sema is no longer available.

Reimplemented from clang::ExternalSemaSource.

Definition at line 2180 of file ASTReader.h.

◆ get()

IdentifierInfo * ASTReader::get ( StringRef  Name)
overridevirtual

Retrieve the IdentifierInfo for the named identifier.

This routine builds a new IdentifierInfo for the given identifier. If any declarations with this name are visible from translation unit scope, their declarations will be deserialized and introduced into the declaration chain of the identifier.

Implements clang::IdentifierInfoLookup.

Definition at line 8758 of file ASTReader.cpp.

◆ getContext()

ASTContext & clang::ASTReader::getContext ( )
inline

Retrieve the AST context that this AST reader supplements.

Definition at line 2501 of file ASTReader.h.

Referenced by clang::ASTDeclReader::attachPreviousDecl(), clang::ASTDeclReader::checkMultipleDefinitionInNamedModules(), FinishedDeserializing(), clang::ASTRecordReader::getContext(), clang::index::indexModuleFile(), clang::ASTDeclMerger::MergeDefinitionData(), clang::ASTDeclMerger::mergeLambda(), clang::ASTDeclReader::mergeMergeable(), clang::ASTDeclReader::mergeRedeclarable(), ReadComments(), ReadCXXTemporary(), clang::ASTDeclReader::ReadFunctionDefinition(), clang::ASTDeclReader::ReadObjCTypeParamList(), clang::ASTDeclReader::ReadVarDeclInit(), clang::ASTDeclReader::UpdateDecl(), clang::ASTDeclReader::VisitBlockDecl(), clang::ASTDeclReader::VisitClassTemplateDecl(), clang::ASTDeclReader::VisitClassTemplateSpecializationDeclImpl(), clang::ASTDeclReader::VisitCXXMethodDecl(), clang::ASTDeclReader::VisitCXXRecordDeclImpl(), clang::ASTDeclReader::VisitDecl(), clang::ASTDeclReader::VisitDeclaratorDecl(), clang::ASTDeclReader::VisitEnumConstantDecl(), clang::ASTDeclReader::VisitEnumDecl(), clang::ASTDeclReader::VisitFieldDecl(), clang::ASTDeclReader::VisitFriendTemplateDecl(), clang::ASTDeclReader::VisitFunctionDecl(), clang::ASTDeclReader::VisitIndirectFieldDecl(), clang::ASTDeclReader::VisitMSGuidDecl(), clang::ASTDeclReader::VisitNonTypeTemplateParmDecl(), clang::ASTDeclReader::VisitObjCCategoryDecl(), clang::ASTDeclReader::VisitObjCMethodDecl(), clang::ASTDeclReader::VisitRedeclarableTemplateDecl(), clang::ASTDeclReader::VisitTagDecl(), clang::ASTDeclReader::VisitTemplateParamObjectDecl(), clang::ASTDeclReader::VisitTemplateTemplateParmDecl(), clang::ASTDeclReader::VisitTemplateTypeParmDecl(), clang::ASTDeclReader::VisitUnnamedGlobalConstantDecl(), clang::ASTDeclReader::VisitUsingDecl(), clang::ASTDeclReader::VisitUsingEnumDecl(), clang::ASTDeclReader::VisitUsingShadowDecl(), clang::ASTDeclReader::VisitVarDeclImpl(), and clang::ASTDeclReader::VisitVarTemplateSpecializationDeclImpl().

◆ GetDecl()

Decl * ASTReader::GetDecl ( GlobalDeclID  ID)

◆ getDeserializationListener()

ASTDeserializationListener * clang::ASTReader::getDeserializationListener ( )
inline

Get the AST deserialization listener.

Definition at line 1848 of file ASTReader.h.

◆ getDiags()

DiagnosticsEngine & clang::ASTReader::getDiags ( ) const
inline

Definition at line 1719 of file ASTReader.h.

Referenced by clang::TestModuleFileExtension::createExtensionReader().

◆ GetExistingDecl()

Decl * ASTReader::GetExistingDecl ( GlobalDeclID  ID)

Resolve a declaration ID into a declaration.

Return 0 if it's not been loaded yet.

Definition at line 8061 of file ASTReader.cpp.

References D, clang::Decl::getCanonicalDecl(), and clang::NUM_PREDEF_DECL_IDS.

Referenced by forEachImportedKeyDecl(), and getKeyDeclaration().

◆ GetExternalCXXBaseSpecifiers()

CXXBaseSpecifier * ASTReader::GetExternalCXXBaseSpecifiers ( uint64_t  Offset)
overridevirtual

Resolve the offset of a set of C++ base specifiers in the decl stream into an array of specifiers.

The default implementation of this method is a no-op.

Reimplemented from clang::ExternalASTSource.

Definition at line 7823 of file ASTReader.cpp.

References clang::ASTContext::Allocate(), D, clang::serialization::DECL_CXX_BASE_SPECIFIERS, and Loc.

◆ GetExternalCXXCtorInitializers()

CXXCtorInitializer ** ASTReader::GetExternalCXXCtorInitializers ( uint64_t  Offset)
overridevirtual

Read the contents of a CXXCtorInitializer array.

Reimplemented from clang::ExternalASTSource.

Definition at line 7791 of file ASTReader.cpp.

References D, clang::serialization::DECL_CXX_CTOR_INITIALIZERS, and Loc.

◆ GetExternalDecl()

Decl * ASTReader::GetExternalDecl ( GlobalDeclID  ID)
overridevirtual

Resolve a declaration ID into a declaration, potentially building a new declaration.

This method only needs to be implemented if the AST source ever passes back decl sets as VisibleDeclaration objects.

The default implementation of this method is a no-op.

Reimplemented from clang::ExternalASTSource.

Definition at line 7717 of file ASTReader.cpp.

◆ GetExternalDeclStmt()

Stmt * ASTReader::GetExternalDeclStmt ( uint64_t  Offset)
overridevirtual

Resolve the offset of a statement into a statement.

This operation will read a new statement from the external source each time it is called, and is meant to be used via a LazyOffsetPtr (which is used by Decls for the body of functions, etc).

Reimplemented from clang::ExternalASTSource.

Definition at line 8152 of file ASTReader.cpp.

References D, and Loc.

◆ GetExternalSelector()

Selector ASTReader::GetExternalSelector ( serialization::SelectorID  ID)
overridevirtual

Resolve a selector ID into a selector.

This operation only needs to be implemented if the AST source returns non-zero for GetNumKnownSelectors().

The default implementation of this method is a no-op.

Reimplemented from clang::ExternalASTSource.

Definition at line 9536 of file ASTReader.cpp.

References DecodeSelector().

◆ getFileManager()

FileManager & clang::ASTReader::getFileManager ( ) const
inline

◆ getGlobalDeclID()

GlobalDeclID ASTReader::getGlobalDeclID ( ModuleFile F,
LocalDeclID  LocalID 
) const

◆ getGlobalIdentifierID()

IdentifierID ASTReader::getGlobalIdentifierID ( ModuleFile M,
uint64_t  LocalID 
)

◆ getGlobalIndex()

GlobalModuleIndex * clang::ASTReader::getGlobalIndex ( )
inline

Return global module index.

Definition at line 1856 of file ASTReader.h.

◆ getGlobalMacroID()

MacroID ASTReader::getGlobalMacroID ( ModuleFile M,
unsigned  LocalID 
)

◆ getGlobalPreprocessedEntityID()

PreprocessedEntityID ASTReader::getGlobalPreprocessedEntityID ( ModuleFile M,
unsigned  LocalID 
) const

◆ getGlobalSelectorID()

serialization::SelectorID ASTReader::getGlobalSelectorID ( ModuleFile M,
unsigned  LocalID 
) const

◆ getGlobalSubmoduleID()

serialization::SubmoduleID ASTReader::getGlobalSubmoduleID ( ModuleFile M,
unsigned  LocalID 
) const

◆ getGlobalTypeID()

serialization::TypeID ASTReader::getGlobalTypeID ( ModuleFile F,
serialization::LocalTypeID  LocalID 
) const

◆ GetHeaderFileInfo()

HeaderFileInfo ASTReader::GetHeaderFileInfo ( FileEntryRef  FE)
overridevirtual

Read the header file information for the given file entry.

Implements clang::ExternalHeaderFileInfoSource.

Definition at line 6684 of file ASTReader.cpp.

◆ GetIdentifier()

IdentifierInfo * clang::ASTReader::GetIdentifier ( serialization::IdentifierID  ID)
inlineoverridevirtual

Return the identifier associated with the given ID number.

The ID 0 is associated with the NULL identifier.

Implements clang::ExternalPreprocessorSource.

Definition at line 2273 of file ASTReader.h.

References DecodeIdentifierInfo().

◆ getIdentifiers()

IdentifierIterator * ASTReader::getIdentifiers ( )
overridevirtual

Retrieve an iterator into the set of all identifiers in all loaded AST files.

Reimplemented from clang::IdentifierInfoLookup.

Definition at line 8883 of file ASTReader.cpp.

References ASTIdentifierIterator, and loadGlobalIndex().

◆ getIdentifierTable()

IdentifierTable & ASTReader::getIdentifierTable ( )

Retrieve the identifier table associated with the preprocessor.

Definition at line 9891 of file ASTReader.cpp.

References clang::Preprocessor::getIdentifierTable().

◆ getIdResolver()

IdentifierResolver & ASTReader::getIdResolver ( )

Get the identifier resolver used for name lookup / updates in the translation unit scope.

We have one of these even if we don't have a Sema object.

Definition at line 10759 of file ASTReader.cpp.

References clang::Sema::IdResolver.

◆ getKeyDeclaration() [1/2]

const Decl * clang::ASTReader::getKeyDeclaration ( const Decl D)
inline

Definition at line 1426 of file ASTReader.h.

References D, and getKeyDeclaration().

◆ getKeyDeclaration() [2/2]

Decl * clang::ASTReader::getKeyDeclaration ( Decl D)
inline

Returns the first key declaration for the given declaration.

This is one that is formerly-canonical (or still canonical) and whose module did not import any other key declaration of the entity.

Definition at line 1416 of file ASTReader.h.

References D, and GetExistingDecl().

Referenced by getKeyDeclaration().

◆ getLoadedLookupTables()

const serialization::reader::DeclContextLookupTable * ASTReader::getLoadedLookupTables ( DeclContext Primary) const

Get the loaded lookup tables for Primary, if any.

Definition at line 8422 of file ASTReader.cpp.

◆ getLoadedSpecializationsLookupTables()

serialization::reader::LazySpecializationInfoLookupTable * ASTReader::getLoadedSpecializationsLookupTables ( const Decl D,
bool  IsPartial 
)

Get the loaded specializations lookup tables for D, if any.

Definition at line 8428 of file ASTReader.cpp.

References D, and clang::Decl::isCanonicalDecl().

◆ GetLocalDecl()

Decl * clang::ASTReader::GetLocalDecl ( ModuleFile F,
LocalDeclID  LocalID 
)
inline

Reads a declaration with the given local ID in the given module.

Definition at line 2049 of file ASTReader.h.

References GetDecl(), and getGlobalDeclID().

Referenced by clang::ASTRecordReader::GetLocalDeclAs(), and GetLocalDeclAs().

◆ GetLocalDeclAs()

template<typename T >
T * clang::ASTReader::GetLocalDeclAs ( ModuleFile F,
LocalDeclID  LocalID 
)
inline

Reads a declaration with the given local ID in the given module.

Returns
The requested declaration, casted to the given return type.

Definition at line 2056 of file ASTReader.h.

References GetLocalDecl().

◆ getLocalIdentifier()

IdentifierInfo * ASTReader::getLocalIdentifier ( ModuleFile M,
uint64_t  LocalID 
)

Definition at line 9354 of file ASTReader.cpp.

References DecodeIdentifierInfo(), and getGlobalIdentifierID().

◆ getLocalModuleFile()

ModuleFile * ASTReader::getLocalModuleFile ( ModuleFile M,
unsigned  ID 
) const

◆ getLocalSelector()

Selector ASTReader::getLocalSelector ( ModuleFile M,
unsigned  LocalID 
)

Retrieve a selector from the given module with its local ID number.

Definition at line 9507 of file ASTReader.cpp.

References DecodeSelector(), and getGlobalSelectorID().

Referenced by ReadSelector().

◆ getLocalType()

QualType ASTReader::getLocalType ( ModuleFile F,
serialization::LocalTypeID  LocalID 
)

Resolve a local type ID within a given AST file into a type.

Definition at line 7634 of file ASTReader.cpp.

Referenced by readType().

◆ getMacro()

MacroInfo * ASTReader::getMacro ( serialization::MacroID  ID)

◆ getMemoryBufferSizes()

void ASTReader::getMemoryBufferSizes ( MemoryBufferSizes sizes) const
overridevirtual

Return the amount of memory used by memory buffers, breaking down by heap-backed versus mmap'ed memory.

Reimplemented from clang::ExternalASTSource.

Definition at line 8600 of file ASTReader.cpp.

References bytes(), clang::ExternalASTSource::MemoryBufferSizes::malloc_bytes, and clang::ExternalASTSource::MemoryBufferSizes::mmap_bytes.

◆ getModule()

Module * ASTReader::getModule ( unsigned  ID)
overridevirtual

Retrieve the module that corresponds to the given module ID.

Note: overrides method in ExternalASTSource

Implements clang::ExternalPreprocessorSource.

Definition at line 9448 of file ASTReader.cpp.

References getSubmodule().

Referenced by clang::DumpModuleInfoAction::ExecuteAction().

◆ getModuleFileID()

unsigned ASTReader::getModuleFileID ( ModuleFile M)

◆ getModuleFileLevelDecls()

llvm::iterator_range< ASTReader::ModuleDeclIterator > ASTReader::getModuleFileLevelDecls ( ModuleFile Mod)

◆ getModuleImportLoc()

std::pair< SourceLocation, StringRef > ASTReader::getModuleImportLoc ( int  ID)
overridevirtual

Retrieve the module import location and module name for the given source manager entry ID.

Implements clang::ExternalSLocEntrySource.

Definition at line 1868 of file ASTReader.cpp.

References clang::serialization::ModuleFile::ImportLoc, clang::serialization::ModuleFile::isModule(), and clang::serialization::ModuleFile::ModuleName.

◆ getModuleManager() [1/2]

ModuleManager & clang::ASTReader::getModuleManager ( )
inline

◆ getModuleManager() [2/2]

const ModuleManager & clang::ASTReader::getModuleManager ( ) const
inline

Definition at line 1891 of file ASTReader.h.

◆ GetNumExternalSelectors()

uint32_t ASTReader::GetNumExternalSelectors ( )
overridevirtual

Returns the number of selectors known to the external AST source.

The default implementation of this method is a no-op.

Reimplemented from clang::ExternalASTSource.

Definition at line 9540 of file ASTReader.cpp.

References getTotalNumSelectors().

◆ getOriginalSourceFile() [1/2]

StringRef clang::ASTReader::getOriginalSourceFile ( )
inline

Retrieve the name of the original source file name for the primary module file.

Definition at line 1898 of file ASTReader.h.

References clang::serialization::ModuleManager::getPrimaryModule(), and clang::serialization::ModuleFile::OriginalSourceFileName.

Referenced by AddImplicitIncludePCH(), and createInvocationForMigration().

◆ getOriginalSourceFile() [2/2]

std::string ASTReader::getOriginalSourceFile ( const std::string &  ASTFileName,
FileManager FileMgr,
const PCHContainerReader PCHContainerRdr,
DiagnosticsEngine Diags 
)
static

Retrieve the name of the original source file name directly from the AST file, without actually loading the AST file.

Definition at line 5422 of file ASTReader.cpp.

References clang::serialization::CONTROL_BLOCK_ID, doesntStartWithASTFileMagic(), clang::PCHContainerReader::ExtractPCH(), clang::FileManager::getBufferForFile(), clang::serialization::ORIGINAL_FILE, clang::DiagnosticsEngine::Report(), and SkipCursorToBlock().

◆ getOwningModuleFile() [1/2]

ModuleFile * ASTReader::getOwningModuleFile ( const Decl D) const

Retrieve the module file that owns the given declaration, or NULL if the declaration is not from a module file.

Definition at line 7908 of file ASTReader.cpp.

References D, clang::Decl::getGlobalID(), and clang::Decl::isFromASTFile().

Referenced by clang::ASTDeclWriter::CollectFirstDeclFromEachModule(), and ReadLateParsedTemplates().

◆ getOwningModuleFile() [2/2]

ModuleFile * ASTReader::getOwningModuleFile ( GlobalDeclID  ID) const

Definition at line 7897 of file ASTReader.cpp.

References clang::NUM_PREDEF_DECL_IDS.

◆ getPathBuf()

SmallString< 0 > & clang::ASTReader::getPathBuf ( )
inline

Get the buffer for resolving paths.

Definition at line 1393 of file ASTReader.h.

◆ getPreprocessor()

Preprocessor & clang::ASTReader::getPreprocessor ( ) const
inline

◆ getSema()

Sema * clang::ASTReader::getSema ( )
inline

Retrieve the semantic analysis object used to analyze the translation unit in which the precompiled header is being imported.

Definition at line 2513 of file ASTReader.h.

Referenced by ReadMethodPool().

◆ getSLocEntryID()

int ASTReader::getSLocEntryID ( SourceLocation::UIntTy  SLocOffset)
overridevirtual

Get the index ID for the loaded SourceLocation offset.

Implements clang::ExternalSLocEntrySource.

Definition at line 1648 of file ASTReader.cpp.

References clang::Invalid, and clang::serialization::ModuleFile::LocalNumSLocEntries.

◆ getSourceDescriptor()

std::optional< ASTSourceDescriptor > ASTReader::getSourceDescriptor ( unsigned  ID)
overridevirtual

◆ getSourceLocationForDeclID()

SourceLocation ASTReader::getSourceLocationForDeclID ( GlobalDeclID  ID)

Returns the source location for the decl ID.

Definition at line 7915 of file ASTReader.cpp.

References D, clang::Decl::getLocation(), Loc, and clang::NUM_PREDEF_DECL_IDS.

◆ getSourceManager()

SourceManager & clang::ASTReader::getSourceManager ( ) const
inline

Definition at line 1717 of file ASTReader.h.

◆ getSubmodule()

Module * ASTReader::getSubmodule ( serialization::SubmoduleID  GlobalID)

Retrieve the submodule that corresponds to a global submodule ID.

Definition at line 9434 of file ASTReader.cpp.

References clang::serialization::NUM_PREDEF_SUBMODULE_IDS.

Referenced by getModule(), getSourceDescriptor(), clang::ASTRecordReader::getSubmodule(), clang::ASTDeclReader::UpdateDecl(), and clang::ASTDeclReader::VisitDecl().

◆ getSuggestedPredefines()

const std::string & clang::ASTReader::getSuggestedPredefines ( )
inline

Returns the suggested contents of the predefines buffer, which contains a (typically-empty) subset of the predefines build prior to including the precompiled header.

Definition at line 1934 of file ASTReader.h.

◆ getSwitchCaseWithID()

SwitchCase * ASTReader::getSwitchCaseWithID ( unsigned  ID)

Retrieve the switch-case statement with the given ID.

Definition at line 9904 of file ASTReader.cpp.

Referenced by clang::ASTRecordReader::getSwitchCaseWithID().

◆ getTotalNumDecls()

unsigned clang::ASTReader::getTotalNumDecls ( ) const
inline

Returns the number of declarations found in the chain.

Definition at line 1981 of file ASTReader.h.

◆ getTotalNumIdentifiers()

unsigned clang::ASTReader::getTotalNumIdentifiers ( ) const
inline

Returns the number of identifiers found in the chain.

Definition at line 1966 of file ASTReader.h.

◆ getTotalNumMacros()

unsigned clang::ASTReader::getTotalNumMacros ( ) const
inline

Returns the number of macros found in the chain.

Definition at line 1971 of file ASTReader.h.

◆ getTotalNumPreprocessedEntities()

unsigned clang::ASTReader::getTotalNumPreprocessedEntities ( ) const
inline

Returns the number of preprocessed entities known to the AST reader.

Definition at line 1997 of file ASTReader.h.

References clang::Result.

◆ getTotalNumSelectors()

unsigned clang::ASTReader::getTotalNumSelectors ( ) const
inline

Returns the number of selectors found in the chain.

Definition at line 1991 of file ASTReader.h.

Referenced by GetNumExternalSelectors().

◆ getTotalNumSLocs()

unsigned clang::ASTReader::getTotalNumSLocs ( ) const
inline

Returns the number of source locations found in the chain.

Definition at line 1961 of file ASTReader.h.

◆ getTotalNumSubmodules()

unsigned clang::ASTReader::getTotalNumSubmodules ( ) const
inline

Returns the number of submodules known.

Definition at line 1986 of file ASTReader.h.

Referenced by clang::DumpModuleInfoAction::ExecuteAction().

◆ getTotalNumTypes()

unsigned clang::ASTReader::getTotalNumTypes ( ) const
inline

Returns the number of types found in the chain.

Definition at line 1976 of file ASTReader.h.

◆ GetType()

QualType ASTReader::GetType ( serialization::TypeID  ID)

Resolve a type ID into a type, potentially building a new type.

Definition at line 7331 of file ASTReader.cpp.

References clang::ASTContext::AccumTy, clang::ASTContext::ARCUnbridgedCastTy, clang::ASTContext::ArraySectionTy, clang::ASTContext::BFloat16Ty, clang::ASTContext::BoolTy, clang::ASTContext::BoundMemberTy, clang::ASTContext::BuiltinFnTy, clang::ASTContext::Char16Ty, clang::ASTContext::Char32Ty, clang::ASTContext::Char8Ty, clang::ASTContext::CharTy, clang::ASTContext::DependentTy, clang::ASTContext::DoubleTy, clang::Qualifiers::FastMask, clang::ASTContext::Float128Ty, clang::ASTContext::Float16Ty, clang::ASTContext::FloatTy, clang::ASTContext::FractTy, clang::serialization::TypeIdx::fromTypeID(), clang::ASTContext::getAutoDeductType(), clang::ASTContext::getAutoRRefDeductType(), getIndexForTypeID(), clang::ASTContext::HalfTy, clang::ASTContext::Ibm128Ty, clang::ASTContext::IncompleteMatrixIdxTy, clang::ASTContext::Int128Ty, clang::ASTContext::IntTy, isPredefinedType(), clang::ASTContext::LongAccumTy, clang::ASTContext::LongDoubleTy, clang::ASTContext::LongFractTy, clang::ASTContext::LongLongTy, clang::ASTContext::LongTy, clang::ASTContext::NullPtrTy, clang::ASTContext::ObjCBuiltinClassTy, clang::ASTContext::ObjCBuiltinIdTy, clang::ASTContext::ObjCBuiltinSelTy, clang::ASTContext::OCLClkEventTy, clang::ASTContext::OCLEventTy, clang::ASTContext::OCLQueueTy, clang::ASTContext::OCLReserveIDTy, clang::ASTContext::OCLSamplerTy, clang::ASTContext::OMPArrayShapingTy, clang::ASTContext::OMPIteratorTy, clang::ASTContext::OverloadTy, clang::serialization::PREDEF_TYPE_ACCUM_ID, clang::serialization::PREDEF_TYPE_ARC_UNBRIDGED_CAST, clang::serialization::PREDEF_TYPE_ARRAY_SECTION, clang::serialization::PREDEF_TYPE_AUTO_DEDUCT, clang::serialization::PREDEF_TYPE_AUTO_RREF_DEDUCT, clang::serialization::PREDEF_TYPE_BFLOAT16_ID, clang::serialization::PREDEF_TYPE_BOOL_ID, clang::serialization::PREDEF_TYPE_BOUND_MEMBER, clang::serialization::PREDEF_TYPE_BUILTIN_FN, clang::serialization::PREDEF_TYPE_CHAR16_ID, clang::serialization::PREDEF_TYPE_CHAR32_ID, clang::serialization::PREDEF_TYPE_CHAR8_ID, clang::serialization::PREDEF_TYPE_CHAR_S_ID, clang::serialization::PREDEF_TYPE_CHAR_U_ID, clang::serialization::PREDEF_TYPE_CLK_EVENT_ID, clang::serialization::PREDEF_TYPE_DEPENDENT_ID, clang::serialization::PREDEF_TYPE_DOUBLE_ID, clang::serialization::PREDEF_TYPE_EVENT_ID, clang::serialization::PREDEF_TYPE_FLOAT128_ID, clang::serialization::PREDEF_TYPE_FLOAT16_ID, clang::serialization::PREDEF_TYPE_FLOAT_ID, clang::serialization::PREDEF_TYPE_FRACT_ID, clang::serialization::PREDEF_TYPE_HALF_ID, clang::serialization::PREDEF_TYPE_IBM128_ID, clang::serialization::PREDEF_TYPE_INCOMPLETE_MATRIX_IDX, clang::serialization::PREDEF_TYPE_INT128_ID, clang::serialization::PREDEF_TYPE_INT_ID, clang::serialization::PREDEF_TYPE_LAST_ID, clang::serialization::PREDEF_TYPE_LONG_ACCUM_ID, clang::serialization::PREDEF_TYPE_LONG_FRACT_ID, clang::serialization::PREDEF_TYPE_LONG_ID, clang::serialization::PREDEF_TYPE_LONGDOUBLE_ID, clang::serialization::PREDEF_TYPE_LONGLONG_ID, clang::serialization::PREDEF_TYPE_NULL_ID, clang::serialization::PREDEF_TYPE_NULLPTR_ID, clang::serialization::PREDEF_TYPE_OBJC_CLASS, clang::serialization::PREDEF_TYPE_OBJC_ID, clang::serialization::PREDEF_TYPE_OBJC_SEL, clang::serialization::PREDEF_TYPE_OMP_ARRAY_SHAPING, clang::serialization::PREDEF_TYPE_OMP_ITERATOR, clang::serialization::PREDEF_TYPE_OVERLOAD_ID, clang::serialization::PREDEF_TYPE_PSEUDO_OBJECT, clang::serialization::PREDEF_TYPE_QUEUE_ID, clang::serialization::PREDEF_TYPE_RESERVE_ID_ID, clang::serialization::PREDEF_TYPE_SAMPLER_ID, clang::serialization::PREDEF_TYPE_SAT_ACCUM_ID, clang::serialization::PREDEF_TYPE_SAT_FRACT_ID, clang::serialization::PREDEF_TYPE_SAT_LONG_ACCUM_ID, clang::serialization::PREDEF_TYPE_SAT_LONG_FRACT_ID, clang::serialization::PREDEF_TYPE_SAT_SHORT_ACCUM_ID, clang::serialization::PREDEF_TYPE_SAT_SHORT_FRACT_ID, clang::serialization::PREDEF_TYPE_SAT_UACCUM_ID, clang::serialization::PREDEF_TYPE_SAT_UFRACT_ID, clang::serialization::PREDEF_TYPE_SAT_ULONG_ACCUM_ID, clang::serialization::PREDEF_TYPE_SAT_ULONG_FRACT_ID, clang::serialization::PREDEF_TYPE_SAT_USHORT_ACCUM_ID, clang::serialization::PREDEF_TYPE_SAT_USHORT_FRACT_ID, clang::serialization::PREDEF_TYPE_SCHAR_ID, clang::serialization::PREDEF_TYPE_SHORT_ACCUM_ID, clang::serialization::PREDEF_TYPE_SHORT_FRACT_ID, clang::serialization::PREDEF_TYPE_SHORT_ID, clang::serialization::PREDEF_TYPE_UACCUM_ID, clang::serialization::PREDEF_TYPE_UCHAR_ID, clang::serialization::PREDEF_TYPE_UFRACT_ID, clang::serialization::PREDEF_TYPE_UINT128_ID, clang::serialization::PREDEF_TYPE_UINT_ID, clang::serialization::PREDEF_TYPE_ULONG_ACCUM_ID, clang::serialization::PREDEF_TYPE_ULONG_FRACT_ID, clang::serialization::PREDEF_TYPE_ULONG_ID, clang::serialization::PREDEF_TYPE_ULONGLONG_ID, clang::serialization::PREDEF_TYPE_UNKNOWN_ANY, clang::serialization::PREDEF_TYPE_UNRESOLVED_TEMPLATE, clang::serialization::PREDEF_TYPE_USHORT_ACCUM_ID, clang::serialization::PREDEF_TYPE_USHORT_FRACT_ID, clang::serialization::PREDEF_TYPE_USHORT_ID, clang::serialization::PREDEF_TYPE_VOID_ID, clang::serialization::PREDEF_TYPE_WCHAR_ID, clang::ASTContext::PseudoObjectTy, clang::ASTContext::SatAccumTy, clang::ASTContext::SatFractTy, clang::ASTContext::SatLongAccumTy, clang::ASTContext::SatLongFractTy, clang::ASTContext::SatShortAccumTy, clang::ASTContext::SatShortFractTy, clang::ASTContext::SatUnsignedAccumTy, clang::ASTContext::SatUnsignedFractTy, clang::ASTContext::SatUnsignedLongAccumTy, clang::ASTContext::SatUnsignedLongFractTy, clang::ASTContext::SatUnsignedShortAccumTy, clang::ASTContext::SatUnsignedShortFractTy, clang::ASTContext::ShortAccumTy, clang::ASTContext::ShortFractTy, clang::ASTContext::ShortTy, clang::ASTContext::SignedCharTy, clang::T, clang::ASTContext::UnknownAnyTy, clang::ASTContext::UnresolvedTemplateTy, clang::ASTContext::UnsignedAccumTy, clang::ASTContext::UnsignedCharTy, clang::ASTContext::UnsignedFractTy, clang::ASTContext::UnsignedInt128Ty, clang::ASTContext::UnsignedIntTy, clang::ASTContext::UnsignedLongAccumTy, clang::ASTContext::UnsignedLongFractTy, clang::ASTContext::UnsignedLongLongTy, clang::ASTContext::UnsignedLongTy, clang::ASTContext::UnsignedShortAccumTy, clang::ASTContext::UnsignedShortFractTy, clang::ASTContext::UnsignedShortTy, clang::ASTContext::VoidTy, and clang::ASTContext::WCharTy.

Referenced by clang::ASTDeclReader::Visit(), clang::ASTDeclReader::VisitFunctionDecl(), and clang::ASTDeclReader::VisitVarDeclImpl().

◆ hasExternalDefinitions()

ExternalASTSource::ExtKind ASTReader::hasExternalDefinitions ( const Decl D)
overridevirtual

◆ hasGlobalIndex()

bool clang::ASTReader::hasGlobalIndex ( ) const
inline

Determine whether this AST reader has a global index.

Definition at line 1853 of file ASTReader.h.

◆ haveUnloadedSpecializations()

bool ASTReader::haveUnloadedSpecializations ( const Decl D) const

If we have any unloaded specialization for D.

Definition at line 8436 of file ASTReader.cpp.

References D, and clang::Decl::isCanonicalDecl().

Referenced by clang::ASTDeclWriter::AddTemplateSpecializations().

◆ InitializeContext()

void ASTReader::InitializeContext ( )

◆ InitializeSema()

void ASTReader::InitializeSema ( Sema S)
overridevirtual

Initialize the semantic source with the Sema instance being used to perform semantic analysis on the abstract syntax tree.

Reimplemented from clang::ExternalSemaSource.

Definition at line 8616 of file ASTReader.cpp.

References clang::Sema::addExternalSource(), clang::FPOptionsOverride::applyOverrides(), D, and clang::FPOptionsOverride::getFromOpaqueInt().

◆ isAcceptableASTFile()

bool ASTReader::isAcceptableASTFile ( StringRef  Filename,
FileManager FileMgr,
const InMemoryModuleCache ModuleCache,
const PCHContainerReader PCHContainerRdr,
const LangOptions LangOpts,
const TargetOptions TargetOpts,
const PreprocessorOptions PPOpts,
StringRef  ExistingModuleCachePath,
bool  RequireStrictOptionMatches = false 
)
static

Determine whether the given AST file is acceptable to load into a translation unit with the given language and target options.

Definition at line 5841 of file ASTReader.cpp.

References Filename.

Referenced by clang::FrontendAction::BeginSourceFile().

◆ isDeclIDFromModule()

bool ASTReader::isDeclIDFromModule ( GlobalDeclID  ID,
ModuleFile M 
) const

Returns true if global DeclID ID originated from module M.

Definition at line 7888 of file ASTReader.cpp.

References clang::serialization::ModuleFile::Index, and clang::NUM_PREDEF_DECL_IDS.

◆ isGlobalIndexUnavailable()

bool ASTReader::isGlobalIndexUnavailable ( ) const

Determine whether we tried to load the global index, but failed, e.g., because it is out-of-date or does not exist.

Definition at line 4517 of file ASTReader.cpp.

◆ isPreprocessedEntityInFileID()

std::optional< bool > ASTReader::isPreprocessedEntityInFileID ( unsigned  Index,
FileID  FID 
)
overridevirtual

Optionally returns true or false if the preallocated preprocessed entity with index Index came from file FID.

Optionally returns true or false if the preallocated preprocessed entity with index.

  • Index came from file
  • FID.

Reimplemented from clang::ExternalPreprocessingRecordSource.

Definition at line 6634 of file ASTReader.cpp.

References clang::serialization::PPEntityOffset::getBegin(), clang::FileID::isInvalid(), clang::SourceLocation::isInvalid(), Loc, and clang::serialization::ModuleFile::PreprocessedEntityOffsets.

◆ isProcessingUpdateRecords()

bool clang::ASTReader::isProcessingUpdateRecords ( )
inline

Definition at line 2558 of file ASTReader.h.

◆ LoadExternalSpecializations() [1/2]

bool ASTReader::LoadExternalSpecializations ( const Decl D,
ArrayRef< TemplateArgument TemplateArgs 
)
overridevirtual

Load all the specializations for the Decl.

Parameters
Dwith the same template args specified by
TemplateArgs.

Return true if any new specializations get loaded. Return false otherwise.

Reimplemented from clang::ExternalASTSource.

Definition at line 8236 of file ASTReader.cpp.

References D.

◆ LoadExternalSpecializations() [2/2]

bool ASTReader::LoadExternalSpecializations ( const Decl D,
bool  OnlyPartial 
)
overridevirtual

Load all the external specializations for the Decl.

Parameters
Dif
OnlyPartialis false. Otherwise, load all the external partial specializations for the
D.

Return true if any new specializations get loaded. Return false otherwise.

Reimplemented from clang::ExternalASTSource.

Definition at line 8197 of file ASTReader.cpp.

References D.

◆ loadGlobalIndex()

bool ASTReader::loadGlobalIndex ( )

Attempts to load the global index.

Returns
true if loading the global index has failed for any reason.

Definition at line 4492 of file ASTReader.cpp.

References clang::GlobalModuleIndex::readIndex(), and clang::Result.

Referenced by getIdentifiers().

◆ LoadSelector()

void ASTReader::LoadSelector ( Selector  Sel)

Load a selector from disk, registering its ID if it exists.

Definition at line 9245 of file ASTReader.cpp.

References ReadMethodPool().

Referenced by clang::ASTWriter::getSelectorRef().

◆ makeModuleVisible()

void ASTReader::makeModuleVisible ( Module Mod,
Module::NameVisibilityKind  NameVisibility,
SourceLocation  ImportLoc 
)

Make the entities in the given module and any of its (non-explicit) submodules visible to name lookup.

Parameters
ModThe module whose names should be made visible.
NameVisibilityThe level of visibility to give the names in the module. Visibility can only be increased over time.
ImportLocThe location at which the import occurs.

Definition at line 4428 of file ASTReader.cpp.

References E, clang::Module::getExportedModules(), clang::Module::isUnimportable(), clang::Module::NameVisibility, and Visited.

◆ makeNamesVisible()

void ASTReader::makeNamesVisible ( const HiddenNames Names,
Module Owner 
)

◆ mapGlobalIDToModuleFileGlobalID()

LocalDeclID ASTReader::mapGlobalIDToModuleFileGlobalID ( ModuleFile M,
GlobalDeclID  GlobalID 
)

Map a global declaration ID into the declaration ID used to refer to this declaration within the given module fule.

Returns
the global ID of the given declaration as known in the given module file.

Definition at line 8108 of file ASTReader.cpp.

References clang::LocalDeclID::get(), clang::DeclIDBase::getLocalDeclIndex(), clang::DeclIDBase::getRawValue(), clang::serialization::ModuleFile::ModuleOffsetMap, clang::NUM_PREDEF_DECL_IDS, and clang::serialization::ModuleFile::TransitiveImports.

◆ markIdentifierUpToDate()

void ASTReader::markIdentifierUpToDate ( const IdentifierInfo II)

Note that this identifier is up-to-date.

Definition at line 2388 of file ASTReader.cpp.

◆ mergeDefinitionVisibility()

void ASTReader::mergeDefinitionVisibility ( NamedDecl Def,
NamedDecl MergedDef 
)

Note that MergedDef is a redefinition of the canonical definition Def, so Def should be visible whenever MergedDef is.

We've merged the definition MergedDef into the existing definition Def.

Ensure that Def is made visible whenever MergedDef is made visible.

Definition at line 4477 of file ASTReader.cpp.

References clang::Decl::getImportedOwningModule(), clang::Decl::isUnconditionallyVisible(), and clang::Decl::setVisibleDespiteOwningModule().

Referenced by clang::ASTDeclReader::attachPreviousDeclImpl(), clang::ASTDeclMerger::MergeDefinitionData(), clang::ASTDeclReader::VisitEnumDecl(), and clang::ASTDeclReader::VisitRecordDecl().

◆ operator=()

ASTReader & clang::ASTReader::operator= ( const ASTReader )
delete

◆ PrintStats()

void ASTReader::PrintStats ( )
overridevirtual

Print some statistics about AST usage.

Reimplemented from clang::ExternalASTSource.

Definition at line 8478 of file ASTReader.cpp.

References dump().

◆ ReadAlignPackInfo()

Sema::AlignPackInfo clang::ASTReader::ReadAlignPackInfo ( uint32_t  Raw) const
inline

Read a AlignPackInfo from raw form.

Definition at line 2355 of file ASTReader.h.

References clang::Sema::AlignPackInfo::getFromRawEncoding().

◆ ReadAST()

ASTReader::ASTReadResult ASTReader::ReadAST ( StringRef  FileName,
ModuleKind  Type,
SourceLocation  ImportLoc,
unsigned  ClientLoadCapabilities,
ModuleFile **  NewLoadedModuleFile = nullptr 
)

Load the AST file designated by the given file name.

Parameters
FileNameThe name of the AST file to load.
TypeThe kind of AST being loaded, e.g., PCH, module, main file, or preamble.
ImportLocthe location where the module file will be considered as imported from. For non-module AST types it should be invalid.
ClientLoadCapabilitiesThe set of client load-failure capabilities, represented as a bitset of the enumerators of LoadFailureCapabilities.
LoadedModuleFileThe optional out-parameter refers to the new loaded modules. In case the module specified by FileName is already loaded, the module file pointer referred by NewLoadedModuleFile wouldn't change. Otherwise if the AST file get loaded successfully, NewLoadedModuleFile would refer to the address of the new loaded top level module. The state of NewLoadedModuleFile is unspecified if the AST file isn't loaded successfully.

Definition at line 4570 of file ASTReader.cpp.

References clang::HeaderSearchOptions::BuildSessionTimestamp, clang::Data, clang::serialization::ModuleFile::DidReadTopLevelSubmodule, clang::serialization::ModuleFile::DirectImportLoc, clang::serialization::EXTENSION_BLOCK_ID, clang::FileName, clang::serialization::ModuleFile::FileName, clang::serialization::ModuleFile::GlobalBitOffset, Id, clang::serialization::ModuleFile::IdentifierTableData, clang::serialization::ModuleFile::ImportLoc, clang::serialization::ModuleFile::isModule(), clang::FileID::isValid(), markIdentifierFromAST(), clang::Module::Conflict::Message, clang::serialization::MK_ImplicitModule, clang::serialization::MK_MainFile, clang::serialization::MK_PCH, clang::serialization::MK_Preamble, clang::serialization::ModuleFile::ModuleName, clang::HeaderSearchOptions::ModulesValidateOncePerBuildSession, clang::serialization::ModuleFile::OriginalSourceFileID, clang::Module::Conflict::Other, clang::serialization::ModuleFile::PreloadIdentifierOffsets, clang::serialization::reader::ASTIdentifierLookupTrait::ReadIdentifierID(), clang::serialization::reader::ASTIdentifierLookupTraitBase::ReadKey(), clang::serialization::reader::ASTIdentifierLookupTraitBase::ReadKeyDataLength(), clang::IdentifierInfo::setOutOfDate(), clang::serialization::ModuleFile::SizeInBits, SkipCursorToBlock(), clang::serialization::ModuleFile::Stream, clang::Success, clang::Unresolved, and clang::serialization::updateModuleTimestamp().

◆ readASTFileControlBlock()

bool ASTReader::readASTFileControlBlock ( StringRef  Filename,
FileManager FileMgr,
const InMemoryModuleCache ModuleCache,
const PCHContainerReader PCHContainerRdr,
bool  FindModuleFileExtensions,
ASTReaderListener Listener,
bool  ValidateDiagnosticOptions,
unsigned  ClientLoadCapabilities = ARR_ConfigurationMismatch | ARR_OutOfDate 
)
static

Read the control block for the named AST file.

Returns
true if an error occurred, false otherwise.

Definition at line 5544 of file ASTReader.cpp.

References clang::serialization::CONTROL_BLOCK_ID, doesntStartWithASTFileMagic(), clang::serialization::EXTENSION_BLOCK_ID, clang::serialization::EXTENSION_METADATA, clang::PCHContainerReader::ExtractPCH(), Filename, clang::FileManager::getBufferForFile(), clang::serialization::IMPORT, clang::serialization::INPUT_FILE, clang::serialization::INPUT_FILE_HASH, clang::serialization::INPUT_FILE_OFFSETS, clang::serialization::INPUT_FILES_BLOCK_ID, clang::InMemoryModuleCache::lookupPCM(), clang::serialization::METADATA, clang::serialization::MODULE_DIRECTORY, clang::serialization::MODULE_MAP_FILE, clang::serialization::MODULE_NAME, clang::ASTReaderListener::needsImportVisitation(), clang::ASTReaderListener::needsInputFileVisitation(), clang::ASTReaderListener::needsSystemInputFileVisitation(), clang::serialization::OPTIONS_BLOCK_ID, parseModuleFileExtensionMetadata(), Path, clang::ASTReaderListener::ReadFullVersionInformation(), clang::ASTReaderListener::readModuleFileExtension(), clang::ASTReaderListener::ReadModuleMapFile(), clang::ASTReaderListener::ReadModuleName(), clang::ASTFileSignature::size, SkipCursorToBlock(), clang::Success, clang::serialization::VERSION_MAJOR, clang::ASTReaderListener::visitImport(), and clang::ASTReaderListener::visitInputFile().

Referenced by collectIncludePCH(), and clang::DumpModuleInfoAction::ExecuteAction().

◆ ReadBitVector()

llvm::BitVector ASTReader::ReadBitVector ( const RecordData Record,
const StringRef  Blob 
)
static

Definition at line 9800 of file ASTReader.cpp.

◆ ReadBlockAbbrevs()

llvm::Error ASTReader::ReadBlockAbbrevs ( llvm::BitstreamCursor &  Cursor,
unsigned  BlockID,
uint64_t *  StartOfBlockOffset = nullptr 
)
static

ReadBlockAbbrevs - Enter a subblock of the specified BlockID with the specified cursor.

Enter a subblock of the specified BlockID with the specified cursor.

Read the abbreviations that are at the top of the block and then leave the cursor pointing into the block.

Definition at line 1905 of file ASTReader.cpp.

◆ ReadComments()

void ASTReader::ReadComments ( )
overridevirtual

◆ ReadCXXTemporary()

CXXTemporary * ASTReader::ReadCXXTemporary ( ModuleFile F,
const RecordData Record,
unsigned Idx 
)

◆ ReadDecl()

Decl * clang::ASTReader::ReadDecl ( ModuleFile F,
const RecordDataImpl R,
unsigned I 
)
inline

Reads a declaration from the given position in a record in the given module.

Definition at line 2077 of file ASTReader.h.

References GetDecl(), and ReadDeclID().

Referenced by clang::ASTRecordReader::readDecl(), and ReadLateParsedTemplates().

◆ ReadDeclAs()

template<typename T >
T * clang::ASTReader::ReadDeclAs ( ModuleFile F,
const RecordDataImpl R,
unsigned I 
)
inline

Reads a declaration from the given position in a record in the given module.

Returns
The declaration read from this location, casted to the given result type.

Definition at line 2087 of file ASTReader.h.

References GetDecl(), and ReadDeclID().

Referenced by clang::ASTRecordReader::readDeclAs().

◆ ReadDeclID()

GlobalDeclID ASTReader::ReadDeclID ( ModuleFile F,
const RecordDataImpl Record,
unsigned Idx 
)

Reads a declaration ID from the given position in a record in the given module.

Returns
The declaration ID read from the record, adjusted to a global ID.

Definition at line 8137 of file ASTReader.cpp.

References clang::LocalDeclID::get().

Referenced by ReadDecl(), ReadDeclAs(), and clang::ASTRecordReader::readDeclID().

◆ ReadDeclsToCheckForDeferredDiags()

void ASTReader::ReadDeclsToCheckForDeferredDiags ( llvm::SmallSetVector< Decl *, 4 > &  Decls)
overridevirtual

Read the set of decls to be checked for deferred diags.

The external source should append its own potentially emitted function and variable decls which may cause deferred diags. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same declarations repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 9115 of file ASTReader.cpp.

References D, and GetDecl().

◆ ReadDefinedMacros()

void ASTReader::ReadDefinedMacros ( )
overridevirtual

◆ ReadDelegatingConstructors()

void ASTReader::ReadDelegatingConstructors ( SmallVectorImpl< CXXConstructorDecl * > &  Decls)
overridevirtual

Read the set of delegating constructors known to the external Sema source.

The external source should append its own delegating constructors to the given vector of declarations. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same declarations repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 9082 of file ASTReader.cpp.

References D, and GetDecl().

◆ ReadExpr()

Expr * ASTReader::ReadExpr ( ModuleFile F)

Reads an expression.

Definition at line 2929 of file ASTReaderStmt.cpp.

References ReadStmt().

Referenced by clang::ASTRecordReader::readExpr().

◆ ReadExtVectorDecls()

void ASTReader::ReadExtVectorDecls ( SmallVectorImpl< TypedefNameDecl * > &  Decls)
overridevirtual

Read the set of ext_vector type declarations known to the external Sema source.

The external source should append its own ext_vector type declarations to the given vector of declarations. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same declarations repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 9093 of file ASTReader.cpp.

References D, and GetDecl().

◆ ReadFileID()

FileID clang::ASTReader::ReadFileID ( ModuleFile F,
const RecordDataImpl Record,
unsigned Idx 
) const
inline

Read a FileID.

Definition at line 2409 of file ASTReader.h.

References TranslateFileID().

◆ readIdentifier()

IdentifierInfo * clang::ASTReader::readIdentifier ( ModuleFile M,
const RecordData Record,
unsigned Idx 
)
inline

◆ ReadKnownNamespaces()

void ASTReader::ReadKnownNamespaces ( SmallVectorImpl< NamespaceDecl * > &  Namespaces)
overridevirtual

Load the set of namespaces that are known to the external source, which will be used during typo correction.

Reimplemented from clang::ExternalSemaSource.

Definition at line 9023 of file ASTReader.cpp.

References GetDecl().

◆ ReadLateParsedTemplates()

void ASTReader::ReadLateParsedTemplates ( llvm::MapVector< const FunctionDecl *, std::unique_ptr< LateParsedTemplate > > &  LPTMap)
overridevirtual

Read the set of late parsed template functions for this source.

The external source should insert its own late parsed template functions into the map. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same map entries repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 9186 of file ASTReader.cpp.

References clang::FPOptions::getFromOpaqueInt(), getOwningModuleFile(), LT, ReadDecl(), ReadToken(), and clang::T.

◆ ReadMacroRecord()

MacroInfo * ASTReader::ReadMacroRecord ( ModuleFile F,
uint64_t  Offset 
)

◆ ReadMethodPool()

void ASTReader::ReadMethodPool ( Selector  Sel)
overridevirtual

◆ ReadMismatchingDeleteExpressions()

void ASTReader::ReadMismatchingDeleteExpressions ( llvm::MapVector< FieldDecl *, llvm::SmallVector< std::pair< SourceLocation, bool >, 4 > > &  Exprs)
overridevirtual

Reimplemented from clang::ExternalSemaSource.

Definition at line 9045 of file ASTReader.cpp.

References clang::C, GetDecl(), and clang::SourceLocation::getFromRawEncoding().

◆ ReadPath() [1/2]

std::string ASTReader::ReadPath ( ModuleFile F,
const RecordData Record,
unsigned Idx 
)

◆ ReadPath() [2/2]

std::string ASTReader::ReadPath ( StringRef  BaseDirectory,
const RecordData Record,
unsigned Idx 
)

Definition at line 9838 of file ASTReader.cpp.

References Filename, ReadString(), and ResolveImportedPathAndAllocate().

◆ ReadPathBlob()

std::string ASTReader::ReadPathBlob ( StringRef  BaseDirectory,
const RecordData Record,
unsigned Idx,
StringRef &  Blob 
)

Definition at line 9844 of file ASTReader.cpp.

References Filename, ReadStringBlob(), and ResolveImportedPathAndAllocate().

◆ ReadPendingInstantiations()

void ASTReader::ReadPendingInstantiations ( SmallVectorImpl< std::pair< ValueDecl *, SourceLocation > > &  Pending)
overridevirtual

Read the set of pending instantiations known to the external Sema source.

The external source should append its own pending instantiations to the given vector. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same instantiations repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 9174 of file ASTReader.cpp.

References D, GetDecl(), clang::SourceLocation::getFromRawEncoding(), and Loc.

◆ ReadPragmaDiagnosticMappings()

void ASTReader::ReadPragmaDiagnosticMappings ( DiagnosticsEngine Diag)

◆ ReadPreprocessedEntity()

PreprocessedEntity * ASTReader::ReadPreprocessedEntity ( unsigned  Index)
overridevirtual

◆ ReadReferencedSelectors()

void ASTReader::ReadReferencedSelectors ( SmallVectorImpl< std::pair< Selector, SourceLocation > > &  Sels)
overridevirtual

Read the set of referenced selectors known to the external Sema source.

The external source should append its own referenced selectors to the given vector of selectors. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same selectors repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 9125 of file ASTReader.cpp.

References DecodeSelector(), and clang::SourceLocation::getFromRawEncoding().

◆ ReadSelector()

Selector clang::ASTReader::ReadSelector ( ModuleFile M,
const RecordData Record,
unsigned Idx 
)
inline

Definition at line 2342 of file ASTReader.h.

References getLocalSelector().

Referenced by clang::ASTRecordReader::readSelector().

◆ ReadSkippedRange()

SourceRange ASTReader::ReadSkippedRange ( unsigned  Index)
overridevirtual

◆ ReadSLocEntry()

bool ASTReader::ReadSLocEntry ( int  ID)
overridevirtual

◆ readSLocOffset()

llvm::Expected< SourceLocation::UIntTy > ASTReader::readSLocOffset ( ModuleFile F,
unsigned  Index 
)

◆ ReadSourceLocation() [1/2]

SourceLocation clang::ASTReader::ReadSourceLocation ( ModuleFile MF,
RawLocEncoding  Raw,
LocSeq Seq = nullptr 
) const
inline

◆ ReadSourceLocation() [2/2]

SourceLocation clang::ASTReader::ReadSourceLocation ( ModuleFile ModuleFile,
const RecordDataImpl Record,
unsigned Idx,
LocSeq Seq = nullptr 
)
inline

Read a source location.

Definition at line 2402 of file ASTReader.h.

References ReadSourceLocation(), and clang::Seq.

◆ ReadSourceRange()

SourceRange ASTReader::ReadSourceRange ( ModuleFile F,
const RecordData Record,
unsigned Idx,
LocSeq Seq = nullptr 
)

Read a source range.

Definition at line 9793 of file ASTReader.cpp.

References ReadSourceLocation(), and clang::Seq.

Referenced by ReadComments(), and clang::ASTRecordReader::readSourceRange().

◆ ReadStmt()

Stmt * ASTReader::ReadStmt ( ModuleFile F)

Reads a statement.

Definition at line 2915 of file ASTReaderStmt.cpp.

References ReadSubStmt().

Referenced by ReadExpr(), and clang::ASTRecordReader::readStmt().

◆ ReadString()

std::string ASTReader::ReadString ( const RecordDataImpl Record,
unsigned Idx 
)
static

Definition at line 9818 of file ASTReader.cpp.

References clang::Result.

Referenced by ReadPath(), and clang::ASTRecordReader::readString().

◆ ReadStringBlob()

StringRef ASTReader::ReadStringBlob ( const RecordDataImpl Record,
unsigned Idx,
StringRef &  Blob 
)
static

Definition at line 9825 of file ASTReader.cpp.

References clang::Result.

Referenced by ReadPathBlob().

◆ ReadSubExpr()

Expr * ASTReader::ReadSubExpr ( )

Reads a sub-expression operand during statement reading.

Definition at line 2933 of file ASTReaderStmt.cpp.

References ReadSubStmt().

Referenced by clang::ASTRecordReader::readSubExpr().

◆ ReadSubStmt()

Stmt * clang::ASTReader::ReadSubStmt ( )
inline

Reads a sub-statement operand during statement reading.

Definition at line 2456 of file ASTReader.h.

Referenced by ReadStmt(), ReadSubExpr(), and clang::ASTRecordReader::readSubStmt().

◆ ReadTentativeDefinitions()

void ASTReader::ReadTentativeDefinitions ( SmallVectorImpl< VarDecl * > &  TentativeDefs)
overridevirtual

Read the set of tentative definitions known to the external Sema source.

The external source should append its own tentative definitions to the given vector of tentative definitions. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same declarations repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 9061 of file ASTReader.cpp.

References GetDecl().

◆ ReadToken()

Token ASTReader::ReadToken ( ModuleFile M,
const RecordDataImpl Record,
unsigned Idx 
)

◆ readType()

QualType clang::ASTReader::readType ( ModuleFile F,
const RecordData Record,
unsigned Idx 
)
inline

Read a type from the current position in the given record, which was read from the given AST file.

Definition at line 2017 of file ASTReader.h.

References getLocalType().

Referenced by clang::ASTRecordReader::readType().

◆ ReadUndefinedButUsed()

void ASTReader::ReadUndefinedButUsed ( llvm::MapVector< NamedDecl *, SourceLocation > &  Undefined)
overridevirtual

Load the set of used but not defined functions or variables with internal linkage, or used but not defined internal functions.

Reimplemented from clang::ExternalSemaSource.

Definition at line 9034 of file ASTReader.cpp.

References D, GetDecl(), clang::SourceLocation::getFromRawEncoding(), and Loc.

◆ ReadUntranslatedSourceLocation()

std::pair< SourceLocation, unsigned > clang::ASTReader::ReadUntranslatedSourceLocation ( RawLocEncoding  Raw,
LocSeq Seq = nullptr 
) const
inline

Read a source location from raw form and return it in its originating module file's source location space.

Definition at line 2364 of file ASTReader.h.

References clang::SourceLocationEncoding::decode(), and clang::Seq.

Referenced by ReadSourceLocation().

◆ ReadUnusedFileScopedDecls()

void ASTReader::ReadUnusedFileScopedDecls ( SmallVectorImpl< const DeclaratorDecl * > &  Decls)
overridevirtual

Read the set of unused file-scope declarations known to the external Sema source.

The external source should append its own unused, filed-scope to the given vector of declarations. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same declarations repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 9071 of file ASTReader.cpp.

References D, and GetDecl().

◆ ReadUnusedLocalTypedefNameCandidates()

void ASTReader::ReadUnusedLocalTypedefNameCandidates ( llvm::SmallSetVector< const TypedefNameDecl *, 4 > &  Decls)
overridevirtual

Read the set of potentially unused typedefs known to the source.

The external source should append its own potentially unused local typedefs to the given vector of declarations. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same declarations repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 9103 of file ASTReader.cpp.

References D, and GetDecl().

◆ ReadUsedVTables()

void ASTReader::ReadUsedVTables ( SmallVectorImpl< ExternalVTableUse > &  VTables)
overridevirtual

Read the set of used vtables known to the external Sema source.

The external source should append its own used vtables to the given vector. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same vtables repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 9161 of file ASTReader.cpp.

References clang::ExternalVTableUse::DefinitionRequired, GetDecl(), clang::SourceLocation::getFromRawEncoding(), clang::ExternalVTableUse::Location, and clang::ExternalVTableUse::Record.

◆ ReadVersionTuple()

VersionTuple ASTReader::ReadVersionTuple ( const RecordData Record,
unsigned Idx 
)
static

Read a version tuple.

Definition at line 9851 of file ASTReader.cpp.

Referenced by clang::ASTRecordReader::readVersionTuple().

◆ ReadWeakUndeclaredIdentifiers()

void ASTReader::ReadWeakUndeclaredIdentifiers ( SmallVectorImpl< std::pair< IdentifierInfo *, WeakInfo > > &  WI)
overridevirtual

Read the set of weak, undeclared identifiers known to the external Sema source.

The external source should append its own weak, undeclared identifiers to the given vector. Note that this routine may be invoked multiple times; the external source should take care not to introduce the same identifiers repeatedly.

Reimplemented from clang::ExternalSemaSource.

Definition at line 9143 of file ASTReader.cpp.

References DecodeIdentifierInfo(), clang::SourceLocation::getFromRawEncoding(), and Loc.

◆ RecordSwitchCaseID()

void ASTReader::RecordSwitchCaseID ( SwitchCase SC,
unsigned  ID 
)

Record that the given ID maps to the given switch-case statement.

Definition at line 9897 of file ASTReader.cpp.

Referenced by clang::ASTRecordReader::recordSwitchCaseID().

◆ resetForReload()

void clang::ASTReader::resetForReload ( )
inline

Reset reader for a reload try.

Definition at line 1859 of file ASTReader.h.

◆ ResolveImportedPath() [1/2]

ASTReader::TemporarilyOwnedStringRef ASTReader::ResolveImportedPath ( SmallString< 0 > &  Buf,
StringRef  Path,
ModuleFile ModF 
)
static

Resolve Path in the context of module file M.

The return value must go out of scope before the next call to ResolveImportedPath.

Definition at line 2815 of file ASTReader.cpp.

References clang::serialization::ModuleFile::BaseDirectory, and Path.

Referenced by clang::tooling::dependencies::ModuleDeps::forEachFileDep().

◆ ResolveImportedPath() [2/2]

ASTReader::TemporarilyOwnedStringRef ASTReader::ResolveImportedPath ( SmallString< 0 > &  Buf,
StringRef  Path,
StringRef  Prefix 
)
static

Resolve Path in the context of the Prefix directory.

The return value must go out of scope before the next call to ResolveImportedPath.

Definition at line 2821 of file ASTReader.cpp.

References Path.

◆ ResolveImportedPathAndAllocate() [1/2]

std::string ASTReader::ResolveImportedPathAndAllocate ( SmallString< 0 > &  Buf,
StringRef  Path,
ModuleFile ModF 
)
static

Resolve Path in the context of module file M.

Definition at line 2835 of file ASTReader.cpp.

References clang::serialization::ModuleFile::BaseDirectory, and P.

Referenced by ReadPath(), and ReadPathBlob().

◆ ResolveImportedPathAndAllocate() [2/2]

std::string ASTReader::ResolveImportedPathAndAllocate ( SmallString< 0 > &  Buf,
StringRef  Path,
StringRef  Prefix 
)
static

Resolve Path in the context of the Prefix directory.

Definition at line 2841 of file ASTReader.cpp.

References P.

◆ resolvePendingMacro()

void ASTReader::resolvePendingMacro ( IdentifierInfo II,
const PendingMacroInfo &  PMInfo 
)

◆ runWithSufficientStackSpace()

void ASTReader::runWithSufficientStackSpace ( SourceLocation  Loc,
llvm::function_ref< void()>  Fn 
)

◆ setDeserializationListener()

void ASTReader::setDeserializationListener ( ASTDeserializationListener Listener,
bool  TakeOwnership = false 
)

Set the AST deserialization listener.

Definition at line 931 of file ASTReader.cpp.

◆ SetGloballyVisibleDecls()

void ASTReader::SetGloballyVisibleDecls ( IdentifierInfo II,
const SmallVectorImpl< GlobalDeclID > &  DeclIDs,
SmallVectorImpl< Decl * > *  Decls = nullptr 
)

Set the globally-visible declarations associated with the given identifier.

If the AST reader is currently in a state where the given declaration IDs cannot safely be resolved, they are queued until it is safe to resolve them.

Parameters
IIan IdentifierInfo that refers to one or more globally-visible declarations.
DeclIDsthe set of declaration IDs with the name II that are visible at global scope.
Declsif non-null, this vector will be populated with the set of deserialized declarations. These declarations will not be pushed into scope.

Definition at line 9275 of file ASTReader.cpp.

References D, GetDecl(), and PreloadedDeclIDs.

◆ SetIdentifierInfo()

void ASTReader::SetIdentifierInfo ( serialization::IdentifierID  ID,
IdentifierInfo II 
)

◆ setListener()

void clang::ASTReader::setListener ( std::unique_ptr< ASTReaderListener Listener)
inline

Set the AST callbacks listener.

Definition at line 1804 of file ASTReader.h.

Referenced by clang::ASTReader::ListenerScope::ListenerScope(), and clang::ASTReader::ListenerScope::~ListenerScope().

◆ StartedDeserializing()

void ASTReader::StartedDeserializing ( )
overridevirtual

Notify ASTReader that we started deserialization of a decl or type so until FinishedDeserializing is called there may be decls that are initializing.

Must be paired with FinishedDeserializing.

Reimplemented from clang::ExternalASTSource.

Definition at line 10623 of file ASTReader.cpp.

◆ StartTranslationUnit()

void ASTReader::StartTranslationUnit ( ASTConsumer Consumer)
overridevirtual

Function that will be invoked when we begin parsing a new translation unit involving this external AST source.

This function will provide all of the external definitions to the ASTConsumer.

Reimplemented from clang::ExternalASTSource.

Definition at line 8468 of file ASTReader.cpp.

◆ takeListener()

std::unique_ptr< ASTReaderListener > clang::ASTReader::takeListener ( )
inline

Take the AST callbacks listener.

Definition at line 1799 of file ASTReader.h.

Referenced by clang::ASTReader::ListenerScope::ListenerScope(), and clang::ASTReader::ListenerScope::~ListenerScope().

◆ TranslateFileID()

FileID clang::ASTReader::TranslateFileID ( ModuleFile F,
FileID  FID 
) const
inline

Translate a FileID from another module file's FileID space into ours.

Definition at line 2415 of file ASTReader.h.

References clang::FileID::isInvalid(), and clang::serialization::ModuleFile::SLocEntryBaseID.

Referenced by ReadFileID().

◆ TranslateSourceLocation()

SourceLocation clang::ASTReader::TranslateSourceLocation ( ModuleFile ModuleFile,
SourceLocation  Loc 
) const
inline

Translate a source location from another module file's source location space into ours.

Definition at line 2387 of file ASTReader.h.

References Loc, and clang::serialization::ModuleFile::SLocEntryBaseOffset.

Referenced by ReadSourceLocation().

◆ updateOutOfDateIdentifier()

void ASTReader::updateOutOfDateIdentifier ( const IdentifierInfo II)
overridevirtual

Update an out-of-date identifier.

Implements clang::ExternalPreprocessorSource.

Definition at line 2363 of file ASTReader.cpp.

References clang::IdentifierInfo::getName().

◆ updateOutOfDateSelector()

void ASTReader::updateOutOfDateSelector ( Selector  Sel)
overridevirtual

Load the contents of the global method pool for a given selector if necessary.

Reimplemented from clang::ExternalSemaSource.

Definition at line 9018 of file ASTReader.cpp.

References ReadMethodPool().

◆ UpdateSema()

void ASTReader::UpdateSema ( )

Update the state of Sema after loading some additional modules.

Definition at line 8653 of file ASTReader.cpp.

◆ visitInputFileInfos()

void ASTReader::visitInputFileInfos ( serialization::ModuleFile MF,
bool  IncludeSystem,
llvm::function_ref< void(const serialization::InputFileInfo &IFI, bool IsSystem)>  Visitor 
)

Visit all the input file infos of the given module file.

Definition at line 9985 of file ASTReader.cpp.

References clang::serialization::ModuleFile::InputFilesLoaded, and clang::serialization::ModuleFile::NumUserInputFiles.

◆ visitInputFiles()

void ASTReader::visitInputFiles ( serialization::ModuleFile MF,
bool  IncludeSystem,
bool  Complain,
llvm::function_ref< void(const serialization::InputFile &IF, bool isSystem)>  Visitor 
)

Visit all the input files of the given module file.

Definition at line 10001 of file ASTReader.cpp.

References clang::serialization::ModuleFile::InputFilesLoaded, and clang::serialization::ModuleFile::NumUserInputFiles.

◆ visitTopLevelModuleMaps()

void ASTReader::visitTopLevelModuleMaps ( serialization::ModuleFile MF,
llvm::function_ref< void(FileEntryRef)>  Visitor 
)

Visit all the top-level module maps loaded when building the given module file.

Definition at line 10016 of file ASTReader.cpp.

References clang::serialization::ModuleFile::InputFilesLoaded, clang::serialization::InputFileInfo::ModuleMap, and clang::serialization::InputFileInfo::TopLevel.

Referenced by clang::FrontendAction::BeginSourceFile().

Friends And Related Function Documentation

◆ ASTDeclMerger

friend class ASTDeclMerger
friend

Types of AST files.

Definition at line 386 of file ASTReader.h.

◆ ASTDeclReader

friend class ASTDeclReader
friend

Definition at line 387 of file ASTReader.h.

◆ ASTIdentifierIterator

friend class ASTIdentifierIterator
friend

Definition at line 388 of file ASTReader.h.

Referenced by getIdentifiers().

◆ ASTRecordReader

friend class ASTRecordReader
friend

Definition at line 389 of file ASTReader.h.

◆ ASTUnit

friend class ASTUnit
friend

Definition at line 390 of file ASTReader.h.

◆ ASTWriter

friend class ASTWriter
friend

Definition at line 391 of file ASTReader.h.

◆ LocalDeclID

friend class LocalDeclID
friend

Definition at line 396 of file ASTReader.h.

◆ PCHValidator

friend class PCHValidator
friend

Definition at line 392 of file ASTReader.h.

◆ serialization::reader::ASTIdentifierLookupTrait

Definition at line 393 of file ASTReader.h.

◆ serialization::ReadMethodPoolVisitor

Definition at line 394 of file ASTReader.h.

◆ TypeLocReader

friend class TypeLocReader
friend

Definition at line 395 of file ASTReader.h.

Member Data Documentation

◆ CommentsCursors

SmallVector<std::pair<llvm::BitstreamCursor, serialization::ModuleFile *>, 8> clang::ASTReader::CommentsCursors

Cursors for comments blocks.

Definition at line 2535 of file ASTReader.h.

Referenced by ReadComments().

◆ PreloadedDeclIDs

SmallVector<GlobalDeclID, 16> clang::ASTReader::PreloadedDeclIDs

Definition at line 2508 of file ASTReader.h.

Referenced by SetGloballyVisibleDecls().


The documentation for this class was generated from the following files: