#include #include #include #include #include #include #include #include #include #include #include #include #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"">

clang: lib/Serialization/ASTWriter.cpp File Reference (original) (raw)

#include "[ASTCommon.h](ASTCommon%5F8h%5Fsource.html)"
#include "[ASTReaderInternals.h](ASTReaderInternals%5F8h%5Fsource.html)"
#include "[MultiOnDiskHashTable.h](MultiOnDiskHashTable%5F8h%5Fsource.html)"
#include "[TemplateArgumentHasher.h](TemplateArgumentHasher%5F8h%5Fsource.html)"
#include "[clang/AST/ASTContext.h](ASTContext%5F8h%5Fsource.html)"
#include "[clang/AST/ASTUnresolvedSet.h](ASTUnresolvedSet%5F8h%5Fsource.html)"
#include "[clang/AST/AbstractTypeWriter.h](AbstractTypeWriter%5F8h%5Fsource.html)"
#include "[clang/AST/Attr.h](AST%5F2Attr%5F8h%5Fsource.html)"
#include "[clang/AST/Decl.h](Decl%5F8h%5Fsource.html)"
#include "[clang/AST/DeclBase.h](DeclBase%5F8h%5Fsource.html)"
#include "[clang/AST/DeclCXX.h](DeclCXX%5F8h%5Fsource.html)"
#include "[clang/AST/DeclContextInternals.h](DeclContextInternals%5F8h%5Fsource.html)"
#include "[clang/AST/DeclFriend.h](DeclFriend%5F8h%5Fsource.html)"
#include "[clang/AST/DeclObjC.h](DeclObjC%5F8h%5Fsource.html)"
#include "[clang/AST/DeclTemplate.h](DeclTemplate%5F8h%5Fsource.html)"
#include "[clang/AST/DeclarationName.h](DeclarationName%5F8h%5Fsource.html)"
#include "[clang/AST/Expr.h](Expr%5F8h%5Fsource.html)"
#include "[clang/AST/ExprCXX.h](ExprCXX%5F8h%5Fsource.html)"
#include "[clang/AST/LambdaCapture.h](LambdaCapture%5F8h%5Fsource.html)"
#include "[clang/AST/NestedNameSpecifier.h](NestedNameSpecifier%5F8h%5Fsource.html)"
#include "[clang/AST/OpenACCClause.h](OpenACCClause%5F8h%5Fsource.html)"
#include "[clang/AST/OpenMPClause.h](OpenMPClause%5F8h%5Fsource.html)"
#include "[clang/AST/RawCommentList.h](RawCommentList%5F8h%5Fsource.html)"
#include "[clang/AST/TemplateName.h](TemplateName%5F8h%5Fsource.html)"
#include "[clang/AST/Type.h](Type%5F8h%5Fsource.html)"
#include "[clang/AST/TypeLoc.h](TypeLoc%5F8h%5Fsource.html)"
#include "[clang/AST/TypeLocVisitor.h](TypeLocVisitor%5F8h%5Fsource.html)"
#include "[clang/Basic/Diagnostic.h](Basic%5F2Diagnostic%5F8h%5Fsource.html)"
#include "[clang/Basic/DiagnosticOptions.h](DiagnosticOptions%5F8h%5Fsource.html)"
#include "[clang/Basic/FileEntry.h](FileEntry%5F8h%5Fsource.html)"
#include "[clang/Basic/FileManager.h](FileManager%5F8h%5Fsource.html)"
#include "[clang/Basic/FileSystemOptions.h](FileSystemOptions%5F8h%5Fsource.html)"
#include "[clang/Basic/IdentifierTable.h](IdentifierTable%5F8h%5Fsource.html)"
#include "[clang/Basic/LLVM.h](LLVM%5F8h%5Fsource.html)"
#include "[clang/Basic/Lambda.h](Lambda%5F8h%5Fsource.html)"
#include "[clang/Basic/LangOptions.h](LangOptions%5F8h%5Fsource.html)"
#include "[clang/Basic/Module.h](Module%5F8h%5Fsource.html)"
#include "[clang/Basic/ObjCRuntime.h](ObjCRuntime%5F8h%5Fsource.html)"
#include "[clang/Basic/OpenACCKinds.h](OpenACCKinds%5F8h%5Fsource.html)"
#include "[clang/Basic/OpenCLOptions.h](OpenCLOptions%5F8h%5Fsource.html)"
#include "[clang/Basic/SourceLocation.h](SourceLocation%5F8h%5Fsource.html)"
#include "[clang/Basic/SourceManager.h](SourceManager%5F8h%5Fsource.html)"
#include "[clang/Basic/SourceManagerInternals.h](SourceManagerInternals%5F8h%5Fsource.html)"
#include "[clang/Basic/Specifiers.h](Specifiers%5F8h%5Fsource.html)"
#include "[clang/Basic/TargetInfo.h](include%5F2clang%5F2Basic%5F2TargetInfo%5F8h%5Fsource.html)"
#include "[clang/Basic/TargetOptions.h](TargetOptions%5F8h%5Fsource.html)"
#include "[clang/Basic/Version.h](Version%5F8h%5Fsource.html)"
#include "[clang/Lex/HeaderSearch.h](HeaderSearch%5F8h%5Fsource.html)"
#include "[clang/Lex/HeaderSearchOptions.h](HeaderSearchOptions%5F8h%5Fsource.html)"
#include "[clang/Lex/MacroInfo.h](MacroInfo%5F8h%5Fsource.html)"
#include "[clang/Lex/ModuleMap.h](ModuleMap%5F8h%5Fsource.html)"
#include "[clang/Lex/PreprocessingRecord.h](PreprocessingRecord%5F8h%5Fsource.html)"
#include "[clang/Lex/Preprocessor.h](Preprocessor%5F8h%5Fsource.html)"
#include "[clang/Lex/PreprocessorOptions.h](PreprocessorOptions%5F8h%5Fsource.html)"
#include "[clang/Lex/Token.h](Token%5F8h%5Fsource.html)"
#include "[clang/Sema/IdentifierResolver.h](IdentifierResolver%5F8h%5Fsource.html)"
#include "[clang/Sema/ObjCMethodList.h](ObjCMethodList%5F8h%5Fsource.html)"
#include "[clang/Sema/Sema.h](Sema%5F8h%5Fsource.html)"
#include "[clang/Sema/SemaCUDA.h](SemaCUDA%5F8h%5Fsource.html)"
#include "[clang/Sema/SemaObjC.h](SemaObjC%5F8h%5Fsource.html)"
#include "[clang/Sema/Weak.h](Weak%5F8h%5Fsource.html)"
#include "[clang/Serialization/ASTBitCodes.h](ASTBitCodes%5F8h%5Fsource.html)"
#include "[clang/Serialization/ASTReader.h](ASTReader%5F8h%5Fsource.html)"
#include "[clang/Serialization/ASTRecordWriter.h](ASTRecordWriter%5F8h%5Fsource.html)"
#include "[clang/Serialization/InMemoryModuleCache.h](InMemoryModuleCache%5F8h%5Fsource.html)"
#include "[clang/Serialization/ModuleCache.h](ModuleCache%5F8h%5Fsource.html)"
#include "[clang/Serialization/ModuleFile.h](ModuleFile%5F8h%5Fsource.html)"
#include "[clang/Serialization/ModuleFileExtension.h](ModuleFileExtension%5F8h%5Fsource.html)"
#include "[clang/Serialization/SerializationDiagnostic.h](SerializationDiagnostic%5F8h%5Fsource.html)"
#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
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, unsigned > emitULEBKeyDataLength (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 NamedDecl * getDeclForLocalLookup (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
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)

ABSTRACT_TYPELOC

#define ABSTRACT_TYPELOC ( CLASS,
PARENT )

