clang API Documentation

Defines | Functions
ASTWriter.cpp File Reference
#include "clang/Serialization/ASTWriter.h"
#include "ASTCommon.h"
#include "clang/AST/ASTContext.h"
#include "clang/AST/Decl.h"
#include "clang/AST/DeclContextInternals.h"
#include "clang/AST/DeclFriend.h"
#include "clang/AST/DeclLookups.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/Expr.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/Type.h"
#include "clang/AST/TypeLocVisitor.h"
#include "clang/Basic/DiagnosticOptions.h"
#include "clang/Basic/FileManager.h"
#include "clang/Basic/FileSystemStatCache.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Basic/SourceManagerInternals.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Basic/TargetOptions.h"
#include "clang/Basic/Version.h"
#include "clang/Basic/VersionTuple.h"
#include "clang/Lex/HeaderSearch.h"
#include "clang/Lex/HeaderSearchOptions.h"
#include "clang/Lex/MacroInfo.h"
#include "clang/Lex/PreprocessingRecord.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Lex/PreprocessorOptions.h"
#include "clang/Sema/IdentifierResolver.h"
#include "clang/Sema/Sema.h"
#include "clang/Serialization/ASTReader.h"
#include "llvm/ADT/APFloat.h"
#include "llvm/ADT/APInt.h"
#include "llvm/ADT/Hashing.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Bitcode/BitstreamWriter.h"
#include "llvm/Support/EndianStream.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/OnDiskHashTable.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/Process.h"
#include <algorithm>
#include <cstdio>
#include <string.h>
#include <utility>
#include "clang/AST/TypeNodes.def"
#include "clang/AST/TypeLocNodes.def"
#include "clang/Basic/LangOptions.def"
#include "clang/Basic/Sanitizers.def"
#include "clang/Basic/DiagnosticOptions.def"
#include "clang/Basic/OpenCLExtensions.def"
#include "clang/Serialization/AttrPCHWrite.inc"

Go to the source code of this file.

Defines

#define TYPE(Class, Base)   void Visit##Class##Type(const Class##Type *T);
#define ABSTRACT_TYPE(Class, Base)
#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 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 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 TYPE(Class, Base)   case Type::Class: W.Visit##Class##Type(cast<Class##Type>(T)); break;
#define ABSTRACT_TYPE(Class, Base)
#define OPENCLEXT(nm)   Record.push_back(Opts.nm);

Functions

template<typename T , typename Allocator >
static StringRef data (const std::vector< T, Allocator > &v)
template<typename T >
static StringRef data (const SmallVectorImpl< T > &v)
static void addExceptionSpec (ASTWriter &Writer, const FunctionProtoType *T, ASTWriter::RecordDataImpl &Record)
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 * adjustFilenameForRelocatablePCH (const char *Filename, StringRef isysroot)
 Adjusts the given filename to only write out the portion of the filename that is not part of the system root directory.
static ASTFileSignature getSignature ()
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)
 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 int compareMacroDirectives (const std::pair< const IdentifierInfo *, MacroDirective * > *X, const std::pair< const IdentifierInfo *, MacroDirective * > *Y)
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 NamedDeclgetDeclForLocalLookup (NamedDecl *D)
template<typename Visitor >
static void visitLocalLookupResults (const DeclContext *ConstDC, bool NeedToReconcileExternalVisibleStorage, Visitor AddLookupResult)
template<typename Vector >
static void AddLazyVectorDecls (ASTWriter &Writer, Vector &Vec, ASTWriter::RecordData &Record)

Define Documentation

#define ABSTRACT_TYPE (   Class,
  Base 
)

Definition at line 98 of file ASTWriter.cpp.

#define ABSTRACT_TYPE (   Class,
  Base 
)

Definition at line 98 of file ASTWriter.cpp.

#define ABSTRACT_TYPELOC (   CLASS,
  PARENT 
)

Definition at line 452 of file ASTWriter.cpp.

#define BLOCK (   X)    EmitBlockID(X ## _ID, #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 ENUM_LANGOPT (   Name,
  Type,
  Bits,
  Default,
  Description 
)    Record.push_back(static_cast<unsigned>(LangOpts.get##Name()));
#define LANGOPT (   Name,
  Bits,
  Default,
  Description 
)    Record.push_back(LangOpts.Name);
#define OPENCLEXT (   nm)    Record.push_back(Opts.nm);
#define RECORD (   X)    EmitRecordID(X, #X, Stream, Record)

Referenced by AddStmtsExprs().

#define RECORD (   X)    EmitRecordID(X, #X, Stream, Record)
#define SANITIZER (   NAME,
  ID 
)    Record.push_back(LangOpts.Sanitize.has(SanitizerKind::ID));
#define TYPE (   Class,
  Base 
)    void Visit##Class##Type(const Class##Type *T);

