clang 23.0.0git
ASTWriter.cpp File Reference
#include "ASTCommon.h"
#include "ASTReaderInternals.h"
#include "MultiOnDiskHashTable.h"
#include "TemplateArgumentHasher.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/ASTUnresolvedSet.h"
#include "clang/AST/AbstractTypeWriter.h"
#include "clang/AST/Attr.h"
#include "clang/AST/Decl.h"
#include "clang/AST/DeclBase.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/DeclContextInternals.h"
#include "clang/AST/DeclFriend.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/DeclarationName.h"
#include "clang/AST/Expr.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/LambdaCapture.h"
#include "clang/AST/NestedNameSpecifier.h"
#include "clang/AST/OpenACCClause.h"
#include "clang/AST/OpenMPClause.h"
#include "clang/AST/RawCommentList.h"
#include "clang/AST/TemplateName.h"
#include "clang/AST/Type.h"
#include "clang/AST/TypeLoc.h"
#include "clang/AST/TypeLocVisitor.h"
#include "clang/Basic/Diagnostic.h"
#include "clang/Basic/DiagnosticOptions.h"
#include "clang/Basic/FileEntry.h"
#include "clang/Basic/FileManager.h"
#include "clang/Basic/FileSystemOptions.h"
#include "clang/Basic/IdentifierTable.h"
#include "clang/Basic/LLVM.h"
#include "clang/Basic/Lambda.h"
#include "clang/Basic/LangOptions.h"
#include "clang/Basic/Module.h"
#include "clang/Basic/ObjCRuntime.h"
#include "clang/Basic/OpenACCKinds.h"
#include "clang/Basic/OpenCLOptions.h"
#include "clang/Basic/SourceLocation.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Basic/SourceManagerInternals.h"
#include "clang/Basic/Specifiers.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Basic/TargetOptions.h"
#include "clang/Basic/Version.h"
#include "clang/Lex/HeaderSearch.h"
#include "clang/Lex/HeaderSearchOptions.h"
#include "clang/Lex/MacroInfo.h"
#include "clang/Lex/ModuleMap.h"
#include "clang/Lex/PreprocessingRecord.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Lex/PreprocessorOptions.h"
#include "clang/Lex/Token.h"
#include "clang/Sema/IdentifierResolver.h"
#include "clang/Sema/ObjCMethodList.h"
#include "clang/Sema/Sema.h"
#include "clang/Sema/SemaCUDA.h"
#include "clang/Sema/SemaObjC.h"
#include "clang/Sema/Weak.h"
#include "clang/Serialization/ASTBitCodes.h"
#include "clang/Serialization/ASTReader.h"
#include "clang/Serialization/ASTRecordWriter.h"
#include "clang/Serialization/InMemoryModuleCache.h"
#include "clang/Serialization/ModuleCache.h"
#include "clang/Serialization/ModuleFile.h"
#include "clang/Serialization/ModuleFileExtension.h"
#include "clang/Serialization/SerializationDiagnostic.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/PointerIntPair.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/ScopeExit.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Bitstream/BitCodes.h"
#include "llvm/Bitstream/BitstreamWriter.h"
#include "llvm/Support/Compression.h"
#include "llvm/Support/DJB.h"
#include "llvm/Support/EndianStream.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/LEB128.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/OnDiskHashTable.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/SHA1.h"
#include "llvm/Support/TimeProfiler.h"
#include "llvm/Support/VersionTuple.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cassert>
#include <cstdint>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <limits>
#include <memory>
#include <optional>
#include <queue>
#include <tuple>
#include <utility>
#include <vector>
#include "clang/Serialization/TypeBitCodes.def"
#include "clang/AST/TypeLocNodes.def"
#include "clang/Basic/DiagnosticOptions.def"
#include "clang/Basic/LangOptions.def"
#include "clang/Basic/Sanitizers.def"
#include "clang/Basic/CodeGenOptions.def"
#include "clang/Serialization/AttrPCHWrite.inc"
#include "clang/Basic/BuiltinTemplates.inc"
#include "clang/AST/CXXRecordDeclDefinitionBits.def"
#include "llvm/Frontend/OpenMP/OMP.inc"

