clang 20.0.0git
|
Writes an AST file containing the contents of a translation unit. More...
#include "clang/Serialization/ASTWriter.h"
Public Types | |
using | RecordData = SmallVector< uint64_t, 64 > |
using | RecordDataImpl = SmallVectorImpl< uint64_t > |
using | RecordDataRef = ArrayRef< uint64_t > |
Public Member Functions | |
ASTWriter (llvm::BitstreamWriter &Stream, SmallVectorImpl< char > &Buffer, InMemoryModuleCache &ModuleCache, ArrayRef< std::shared_ptr< ModuleFileExtension > > Extensions, bool IncludeTimestamps=true, bool BuildingImplicitModule=false, bool GeneratingReducedBMI=false) | |
Create a new precompiled header writer that outputs to the given bitstream. | |
~ASTWriter () override | |
const LangOptions & | getLangOpts () const |
time_t | getTimestampForOutput (const FileEntry *E) const |
Get a timestamp for output into the AST file. | |
ASTFileSignature | WriteAST (llvm::PointerUnion< Sema *, Preprocessor * > Subject, StringRef OutputFile, Module *WritingModule, StringRef isysroot, bool ShouldCacheASTInMemory=false) |
Write a precompiled header or a module with the AST produced by the Sema object, or a dependency scanner module with the preprocessor state produced by the Preprocessor object. | |
void | AddToken (const Token &Tok, RecordDataImpl &Record) |
Emit a token. | |
void | AddAlignPackInfo (const Sema::AlignPackInfo &Info, RecordDataImpl &Record) |
Emit a AlignPackInfo. | |
void | AddFileID (FileID FID, RecordDataImpl &Record) |
Emit a FileID. | |
void | AddSourceLocation (SourceLocation Loc, RecordDataImpl &Record, LocSeq *Seq=nullptr) |
Emit a source location. | |
SourceLocationEncoding::RawLocEncoding | getRawSourceLocationEncoding (SourceLocation Loc, LocSeq *Seq=nullptr) |
Return the raw encodings for source locations. | |
void | AddSourceRange (SourceRange Range, RecordDataImpl &Record, LocSeq *Seq=nullptr) |
Emit a source range. | |
void | AddIdentifierRef (const IdentifierInfo *II, RecordDataImpl &Record) |
Emit a reference to an identifier. | |
serialization::SelectorID | getSelectorRef (Selector Sel) |
Get the unique number used to refer to the given selector. | |
serialization::IdentifierID | getIdentifierRef (const IdentifierInfo *II) |
Get the unique number used to refer to the given identifier. | |
serialization::MacroID | getMacroRef (MacroInfo *MI, const IdentifierInfo *Name) |
Get the unique number used to refer to the given macro. | |
serialization::MacroID | getMacroID (MacroInfo *MI) |
Determine the ID of an already-emitted macro. | |
uint32_t | getMacroDirectivesOffset (const IdentifierInfo *Name) |
void | AddTypeRef (ASTContext &Context, QualType T, RecordDataImpl &Record) |
Emit a reference to a type. | |
serialization::TypeID | GetOrCreateTypeID (ASTContext &Context, QualType T) |
Force a type to be emitted and get its ID. | |
const Decl * | getFirstLocalDecl (const Decl *D) |
Find the first local declaration of a given local redeclarable decl. | |
bool | IsLocalDecl (const Decl *D) |
Is this a local declaration (that is, one that will be written to our AST file)? This is the case for declarations that are neither imported from another AST file nor predefined. | |
void | AddDeclRef (const Decl *D, RecordDataImpl &Record) |
Emit a reference to a declaration. | |
void | AddEmittedDeclRef (const Decl *D, RecordDataImpl &Record) |
LocalDeclID | GetDeclRef (const Decl *D) |
Force a declaration to be emitted and get its local ID to the module file been writing. | |
LocalDeclID | getDeclID (const Decl *D) |
Determine the local declaration ID of an already-emitted declaration. | |
bool | wasDeclEmitted (const Decl *D) const |
Whether or not the declaration got emitted. | |
unsigned | getAnonymousDeclarationNumber (const NamedDecl *D) |
void | AddString (StringRef Str, RecordDataImpl &Record) |
Add a string to the given record. | |
void | AddStringBlob (StringRef Str, RecordDataImpl &Record, SmallVectorImpl< char > &Blob) |
bool | PreparePathForOutput (SmallVectorImpl< char > &Path) |
Convert a path from this build process into one that is appropriate for emission in the module file. | |
void | AddPath (StringRef Path, RecordDataImpl &Record) |
Add a path to the given record. | |
void | AddPathBlob (StringRef Str, RecordDataImpl &Record, SmallVectorImpl< char > &Blob) |
void | EmitRecordWithPath (unsigned Abbrev, RecordDataRef Record, StringRef Path) |
Emit the current record with the given path as a blob. | |
void | AddVersionTuple (const VersionTuple &Version, RecordDataImpl &Record) |
Add a version tuple to the given record. | |
unsigned | getLocalOrImportedSubmoduleID (const Module *Mod) |
Retrieve or create a submodule ID for this module, or return 0 if the submodule is neither local (a submodle of the currently-written module) nor from an imported module. | |
void | SetIdentifierOffset (const IdentifierInfo *II, uint32_t Offset) |
Note that the identifier II occurs at the given offset within the identifier table. | |
void | SetSelectorOffset (Selector Sel, uint32_t Offset) |
Note that the selector Sel occurs at the given offset within the method pool/selector table. | |
unsigned | RecordSwitchCaseID (SwitchCase *S) |
Record an ID for the given switch-case statement. | |
unsigned | getSwitchCaseID (SwitchCase *S) |
Retrieve the ID for the given switch-case statement. | |
void | ClearSwitchCaseIDs () |
unsigned | getTypeExtQualAbbrev () const |
unsigned | getDeclParmVarAbbrev () const |
unsigned | getDeclRecordAbbrev () const |
unsigned | getDeclTypedefAbbrev () const |
unsigned | getDeclVarAbbrev () const |
unsigned | getDeclFieldAbbrev () const |
unsigned | getDeclEnumAbbrev () const |
unsigned | getDeclObjCIvarAbbrev () const |
unsigned | getDeclCXXMethodAbbrev (FunctionDecl::TemplatedKind Kind) const |
unsigned | getDeclTemplateTypeParmAbbrev () const |
unsigned | getDeclUsingShadowAbbrev () const |
unsigned | getDeclRefExprAbbrev () const |
unsigned | getCharacterLiteralAbbrev () const |
unsigned | getIntegerLiteralAbbrev () const |
unsigned | getExprImplicitCastAbbrev () const |
unsigned | getBinaryOperatorAbbrev () const |
unsigned | getCompoundAssignOperatorAbbrev () const |
unsigned | getCallExprAbbrev () const |
unsigned | getCXXOperatorCallExprAbbrev () |
unsigned | getCXXMemberCallExprAbbrev () |
unsigned | getCompoundStmtAbbrev () const |
bool | hasChain () const |
ASTReader * | getChain () const |
bool | isWritingModule () const |
bool | isWritingStdCXXNamedModules () const |
bool | isGeneratingReducedBMI () const |
bool | getDoneWritingDeclsAndTypes () const |
bool | isDeclPredefined (const Decl *D) const |
void | handleVTable (CXXRecordDecl *RD) |
![]() | |
virtual | ~ASTDeserializationListener () |
virtual void | ReaderInitialized (ASTReader *Reader) |
The ASTReader was initialized. | |
virtual void | IdentifierRead (serialization::IdentifierID ID, IdentifierInfo *II) |
An identifier was deserialized from the AST file. | |
virtual void | MacroRead (serialization::MacroID ID, MacroInfo *MI) |
A macro was read from the AST file. | |
virtual void | TypeRead (serialization::TypeIdx Idx, QualType T) |
A type was deserialized from the AST file. | |
virtual void | DeclRead (GlobalDeclID ID, const Decl *D) |
A decl was deserialized from the AST file. | |
virtual void | PredefinedDeclBuilt (PredefinedDeclIDs ID, const Decl *D) |
A predefined decl was built during the serialization. | |
virtual void | SelectorRead (serialization::SelectorID iD, Selector Sel) |
A selector was read from the AST file. | |
virtual void | MacroDefinitionRead (serialization::PreprocessedEntityID, MacroDefinitionRecord *MD) |
A macro definition was read from the AST file. | |
virtual void | ModuleRead (serialization::SubmoduleID ID, Module *Mod) |
A module definition was read from the AST file. | |
virtual void | ModuleImportRead (serialization::SubmoduleID ID, SourceLocation ImportLoc) |
A module import was read from the AST file. | |
![]() | |
virtual | ~ASTMutationListener () |
virtual void | CompletedTagDefinition (const TagDecl *D) |
A new TagDecl definition was completed. | |
virtual void | AddedVisibleDecl (const DeclContext *DC, const Decl *D) |
A new declaration with name has been added to a DeclContext. | |
virtual void | AddedCXXImplicitMember (const CXXRecordDecl *RD, const Decl *D) |
An implicit member was added after the definition was completed. | |
virtual void | AddedCXXTemplateSpecialization (const ClassTemplateDecl *TD, const ClassTemplateSpecializationDecl *D) |
A template specialization (or partial one) was added to the template declaration. | |
virtual void | AddedCXXTemplateSpecialization (const VarTemplateDecl *TD, const VarTemplateSpecializationDecl *D) |
A template specialization (or partial one) was added to the template declaration. | |
virtual void | AddedCXXTemplateSpecialization (const FunctionTemplateDecl *TD, const FunctionDecl *D) |
A template specialization (or partial one) was added to the template declaration. | |
virtual void | ResolvedExceptionSpec (const FunctionDecl *FD) |
A function's exception specification has been evaluated or instantiated. | |
virtual void | DeducedReturnType (const FunctionDecl *FD, QualType ReturnType) |
A function's return type has been deduced. | |
virtual void | ResolvedOperatorDelete (const CXXDestructorDecl *DD, const FunctionDecl *Delete, Expr *ThisArg) |
A virtual destructor's operator delete has been resolved. | |
virtual void | CompletedImplicitDefinition (const FunctionDecl *D) |
An implicit member got a definition. | |
virtual void | InstantiationRequested (const ValueDecl *D) |
The instantiation of a templated function or variable was requested. | |
virtual void | VariableDefinitionInstantiated (const VarDecl *D) |
A templated variable's definition was implicitly instantiated. | |
virtual void | FunctionDefinitionInstantiated (const FunctionDecl *D) |
A function template's definition was instantiated. | |
virtual void | DefaultArgumentInstantiated (const ParmVarDecl *D) |
A default argument was instantiated. | |
virtual void | DefaultMemberInitializerInstantiated (const FieldDecl *D) |
A default member initializer was instantiated. | |
virtual void | AddedObjCCategoryToInterface (const ObjCCategoryDecl *CatD, const ObjCInterfaceDecl *IFD) |
A new objc category class was added for an interface. | |
virtual void | DeclarationMarkedUsed (const Decl *D) |
A declaration is marked used which was not previously marked used. | |
virtual void | DeclarationMarkedOpenMPThreadPrivate (const Decl *D) |
A declaration is marked as OpenMP threadprivate which was not previously marked as threadprivate. | |
virtual void | DeclarationMarkedOpenMPDeclareTarget (const Decl *D, const Attr *Attr) |
A declaration is marked as OpenMP declaretarget which was not previously marked as declaretarget. | |
virtual void | DeclarationMarkedOpenMPAllocate (const Decl *D, const Attr *A) |
A declaration is marked as a variable with OpenMP allocator. | |
virtual void | RedefinedHiddenDefinition (const NamedDecl *D, Module *M) |
A definition has been made visible by being redefined locally. | |
virtual void | AddedAttributeToRecord (const Attr *Attr, const RecordDecl *Record) |
An attribute was added to a RecordDecl. | |
virtual void | EnteringModulePurview () |
The parser find the named module declaration. | |
virtual void | AddedManglingNumber (const Decl *D, unsigned Number) |
An mangling number was added to a Decl. | |
virtual void | AddedStaticLocalNumbers (const Decl *D, unsigned Number) |
An static local number was added to a Decl. | |
virtual void | AddedAnonymousNamespace (const TranslationUnitDecl *TU, NamespaceDecl *AnonNamespace) |
An anonymous namespace was added the translation unit decl. | |
Friends | |
class | ASTDeclWriter |
class | ASTRecordWriter |
Writes an AST file containing the contents of a translation unit.
The ASTWriter class produces a bitstream containing the serialized representation of a given abstract syntax tree and its supporting data structures. This bitstream can be de-serialized via an instance of the ASTReader class.
Definition at line 88 of file ASTWriter.h.
using clang::ASTWriter::RecordData = SmallVector<uint64_t, 64> |
Definition at line 94 of file ASTWriter.h.
using clang::ASTWriter::RecordDataImpl = SmallVectorImpl<uint64_t> |
Definition at line 95 of file ASTWriter.h.
using clang::ASTWriter::RecordDataRef = ArrayRef<uint64_t> |
Definition at line 96 of file ASTWriter.h.
ASTWriter::ASTWriter | ( | llvm::BitstreamWriter & | Stream, |
SmallVectorImpl< char > & | Buffer, | ||
InMemoryModuleCache & | ModuleCache, | ||
ArrayRef< std::shared_ptr< ModuleFileExtension > > | Extensions, | ||
bool | IncludeTimestamps = true , |
||
bool | BuildingImplicitModule = false , |
||
bool | GeneratingReducedBMI = false |
||
) |
Create a new precompiled header writer that outputs to the given bitstream.
Definition at line 5327 of file ASTWriter.cpp.
|
overridedefault |
void ASTWriter::AddAlignPackInfo | ( | const Sema::AlignPackInfo & | Info, |