Definition at line 97 of file ASTWriter.cpp.

#define TYPE (   Class,
  Base 
)    case Type::Class: W.Visit##Class##Type(cast<Class##Type>(T)); break;

Definition at line 97 of file ASTWriter.cpp.

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

Definition at line 453 of file ASTWriter.cpp.


Function Documentation

static void addExceptionSpec ( ASTWriter Writer,
const FunctionProtoType T,
ASTWriter::RecordDataImpl Record 
) [static]
template<typename Vector >
static void AddLazyVectorDecls ( ASTWriter Writer,
Vector &  Vec,
ASTWriter::RecordData Record 
) [static]

Definition at line 4162 of file ASTWriter.cpp.

References clang::ASTWriter::AddDeclRef().

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

Definition at line 729 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_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_PSEUDO_DESTRUCTOR, clang::serialization::EXPR_CXX_REINTERPRET_CAST, 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_EXPR_WITH_CLEANUPS, clang::serialization::EXPR_EXT_VECTOR_ELEMENT, 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_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_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.

static const char* adjustFilenameForRelocatablePCH ( const char *  Filename,
StringRef  isysroot 
) [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.
isysrootWhen non-NULL, the PCH file is a relocatable PCH file and the returned filename will be adjusted by this system root.
Returns:
either the original filename (if it needs no adjustment) or the adjusted filename (which points into the Filename parameter).

Definition at line 1072 of file ASTWriter.cpp.

static int compareMacroDirectives ( const std::pair< const IdentifierInfo *, MacroDirective * > *  X,
const std::pair< const IdentifierInfo *, MacroDirective * > *  Y 
) [static]

Definition at line 1987 of file ASTWriter.cpp.

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

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

Definition at line 1526 of file ASTWriter.cpp.

References clang::serialization::SM_SLOC_BUFFER_ENTRY.

static unsigned CreateSLocBufferBlobAbbrev ( llvm::BitstreamWriter &  Stream) [static]

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

Definition at line 1540 of file ASTWriter.cpp.

References clang::serialization::SM_SLOC_BUFFER_BLOB.

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

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

Definition at line 1550 of file ASTWriter.cpp.

References clang::serialization::SM_SLOC_EXPANSION_ENTRY.

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

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

Definition at line 1508 of file ASTWriter.cpp.

References clang::serialization::SM_SLOC_FILE_ENTRY.

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

Definition at line 63 of file ASTWriter.cpp.

Referenced by clang::CXXRecordDecl::bases_begin(), clang::CXXRecordDecl::bases_end(), clang::CodeGen::CodeGenFunction::OpaqueValueMappingData::bind(), clang::CXXRecordDecl::completeDefinition(), clang::driver::tools::openbsd::Assemble::ConstructJob(), clang::driver::tools::freebsd::Assemble::ConstructJob(), clang::driver::tools::netbsd::Assemble::ConstructJob(), clang::CXXRecordDecl::conversion_begin(), clang::CXXRecordDecl::conversion_end(), clang::PTHManager::CreateLexer(), clang::CXXRecordDecl::defaultedDefaultConstructorIsConstexpr(), clang::CXXRecordDecl::finishedDefaultedOrDeletedMember(), clang::AnalysisDeclContext::getAnalysis(), clang::ento::SymbolManager::getCastSymbol(), clang::ento::MemRegionManager::getElementRegion(), clang::ento::SymbolManager::getIntSymExpr(), clang::ConcreteTypeLoc< UnqualTypeLoc, ReferenceTypeLoc, ReferenceType, PointerLikeLocInfo >::getNonLocalData(), clang::CXXRecordDecl::getNumBases(), clang::CXXRecordDecl::getNumVBases(), clang::ento::SymbolManager::getSymIntExpr(), clang::ento::SymbolManager::getSymSymExpr(), clang::CXXRecordDecl::getVisibleConversionFunctions(), clang::CXXRecordDecl::hasConstexprDefaultConstructor(), clang::CXXRecordDecl::hasConstexprNonCopyMoveConstructor(), clang::CXXRecordDecl::hasCopyAssignmentWithConstParam(), clang::CXXRecordDecl::hasCopyConstructorWithConstParam(), clang::CXXRecordDecl::hasDefaultConstructor(), clang::CXXRecordDecl::hasFriends(), clang::CXXRecordDecl::hasInClassInitializer(), clang::CXXRecordDecl::hasIrrelevantDestructor(), clang::CXXRecordDecl::hasMoveAssignment(), clang::CXXRecordDecl::hasMoveConstructor(), clang::CXXRecordDecl::hasMutableFields(), clang::CXXRecordDecl::hasNonLiteralTypeFieldsOrBases(), clang::CXXRecordDecl::hasNonTrivialCopyAssignment(), clang::CXXRecordDecl::hasNonTrivialCopyConstructor(), clang::CXXRecordDecl::hasNonTrivialDefaultConstructor(), clang::CXXRecordDecl::hasNonTrivialDestructor(), clang::CXXRecordDecl::hasNonTrivialMoveAssignment(), clang::CXXRecordDecl::hasNonTrivialMoveConstructor(), clang::CXXRecordDecl::hasSimpleDestructor(), clang::CXXRecordDecl::hasSimpleMoveAssignment(), clang::CXXRecordDecl::hasSimpleMoveConstructor(), clang::CXXRecordDecl::hasTrivialCopyAssignment(), clang::CXXRecordDecl::hasTrivialCopyConstructor(), clang::CXXRecordDecl::hasTrivialDefaultConstructor(), clang::CXXRecordDecl::hasTrivialDestructor(), clang::CXXRecordDecl::hasTrivialMoveAssignment(), clang::CXXRecordDecl::hasTrivialMoveConstructor(), clang::CXXRecordDecl::hasUninitializedReferenceMember(), clang::CXXRecordDecl::hasUserDeclaredConstructor(), clang::CXXRecordDecl::hasUserDeclaredCopyAssignment(), clang::CXXRecordDecl::hasUserDeclaredCopyConstructor(), clang::CXXRecordDecl::hasUserDeclaredDestructor(), clang::CXXRecordDecl::hasUserDeclaredMoveAssignment(), clang::CXXRecordDecl::hasUserDeclaredMoveConstructor(), clang::CXXRecordDecl::hasUserDeclaredMoveOperation(), clang::CXXRecordDecl::hasUserProvidedDefaultConstructor(), clang::CXXRecordDecl::hasVariantMembers(), clang::CXXRecordDecl::implicitCopyAssignmentHasConstParam(), clang::CXXRecordDecl::implicitCopyConstructorHasConstParam(), clang::CXXRecordDecl::isAbstract(), clang::CXXRecordDecl::isAggregate(), clang::CXXRecordDecl::isCLike(), clang::CXXRecordDecl::isDynamicClass(), clang::CXXRecordDecl::isEmpty(), clang::CXXRecordDecl::isParsingBaseSpecifiers(), clang::CXXRecordDecl::isPOD(), clang::CXXRecordDecl::isPolymorphic(), clang::CXXRecordDecl::isStandardLayout(), clang::CXXRecordDecl::mayBeAbstract(), clang::CXXRecordDecl::needsImplicitCopyAssignment(), clang::CXXRecordDecl::needsImplicitCopyConstructor(), clang::CXXRecordDecl::needsImplicitDefaultConstructor(), clang::CXXRecordDecl::needsImplicitDestructor(), clang::CXXRecordDecl::needsImplicitMoveAssignment(), clang::CXXRecordDecl::needsImplicitMoveConstructor(), clang::CXXRecordDecl::needsOverloadResolutionForCopyAssignment(), clang::CXXRecordDecl::needsOverloadResolutionForCopyConstructor(), clang::CXXRecordDecl::needsOverloadResolutionForDestructor(), clang::CXXRecordDecl::needsOverloadResolutionForMoveAssignment(), clang::CXXRecordDecl::needsOverloadResolutionForMoveConstructor(), clang::CXXRecordDecl::pushFriendDecl(), clang::CXXRecordDecl::removeConversion(), clang::CXXRecordDecl::setBases(), clang::CXXRecordDecl::setImplicitMoveAssignmentIsDeleted(), clang::CXXRecordDecl::setImplicitMoveConstructorIsDeleted(), clang::CXXRecordDecl::setIsParsingBaseSpecifiers(), clang::CXXRecordDecl::vbases_begin(), and clang::CXXRecordDecl::vbases_end().

template<typename T >
static StringRef data ( const SmallVectorImpl< T > &  v) [static]

Definition at line 70 of file ASTWriter.cpp.

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

Definition at line 703 of file ASTWriter.cpp.

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

Definition at line 719 of file ASTWriter.cpp.

static NamedDecl* getDeclForLocalLookup ( 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 3506 of file ASTWriter.cpp.

References clang::Decl::getCanonicalDecl(), clang::Decl::getPreviousDecl(), and clang::Decl::isFromASTFile().

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

static unsigned getNumberOfModules ( Module Mod) [static]

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

Definition at line 2349 of file ASTWriter.cpp.

References clang::Module::submodule_begin(), and clang::Module::submodule_end().

static ASTFileSignature getSignature ( ) [static]

Definition at line 1097 of file ASTWriter.cpp.

References S.

static bool shouldIgnoreMacro ( MacroDirective MD,
bool  IsModule,
const Preprocessor PP 
) [static]
template<typename Visitor >
static void visitLocalLookupResults ( const DeclContext ConstDC,
bool  NeedToReconcileExternalVisibleStorage,
Visitor  AddLookupResult 
) [static]