diff options
29 files changed, 275 insertions, 301 deletions
diff --git a/include/clang/AST/ASTConsumer.h b/include/clang/AST/ASTConsumer.h index 19cfae56c5..84833c099f 100644 --- a/include/clang/AST/ASTConsumer.h +++ b/include/clang/AST/ASTConsumer.h @@ -50,7 +50,7 @@ public: virtual void HandleTopLevelDecl(DeclGroupRef D); /// HandleInterestingDecl - Handle the specified interesting declaration. This - /// is called by the PCH reader when deserializing things that might interest + /// is called by the AST reader when deserializing things that might interest /// the consumer. The default implementation forwards to HandleTopLevelDecl. virtual void HandleInterestingDecl(DeclGroupRef D); diff --git a/include/clang/AST/DeclBase.h b/include/clang/AST/DeclBase.h index 83270ab727..34092c7993 100644 --- a/include/clang/AST/DeclBase.h +++ b/include/clang/AST/DeclBase.h @@ -226,8 +226,8 @@ protected: /// PCHLevel - the "level" of AST file from which this declaration was built. unsigned PCHLevel : 2; - /// PCHChanged - if this declaration has changed since being deserialized - bool PCHChanged : 1; + /// ChangedAfterLoad - if this declaration has changed since being loaded + bool ChangedAfterLoad : 1; /// IdentifierNamespace - This specifies what IDNS_* namespace this lives in. unsigned IdentifierNamespace : 15; @@ -245,7 +245,7 @@ protected: : NextDeclInContext(0), DeclCtx(DC), Loc(L), DeclKind(DK), InvalidDecl(0), HasAttrs(false), Implicit(false), Used(false), - Access(AS_none), PCHLevel(0), PCHChanged(false), + Access(AS_none), PCHLevel(0), ChangedAfterLoad(false), IdentifierNamespace(getIdentifierNamespaceForKind(DK)) { if (Decl::CollectingStats()) add(DK); } @@ -253,7 +253,7 @@ protected: Decl(Kind DK, EmptyShell Empty) : NextDeclInContext(0), DeclKind(DK), InvalidDecl(0), HasAttrs(false), Implicit(false), Used(false), - Access(AS_none), PCHLevel(0), PCHChanged(false), + Access(AS_none), PCHLevel(0), ChangedAfterLoad(false), IdentifierNamespace(getIdentifierNamespaceForKind(DK)) { if (Decl::CollectingStats()) add(DK); } @@ -380,11 +380,10 @@ public: /// declaration was generated. /// /// The PCH level of a declaration describes where the declaration originated - /// from. A PCH level of 0 indicates that the declaration was not from a - /// precompiled header. A PCH level of 1 indicates that the declaration was - /// from a top-level precompiled header; 2 indicates that the declaration - /// comes from a precompiled header on which the top-level precompiled header - /// depends, and so on. + /// from. A PCH level of 0 indicates that the declaration was parsed from + /// source. A PCH level of 1 indicates that the declaration was loaded from + /// a top-level AST file. A PCH level 2 indicates that the declaration was + /// loaded from a PCH file the AST file depends on, and so on. unsigned getPCHLevel() const { return PCHLevel; } /// \brief The maximum PCH level that any declaration may have. @@ -401,11 +400,13 @@ public: /// /// In an epic violation of layering, what is "significant" is entirely /// up to the serialization system, but implemented in AST and Sema. - bool isChangedSinceDeserialization() const { return PCHChanged; } + bool isChangedSinceDeserialization() const { return ChangedAfterLoad; } /// \brief Mark this declaration as having changed since deserialization, or /// reset the flag. - void setChangedSinceDeserialization(bool Changed) { PCHChanged = Changed; } + void setChangedSinceDeserialization(bool Changed) { + ChangedAfterLoad = Changed; + } unsigned getIdentifierNamespace() const { return IdentifierNamespace; diff --git a/include/clang/AST/Type.h b/include/clang/AST/Type.h index 1cc0e3926e..a2f08b75fa 100644 --- a/include/clang/AST/Type.h +++ b/include/clang/AST/Type.h @@ -787,12 +787,12 @@ private: /// \brief Linkage of this type. mutable unsigned CachedLinkage : 2; - /// \brief FromPCH - Whether this type comes from a PCH file. - mutable bool FromPCH : 1; + /// \brief FromAST - Whether this type comes from an AST file. + mutable bool FromAST : 1; - /// \brief Set whether this type comes from a PCH file. - void setFromPCH(bool V = true) const { - FromPCH = V; + /// \brief Set whether this type comes from an AST file. + void setFromAST(bool V = true) const { + FromAST = V; } protected: @@ -806,15 +806,15 @@ protected: Type(TypeClass tc, QualType Canonical, bool dependent) : CanonicalType(Canonical.isNull() ? QualType(this_(), 0) : Canonical), TC(tc), Dependent(dependent), LinkageKnown(false), - CachedLinkage(NoLinkage), FromPCH(false) {} + CachedLinkage(NoLinkage), FromAST(false) {} virtual ~Type(); friend class ASTContext; public: TypeClass getTypeClass() const { return static_cast<TypeClass>(TC); } - /// \brief Whether this type comes from a PCH file. - bool isFromPCH() const { return FromPCH; } + /// \brief Whether this type comes from an AST file. + bool isFromAST() const { return FromAST; } bool isCanonicalUnqualified() const { return CanonicalType.getTypePtr() == this; @@ -1856,13 +1856,13 @@ class FunctionType : public Type { // * FunctionNoProtoType::Profile // * FunctionProtoType::Profile // * TypePrinter::PrintFunctionProto - // * PCH read and write + // * AST read and write // * Codegen class ExtInfo { public: // Constructor with no defaults. Use this when you know that you - // have all the elements (when reading a PCH file for example). + // have all the elements (when reading an AST file for example). ExtInfo(bool noReturn, unsigned regParm, CallingConv cc) : NoReturn(noReturn), RegParm(regParm), CC(cc) {} diff --git a/include/clang/Basic/IdentifierTable.h b/include/clang/Basic/IdentifierTable.h index fa1b149e39..24fe086a79 100644 --- a/include/clang/Basic/IdentifierTable.h +++ b/include/clang/Basic/IdentifierTable.h @@ -59,8 +59,8 @@ class IdentifierInfo { bool IsPoisoned : 1; // True if identifier is poisoned. bool IsCPPOperatorKeyword : 1; // True if ident is a C++ operator keyword. bool NeedsHandleIdentifier : 1; // See "RecomputeNeedsHandleIdentifier". - bool IsFromPCH : 1; // True if identfier first appeared in a PCH - // and wasn't modified since. + bool IsFromAST : 1; // True if identfier first appeared in an AST + // file and wasn't modified since. bool RevertedTokenID : 1; // True if RevertTokenIDToIdentifier was // called. // 7 bits left in 32-bit word. @@ -129,7 +129,7 @@ public: NeedsHandleIdentifier = 1; else RecomputeNeedsHandleIdentifier(); - IsFromPCH = false; + IsFromAST = false; } /// getTokenID - If this is a source-language token (e.g. 'for'), this API @@ -145,7 +145,7 @@ public: /// /// TokenID is normally read-only but there are 2 instances where we revert it /// to tok::identifier for libstdc++ 4.2. Keep track of when this happens - /// using this method so we can inform PCH about it. + /// using this method so we can inform serialization about it. void RevertTokenIDToIdentifier() { assert(TokenID != tok::identifier && "Already at tok::identifier"); TokenID = tok::identifier; @@ -205,7 +205,7 @@ public: NeedsHandleIdentifier = 1; else RecomputeNeedsHandleIdentifier(); - IsFromPCH = false; + IsFromAST = false; } /// isPoisoned - Return true if this token has been poisoned. @@ -233,11 +233,11 @@ public: /// know that HandleIdentifier will not affect the token. bool isHandleIdentifierCase() const { return NeedsHandleIdentifier; } - /// isFromPCH - Return true if the identifier in its current state was loaded - /// from a PCH file. - bool isFromPCH() const { return IsFromPCH; } + /// isFromAST - Return true if the identifier in its current state was loaded + /// from an AST file. + bool isFromAST() const { return IsFromAST; } - void setIsFromPCH(bool FromPCH = true) { IsFromPCH = FromPCH; } + void setIsFromAST(bool FromAST = true) { IsFromAST = FromAST; } private: /// RecomputeNeedsHandleIdentifier - The Preprocessor::HandleIdentifier does diff --git a/include/clang/Basic/Linkage.h b/include/clang/Basic/Linkage.h index 035b4fc7a7..01b6c79042 100644 --- a/include/clang/Basic/Linkage.h +++ b/include/clang/Basic/Linkage.h @@ -42,7 +42,7 @@ enum Linkage { }; /// \brief A more specific kind of linkage. This is relevant to CodeGen and -/// PCH reading. +/// AST file reading. enum GVALinkage { GVA_Internal, GVA_C99Inline, diff --git a/include/clang/Basic/SourceManager.h b/include/clang/Basic/SourceManager.h index dc314f1f07..91ade22985 100644 --- a/include/clang/Basic/SourceManager.h +++ b/include/clang/Basic/SourceManager.h @@ -795,7 +795,7 @@ public: unsigned sloc_entry_size() const { return SLocEntryTable.size(); } // FIXME: Exposing this is a little gross; what we want is a good way - // to iterate the entries that were not defined in a PCH file (or + // to iterate the entries that were not defined in an AST file (or // any other external source). unsigned sloc_loaded_entry_size() const { return SLocEntryLoaded.size(); } diff --git a/include/clang/Frontend/ASTUnit.h b/include/clang/Frontend/ASTUnit.h index 6e67aafb4c..60e06bbd3e 100644 --- a/include/clang/Frontend/ASTUnit.h +++ b/include/clang/Frontend/ASTUnit.h @@ -53,7 +53,7 @@ class TargetInfo; using namespace idx; -/// \brief Utility class for loading a ASTContext from a PCH file. +/// \brief Utility class for loading a ASTContext from an AST file. /// class ASTUnit { public: @@ -196,7 +196,7 @@ private: /// \brief The group of timers associated with this translation unit. llvm::OwningPtr<llvm::TimerGroup> TimerGroup; - /// \brief A list of the PCH ID numbers for each of the top-level + /// \brief A list of the serialization ID numbers for each of the top-level /// declarations parsed within the precompiled preamble. std::vector<pch::DeclID> TopLevelDeclsInPreamble; @@ -358,7 +358,7 @@ public: FileManager &getFileManager() { return *FileMgr; } const std::string &getOriginalSourceFileName(); - const std::string &getPCHFileName(); + const std::string &getASTFileName(); /// \brief Add a temporary file that the ASTUnit depends on. /// @@ -458,15 +458,15 @@ public: /// remapped contents of that file. typedef std::pair<std::string, const llvm::MemoryBuffer *> RemappedFile; - /// \brief Create a ASTUnit from a PCH file. + /// \brief Create a ASTUnit from an AST file. /// - /// \param Filename - The PCH file to load. + /// \param Filename - The AST file to load. /// /// \param Diags - The diagnostics engine to use for reporting errors; its /// lifetime is expected to extend past that of the returned ASTUnit. /// - /// \returns - The initialized ASTUnit or null if the PCH failed to load. - static ASTUnit *LoadFromPCHFile(const std::string &Filename, + /// \returns - The initialized ASTUnit or null if the AST failed to load. + static ASTUnit *LoadFromASTFile(const std::string &Filename, llvm::IntrusiveRefCntPtr<Diagnostic> Diags, bool OnlyLocalDecls = false, RemappedFile *RemappedFiles = 0, diff --git a/include/clang/Frontend/FrontendAction.h b/include/clang/Frontend/FrontendAction.h index 637458da34..773543ac06 100644 --- a/include/clang/Frontend/FrontendAction.h +++ b/include/clang/Frontend/FrontendAction.h @@ -145,8 +145,8 @@ public: /// @{ /// usesPreprocessorOnly - Does this action only use the preprocessor? If so - /// no AST context will be created and this action will be invalid with PCH - /// inputs. + /// no AST context will be created and this action will be invalid with AST + /// file inputs. virtual bool usesPreprocessorOnly() const = 0; /// usesCompleteTranslationUnit - For AST based actions, should the diff --git a/include/clang/Frontend/FrontendOptions.h b/include/clang/Frontend/FrontendOptions.h index d526a94b77..4c16d084fc 100644 --- a/include/clang/Frontend/FrontendOptions.h +++ b/include/clang/Frontend/FrontendOptions.h @@ -60,10 +60,10 @@ public: /// completion results. unsigned DisableFree : 1; ///< Disable memory freeing on exit. unsigned RelocatablePCH : 1; ///< When generating PCH files, - /// instruct the PCH writer to create + /// instruct the AST writer to create /// relocatable PCH files. unsigned ChainedPCH : 1; ///< When generating PCH files, - /// instruct the PCH writer to create + /// instruct the AST writer to create /// chained PCH files. unsigned ShowHelp : 1; ///< Show the -help text. unsigned ShowMacrosInCodeCompletion : 1; ///< Show macros in code completion diff --git a/include/clang/Lex/MacroInfo.h b/include/clang/Lex/MacroInfo.h index 009ec20f41..90f95b7ace 100644 --- a/include/clang/Lex/MacroInfo.h +++ b/include/clang/Lex/MacroInfo.h @@ -62,8 +62,8 @@ class MacroInfo { /// it has not yet been redefined or undefined. bool IsBuiltinMacro : 1; - /// IsFromPCH - True if this macro was loaded from a PCH file. - bool IsFromPCH : 1; + /// IsFromAST - True if this macro was loaded from an AST file. + bool IsFromAST : 1; private: //===--------------------------------------------------------------------===// @@ -185,11 +185,11 @@ public: /// __LINE__, which requires processing before expansion. bool isBuiltinMacro() const { return IsBuiltinMacro; } - /// isFromPCH - Return true if this macro was loaded from a PCH file. - bool isFromPCH() const { return IsFromPCH; } + /// isFromAST - Return true if this macro was loaded from an AST file. + bool isFromAST() const { return IsFromAST; } - /// setIsFromPCH - Set whether this macro was loaded from a PCH file. - void setIsFromPCH(bool FromPCH = true) { IsFromPCH = FromPCH; } + /// setIsFromAST - Set whether this macro was loaded from an AST file. + void setIsFromAST(bool FromAST = true) { IsFromAST = FromAST; } /// isUsed - Return false if this macro is defined in the main file and has /// not yet been used. diff --git a/include/clang/Sema/IdentifierResolver.h b/include/clang/Sema/IdentifierResolver.h index 59bd834073..e494792c54 100644 --- a/include/clang/Sema/IdentifierResolver.h +++ b/include/clang/Sema/IdentifierResolver.h @@ -169,7 +169,7 @@ public: /// \brief Link the declaration into the chain of declarations for /// the given identifier. /// - /// This is a lower-level routine used by the PCH reader to link a + /// This is a lower-level routine used by the AST reader to link a /// declaration into a specific IdentifierInfo before the /// declaration actually has a name. void AddDeclToIdentifierChain(IdentifierInfo *II, NamedDecl *D); diff --git a/include/clang/Serialization/PCHDeserializationListener.h b/include/clang/Serialization/PCHDeserializationListener.h index ec02bf457f..024fc5a5d9 100644 --- a/include/clang/Serialization/PCHDeserializationListener.h +++ b/include/clang/Serialization/PCHDeserializationListener.h @@ -31,14 +31,15 @@ public: /// \brief Tell the listener about the reader. virtual void SetReader(ASTReader *Reader) = 0; - /// \brief An identifier was deserialized from the PCH. + /// \brief An identifier was deserialized from the AST file. virtual void IdentifierRead(pch::IdentID ID, IdentifierInfo *II) = 0; - /// \brief A type was deserialized from the PCH. The ID here has the qualifier - /// bits already removed, and T is guaranteed to be locally unqualified + /// \brief A type was deserialized from the AST file. The ID here has the + /// qualifier bits already removed, and T is guaranteed to be locally + /// unqualified. virtual void TypeRead(pch::TypeID ID, QualType T) = 0; - /// \brief A decl was deserialized from the PCH. + /// \brief A decl was deserialized from the AST file. virtual void DeclRead(pch::DeclID ID, const Decl *D) = 0; - /// \brief A selector was read from the PCH. + /// \brief A selector was read from the AST file. virtual void SelectorRead(pch::SelectorID iD, Selector Sel) = 0; }; diff --git a/include/clang/Serialization/PCHReader.h b/include/clang/Serialization/PCHReader.h index 5ce45b7db5..5d24b297ae 100644 --- a/include/clang/Serialization/PCHReader.h +++ b/include/clang/Serialization/PCHReader.h @@ -104,8 +104,8 @@ public: /// /// \param Buffers Information about the predefines buffers. /// - /// \param OriginalFileName The original file name for the PCH, which will - /// appear as an entry in the predefines buffer. + /// \param OriginalFileName The original file name for the AST file, which + /// will appear as an entry in the predefines buffer. /// /// \param SuggestedPredefines If necessary, additional definitions are added /// here. @@ -183,13 +183,13 @@ private: Diagnostic &Diags; /// \brief The semantic analysis object that will be processing the - /// PCH files and the translation unit that uses it. + /// AST files and the translation unit that uses it. Sema *SemaObj; /// \brief The preprocessor that will be loading the source file. Preprocessor *PP; - /// \brief The AST context into which we'll read the PCH files. + /// \brief The AST context into which we'll read the AST files. ASTContext *Context; /// \brief The AST consumer. @@ -199,12 +199,12 @@ private: struct PerFileData { PerFileData(); - /// \brief The PCH stat cache installed for this file, if any. + /// \brief The AST stat cache installed for this file, if any. /// - /// The dynamic type of this stat cache is always PCHStatCache + /// The dynamic type of this stat cache is always ASTStatCache void *StatCache; - /// \brief The bitstream reader from which we'll read the PCH file. + /// \brief The bitstream reader from which we'll read the AST file. llvm::BitstreamReader StreamFile; llvm::BitstreamCursor Stream; @@ -220,38 +220,38 @@ private: /// jump around with these in context. llvm::BitstreamCursor DeclsCursor; - /// \brief The file name of the PCH file. + /// \brief The file name of the AST file. std::string FileName; /// \brief The memory buffer that stores the data associated with - /// this PCH file. + /// this AST file. llvm::OwningPtr<llvm::MemoryBuffer> Buffer; /// \brief Cursor used to read source location entries. llvm::BitstreamCursor SLocEntryCursor; - /// \brief The number of source location entries in this PCH file. + /// \brief The number of source location entries in this AST file. unsigned LocalNumSLocEntries; /// \brief Offsets for all of the source location entries in the - /// PCH file. + /// AST file. const uint32_t *SLocOffsets; - /// \brief The number of types in this PCH file. + /// \brief The number of types in this AST file. unsigned LocalNumTypes; /// \brief Offset of each type within the bitstream, indexed by the /// type ID, or the representation of a Type*. const uint32_t *TypeOffsets; - /// \brief The number of declarations in this PCH file. + /// \brief The number of declarations in this AST file. unsigned LocalNumDecls; /// \brief Offset of each declaration within the bitstream, indexed /// by the declaration ID (-1). const uint32_t *DeclOffsets; - /// \brief The number of identifiers in this PCH file. + /// \brief The number of identifiers in this AST file. unsigned LocalNumIdentifiers; /// \brief Offsets into the identifier table data. @@ -275,7 +275,7 @@ private: unsigned LocalNumMacroDefinitions; /// \brief Offsets of all of the macro definitions in the preprocessing - /// record in the PCH file. + /// record in the AST file. const uint32_t *MacroDefinitionOffsets; /// \brief The number of preallocated preprocessing entities in the @@ -283,7 +283,7 @@ private: unsigned NumPreallocatedPreprocessingEntities; /// \brief A pointer to an on-disk hash table of opaque type - /// PCHSelectorLookupTable. + /// ASTSelectorLookupTable. /// /// This hash table provides the IDs of all selectors, and the associated /// instance and factory methods. @@ -304,18 +304,18 @@ private: unsigned LocalNumSelectors; }; - /// \brief The chain of PCH files. The first entry is the one named by the + /// \brief The chain of AST files. The first entry is the one named by the /// user, the last one is the one that doesn't depend on anything further. /// That is, the entry I was created with -include-pch I+1. llvm::SmallVector<PerFileData*, 2> Chain; - /// \brief Types that have already been loaded from the PCH file. + /// \brief Types that have already been loaded from the chain. /// /// When the pointer at index I is non-NULL, the type with - /// ID = (I + 1) << FastQual::Width has already been loaded from the PCH chain + /// ID = (I + 1) << FastQual::Width has already been loaded std::vector<QualType> TypesLoaded; - /// \brief Declarations that have already been loaded from the PCH file. + /// \brief Declarations that have already been loaded from the chain. /// /// When the pointer at index I is non-NULL, the declaration with ID /// = I + 1 has already been loaded. @@ -343,7 +343,7 @@ private: typedef llvm::DenseMap<pch::DeclID, pch::DeclID> FirstLatestDeclIDMap; /// \brief Map of first declarations from a chained PCH that point to the - /// most recent declarations in another PCH. + /// most recent declarations in another AST file. FirstLatestDeclIDMap FirstLatestDeclIDs; /// \brief Read the records that describe the contents of declcontexts. @@ -373,49 +373,45 @@ private: /// \brief The macro definitions we have already loaded. llvm::SmallVector<MacroDefinition *, 16> MacroDefinitionsLoaded; - /// \brief The set of external definitions stored in the the PCH - /// file. + /// \brief The set of external definitions stored in the the chain. llvm::SmallVector<uint64_t, 16> ExternalDefinitions; - /// \brief The set of tentative definitions stored in the the PCH - /// file. + /// \brief The set of tentative definitions stored in the the chain. llvm::SmallVector<uint64_t, 16> TentativeDefinitions; - /// \brief The set of unused file scoped decls stored in the the PCH file. + /// \brief The set of unused file scoped decls stored in the the chain. llvm::SmallVector<uint64_t, 16> UnusedFileScopedDecls; - /// \brief The set of weak undeclared identifiers stored in the the PCH file. + /// \brief The set of weak undeclared identifiers stored in the chain. llvm::SmallVector<uint64_t, 64> WeakUndeclaredIdentifiers; - /// \brief The set of locally-scoped external declarations stored in - /// the the PCH file. + /// \brief The set of locally-scoped external declarations stored in the chain llvm::SmallVector<uint64_t, 16> LocallyScopedExternalDecls; - /// \brief The set of ext_vector type declarations stored in the the - /// PCH file. + /// \brief The set of ext_vector type declarations stored in the the chain. llvm::SmallVector<uint64_t, 4> ExtVectorDecls; - /// \brief The set of VTable uses of CXXRecordDecls stored in the PCH file. + /// \brief The set of VTable uses of CXXRecordDecls stored in the chain. llvm::SmallVector<uint64_t, 64> VTableUses; - /// \brief The set of dynamic CXXRecord declarations stored in the PCH file. + /// \brief The set of dynamic CXXRecord declarations stored in the chain. llvm::SmallVector<uint64_t, 16> DynamicClasses; - /// \brief The set of pending implicit instantiations stored in the PCH file. + /// \brief The set of pending implicit instantiations stored in the chain. llvm::SmallVector<uint64_t, 64> PendingImplicitInstantiations; - /// \brief The set of Sema declaration references, stored in PCH. + /// \brief The set of Sema declaration references stored in the chain. llvm::SmallVector<uint64_t, 4> SemaDeclRefs; - /// \brief The set of Objective-C category definitions stored in the - /// the PCH file. + /// \brief The set of Objective-C category definitions stored in the the chain llvm::SmallVector<uint64_t, 4> ObjCCategoryImpls; - /// \brief The original file name that was used to build the PCH file, which - /// may have been modified for relocatable-pch support. + /// \brief The original file name that was used to build the primary AST file, + /// which may have been modified for relocatable-pch support. std::string OriginalFileName; - /// \brief The actual original file name that was used to build the PCH file. + /// \brief The actual original file name that was used to build the primary + /// AST file. std::string ActualOriginalFileName; /// \brief Whether this precompiled header is a relocatable PCH file. @@ -429,12 +425,10 @@ private: /// headers when they are loaded. bool DisableValidation; - /// \brief Mapping from switch-case IDs in the PCH file to - /// switch-case statements. + /// \brief Mapping from switch-case IDs in the chain to switch-case statements std::map<unsigned, SwitchCase *> SwitchCaseStmts; - /// \brief Mapping from label statement IDs in the PCH file to label - /// statements. + /// \brief Mapping from label statement IDs in the chain to label statements. std::map<unsigned, LabelStmt *> LabelStmts; /// \brief Mapping from label IDs to the set of "goto" statements @@ -455,21 +449,21 @@ private: /// the PCH file. unsigned NumSLocEntriesRead; - /// \brief The number of source location entries in all PCH files. + /// \brief The number of source location entries in the chain. unsigned TotalNumSLocEntries; /// \brief The number of statements (and expressions) de-serialized - /// from the PCH file. + /// from the chain. unsigned NumStatementsRead; /// \brief The total number of statements (and expressions) stored - /// in the PCH file. + /// in the chain. unsigned TotalNumStatements; - /// \brief The number of macros de-serialized from the PCH file. + /// \brief The number of macros de-serialized from the chain. unsigned NumMacrosRead; - /// \brief The total number of macros stored in the PCH file. + /// \brief The total number of macros stored in the chain. unsigned TotalNumMacros; /// \brief The number of selectors that have been read. @@ -501,7 +495,7 @@ private: llvm::SmallVector<uint32_t, 4> DeclIDs; }; - /// \brief The set of identifiers that were read while the PCH reader was + /// \brief The set of identifiers that were read while the AST reader was /// (recursively) loading declarations. /// /// The declarations on the identifier chain for these identifiers will be @@ -547,7 +541,7 @@ private: ~ReadingKindTracker() { Reader.ReadingKind = PrevKind; } }; - /// \brief All predefines buffers in all PCH files, to be treated as if + /// \brief All predefines buffers in the chain, to be treated as if /// concatenated. PCHPredefinesBlocks PCHPredefinesBuffers; @@ -588,7 +582,7 @@ private: /// \brief Produce an error diagnostic and return true. /// /// This routine should only be used for fatal errors that have to - /// do with non-routine failures (e.g., corrupted PCH file). + /// do with non-routine failures (e.g., corrupted AST file). void Error(const char *Msg); ASTReader(const ASTReader&); // do not implement @@ -596,7 +590,7 @@ private: public: typedef llvm::SmallVector<uint64_t, 64> RecordData; - /// \brief Load the PCH file and validate its contents against the given + /// \brief Load the AST file and validate its contents against the given /// Preprocessor. /// /// \param PP the preprocessor associated with the context in which this @@ -609,31 +603,29 @@ public: /// user. This is only used with relocatable PCH files. If non-NULL, /// a relocatable PCH file will use the default path "/". /// - /// \param DisableValidation If true, the PCH reader will suppress most + /// \param DisableValidation If true, the AST reader will suppress most /// of its regular consistency checking, allowing the use of precompiled /// headers that cannot be determined to be compatible. ASTReader(Preprocessor &PP, ASTContext *Context, const char *isysroot = 0, bool DisableValidation = false); - /// \brief Load the PCH file without using any pre-initialized Preprocessor. + /// \brief Load the AST file without using any pre-initialized Preprocessor. /// /// The necessary information to initialize a Preprocessor later can be /// obtained by setting a ASTReaderListener. /// - /// \param SourceMgr the source manager into which the precompiled header - /// will be loaded. + /// \param SourceMgr the source manager into which the AST file will be loaded /// - /// \param FileMgr the file manager into which the precompiled header will - /// be loaded. + /// \param FileMgr the file manager into which the AST file will be loaded. /// /// \param Diags the diagnostics system to use for reporting errors and - /// warnings relevant to loading the precompiled header. + /// warnings relevant to loading the AST file. /// /// \param isysroot If non-NULL, the system include path specified by the /// user. This is only used with relocatable PCH files. If non-NULL, /// a relocatable PCH file will use the default path "/". /// - /// \param DisableValidation If true, the PCH reader will suppress most + /// \param DisableValidation If true, the AST reader will suppress most /// of its regular consistency checking, allowing the use of precompiled /// headers that cannot be determined to be compatible. ASTReader(SourceManager &SourceMgr, FileManager &FileMgr, @@ -645,12 +637,12 @@ public: /// name. ASTReadResult ReadAST(const std::string &FileName); - /// \brief Set the PCH callbacks listener. + /// \brief Set the AST callbacks listener. void setListener(ASTReaderListener *listener) { Listener.reset(listener); } - /// \brief Set the PCH deserialization listener. + /// \brief Set the AST deserialization listener. void setDeserializationListener(ASTDeserializationListener *Listener); /// \brief Set the Preprocessor to use. @@ -659,16 +651,15 @@ public: /// \brief Sets and initializes the given Context. void InitializeContext(ASTContext &Context); - /// \brief Retrieve the name of the named (primary) PCH file + /// \brief Retrieve the name of the named (primary) AST file const std::string &getFileName() const { return Chain[0]->FileName; } /// \brief Retrieve the name of the original source file name const std::string &getOriginalSourceFile() { return OriginalFileName; } - /// \brief Retrieve the name of the original source file name - /// directly from the PCH file, without actually loading the PCH - /// file. - static std::string getOriginalSourceFile(const std::string &PCHFileName, + /// \brief Retrieve the name of the original source file name directly from + /// the AST file, without actually loading the AST file. + static std::string getOriginalSourceFile(const std::string &ASTFileName, Diagnostic &Diags); /// \brief Returns the suggested contents of the predefines buffer, @@ -783,7 +774,7 @@ public: /// the ASTConsumer. virtual void StartTranslationUnit(ASTConsumer *Consumer); - /// \brief Print some statistics about PCH usage. + /// \brief Print some statistics about AST usage. virtual void PrintStats(); /// \brief Initialize the semantic source with the Sema instance @@ -938,8 +929,7 @@ public: /// \brief Retrieve the macro definition with the given ID. MacroDefinition *getMacroDefinition(pch::IdentID ID); - /// \brief Retrieve the AST context that this PCH reader - /// supplements. + /// \brief Retrieve the AST context that this AST reader supplements. ASTContext *getContext() { return Context; } // \brief Contains declarations that were loaded before we have diff --git a/lib/Basic/IdentifierTable.cpp b/lib/Basic/IdentifierTable.cpp index c7b16c99c9..e0d8571676 100644 --- a/lib/Basic/IdentifierTable.cpp +++ b/lib/Basic/IdentifierTable.cpp @@ -34,7 +34,7 @@ IdentifierInfo::IdentifierInfo() { IsPoisoned = false; IsCPPOperatorKeyword = false; NeedsHandleIdentifier = false; - IsFromPCH = false; + IsFromAST = false; RevertedTokenID = false; FETokenInfo = 0; Entry = 0; diff --git a/lib/Basic/SourceManager.cpp b/lib/Basic/SourceManager.cpp index 0a6ce4c03e..a01b002977 100644 --- a/lib/Basic/SourceManager.cpp +++ b/lib/Basic/SourceManager.cpp @@ -1247,7 +1247,7 @@ bool SourceManager::isBeforeInTranslationUnit(SourceLocation LHS, } // There is no common ancestor, most probably because one location is in the - // predefines buffer or a PCH file. + // predefines buffer or an AST file. // FIXME: We should rearrange the external interface so this simply never // happens; it can't conceptually happen. Also see PR5662. IsBeforeInTUCache.setQueryFIDs(FileID(), FileID()); // Don't try caching. diff --git a/lib/Checker/GRCoreEngine.cpp b/lib/Checker/GRCoreEngine.cpp index e0524d9ef4..5125f366de 100644 --- a/lib/Checker/GRCoreEngine.cpp +++ b/lib/Checker/GRCoreEngine.cpp @@ -696,7 +696,7 @@ void GRCallEnterNodeBuilder::GenerateNode(const GRState *state, // Create a new AnalysisManager with components of the callee's // TranslationUnit. - // The Diagnostic is actually shared when we create ASTUnits from PCH files. + // The Diagnostic is actually shared when we create ASTUnits from AST files. AnalysisManager AMgr(TU->getASTContext(), TU->getDiagnostic(), OldMgr.getLangOptions(), OldMgr.getPathDiagnosticClient(), diff --git a/lib/Frontend/ASTMerge.cpp b/lib/Frontend/ASTMerge.cpp index cbaa6a3034..b46212feda 100644 --- a/lib/Frontend/ASTMerge.cpp +++ b/lib/Frontend/ASTMerge.cpp @@ -40,13 +40,13 @@ void ASTMergeAction::ExecuteAction() { &CI.getASTContext()); llvm::IntrusiveRefCntPtr<Diagnostic> Diags(&CI.getDiagnostics()); for (unsigned I = 0, N = ASTFiles.size(); I != N; ++I) { - ASTUnit *Unit = ASTUnit::LoadFromPCHFile(ASTFiles[I], Diags, false); + ASTUnit *Unit = ASTUnit::LoadFromASTFile(ASTFiles[I], Diags, false); if (!Unit) continue; // Reset the argument -> string function so that it has the AST // context we want, since the Sema object created by - // LoadFromPCHFile will override it. + // LoadFromASTFile will override it. CI.getDiagnostics().SetArgToStringFn(&FormatASTNodeDiagnosticArgument, &CI.getASTContext()); diff --git a/lib/Frontend/ASTUnit.cpp b/lib/Frontend/ASTUnit.cpp index e0aa1b47e7..1749836536 100644 --- a/lib/Frontend/ASTUnit.cpp +++ b/lib/Frontend/ASTUnit.cpp @@ -304,7 +304,7 @@ namespace { /// \brief Gathers information from ASTReader that will be used to initialize /// a Preprocessor. -class PCHInfoCollector : public ASTReaderListener { +class ASTInfoCollector : public ASTReaderListener { LangOptions &LangOpt; HeaderSearch &HSI; std::string &TargetTriple; @@ -314,7 +314,7 @@ class PCHInfoCollector : public ASTReaderListener { unsigned NumHeaderInfos; public: - PCHInfoCollector(LangOptions &LangOpt, HeaderSearch &HSI, + ASTInfoCollector(LangOptions &LangOpt, HeaderSearch &HSI, std::string &TargetTriple, std::string &Predefines, unsigned &Counter) : LangOpt(LangOpt), HSI(HSI), TargetTriple(TargetTriple), @@ -398,12 +398,12 @@ const std::string &ASTUnit::getOriginalSourceFileName() { return OriginalSourceFile; } -const std::string &ASTUnit::getPCHFileName() { - assert(isMainFileAST() && "Not an ASTUnit from a PCH file!"); +const std::string &ASTUnit::getASTFileName() { + assert(isMainFileAST() && "Not an ASTUnit from an AST file!"); return static_cast<ASTReader *>(Ctx->getExternalSource())->getFileName(); } -ASTUnit *ASTUnit::LoadFromPCHFile(const std::string &Filename, +ASTUnit *ASTUnit::LoadFromASTFile(const std::string &Filename, llvm::IntrusiveRefCntPtr<Diagnostic> Diags, bool OnlyLocalDecls, RemappedFile *RemappedFiles, @@ -460,7 +460,7 @@ ASTUnit *ASTUnit::LoadFromPCHFile(const std::string &Filename, Reader.reset(new ASTReader(AST->getSourceManager(), AST->getFileManager(), AST->getDiagnostics())); - Reader->setListener(new PCHInfoCollector(LangInfo, HeaderInfo, TargetTriple, + Reader->setListener(new ASTInfoCollector(LangInfo, HeaderInfo, TargetTriple, Predefines, Counter)); switch (Reader->ReadAST(Filename)) { @@ -475,11 +475,11 @@ ASTUnit *ASTUnit::LoadFromPCHFile(const std::string &Filename, AST->OriginalSourceFile = Reader->getOriginalSourceFile(); - // PCH loaded successfully. Now create the preprocessor. + // AST file loaded successfully. Now create the preprocessor. // Get information about the target being compiled for. // - // FIXME: This is broken, we should store the TargetOptions in the PCH. + // FIXME: This is broken, we should store the TargetOptions in the AST file. TargetOptions TargetOpts; TargetOpts.ABI = ""; TargetOpts.CXXABI = "itanium"; @@ -512,7 +512,7 @@ ASTUnit *ASTUnit::LoadFromPCHFile(const std::string &Filename, // Attach the AST reader to the AST context as an external AST // source, so that declarations will be deserialized from the - // PCH file as needed. + // AST file as needed. ASTReader *ReaderPtr = Reader.get(); llvm::OwningPtr<ExternalASTSource> Source(Reader.take()); Context.setExternalSource(Source); diff --git a/lib/Frontend/FrontendAction.cpp b/lib/Frontend/FrontendAction.cpp index 906fd9a76c..531213bf1b 100644 --- a/lib/Frontend/FrontendAction.cpp +++ b/lib/Frontend/FrontendAction.cpp @@ -51,7 +51,7 @@ bool FrontendAction::BeginSourceFile(CompilerInstance &CI, llvm::IntrusiveRefCntPtr<Diagnostic> Diags(&CI.getDiagnostics()); std::string Error; - ASTUnit *AST = ASTUnit::LoadFromPCHFile(Filename, Diags); + ASTUnit *AST = ASTUnit::LoadFromASTFile(Filename, Diags); if (!AST) goto failure; diff --git a/lib/Lex/MacroInfo.cpp b/lib/Lex/MacroInfo.cpp index 6eac0364f6..c6d09349b5 100644 --- a/lib/Lex/MacroInfo.cpp +++ b/lib/Lex/MacroInfo.cpp @@ -20,7 +20,7 @@ MacroInfo::MacroInfo(SourceLocation DefLoc) : Location(DefLoc) { IsC99Varargs = false; IsGNUVarargs = false; IsBuiltinMacro = false; - IsFromPCH = false; + IsFromAST = false; IsDisabled = false; IsUsed = true; IsAllowRedefinitionsWithoutWarning = false; @@ -37,7 +37,7 @@ MacroInfo::MacroInfo(const MacroInfo &MI, llvm::BumpPtrAllocator &PPAllocator) { IsC99Varargs = MI.IsC99Varargs; IsGNUVarargs = MI.IsGNUVarargs; IsBuiltinMacro = MI.IsBuiltinMacro; - IsFromPCH = MI.IsFromPCH; + IsFromAST = MI.IsFromAST; IsDisabled = MI.IsDisabled; IsUsed = MI.IsUsed; IsAllowRedefinitionsWithoutWarning = MI.IsAllowRedefinitionsWithoutWarning; diff --git a/lib/Sema/IdentifierResolver.cpp b/lib/Sema/IdentifierResolver.cpp index 2e33c1e6a4..d38f403d39 100644 --- a/lib/Sema/IdentifierResolver.cpp +++ b/lib/Sema/IdentifierResolver.cpp @@ -140,7 +140,7 @@ bool IdentifierResolver::isDeclInScope(Decl *D, DeclContext *Ctx, void IdentifierResolver::AddDecl(NamedDecl *D) { DeclarationName Name = D->getDeclName(); if (IdentifierInfo *II = Name.getAsIdentifierInfo()) - II->setIsFromPCH(false); + II->setIsFromAST(false); void *Ptr = Name.getFETokenInfo<void>(); @@ -168,7 +168,7 @@ void IdentifierResolver::RemoveDecl(NamedDecl *D) { assert(D && "null param passed"); DeclarationName Name = D->getDeclName(); if (IdentifierInfo *II = Name.getAsIdentifierInfo()) - II->setIsFromPCH(false); + II->setIsFromAST(false); void *Ptr = Name.getFETokenInfo<void>(); @@ -189,7 +189,7 @@ bool IdentifierResolver::ReplaceDecl(NamedDecl *Old, NamedDecl *New) { DeclarationName Name = Old->getDeclName(); if (IdentifierInfo *II = Name.getAsIdentifierInfo()) - II->setIsFromPCH(false); + II->setIsFromAST(false); void *Ptr = Name.getFETokenInfo<void>(); @@ -227,7 +227,7 @@ IdentifierResolver::begin(DeclarationName Name) { void IdentifierResolver::AddDeclToIdentifierChain(IdentifierInfo *II, NamedDecl *D) { - II->setIsFromPCH(false); + II->setIsFromAST(false); void *Ptr = II->getFETokenInfo<void>(); if (!Ptr) { diff --git a/lib/Sema/SemaCodeComplete.cpp b/lib/Sema/SemaCodeComplete.cpp index 4810dab7aa..635236ec4c 100644 --- a/lib/Sema/SemaCodeComplete.cpp +++ b/lib/Sema/SemaCodeComplete.cpp @@ -3581,7 +3581,7 @@ void Sema::CodeCompleteObjCClassMessage(Scope *S, TypeTy *Receiver, // We're messaging "id" as a type; provide all class/factory methods. // If we have an external source, load the entire class method - // pool from the PCH file. + // pool from the AST file. if (ExternalSource) { for (uint32_t I = 0, N = ExternalSource->GetNumExternalSelectors(); I != N; ++I) { @@ -3682,7 +3682,7 @@ void Sema::CodeCompleteObjCInstanceMessage(Scope *S, ExprTy *Receiver, // about as code-completion results. // If we have an external source, load the entire class method - // pool from the PCH file. + // pool from the AST file. if (ExternalSource) { for (uint32_t I = 0, N = ExternalSource->GetNumExternalSelectors(); I != N; ++I) { @@ -4239,7 +4239,7 @@ void Sema::CodeCompleteObjCMethodDeclSelector(Scope *S, IdentifierInfo **SelIdents, unsigned NumSelIdents) { // If we have an external source, load the entire class method - // pool from the PCH file. + // pool from the AST file. if (ExternalSource) { for (uint32_t I = 0, N = ExternalSource->GetNumExternalSelectors(); I != N; ++I) { diff --git a/lib/Sema/SemaDeclObjC.cpp b/lib/Sema/SemaDeclObjC.cpp index 0fd3d6e9cc..0abc4a9152 100644 --- a/lib/Sema/SemaDeclObjC.cpp +++ b/lib/Sema/SemaDeclObjC.cpp @@ -90,7 +90,7 @@ ActOnStartClassInterface(SourceLocation AtInterfaceLoc, IDecl->setForwardDecl(false); IDecl->setClassLoc(ClassLoc); // If the forward decl was in a PCH, we need to write it again in a - // chained PCH. + // dependent AST file. IDecl->setChangedSinceDeserialization(true); // Since this ObjCInterfaceDecl was created by a forward declaration, @@ -288,7 +288,7 @@ Sema::ActOnStartProtocolInterface(SourceLocation AtProtoInterfaceLoc, PDecl->setLocation(AtProtoInterfaceLoc); PDecl->setForwardDecl(false); CurContext->addDecl(PDecl); - // Repeat in dependent PCHs. + // Repeat in dependent AST files. PDecl->setChangedSinceDeserialization(true); } else { PDecl = ObjCProtocolDecl::Create(Context, CurContext, diff --git a/lib/Serialization/ASTWriter.cpp b/lib/Serialization/ASTWriter.cpp index 6f0c8ce0d6..6f456e5f4e 100644 --- a/lib/Serialization/ASTWriter.cpp +++ b/lib/Serialization/ASTWriter.cpp @@ -1271,7 +1271,7 @@ void ASTWriter::WritePreprocessor(const Preprocessor &PP) { // Don't emit builtin macros like __LINE__ to the AST file unless they have // been redefined by the header (in which case they are not isBuiltinMacro). // Also skip macros from a AST file if we're chaining. - if (MI->isBuiltinMacro() || (Chain && MI->isFromPCH())) + if (MI->isBuiltinMacro() || (Chain && MI->isFromAST())) continue; AddIdentifierRef(I->first, Record); @@ -1900,7 +1900,7 @@ void ASTWriter::WriteIdentifierTable(Preprocessor &PP) { ID = IdentifierIDs.begin(), IDEnd = IdentifierIDs.end(); ID != IDEnd; ++ID) { assert(ID->first && "NULL identifier in identifier table"); - if (!Chain || !ID->first->isFromPCH()) + if (!Chain || !ID->first->isFromAST()) Generator.insert(ID->first, ID->second); } @@ -2249,7 +2249,7 @@ void ASTWriter::WriteASTChain(Sema &SemaRef, MemorizeStatCalls *StatCalls, // The special types are in the chained PCH. // We don't start with the translation unit, but with its decls that - // don't come from the other PCH. + // don't come from the chained PCH. const TranslationUnitDecl *TU = Context.getTranslationUnitDecl(); llvm::SmallVector<pch::DeclID, 64> NewGlobalDecls; for (DeclContext::decl_iterator I = TU->noload_decls_begin(), diff --git a/lib/Serialization/GeneratePCH.cpp b/lib/Serialization/GeneratePCH.cpp index f8dabaabc7..5329b6cbd4 100644 --- a/lib/Serialization/GeneratePCH.cpp +++ b/lib/Serialization/GeneratePCH.cpp @@ -8,7 +8,7 @@ //===----------------------------------------------------------------------===// // // This file defines the CreatePCHGenerate function, which creates an -// ASTConsumeR that generates a PCH file. +// ASTConsumer that generates a PCH file. // //===----------------------------------------------------------------------===// diff --git a/lib/Serialization/PCHReader.cpp b/lib/Serialization/PCHReader.cpp index 72f4974fb8..5cf677a7cf 100644 --- a/lib/Serialization/PCHReader.cpp +++ b/lib/Serialization/PCHReader.cpp @@ -43,7 +43,7 @@ using namespace clang; //===----------------------------------------------------------------------===// -// PCH reader validator implementation +// PCH validator implementation //===----------------------------------------------------------------------===// ASTReaderListener::~ASTReaderListener() {} @@ -242,9 +242,6 @@ bool PCHValidator::ReadPredefinesBuffer(const PCHPredefinesBlocks &Buffers, // If the concatenation of all the PCH buffers is equal to the adjusted // command line, we're done. - // We build a SmallVector of the command line here, because we'll eventually - // need to support an arbitrary amount of pieces anyway (when we have chained - // PCH reading). llvm::SmallVector<llvm::StringRef, 2> CommandLine; CommandLine.push_back(Left); CommandLine.push_back(Right); @@ -468,7 +465,7 @@ ASTReader::setDeserializationListener(ASTDeserializationListener *Listener) { namespace { -class PCHSelectorLookupTrait { +class ASTSelectorLookupTrait { ASTReader &Reader; public: @@ -480,7 +477,7 @@ public: typedef Selector external_key_type; typedef external_key_type internal_key_type; - explicit PCHSelectorLookupTrait(ASTReader &Reader) : Reader(Reader) { } + explicit ASTSelectorLookupTrait(ASTReader &Reader) : Reader(Reader) { } static bool EqualKey(const internal_key_type& a, const internal_key_type& b) { @@ -581,17 +578,17 @@ public: } // end anonymous namespace /// \brief The on-disk hash table used for the global method pool. -typedef OnDiskChainedHashTable<PCHSelectorLookupTrait> - PCHSelectorLookupTable; +typedef OnDiskChainedHashTable<ASTSelectorLookupTrait> + ASTSelectorLookupTable; namespace { -class PCHIdentifierLookupTrait { +class ASTIdentifierLookupTrait { ASTReader &Reader; llvm::BitstreamCursor &Stream; // If we know the IdentifierInfo in advance, it is here and we will // not build a new one. Used when deserializing information about an - // identifier that was constructed before the PCH file was read. + // identifier that was constructed before the AST file was read. IdentifierInfo *KnownII; public: @@ -601,7 +598,7 @@ public: typedef external_key_type internal_key_type; - PCHIdentifierLookupTrait(ASTReader &Reader, llvm::BitstreamCursor &Stream, + ASTIdentifierLookupTrait(ASTReader &Reader, llvm::BitstreamCursor &Stream, IdentifierInfo *II = 0) : Reader(Reader), Stream(Stream), KnownII(II) { } @@ -650,7 +647,7 @@ public: if (!II) II = &Reader.getIdentifierTable().getOwn(k.first, k.first + k.second); Reader.SetIdentifierInfo(ID, II); - II->setIsFromPCH(); + II->setIsFromAST(); return II; } @@ -709,7 +706,7 @@ public: Reader.SetGloballyVisibleDecls(II, DeclIDs); } - II->setIsFromPCH(); + II->setIsFromAST(); return II; } }; @@ -718,22 +715,14 @@ public: /// \brief The on-disk hash table used to contain information about /// all of the identifiers in the program. -typedef OnDiskChainedHashTable<PCHIdentifierLookupTrait> - PCHIdentifierLookupTable; +typedef OnDiskChainedHashTable<ASTIdentifierLookupTrait> + ASTIdentifierLookupTable; void ASTReader::Error(const char *Msg) { Diag(diag::err_fe_pch_malformed) << Msg; } -/// \brief Check the contents of the concatenation of all predefines buffers in -/// the PCH chain against the contents of the predefines buffer of the current -/// compiler invocation. -/// -/// The contents should be the same. If not, then some command-line option -/// changed the preprocessor state and we must probably reject the PCH file. -/// -/// \returns true if there was a mismatch (in which case the PCH file -/// should be ignored), or false otherwise. +/// \brief Tell the AST listener about the predefines buffers in the chain. bool ASTReader::CheckPredefinesBuffers() { if (Listener) return Listener->ReadPredefinesBuffer(PCHPredefinesBuffers, @@ -792,7 +781,7 @@ bool ASTReader::ParseLineTable(llvm::SmallVectorImpl<uint64_t> &Record) { namespace { -class PCHStatData { +class ASTStatData { public: const bool hasStat; const ino_t ino; @@ -801,19 +790,19 @@ public: const time_t mtime; const off_t size; - PCHStatData(ino_t i, dev_t d, mode_t mo, time_t m, off_t s) + ASTStatData(ino_t i, dev_t d, mode_t mo, time_t m, off_t s) : hasStat(true), ino(i), dev(d), mode(mo), mtime(m), size(s) {} - PCHStatData() + ASTStatData() : hasStat(false), ino(0), dev(0), mode(0), mtime(0), size(0) {} }; -class PCHStatLookupTrait { +class ASTStatLookupTrait { public: typedef const char *external_key_type; typedef const char *internal_key_type; - typedef PCHStatData data_type; + typedef ASTStatData data_type; static unsigned ComputeHash(const char *path) { return llvm::HashString(path); @@ -856,13 +845,13 @@ class PCHStatLookupTrait { /// /// This cache is very similar to the stat cache used by pretokenized /// headers. -class PCHStatCache : public StatSysCallCache { - typedef OnDiskChainedHashTable<PCHStatLookupTrait> CacheTy; +class ASTStatCache : public StatSysCallCache { + typedef OnDiskChainedHashTable<ASTStatLookupTrait> CacheTy; CacheTy *Cache; unsigned &NumStatHits, &NumStatMisses; public: - PCHStatCache(const unsigned char *Buckets, + ASTStatCache(const unsigned char *Buckets, const unsigned char *Base, unsigned &NumStatHits, unsigned &NumStatMisses) @@ -870,20 +859,20 @@ public: Cache = CacheTy::Create(Buckets, Base); } - ~PCHStatCache() { delete Cache; } + ~ASTStatCache() { delete Cache; } int stat(const char *path, struct stat *buf) { - // Do the lookup for the file's data in the PCH file. + // Do the lookup for the file's data in the AST file. CacheTy::iterator I = Cache->find(path); - // If we don't get a hit in the PCH file just forward to 'stat'. + // If we don't get a hit in the AST file just forward to 'stat'. if (I == Cache->end()) { ++NumStatMisses; return StatSysCallCache::stat(path, buf); } ++NumStatHits; - PCHStatData Data = *I; + ASTStatData Data = *I; if (!Data.hasStat) return 1; @@ -913,13 +902,13 @@ ASTReader::ASTReadResult ASTReader::ReadSourceManagerBlock(PerFileData &F) { // The stream itself is going to skip over the source manager block. if (F.Stream.SkipBlock()) { - Error("malformed block record in PCH file"); + Error("malformed block record in AST file"); return Failure; } // Enter the source manager block. if (SLocEntryCursor.EnterSubBlock(pch::SOURCE_MANAGER_BLOCK_ID)) { - Error("malformed source manager block record in PCH file"); + Error("malformed source manager block record in AST file"); return Failure; } @@ -928,7 +917,7 @@ ASTReader::ASTReadResult ASTReader::ReadSourceManagerBlock(PerFileData &F) { unsigned Code = SLocEntryCursor.ReadCode(); if (Code == llvm::bitc::END_BLOCK) { if (SLocEntryCursor.ReadBlockEnd()) { - Error("error at end of Source Manager block in PCH file"); + Error("error at end of Source Manager block in AST file"); return Failure; } return Success; @@ -938,7 +927,7 @@ ASTReader::ASTReadResult ASTReader::ReadSourceManagerBlock(PerFileData &F) { // No known subblocks, always skip them. SLocEntryCursor.ReadSubBlockID(); if (SLocEntryCursor.SkipBlock()) { - Error("malformed block record in PCH file"); + Error("malformed block record in AST file"); return Failure; } continue; @@ -997,7 +986,7 @@ ASTReader::ASTReadResult ASTReader::ReadSLocEntryRecord(unsigned ID) { return Success; if (ID > TotalNumSLocEntries) { - Error("source location entry ID out-of-range for PCH file"); + Error("source location entry ID out-of-range for AST file"); return Failure; } @@ -1008,7 +997,7 @@ ASTReader::ASTReadResult ASTReader::ReadSLocEntryRecord(unsigned ID) { if (Code == llvm::bitc::END_BLOCK || Code == llvm::bitc::ENTER_SUBBLOCK || Code == llvm::bitc::DEFINE_ABBREV) { - Error("incorrectly-formatted source location entry in PCH file"); + Error("incorrectly-formatted source location entry in AST file"); return Failure; } @@ -1017,7 +1006,7 @@ ASTReader::ASTReadResult ASTReader::ReadSLocEntryRecord(unsigned ID) { unsigned BlobLen; switch (SLocEntryCursor.ReadRecord(Code, Record, &BlobStart, &BlobLen)) { default: - Error("incorrectly-formatted source location entry in PCH file"); + Error("incorrectly-formatted source location entry in AST file"); return Failure; case pch::SM_SLOC_FILE_ENTRY: { @@ -1027,7 +1016,7 @@ ASTReader::ASTReadResult ASTReader::ReadSLocEntryRecord(unsigned ID) { if (File == 0) { std::string ErrorStr = "could not find file '"; ErrorStr += Filename; - ErrorStr += "' referenced by PCH file"; + ErrorStr += "' referenced by AST file"; Error(ErrorStr.c_str()); return Failure; } @@ -1079,7 +1068,7 @@ ASTReader::ASTReadResult ASTReader::ReadSLocEntryRecord(unsigned ID) { = SLocEntryCursor.ReadRecord(Code, Record, &BlobStart, &BlobLen); if (RecCode != pch::SM_SLOC_BUFFER_BLOB) { - Error("PCH record has invalid code"); + Error("AST record has invalid code"); return Failure; } @@ -1121,7 +1110,7 @@ ASTReader::ASTReadResult ASTReader::ReadSLocEntryRecord(unsigned ID) { bool ASTReader::ReadBlockAbbrevs(llvm::BitstreamCursor &Cursor, unsigned BlockID) { if (Cursor.EnterSubBlock(BlockID)) { - Error("malformed block record in PCH file"); + Error("malformed block record in AST file"); return Failure; } @@ -1157,7 +1146,7 @@ void ASTReader::ReadMacroRecord(llvm::BitstreamCursor &Stream, uint64_t Offset){ // No known subblocks, always skip them. Stream.ReadSubBlockID(); if (Stream.SkipBlock()) { - Error("malformed block record in PCH file"); + Error("malformed block record in AST file"); return; } continue; @@ -1183,7 +1172,7 @@ void ASTReader::ReadMacroRecord(llvm::BitstreamCursor &Stream, uint64_t Offset){ IdentifierInfo *II = DecodeIdentifierInfo(Record[0]); if (II == 0) { - Error("macro must have a name in PCH file"); + Error("macro must have a name in AST file"); return; } SourceLocation Loc = SourceLocation::getFromRawEncoding(Record[1]); @@ -1191,7 +1180,7 @@ void ASTReader::ReadMacroRecord(llvm::BitstreamCursor &Stream, uint64_t Offset){ MacroInfo *MI = PP->AllocateMacroInfo(Loc); MI->setIsUsed(isUsed); - MI->setIsFromPCH(); + MI->setIsFromAST(); unsigned NextIndex = 3; if (RecType == pch::PP_MACRO_FUNCTION_LIKE) { @@ -1254,7 +1243,7 @@ void ASTReader::ReadMacroRecord(llvm::BitstreamCursor &Stream, uint64_t Offset){ return; if (!PP->getPreprocessingRecord()) { - Error("missing preprocessing record in PCH file"); + Error("missing preprocessing record in AST file"); return; } @@ -1280,7 +1269,7 @@ void ASTReader::ReadMacroRecord(llvm::BitstreamCursor &Stream, uint64_t Offset){ return; if (!PP->getPreprocessingRecord()) { - Error("missing preprocessing record in PCH file"); + Error("missing preprocessing record in AST file"); return; } @@ -1317,7 +1306,7 @@ void ASTReader::ReadDefinedMacros() { llvm::BitstreamCursor Cursor = MacroCursor; if (Cursor.EnterSubBlock(pch::PREPROCESSOR_BLOCK_ID)) { - Error("malformed preprocessor block record in PCH file"); + Error("malformed preprocessor block record in AST file"); return; } @@ -1326,7 +1315,7 @@ void ASTReader::ReadDefinedMacros() { unsigned Code = Cursor.ReadCode(); if (Code == llvm::bitc::END_BLOCK) { if (Cursor.ReadBlockEnd()) { - Error("error at end of preprocessor block in PCH file"); + Error("error at end of preprocessor block in AST file"); return; } break; @@ -1336,7 +1325,7 @@ void ASTReader::ReadDefinedMacros() { // No known subblocks, always skip them. Cursor.ReadSubBlockID(); if (Cursor.SkipBlock()) { - Error("malformed block record in PCH file"); + Error("malformed block record in AST file"); return; } continue; @@ -1423,18 +1412,18 @@ ASTReader::ReadASTBlock(PerFileData &F) { llvm::BitstreamCursor &Stream = F.Stream; if (Stream.EnterSubBlock(pch::PCH_BLOCK_ID)) { - Error("malformed block record in PCH file"); + Error("malformed block record in AST file"); return Failure; } - // Read all of the records and blocks for the PCH file. + // Read all of the records and blocks for the ASt file. RecordData Record; bool First = true; while (!Stream.AtEndOfStream()) { unsigned Code = Stream.ReadCode(); if (Code == llvm::bitc::END_BLOCK) { if (Stream.ReadBlockEnd()) { - Error("error at end of module block in PCH file"); + Error("error at end of module block in AST file"); return Failure; } @@ -1452,7 +1441,7 @@ ASTReader::ReadASTBlock(PerFileData &F) { if (Stream.SkipBlock() || // Skip with the main cursor. // Read the abbrevs. ReadBlockAbbrevs(F.DeclsCursor, pch::DECLTYPES_BLOCK_ID)) { - Error("malformed block record in PCH file"); + Error("malformed block record in AST file"); return Failure; } break; @@ -1463,7 +1452,7 @@ ASTReader::ReadASTBlock(PerFileData &F) { PP->setExternalSource(this); if (Stream.SkipBlock()) { - Error("malformed block record in PCH file"); + Error("malformed block record in AST file"); return Failure; } break; @@ -1474,7 +1463,7 @@ ASTReader::ReadASTBlock(PerFileData &F) { break; case Failure: - Error("malformed source manager block in PCH file"); + Error("malformed source manager block in AST file"); return Failure; case IgnorePCH: @@ -1539,7 +1528,7 @@ ASTReader::ReadASTBlock(PerFileData &F) { case pch::TYPE_OFFSET: if (F.LocalNumTypes != 0) { - Error("duplicate TYPE_OFFSET record in PCH file"); + Error("duplicate TYPE_OFFSET record in AST file"); return Failure; } F.TypeOffsets = (const uint32_t *)BlobStart; @@ -1548,7 +1537,7 @@ ASTReader::ReadASTBlock(PerFileData &F) { case pch::DECL_OFFSET: if (F.LocalNumDecls != 0) { - Error("duplicate DECL_OFFSET record in PCH file"); + Error("duplicate DECL_OFFSET record in AST file"); return Failure; } F.DeclOffsets = (const uint32_t *)BlobStart; @@ -1586,10 +1575,10 @@ ASTReader::ReadASTBlock(PerFileData &F) { F.IdentifierTableData = BlobStart; if (Record[0]) { F.IdentifierLookupTable - = PCHIdentifierLookupTable::Create( + = ASTIdentifierLookupTable::Create( (const unsigned char *)F.IdentifierTableData + Record[0], (const unsigned char *)F.IdentifierTableData, - PCHIdentifierLookupTrait(*this, F.Stream)); + ASTIdentifierLookupTrait(*this, F.Stream)); if (PP) PP->getIdentifierTable().setExternalIdentifierLookup(this); } @@ -1597,7 +1586,7 @@ ASTReader::ReadASTBlock(PerFileData &F) { case pch::IDENTIFIER_OFFSET: if (F.LocalNumIdentifiers != 0) { - Error("duplicate IDENTIFIER_OFFSET record in PCH file"); + Error("duplicate IDENTIFIER_OFFSET record in AST file"); return Failure; } F.IdentifierOffsets = (const uint32_t *)BlobStart; @@ -1669,10 +1658,10 @@ ASTReader::ReadASTBlock(PerFileData &F) { F.SelectorLookupTableData = (const unsigned char *)BlobStart; if (Record[0]) F.SelectorLookupTable - = PCHSelectorLookupTable::Create( + = ASTSelectorLookupTable::Create( F.SelectorLookupTableData + Record[0], F.SelectorLookupTableData, - PCHSelectorLookupTrait(*this)); + ASTSelectorLookupTrait(*this)); TotalNumMethodPoolEntries += Record[1]; break; @@ -1690,8 +1679,9 @@ ASTReader::ReadASTBlock(PerFileData &F) { case pch::SOURCE_LOCATION_OFFSETS: F.SLocOffsets = (const uint32_t *)BlobStart; F.LocalNumSLocEntries = Record[0]; - // We cannot delay this until all PCHs are loaded, because then source - // location preloads would also have to be delayed. + // We cannot delay this until the entire chain is loaded, because then + // source location preloads would also have to be delayed. + // FIXME: Is there a reason not to do that? TotalNumSLocEntries += F.LocalNumSLocEntries; SourceMgr.PreallocateSLocEntries(this, TotalNumSLocEntries, Record[1]); break; @@ -1705,8 +1695,8 @@ ASTReader::ReadASTBlock(PerFileData &F) { break; case pch::STAT_CACHE: { - PCHStatCache *MyStatCache = - new PCHStatCache((const unsigned char *)BlobStart + Record[0], + ASTStatCache *MyStatCache = + new ASTStatCache((const unsigned char *)BlobStart + Record[0], (const unsigned char *)BlobStart, NumStatHits, NumStatMisses); FileMgr.addStatCache(MyStatCache); @@ -1752,7 +1742,7 @@ ASTReader::ReadASTBlock(PerFileData &F) { break; case pch::ORIGINAL_FILE_NAME: - // The primary PCH will be the last to get here, so it will be the one + // The primary AST will be the last to get here, so it will be the one // that's used. ActualOriginalFileName.assign(BlobStart, BlobLen); OriginalFileName = ActualOriginalFileName; @@ -1761,9 +1751,9 @@ ASTReader::ReadASTBlock(PerFileData &F) { case pch::VERSION_CONTROL_BRANCH_REVISION: { const std::string &CurBranch = getClangFullRepositoryVersion(); - llvm::StringRef PCHBranch(BlobStart, BlobLen); - if (llvm::StringRef(CurBranch) != PCHBranch && !DisableValidation) { - Diag(diag::warn_pch_different_branch) << PCHBranch << CurBranch; + llvm::StringRef ASTBranch(BlobStart, BlobLen); + if (llvm::StringRef(CurBranch) != ASTBranch && !DisableValidation) { + Diag(diag::warn_pch_different_branch) << ASTBranch << CurBranch; return IgnorePCH; } break; @@ -1777,7 +1767,7 @@ ASTReader::ReadASTBlock(PerFileData &F) { case pch::DECL_REPLACEMENTS: { if (Record.size() % 2 != 0) { - Error("invalid DECL_REPLACEMENTS block in PCH file"); + Error("invalid DECL_REPLACEMENTS block in AST file"); return Failure; } for (unsigned I = 0, N = Record.size(); I != N; I += 2) @@ -1788,7 +1778,7 @@ ASTReader::ReadASTBlock(PerFileData &F) { } First = false; } - Error("premature end of bitstream in PCH file"); + Error("premature end of bitstream in AST file"); return Failure; } @@ -1836,7 +1826,7 @@ ASTReader::ASTReadResult ASTReader::ReadAST(const std::string &FileName) { if (PP) { // Initialization of keywords and pragmas occurs before the - // PCH file is read, so there may be some identifiers that were + // AST file is read, so there may be some identifiers that were // loaded into the IdentifierTable before we intercepted the // creation of identifiers. Iterate through the list of known // identifiers and determine whether we have to establish @@ -1854,18 +1844,18 @@ ASTReader::ASTReadResult ASTReader::ReadAST(const std::string &FileName) { Identifiers.push_back(Id->second); // We need to search the tables in all files. for (unsigned J = 0, M = Chain.size(); J != M; ++J) { - PCHIdentifierLookupTable *IdTable - = (PCHIdentifierLookupTable *)Chain[J]->IdentifierLookupTable; - // Not all PCH files necessarily have identifier tables, only the useful + ASTIdentifierLookupTable *IdTable + = (ASTIdentifierLookupTable *)Chain[J]->IdentifierLookupTable; + // Not all AST files necessarily have identifier tables, only the useful // ones. if (!IdTable) continue; for (unsigned I = 0, N = Identifiers.size(); I != N; ++I) { IdentifierInfo *II = Identifiers[I]; // Look in the on-disk hash tables for an entry for this identifier - PCHIdentifierLookupTrait Info(*this, Chain[J]->Stream, II); + ASTIdentifierLookupTrait Info(*this, Chain[J]->Stream, II); std::pair<const char*,unsigned> Key(II->getNameStart(),II->getLength()); - PCHIdentifierLookupTable::iterator Pos = IdTable->find(Key, &Info); + ASTIdentifierLookupTable::iterator Pos = IdTable->find(Key, &Info); if (Pos == IdTable->end()) continue; @@ -1886,10 +1876,10 @@ ASTReader::ASTReadResult ASTReader::ReadASTCore(llvm::StringRef FileName) { Chain.push_back(new PerFileData()); PerFileData &F = *Chain.back(); - // Set the PCH file name. + // Set the AST file name. F.FileName = FileName; - // Open the PCH file. + // Open the AST file. // // FIXME: This shouldn't be here, we should just take a raw_ostream. std::string ErrStr; @@ -1919,17 +1909,17 @@ ASTReader::ASTReadResult ASTReader::ReadASTCore(llvm::StringRef FileName) { unsigned Code = Stream.ReadCode(); if (Code != llvm::bitc::ENTER_SUBBLOCK) { - Error("invalid record at top-level of PCH file"); + Error("invalid record at top-level of AST file"); return Failure; } unsigned BlockID = Stream.ReadSubBlockID(); - // We only know the PCH subblock ID. + // We only know the AST subblock ID. switch (BlockID) { case llvm::bitc::BLOCKINFO_BLOCK_ID: if (Stream.ReadBlockInfoBlock()) { - Error("malformed BlockInfoBlock in PCH file"); + Error("malformed BlockInfoBlock in AST file"); return Failure; } break; @@ -1943,8 +1933,8 @@ ASTReader::ASTReadResult ASTReader::ReadASTCore(llvm::StringRef FileName) { case IgnorePCH: // FIXME: We could consider reading through to the end of this - // PCH block, skipping subblocks, to see if there are other - // PCH blocks elsewhere. + // AST block, skipping subblocks, to see if there are other + // AST blocks elsewhere. // Clear out any preallocated source location entries, so that // the source manager does not try to resolve them later. @@ -1952,14 +1942,14 @@ ASTReader::ASTReadResult ASTReader::ReadASTCore(llvm::StringRef FileName) { // Remove the stat cache. if (F.StatCache) - FileMgr.removeStatCache((PCHStatCache*)F.StatCache); + FileMgr.removeStatCache((ASTStatCache*)F.StatCache); return IgnorePCH; } break; default: if (Stream.SkipBlock()) { - Error("malformed block record in PCH file"); + Error("malformed block record in AST file"); return Failure; } break; @@ -2022,7 +2012,7 @@ void ASTReader::InitializeContext(ASTContext &Ctx) { else { const TagType *Tag = FileType->getAs<TagType>(); if (!Tag) { - Error("Invalid FILE type in PCH file"); + Error("Invalid FILE type in AST file"); return; } Context->setFILEDecl(Tag->getDecl()); @@ -2039,7 +2029,7 @@ void ASTReader::InitializeContext(ASTContext &Ctx) { else { const TagType *Tag = Jmp_bufType->getAs<TagType>(); if (!Tag) { - Error("Invalid jmp_bug type in PCH file"); + Error("Invalid jmp_buf type in AST file"); return; } Context->setjmp_bufDecl(Tag->getDecl()); @@ -2055,7 +2045,7 @@ void ASTReader::InitializeContext(ASTContext &Ctx) { Context->setsigjmp_bufDecl(Typedef->getDecl()); else { const TagType *Tag = Sigjmp_bufType->getAs<TagType>(); - assert(Tag && "Invalid sigjmp_buf type in PCH file"); + assert(Tag && "Invalid sigjmp_buf type in AST file"); Context->setsigjmp_bufDecl(Tag->getDecl()); } } @@ -2081,14 +2071,14 @@ void ASTReader::InitializeContext(ASTContext &Ctx) { } /// \brief Retrieve the name of the original source file name -/// directly from the PCH file, without actually loading the PCH +/// directly from the AST file, without actually loading the AST /// file. -std::string ASTReader::getOriginalSourceFile(const std::string &PCHFileName, +std::string ASTReader::getOriginalSourceFile(const std::string &ASTFileName, Diagnostic &Diags) { - // Open the PCH file. + // Open the AST file. std::string ErrStr; llvm::OwningPtr<llvm::MemoryBuffer> Buffer; - Buffer.reset(llvm::MemoryBuffer::getFile(PCHFileName.c_str(), &ErrStr)); + Buffer.reset(llvm::MemoryBuffer::getFile(ASTFileName.c_str(), &ErrStr)); if (!Buffer) { Diags.Report(diag::err_fe_unable_to_read_pch_file) << ErrStr; return std::string(); @@ -2106,7 +2096,7 @@ std::string ASTReader::getOriginalSourceFile(const std::string &PCHFileName, Stream.Read(8) != 'P' || Stream.Read(8) != 'C' || Stream.Read(8) != 'H') { - Diags.Report(diag::err_fe_not_a_pch_file) << PCHFileName; + Diags.Report(diag::err_fe_not_a_pch_file) << ASTFileName; return std::string(); } @@ -2117,18 +2107,18 @@ std::string ASTReader::getOriginalSourceFile(const std::string &PCHFileName, if (Code == llvm::bitc::ENTER_SUBBLOCK) { unsigned BlockID = Stream.ReadSubBlockID(); - // We only know the PCH subblock ID. + // We only know the AST subblock ID. switch (BlockID) { case pch::PCH_BLOCK_ID: if (Stream.EnterSubBlock(pch::PCH_BLOCK_ID)) { - Diags.Report(diag::err_fe_pch_malformed_block) << PCHFileName; + Diags.Report(diag::err_fe_pch_malformed_block) << ASTFileName; return std::string(); } break; default: if (Stream.SkipBlock()) { - Diags.Report(diag::err_fe_pch_malformed_block) << PCHFileName; + Diags.Report(diag::err_fe_pch_malformed_block) << ASTFileName; return std::string(); } break; @@ -2138,7 +2128,7 @@ std::string ASTReader::getOriginalSourceFile(const std::string &PCHFileName, if (Code == llvm::bitc::END_BLOCK) { if (Stream.ReadBlockEnd()) { - Diags.Report(diag::err_fe_pch_error_at_end_block) << PCHFileName; + Diags.Report(diag::err_fe_pch_error_at_end_block) << ASTFileName; return std::string(); } continue; @@ -2163,17 +2153,10 @@ std::string ASTReader::getOriginalSourceFile(const std::string &PCHFileName, /// \brief Parse the record that corresponds to a LangOptions data /// structure. /// -/// This routine compares the language options used to generate the -/// PCH file against the language options set for the current -/// compilation. For each option, we classify differences between the -/// two compiler states as either "benign" or "important". Benign -/// differences don't matter, and we accept them without complaint -/// (and without modifying the language options). Differences between -/// the states for important options cause the PCH file to be -/// unusable, so we emit a warning and return true to indicate that -/// there was an error. +/// This routine parses the language options from the AST file and then gives +/// them to the AST listener if one is set. /// -/// \returns true if the PCH file is unacceptable, false otherwise. +/// \returns true if the listener deems the file unacceptable, false otherwise. bool ASTReader::ParseLanguageOptions( const llvm::SmallVectorImpl<uint64_t> &Record) { if (Listener) { @@ -2380,7 +2363,7 @@ QualType ASTReader::ReadTypeRecord(unsigned Index) { case pch::TYPE_VECTOR: { if (Record.size() != 3) { - Error("incorrect encoding of vector type in PCH file"); + Error("incorrect encoding of vector type in AST file"); return QualType(); } @@ -2393,7 +2376,7 @@ QualType ASTReader::ReadTypeRecord(unsigned Index) { case pch::TYPE_EXT_VECTOR: { if (Record.size() != 3) { - Error("incorrect encoding of extended vector type in PCH file"); + Error("incorrect encoding of extended vector type in AST file"); return QualType(); } @@ -2457,7 +2440,7 @@ QualType ASTReader::ReadTypeRecord(unsigned Index) { case pch::TYPE_TYPEOF: { if (Record.size() != 1) { - Error("incorrect encoding of typeof(type) in PCH file"); + Error("incorrect encoding of typeof(type) in AST file"); return QualType(); } QualType UnderlyingType = GetType(Record[0]); @@ -2532,7 +2515,7 @@ QualType ASTReader::ReadTypeRecord(unsigned Index) { CXXRecordDecl *D = cast<CXXRecordDecl>(GetDecl(Record[0])); QualType TST = GetType(Record[1]); // probably derivable // FIXME: ASTContext::getInjectedClassNameType is not currently suitable - // for PCH reading, too much interdependencies. + // for AST reading, too much interdependencies. return QualType(new (*Context, TypeAlignment) InjectedClassNameType(D, TST), 0); } @@ -2855,7 +2838,7 @@ QualType ASTReader::GetType(pch::TypeID ID) { assert(Index < TypesLoaded.size() && "Type index out-of-range"); if (TypesLoaded[Index].isNull()) { TypesLoaded[Index] = ReadTypeRecord(Index); - TypesLoaded[Index]->setFromPCH(); + TypesLoaded[Index]->setFromAST(); if (DeserializationListener) DeserializationListener->TypeRead(ID >> Qualifiers::FastWidth, TypesLoaded[Index]); @@ -2922,7 +2905,7 @@ Decl *ASTReader::GetDecl(pch::DeclID ID) { return 0; if (ID > DeclsLoaded.size()) { - Error("declaration ID out-of-range for PCH file"); + Error("declaration ID out-of-range for AST file"); return 0; } @@ -3062,7 +3045,7 @@ void ASTReader::StartTranslationUnit(ASTConsumer *Consumer) { } void ASTReader::PrintStats() { - std::fprintf(stderr, "*** PCH Statistics:\n"); + std::fprintf(stderr, "*** AST File Statistics:\n"); unsigned NumTypesLoaded = TypesLoaded.size() - std::count(TypesLoaded.begin(), TypesLoaded.end(), @@ -3244,12 +3227,12 @@ IdentifierInfo* ASTReader::get(const char *NameStart, const char *NameEnd) { // Try to find this name within our on-disk hash tables. We start with the // most recent one, since that one contains the most up-to-date info. for (unsigned I = 0, N = Chain.size(); I != N; ++I) { - PCHIdentifierLookupTable *IdTable - = (PCHIdentifierLookupTable *)Chain[I]->IdentifierLookupTable; + ASTIdentifierLookupTable *IdTable + = (ASTIdentifierLookupTable *)Chain[I]->IdentifierLookupTable; if (!IdTable) continue; std::pair<const char*, unsigned> Key(NameStart, NameEnd - NameStart); - PCHIdentifierLookupTable::iterator Pos = IdTable->find(Key); + ASTIdentifierLookupTable::iterator Pos = IdTable->find(Key); if (Pos == IdTable->end()) continue; @@ -3269,16 +3252,16 @@ ASTReader::ReadMethodPool(Selector Sel) { if (!F.SelectorLookupTable) continue; - PCHSelectorLookupTable *PoolTable - = (PCHSelectorLookupTable*)F.SelectorLookupTable; - PCHSelectorLookupTable::iterator Pos = PoolTable->find(Sel); + ASTSelectorLookupTable *PoolTable + = (ASTSelectorLookupTable*)F.SelectorLookupTable; + ASTSelectorLookupTable::iterator Pos = PoolTable->find(Sel); if (Pos != PoolTable->end()) { ++NumSelectorsRead; // FIXME: Not quite happy with the statistics here. We probably should // disable this tracking when called via LoadSelector. // Also, should entries without methods count as misses? ++NumMethodPoolEntriesRead; - PCHSelectorLookupTrait::data_type Data = *Pos; + ASTSelectorLookupTrait::data_type Data = *Pos; if (DeserializationListener) DeserializationListener->SelectorRead(Data.ID, Sel); return std::make_pair(Data.Instance, Data.Factory); @@ -3305,7 +3288,7 @@ void ASTReader::SetIdentifierInfo(unsigned ID, IdentifierInfo *II) { /// \brief Set the globally-visible declarations associated with the given /// identifier. /// -/// If the PCH reader is currently in a state where the given declaration IDs +/// If the AST reader is currently in a state where the given declaration IDs /// cannot safely be resolved, they are queued until it is safe to resolve /// them. /// @@ -3355,7 +3338,7 @@ IdentifierInfo *ASTReader::DecodeIdentifierInfo(unsigned ID) { return 0; if (IdentifiersLoaded.empty()) { - Error("no identifier table in PCH file"); + Error("no identifier table in AST file"); return 0; } @@ -3375,9 +3358,8 @@ IdentifierInfo *ASTReader::DecodeIdentifierInfo(unsigned ID) { } assert(Str && "Broken Chain"); - // All of the strings in the PCH file are preceded by a 16-bit - // length. Extract that 16-bit length to avoid having to execute - // strlen(). + // All of the strings in the AST file are preceded by a 16-bit length. + // Extract that 16-bit length to avoid having to execute strlen(). // NOTE: 'StrLenPtr' is an 'unsigned char*' so that we load bytes as // unsigned integers. This is important to avoid integer overflow when // we cast them to 'unsigned'. @@ -3402,7 +3384,7 @@ Selector ASTReader::DecodeSelector(unsigned ID) { return Selector(); if (ID > SelectorsLoaded.size()) { - Error("selector ID out of range in PCH file"); + Error("selector ID out of range in AST file"); return Selector(); } @@ -3412,7 +3394,7 @@ Selector ASTReader::DecodeSelector(unsigned ID) { for (unsigned I = 0, N = Chain.size(); I != N; ++I) { PerFileData &F = *Chain[N - I - 1]; if (Idx < F.LocalNumSelectors) { - PCHSelectorLookupTrait Trait(*this); + ASTSelectorLookupTrait Trait(*this); SelectorsLoaded[ID - 1] = Trait.ReadKey(F.SelectorLookupTableData + F.SelectorOffsets[Idx], 0); if (DeserializationListener) diff --git a/lib/Serialization/PCHReaderDecl.cpp b/lib/Serialization/PCHReaderDecl.cpp index 4e2156a1c5..677d64ede6 100644 --- a/lib/Serialization/PCHReaderDecl.cpp +++ b/lib/Serialization/PCHReaderDecl.cpp @@ -870,8 +870,8 @@ void ASTDeclReader::VisitRedeclarableTemplateDecl(RedeclarableTemplateDecl *D) { cast_or_null<RedeclarableTemplateDecl>(Reader.GetDecl(Record[Idx++])); // This decl is a first one and the latest declaration that it points to is - // in the same PCH. However, if this actually needs to point to a - // redeclaration in another chained PCH, we need to update it by checking + // in the same AST file. However, if this actually needs to point to a + // redeclaration in another AST file, we need to update it by checking // the FirstLatestDeclIDs map which tracks this kind of decls. assert(Reader.GetDecl(ThisDeclID) == D && "Invalid ThisDeclID ?"); ASTReader::FirstLatestDeclIDMap::iterator I @@ -1069,8 +1069,8 @@ void ASTDeclReader::VisitRedeclarable(Redeclarable<T> *D) { return; // This decl is a first one and the latest declaration that it points to is in - // the same PCH. However, if this actually needs to point to a redeclaration - // in another chained PCH, we need to update it by checking the + // the same AST file. However, if this actually needs to point to a + // redeclaration in another AST file, we need to update it by checking the // FirstLatestDeclIDs map which tracks this kind of decls. assert(Reader.GetDecl(ThisDeclID) == static_cast<T*>(D) && "Invalid ThisDeclID ?"); diff --git a/lib/Serialization/PCHReaderStmt.cpp b/lib/Serialization/PCHReaderStmt.cpp index 6f9314e865..2813954901 100644 --- a/lib/Serialization/PCHReaderStmt.cpp +++ b/lib/Serialization/PCHReaderStmt.cpp @@ -1287,7 +1287,7 @@ Stmt *ASTReader::ReadStmtFromStream(llvm::BitstreamCursor &Cursor) { unsigned Code = Cursor.ReadCode(); if (Code == llvm::bitc::END_BLOCK) { if (Cursor.ReadBlockEnd()) { - Error("error at end of block in PCH file"); + Error("error at end of block in AST file"); return 0; } break; @@ -1297,7 +1297,7 @@ Stmt *ASTReader::ReadStmtFromStream(llvm::BitstreamCursor &Cursor) { // No known subblocks, always skip them. Cursor.ReadSubBlockID(); if (Cursor.SkipBlock()) { - Error("malformed block record in PCH file"); + Error("malformed block record in AST file"); return 0; } continue; diff --git a/tools/libclang/CIndex.cpp b/tools/libclang/CIndex.cpp index a5d0f13d77..8134971ab4 100644 --- a/tools/libclang/CIndex.cpp +++ b/tools/libclang/CIndex.cpp @@ -1189,7 +1189,7 @@ CXTranslationUnit clang_createTranslationUnit(CXIndex CIdx, CIndexer *CXXIdx = static_cast<CIndexer *>(CIdx); llvm::IntrusiveRefCntPtr<Diagnostic> Diags; - return ASTUnit::LoadFromPCHFile(ast_filename, Diags, + return ASTUnit::LoadFromASTFile(ast_filename, Diags, CXXIdx->getOnlyLocalDecls(), 0, 0, true); } @@ -1422,7 +1422,7 @@ void clang_parseTranslationUnit_Impl(void *UserData) { Diags->Report(diag::err_fe_invoking) << AllArgs << ErrMsg; } - ASTUnit *ATU = ASTUnit::LoadFromPCHFile(astTmpFile, Diags, + ASTUnit *ATU = ASTUnit::LoadFromASTFile(astTmpFile, Diags, CXXIdx->getOnlyLocalDecls(), RemappedFiles.data(), RemappedFiles.size(), @@ -1467,7 +1467,7 @@ void clang_parseTranslationUnit_Impl(void *UserData) { // Make the translation unit responsible for destroying all temporary files. for (unsigned i = 0, e = TemporaryFiles.size(); i != e; ++i) ATU->addTemporaryFile(TemporaryFiles[i]); - ATU->addTemporaryFile(llvm::sys::Path(ATU->getPCHFileName())); + ATU->addTemporaryFile(llvm::sys::Path(ATU->getASTFileName())); } else { // Destroy all of the temporary files now; they can't be referenced any // longer. |