Go to the source code of this file.

Macros

#define TYPE_BIT_CODE(CLASS_ID, CODE_ID, CODE_VALUE)
#define ABSTRACT_TYPELOC(CLASS, PARENT)
#define TYPELOC(CLASS, PARENT)
#define RECORD(X)
#define BLOCK(X)
#define RECORD(X)
#define DIAGOPT(Name, Bits, Default)
#define ENUM_DIAGOPT(Name, Type, Bits, Default)
#define LANGOPT(Name, Bits, Default, Compatibility, Description)
#define ENUM_LANGOPT(Name, Type, Bits, Default, Compatibility, Description)
#define SANITIZER(NAME, ID)
#define CODEGENOPT(Name, Bits, Default, Compatibility)
#define ENUM_CODEGENOPT(Name, Type, Bits, Default, Compatibility)
#define DEBUGOPT(Name, Bits, Default, Compatibility)
#define VALUE_DEBUGOPT(Name, Bits, Default, Compatibility)
#define ENUM_DEBUGOPT(Name, Type, Bits, Default, Compatibility)
#define BuiltinTemplate(BTName)
#define FIELD(Name, Width, Merge)
#define GEN_CLANG_CLAUSE_CLASS
#define CLAUSE_CLASS(Enum, Str, Class)

Functions

template<typename T, typename Allocator>
static StringRef bytes (const std::vector< T, Allocator > &v)
template<typename T>
static StringRef bytes (const SmallVectorImpl< T > &v)
static std::string bytes (const std::vector< bool > &V)
static TypeCode getTypeCodeForTypeClass (Type::TypeClass id)
static void EmitBlockID (unsigned ID, const char *Name, llvm::BitstreamWriter &Stream, ASTWriter::RecordDataImpl &Record)
static void EmitRecordID (unsigned ID, const char *Name, llvm::BitstreamWriter &Stream, ASTWriter::RecordDataImpl &Record)
static void AddStmtsExprs (llvm::BitstreamWriter &Stream, ASTWriter::RecordDataImpl &Record)
static const char * adjustFilenameForRelocatableAST (const char *Filename, StringRef BaseDir)
 Adjusts the given filename to only write out the portion of the filename that is not part of the system root directory.
static void BackpatchSignatureAt (llvm::BitstreamWriter &Stream, const ASTFileSignature &S, uint64_t BitNo)
static unsigned CreateSLocFileAbbrev (llvm::BitstreamWriter &Stream)
 Create an abbreviation for the SLocEntry that refers to a file.
static unsigned CreateSLocBufferAbbrev (llvm::BitstreamWriter &Stream)
 Create an abbreviation for the SLocEntry that refers to a buffer.
static unsigned CreateSLocBufferBlobAbbrev (llvm::BitstreamWriter &Stream, bool Compressed)
 Create an abbreviation for the SLocEntry that refers to a buffer's blob.
static unsigned CreateSLocExpansionAbbrev (llvm::BitstreamWriter &Stream)
 Create an abbreviation for the SLocEntry that refers to a macro expansion.
static std::pair< unsigned, unsignedemitULEBKeyDataLength (unsigned KeyLen, unsigned DataLen, raw_ostream &Out)
 Emit key length and data length as ULEB-encoded data, and return them as a pair.
static void emitBlob (llvm::BitstreamWriter &Stream, StringRef Blob, unsigned SLocBufferBlobCompressedAbbrv, unsigned SLocBufferBlobAbbrv)
static bool shouldIgnoreMacro (MacroDirective *MD, bool IsModule, const Preprocessor &PP)
static bool IsInternalDeclFromFileContext (const Decl *D)
static NamedDeclgetDeclForLocalLookup (const LangOptions &LangOpts, NamedDecl *D)
 Determine the declaration that should be put into the name lookup table to represent the given declaration in this module.
static bool isLocalIdentifierID (IdentifierID ID)
 If the.
