clang 20.0.0git
Macros | Functions
ASTWriter.cpp File Reference
#include "ASTCommon.h"
#include "ASTReaderInternals.h"
#include "MultiOnDiskHashTable.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/TypeLocVisitor.h"
#include "clang/Basic/Diagnostic.h"
#include "clang/Basic/DiagnosticOptions.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/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/APSInt.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/Hashing.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/StringMap.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Bitstream/BitCodes.h"
#include "llvm/Bitstream/BitstreamWriter.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/Compression.h"
#include "llvm/Support/DJB.h"
#include "llvm/Support/Endian.h"
#include "llvm/Support/EndianStream.h"
#include "llvm/Support/Error.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/Serialization/AttrPCHWrite.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)    case Type::CLASS_ID: return TYPE_##CODE_ID;
 
#define ABSTRACT_TYPELOC(CLASS, PARENT)
 
#define TYPELOC(CLASS, PARENT)    void Visit##CLASS##TypeLoc(CLASS##TypeLoc TyLoc);
 
#define RECORD(X)   EmitRecordID(X, #X, Stream, Record)
 
#define BLOCK(X)   EmitBlockID(X ## _ID, #X, Stream, Record)
 
#define RECORD(X)   EmitRecordID(X, #X, Stream, Record)
 
#define DIAGOPT(Name, Bits, Default)   Record.push_back(DiagOpts.Name);
 
#define ENUM_DIAGOPT(Name, Type, Bits, Default)    Record.push_back(static_cast<unsigned>(DiagOpts.get##Name()));
 
#define LANGOPT(Name, Bits, Default, Description)    Record.push_back(LangOpts.Name);
 
#define ENUM_LANGOPT(Name, Type, Bits, Default, Description)    Record.push_back(static_cast<unsigned>(LangOpts.get##Name()));
 
#define SANITIZER(NAME, ID)    Record.push_back(LangOpts.Sanitize.has(SanitizerKind::ID));
 
#define FIELD(Name, Width, Merge)
 
#define GEN_CLANG_CLAUSE_CLASS
 
#define CLAUSE_CLASS(Enum, Str, Class)   void Visit##Class(Class *S);
 

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 bool cleanPathForOutput (FileManager &FileMgr, SmallVectorImpl< char > &Path)
 Prepares a path for being written to an AST file by converting it to an absolute path and removing nested '.
 
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 unsigned getNumberOfModules (Module *Mod)
 Compute the number of modules within the given tree (including the given module).
 
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 ture 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 (ASTWriter &W, ArrayRef< CXXBaseSpecifier > Bases)
 
static uint64_t EmitCXXCtorInitializers (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 313 of file ASTWriter.cpp.

◆ BLOCK

#define BLOCK (   X)    EmitBlockID(X ## _ID, #X, Stream, Record)

◆ CLAUSE_CLASS

#define CLAUSE_CLASS (   Enum,
  Str,
  Class 
)    void Visit##Class(Class *S);

Definition at line 7080 of file ASTWriter.cpp.

◆ DIAGOPT

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

◆ ENUM_DIAGOPT

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

◆ ENUM_LANGOPT

#define ENUM_LANGOPT (   Name,
  Type,
  Bits,
  Default,
  Description 
)     Record.push_back(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);
llvm::MachO::Record Record
Definition: MachO.h:31
const char * Data

◆ GEN_CLANG_CLAUSE_CLASS

#define GEN_CLANG_CLAUSE_CLASS

Definition at line 7079 of file ASTWriter.cpp.

◆ LANGOPT

#define LANGOPT (   Name,
  Bits,
  Default,
  Description 
)     Record.push_back(LangOpts.Name);

◆ RECORD [1/2]

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

◆ RECORD [2/2]

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

◆ SANITIZER

#define SANITIZER (   NAME,
  ID 
)     Record.push_back(LangOpts.Sanitize.has(SanitizerKind::ID));

◆ TYPE_BIT_CODE

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

◆ TYPELOC

#define TYPELOC (   CLASS,
  PARENT 
)     void Visit##CLASS##TypeLoc(CLASS##TypeLoc TyLoc);

Definition at line 314 of file ASTWriter.cpp.

Function Documentation

◆ AddLazyVectorDecls()

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

Definition at line 4897 of file ASTWriter.cpp.

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