BLOCK

Value:

llvm::MachO::Record Record

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 at line 7848 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:

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);

GEN_CLANG_CLAUSE_CLASS

#define GEN_CLANG_CLAUSE_CLASS

LANGOPT

#define LANGOPT ( Name,
Bits,
Default,
Compatibility,
Description )

Value:

Record.push_back(LangOpts.Name);

RECORD [1/2]

Value:

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

Emits a record ID in the BLOCKINFO block.

RECORD [2/2]

SANITIZER

#define SANITIZER ( NAME,
ID )

Value:

Record.push_back(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:

Base wrapper for a particular "section" of type source info.

Definition at line 342 of file ASTWriter.cpp.

VALUE_DEBUGOPT

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

AddLazyVectorDecls()

AddLazyVectorEmiitedDecls()

AddStmtsExprs()

Definition at line 752 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

Filename the file name to adjust.
BaseDir When 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 1186 of file ASTWriter.cpp.

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

BackpatchSignatureAt()

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

bytes() [1/3]

bytes() [2/3]

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

bytes() [3/3]

template<typename T, typename Allocator>

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

Definition at line 126 of file ASTWriter.cpp.

References clang::T.

Referenced by clang::SemaObjC::BuildObjCBoxedExpr(), bytesSincePreviousTabOrLineBegin(), clang::driver::tools::Clang::ConstructJob(), clang::ASTReader::getMemoryBufferSizes(), clang::Attr::operator new(), clang::PreprocessedEntity::operator new(), clang::PreprocessedEntity::operator new(), clang::Stmt::operator new(), clang::Stmt::operator new(), clang::Stmt::operator new(), clang::Stmt::operator new(), clang::TemplateArgumentListInfo::operator new(), and operator new().

cleanPathForOutput()

CreateSLocBufferAbbrev()

unsigned CreateSLocBufferAbbrev ( llvm::BitstreamWriter & Stream) static

CreateSLocBufferBlobAbbrev()

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

CreateSLocExpansionAbbrev()

unsigned CreateSLocExpansionAbbrev ( llvm::BitstreamWriter & Stream) static

CreateSLocFileAbbrev()

unsigned CreateSLocFileAbbrev ( llvm::BitstreamWriter & Stream) static

emitBlob()

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

EmitBlockID()

EmitCXXBaseSpecifiers()

EmitCXXCtorInitializers()

Definition at line 7224 of file ASTWriter.cpp.

References clang::ASTRecordWriter::AddDeclRef(), clang::ASTRecordWriter::AddSourceLocation(), clang::ASTRecordWriter::AddStmt(), clang::ASTRecordWriter::AddTypeSourceInfo(), clang::serialization::CTOR_INITIALIZER_BASE, clang::serialization::CTOR_INITIALIZER_DELEGATING, clang::serialization::CTOR_INITIALIZER_INDIRECT_MEMBER, clang::serialization::CTOR_INITIALIZER_MEMBER, clang::serialization::DECL_CXX_CTOR_INITIALIZERS, clang::ASTRecordWriter::Emit(), clang::Init, and clang::ASTRecordWriter::push_back().

Referenced by clang::ASTRecordWriter::AddCXXCtorInitializers().

EmitRecordID()

emitULEBKeyDataLength()

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

Definition at line 2071 of file ASTWriter.cpp.

getDeclForLocalLookup()

getNumberOfModules()

getTypeCodeForTypeClass()

TypeCode getTypeCodeForTypeClass ( Type::TypeClass id) static

isImportedDeclContext()

IsInternalDeclFromFileContext()

bool IsInternalDeclFromFileContext ( const Decl * D) static

isLocalIdentifierID()

isLookupResultNotInteresting()

MakeTypeID()

template

shouldIgnoreMacro()