static bool isLookupResultNotInteresting (ASTWriter &Writer, StoredDeclsList &Result)
 Returns true if all of the lookup result are either external, not emitted or predefined.
template<typename Vector>
static void AddLazyVectorDecls (ASTWriter &Writer, Vector &Vec)
template<typename Vector>
static void AddLazyVectorEmiitedDecls (ASTWriter &Writer, Vector &Vec, ASTWriter::RecordData &Record)
template<typename IdxForTypeTy>
static TypeID MakeTypeID (ASTContext &Context, QualType T, IdxForTypeTy IdxForType)
static uint64_t EmitCXXBaseSpecifiers (ASTContext &Context, ASTWriter &W, ArrayRef< CXXBaseSpecifier > Bases)
static uint64_t EmitCXXCtorInitializers (ASTContext &Context, ASTWriter &W, ArrayRef< CXXCtorInitializer * > CtorInits)
static bool isImportedDeclContext (ASTReader *Chain, const Decl *D)

Macro Definition Documentation

◆ ABSTRACT_TYPELOC

#define ABSTRACT_TYPELOC ( CLASS,
PARENT )

Definition at line 328 of file ASTWriter.cpp.

◆ BLOCK

#define BLOCK ( X)
Value:
EmitBlockID(X ## _ID, #X, Stream, Record)
#define X(type, name)
Definition Value.h:97
llvm::MachO::Record Record
Definition MachO.h:31
static void EmitBlockID(unsigned ID, const char *Name, llvm::BitstreamWriter &Stream, RecordDataImpl &Record)
Emits a block ID in the BLOCKINFO block.

◆ BuiltinTemplate

#define BuiltinTemplate ( BTName)
Value:
RegisterPredefDecl(Context.Decl##BTName, PREDEF_DECL##BTName##_ID);

◆ CLAUSE_CLASS

#define CLAUSE_CLASS ( Enum,
Str,
Class )
Value:
void Visit##Class(Class *S);
@ Class
The "class" keyword introduces the elaborated-type-specifier.
Definition TypeBase.h:5981

Definition at line 8014 of file ASTWriter.cpp.

◆ CODEGENOPT

#define CODEGENOPT ( Name,
Bits,
Default,
Compatibility )
Value:
if constexpr (CK::Compatibility != CK::Benign) \
Record.push_back(static_cast<unsigned>(CGOpts.Name));

◆ DEBUGOPT

#define DEBUGOPT ( Name,
Bits,
Default,
Compatibility )

◆ DIAGOPT

#define DIAGOPT ( Name,
Bits,
Default )
Value:
Record.push_back(DiagOpts.Name);

◆ ENUM_CODEGENOPT

#define ENUM_CODEGENOPT ( Name,
Type,
Bits,
Default,
Compatibility )
Value:
if constexpr (CK::Compatibility != CK::Benign) \
Record.push_back(static_cast<unsigned>(CGOpts.get##Name()));

◆ ENUM_DEBUGOPT

#define ENUM_DEBUGOPT ( Name,
Type,
Bits,
Default,
Compatibility )

◆ ENUM_DIAGOPT

#define ENUM_DIAGOPT ( Name,
Type,
Bits,
Default )
Value:
Record.push_back(static_cast<unsigned>(DiagOpts.get##Name()));

◆ ENUM_LANGOPT

#define ENUM_LANGOPT ( Name,
Type,
Bits,
Default,
Compatibility,
Description )
Value:
static_cast<unsigned>(LangOpts.get##Name()),

◆ FIELD

#define FIELD ( Name,
Width,
Merge )
Value:
if (!DefinitionBits.canWriteNextNBits(Width)) { \
Record->push_back(DefinitionBits); \
DefinitionBits.reset(0); \
} \
DefinitionBits.addBits(Data.Name, Width);

◆ GEN_CLANG_CLAUSE_CLASS

#define GEN_CLANG_CLAUSE_CLASS

Definition at line 8013 of file ASTWriter.cpp.

◆ LANGOPT

#define LANGOPT ( Name,
Bits,
Default,
Compatibility,
Description )
Value:
LangOpts.Name,