◆ AddLazyVectorEmiitedDecls()

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

Definition at line 4905 of file ASTWriter.cpp.

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

◆ AddStmtsExprs()

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

Definition at line 710 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()

static 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 1138 of file ASTWriter.cpp.

References Filename.

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

◆ BackpatchSignatureAt()

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

Definition at line 1235 of file ASTWriter.cpp.

◆ bytes() [1/3]

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

Definition at line 134 of file ASTWriter.cpp.

References clang::T, and v.

◆ bytes() [2/3]

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

Definition at line 139 of file ASTWriter.cpp.

References E, and V.

◆ bytes() [3/3]

template<typename T , typename Allocator >
static StringRef bytes ( const std::vector< T, Allocator > &  v)
static

◆ cleanPathForOutput()

static bool cleanPathForOutput ( FileManager FileMgr,
SmallVectorImpl< char > &  Path 
)
static

Prepares a path for being written to an AST file by converting it to an absolute path and removing nested '.

/'s.

Returns
true if the path was changed.

Definition at line 1121 of file ASTWriter.cpp.

References clang::FileManager::makeAbsolutePath(), and Path.

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

◆ CreateSLocBufferAbbrev()

static unsigned CreateSLocBufferAbbrev ( llvm::BitstreamWriter &  Stream)
static

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

Definition at line 1895 of file ASTWriter.cpp.

References clang::serialization::SM_SLOC_BUFFER_ENTRY.

◆ CreateSLocBufferBlobAbbrev()

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

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

Definition at line 1910 of file ASTWriter.cpp.

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

◆ CreateSLocExpansionAbbrev()

static unsigned CreateSLocExpansionAbbrev ( llvm::BitstreamWriter &  Stream)
static

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

Definition at line 1925 of file ASTWriter.cpp.

References clang::serialization::SM_SLOC_EXPANSION_ENTRY.

◆ CreateSLocFileAbbrev()

static unsigned CreateSLocFileAbbrev ( llvm::BitstreamWriter &  Stream)
static

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

Definition at line 1876 of file ASTWriter.cpp.

References clang::serialization::SM_SLOC_FILE_ENTRY.

◆ emitBlob()

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

◆ EmitBlockID()

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

Definition at line 684 of file ASTWriter.cpp.

◆ EmitCXXBaseSpecifiers()

static uint64_t EmitCXXBaseSpecifiers ( ASTWriter W,
ArrayRef< CXXBaseSpecifier Bases 
)
static

◆ EmitCXXCtorInitializers()

static uint64_t EmitCXXCtorInitializers ( ASTWriter W,
ArrayRef< CXXCtorInitializer * >  CtorInits 
)
static

◆ EmitRecordID()

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

Definition at line 700 of file ASTWriter.cpp.

◆ emitULEBKeyDataLength()

static 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 1942 of file ASTWriter.cpp.

◆ getDeclForLocalLookup()

static 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 3696 of file ASTWriter.cpp.

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

Referenced by isLookupResultNotInteresting().

◆ getNumberOfModules()

static unsigned getNumberOfModules ( Module Mod)
static

Compute the number of modules within the given tree (including the given module).

Definition at line 2889 of file ASTWriter.cpp.

References getNumberOfModules(), and clang::Module::submodules().

Referenced by getNumberOfModules().

◆ getTypeCodeForTypeClass()

static TypeCode getTypeCodeForTypeClass ( Type::TypeClass  id)
static

Definition at line 155 of file ASTWriter.cpp.

◆ isImportedDeclContext()

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

◆ IsInternalDeclFromFileContext()

static bool IsInternalDeclFromFileContext ( const Decl D)
static

◆ isLocalIdentifierID()

static 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 3881 of file ASTWriter.cpp.

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

◆ isLookupResultNotInteresting()

static bool isLookupResultNotInteresting ( ASTWriter Writer,
StoredDeclsList Result 
)
static

Returns ture 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 4129 of file ASTWriter.cpp.

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

◆ MakeTypeID()

template<typename IdxForTypeTy >
static TypeID MakeTypeID ( ASTContext Context,
QualType  T,
IdxForTypeTy  IdxForType 
)
static

◆ shouldIgnoreMacro()

static bool shouldIgnoreMacro ( MacroDirective MD,
bool  IsModule,
const Preprocessor PP 
)
static