◆ RECORD [1/2]

#define RECORD ( X)
Value:
EmitRecordID(X, #X, Stream, Record)
static void EmitRecordID(unsigned ID, const char *Name, llvm::BitstreamWriter &Stream, RecordDataImpl &Record)
Emits a record ID in the BLOCKINFO block.

◆ RECORD [2/2]

#define RECORD ( X)
Value:
EmitRecordID(X, #X, Stream, Record)

◆ SANITIZER

#define SANITIZER ( NAME,
ID )
Value:
LangOpts.Sanitize.has(SanitizerKind::ID),

◆ TYPE_BIT_CODE

#define TYPE_BIT_CODE ( CLASS_ID,
CODE_ID,
CODE_VALUE )
Value:
case Type::CLASS_ID: return TYPE_##CODE_ID;

◆ TYPELOC

#define TYPELOC ( CLASS,
PARENT )
Value:
void Visit##CLASS##TypeLoc(CLASS##TypeLoc TyLoc);
Base wrapper for a particular "section" of type source info.
Definition TypeLoc.h:59

Definition at line 329 of file ASTWriter.cpp.

◆ VALUE_DEBUGOPT

#define VALUE_DEBUGOPT ( Name,
Bits,
Default,
Compatibility )

Function Documentation

◆ AddLazyVectorDecls()

template<typename Vector>
void AddLazyVectorDecls ( ASTWriter & Writer,
Vector & Vec )
static

Definition at line 5547 of file ASTWriter.cpp.

References clang::ASTWriter::GetDeclRef(), and clang::Vector.

◆ AddLazyVectorEmiitedDecls()

template<typename Vector>
void AddLazyVectorEmiitedDecls ( ASTWriter & Writer,
Vector & Vec,
ASTWriter::RecordData & Record )
static

Definition at line 5555 of file ASTWriter.cpp.

References clang::ASTWriter::AddEmittedDeclRef(), and clang::Vector.

◆ AddStmtsExprs()

void AddStmtsExprs ( llvm::BitstreamWriter & Stream,
ASTWriter::RecordDataImpl & Record )
static

Definition at line 743 of file ASTWriter.cpp.

References clang::serialization::EXPR_ADDR_LABEL, clang::serialization::EXPR_ARRAY_SUBSCRIPT, clang::serialization::EXPR_ARRAY_TYPE_TRAIT, clang::serialization::EXPR_BINARY_CONDITIONAL_OPERATOR, clang::serialization::EXPR_BINARY_OPERATOR, clang::serialization::EXPR_BLOCK, clang::serialization::EXPR_CALL, clang::serialization::EXPR_CHARACTER_LITERAL, clang::serialization::EXPR_CHOOSE, clang::serialization::EXPR_COMPOUND_ASSIGN_OPERATOR, clang::serialization::EXPR_COMPOUND_LITERAL, clang::serialization::EXPR_CONDITIONAL_OPERATOR, clang::serialization::EXPR_CSTYLE_CAST, clang::serialization::EXPR_CUDA_KERNEL_CALL, clang::serialization::EXPR_CXX_ADDRSPACE_CAST, clang::serialization::EXPR_CXX_BIND_TEMPORARY, clang::serialization::EXPR_CXX_BOOL_LITERAL, clang::serialization::EXPR_CXX_CONST_CAST, clang::serialization::EXPR_CXX_CONSTRUCT, clang::serialization::EXPR_CXX_DEFAULT_ARG, clang::serialization::EXPR_CXX_DEFAULT_INIT, clang::serialization::EXPR_CXX_DELETE, clang::serialization::EXPR_CXX_DEPENDENT_SCOPE_DECL_REF, clang::serialization::EXPR_CXX_DEPENDENT_SCOPE_MEMBER, clang::serialization::EXPR_CXX_DYNAMIC_CAST, clang::serialization::EXPR_CXX_EXPRESSION_TRAIT, clang::serialization::EXPR_CXX_FUNCTIONAL_CAST, clang::serialization::EXPR_CXX_MEMBER_CALL, clang::serialization::EXPR_CXX_NEW, clang::serialization::EXPR_CXX_NOEXCEPT, clang::serialization::EXPR_CXX_NULL_PTR_LITERAL, clang::serialization::EXPR_CXX_OPERATOR_CALL, clang::serialization::EXPR_CXX_PAREN_LIST_INIT, clang::serialization::EXPR_CXX_PSEUDO_DESTRUCTOR, clang::serialization::EXPR_CXX_REINTERPRET_CAST, clang::serialization::EXPR_CXX_REWRITTEN_BINARY_OPERATOR, clang::serialization::EXPR_CXX_SCALAR_VALUE_INIT, clang::serialization::EXPR_CXX_STATIC_CAST, clang::serialization::EXPR_CXX_STD_INITIALIZER_LIST, clang::serialization::EXPR_CXX_TEMPORARY_OBJECT, clang::serialization::EXPR_CXX_THIS, clang::serialization::EXPR_CXX_THROW, clang::serialization::EXPR_CXX_TYPEID_EXPR, clang::serialization::EXPR_CXX_TYPEID_TYPE, clang::serialization::EXPR_CXX_UNRESOLVED_CONSTRUCT, clang::serialization::EXPR_CXX_UNRESOLVED_LOOKUP, clang::serialization::EXPR_CXX_UNRESOLVED_MEMBER, clang::serialization::EXPR_CXX_UUIDOF_EXPR, clang::serialization::EXPR_CXX_UUIDOF_TYPE, clang::serialization::EXPR_DECL_REF, clang::serialization::EXPR_DESIGNATED_INIT, clang::serialization::EXPR_DESIGNATED_INIT_UPDATE, clang::serialization::EXPR_EXPR_WITH_CLEANUPS, clang::serialization::EXPR_EXT_VECTOR_ELEMENT, clang::serialization::EXPR_FIXEDPOINT_LITERAL, clang::serialization::EXPR_FLOATING_LITERAL, clang::serialization::EXPR_FUNCTION_PARM_PACK, clang::serialization::EXPR_GENERIC_SELECTION, clang::serialization::EXPR_GNU_NULL, clang::serialization::EXPR_IMAGINARY_LITERAL, clang::serialization::EXPR_IMPLICIT_CAST, clang::serialization::EXPR_IMPLICIT_VALUE_INIT, clang::serialization::EXPR_INIT_LIST, clang::serialization::EXPR_INTEGER_LITERAL, clang::serialization::EXPR_LAMBDA, clang::serialization::EXPR_MATERIALIZE_TEMPORARY, clang::serialization::EXPR_MEMBER, clang::serialization::EXPR_NO_INIT, clang::serialization::EXPR_OBJC_ARRAY_LITERAL, clang::serialization::EXPR_OBJC_BOOL_LITERAL, clang::serialization::EXPR_OBJC_BOXED_EXPRESSION, clang::serialization::EXPR_OBJC_DICTIONARY_LITERAL, clang::serialization::EXPR_OBJC_ENCODE, clang::serialization::EXPR_OBJC_IVAR_REF_EXPR, clang::serialization::EXPR_OBJC_KVC_REF_EXPR, clang::serialization::EXPR_OBJC_MESSAGE_EXPR, clang::serialization::EXPR_OBJC_PROPERTY_REF_EXPR, clang::serialization::EXPR_OBJC_PROTOCOL_EXPR, clang::serialization::EXPR_OBJC_SELECTOR_EXPR, clang::serialization::EXPR_OBJC_STRING_LITERAL, clang::serialization::EXPR_OPAQUE_VALUE, clang::serialization::EXPR_PACK_EXPANSION, clang::serialization::EXPR_PACK_INDEXING, clang::serialization::EXPR_PAREN, clang::serialization::EXPR_PAREN_LIST, clang::serialization::EXPR_PREDEFINED, clang::serialization::EXPR_SHUFFLE_VECTOR, clang::serialization::EXPR_SIZEOF_ALIGN_OF, clang::serialization::EXPR_SIZEOF_PACK, clang::serialization::EXPR_STMT, clang::serialization::EXPR_STRING_LITERAL, clang::serialization::EXPR_SUBST_NON_TYPE_TEMPLATE_PARM, clang::serialization::EXPR_SUBST_NON_TYPE_TEMPLATE_PARM_PACK, clang::serialization::EXPR_TYPE_TRAIT, clang::serialization::EXPR_UNARY_OPERATOR, clang::serialization::EXPR_USER_DEFINED_LITERAL, clang::serialization::EXPR_VA_ARG, RECORD, clang::serialization::STMT_ATTRIBUTED, clang::serialization::STMT_BREAK, clang::serialization::STMT_CASE, clang::serialization::STMT_COMPOUND, clang::serialization::STMT_CONTINUE, clang::serialization::STMT_CXX_CATCH, clang::serialization::STMT_CXX_FOR_RANGE, clang::serialization::STMT_CXX_TRY, clang::serialization::STMT_DECL, clang::serialization::STMT_DEFAULT, clang::serialization::STMT_DO, clang::serialization::STMT_FOR, clang::serialization::STMT_GCCASM, clang::serialization::STMT_GOTO, clang::serialization::STMT_IF, clang::serialization::STMT_INDIRECT_GOTO, clang::serialization::STMT_LABEL, clang::serialization::STMT_MSASM, clang::serialization::STMT_NULL, clang::serialization::STMT_NULL_PTR, clang::serialization::STMT_OBJC_AT_SYNCHRONIZED, clang::serialization::STMT_OBJC_AT_THROW, clang::serialization::STMT_OBJC_AT_TRY, clang::serialization::STMT_OBJC_CATCH, clang::serialization::STMT_OBJC_FINALLY, clang::serialization::STMT_OBJC_FOR_COLLECTION, clang::serialization::STMT_REF_PTR, clang::serialization::STMT_RETURN, clang::serialization::STMT_STOP, clang::serialization::STMT_SWITCH, and clang::serialization::STMT_WHILE.

◆ adjustFilenameForRelocatableAST()

const char * adjustFilenameForRelocatableAST ( const char * Filename,
StringRef BaseDir )
static

Adjusts the given filename to only write out the portion of the filename that is not part of the system root directory.

Parameters
Filenamethe file name to adjust.
BaseDirWhen non-NULL, the PCH file is a relocatable AST file and the returned filename will be adjusted by this root directory.
Returns
either the original filename (if it needs no adjustment) or the adjusted filename (which points into the Filename parameter).

Definition at line 1171 of file ASTWriter.cpp.

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

◆ BackpatchSignatureAt()

void BackpatchSignatureAt ( llvm::BitstreamWriter & Stream,
const ASTFileSignature & S,
uint64_t BitNo )
static

Definition at line 1268 of file ASTWriter.cpp.

References uint8_t.

◆ bytes() [1/3]

template<typename T>
StringRef bytes ( const SmallVectorImpl< T > & v)
static

Definition at line 133 of file ASTWriter.cpp.

◆ bytes() [2/3]

std::string bytes ( const std::vector< bool > & V)
static

Definition at line 138 of file ASTWriter.cpp.

References V.

◆ bytes() [3/3]

◆ CreateSLocBufferAbbrev()

unsigned CreateSLocBufferAbbrev ( llvm::BitstreamWriter & Stream)
static

Create an abbreviation for the SLocEntry that refers to a buffer.

Definition at line 2019 of file ASTWriter.cpp.

References clang::serialization::SM_SLOC_BUFFER_ENTRY.

◆ CreateSLocBufferBlobAbbrev()

unsigned CreateSLocBufferBlobAbbrev ( llvm::BitstreamWriter & Stream,
bool Compressed )
static

Create an abbreviation for the SLocEntry that refers to a buffer's blob.

Definition at line 2034 of file ASTWriter.cpp.

References clang::serialization::SM_SLOC_BUFFER_BLOB, and clang::serialization::SM_SLOC_BUFFER_BLOB_COMPRESSED.

◆ CreateSLocExpansionAbbrev()

unsigned CreateSLocExpansionAbbrev ( llvm::BitstreamWriter & Stream)
static

Create an abbreviation for the SLocEntry that refers to a macro expansion.

Definition at line 2049 of file ASTWriter.cpp.

References clang::serialization::SM_SLOC_EXPANSION_ENTRY.

◆ CreateSLocFileAbbrev()

unsigned CreateSLocFileAbbrev ( llvm::BitstreamWriter & Stream)
static

Create an abbreviation for the SLocEntry that refers to a file.

Definition at line 2000 of file ASTWriter.cpp.

References clang::serialization::SM_SLOC_FILE_ENTRY.

◆ emitBlob()

void emitBlob ( llvm::BitstreamWriter & Stream,
StringRef Blob,
unsigned SLocBufferBlobCompressedAbbrv,
unsigned SLocBufferBlobAbbrv )
static

◆ EmitBlockID()

void EmitBlockID ( unsigned ID,
const char * Name,
llvm::BitstreamWriter & Stream,
ASTWriter::RecordDataImpl & Record )
static

Definition at line 717 of file ASTWriter.cpp.

◆ EmitCXXBaseSpecifiers()

◆ EmitCXXCtorInitializers()

◆ EmitRecordID()

void EmitRecordID ( unsigned ID,
const char * Name,
llvm::BitstreamWriter & Stream,
ASTWriter::RecordDataImpl & Record )
static

Definition at line 733 of file ASTWriter.cpp.

◆ emitULEBKeyDataLength()

std::pair< unsigned, unsigned > emitULEBKeyDataLength ( unsigned KeyLen,
unsigned DataLen,
raw_ostream & Out )
static

Emit key length and data length as ULEB-encoded data, and return them as a pair.

Definition at line 2066 of file ASTWriter.cpp.

◆ getDeclForLocalLookup()

NamedDecl * getDeclForLocalLookup ( const LangOptions & LangOpts,
NamedDecl * D )
static

Determine the declaration that should be put into the name lookup table to represent the given declaration in this module.

This is usually D itself, but if D was imported and merged into a local declaration, we want the most recent local declaration instead. The chosen declaration will be the most recent declaration in any module that imports this one.

Definition at line 3823 of file ASTWriter.cpp.

References clang::cast(), clang::First, clang::Decl::getCanonicalDecl(), clang::Decl::getDeclContext(), clang::Decl::getPreviousDecl(), clang::DeclContext::getRedeclContext(), and clang::Decl::isFromASTFile().

Referenced by isLookupResultNotInteresting().

◆ getTypeCodeForTypeClass()

TypeCode getTypeCodeForTypeClass ( Type::TypeClass id)
static

Definition at line 154 of file ASTWriter.cpp.

◆ isImportedDeclContext()

bool isImportedDeclContext ( ASTReader * Chain,
const Decl * D )
static

◆ IsInternalDeclFromFileContext()

bool IsInternalDeclFromFileContext ( const Decl * D)
static

◆ isLocalIdentifierID()

bool isLocalIdentifierID ( IdentifierID ID)
static

If the.

Parameters
IdentifierIDID is a local Identifier ID. If the higher bits of ID is 0, it implies that the ID doesn't come from AST files.

Definition at line 4014 of file ASTWriter.cpp.

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

◆ isLookupResultNotInteresting()

bool isLookupResultNotInteresting ( ASTWriter & Writer,
StoredDeclsList & Result )
static

Returns true if all of the lookup result are either external, not emitted or predefined.

In such cases, the lookup result is not interesting and we don't need to record the result in the current being written module. Return false otherwise.

Definition at line 4678 of file ASTWriter.cpp.

References getDeclForLocalLookup(), clang::ASTWriter::getDoneWritingDeclsAndTypes(), clang::ASTWriter::getLangOpts(), clang::ASTWriter::isDeclPredefined(), and clang::ASTWriter::wasDeclEmitted().

◆ MakeTypeID()

◆ shouldIgnoreMacro()