[clang] 72b5814 - Revert "[NFC] [Serialization] Avoid using DeclID directly as much as possible"
Chuanqi Xu via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 24 23:31:43 PDT 2024
Author: Chuanqi Xu
Date: 2024-04-25T14:26:07+08:00
New Revision: 72b58146b14308c0c745111f082fc6354cefda22
URL: https://github.com/llvm/llvm-project/commit/72b58146b14308c0c745111f082fc6354cefda22
DIFF: https://github.com/llvm/llvm-project/commit/72b58146b14308c0c745111f082fc6354cefda22.diff
LOG: Revert "[NFC] [Serialization] Avoid using DeclID directly as much as possible"
This reverts commit 42070a5c092ed420bf92ebf38229c594885e94c7.
I forgot to touch lldb.
Added:
Modified:
clang/include/clang/AST/ASTContext.h
clang/include/clang/AST/Decl.h
clang/include/clang/AST/DeclBase.h
clang/include/clang/AST/DeclCXX.h
clang/include/clang/AST/DeclFriend.h
clang/include/clang/AST/DeclID.h
clang/include/clang/AST/DeclObjC.h
clang/include/clang/AST/DeclOpenMP.h
clang/include/clang/AST/DeclTemplate.h
clang/include/clang/AST/ExternalASTSource.h
clang/include/clang/Frontend/ASTUnit.h
clang/include/clang/Frontend/MultiplexConsumer.h
clang/include/clang/Sema/MultiplexExternalSemaSource.h
clang/include/clang/Serialization/ASTBitCodes.h
clang/include/clang/Serialization/ASTDeserializationListener.h
clang/include/clang/Serialization/ASTReader.h
clang/include/clang/Serialization/ASTWriter.h
clang/include/clang/Serialization/ModuleFile.h
clang/lib/AST/ASTContext.cpp
clang/lib/AST/Decl.cpp
clang/lib/AST/DeclBase.cpp
clang/lib/AST/DeclCXX.cpp
clang/lib/AST/DeclFriend.cpp
clang/lib/AST/DeclObjC.cpp
clang/lib/AST/DeclOpenMP.cpp
clang/lib/AST/DeclTemplate.cpp
clang/lib/AST/ExternalASTSource.cpp
clang/lib/Frontend/ASTUnit.cpp
clang/lib/Frontend/FrontendAction.cpp
clang/lib/Frontend/MultiplexConsumer.cpp
clang/lib/Sema/MultiplexExternalSemaSource.cpp
clang/lib/Serialization/ASTReader.cpp
clang/lib/Serialization/ASTReaderDecl.cpp
clang/lib/Serialization/ASTWriter.cpp
clang/lib/Serialization/ASTWriterDecl.cpp
Removed:
################################################################################
diff --git a/clang/include/clang/AST/ASTContext.h b/clang/include/clang/AST/ASTContext.h
index 24388ad5dea5e6..ecec9bfcf30079 100644
--- a/clang/include/clang/AST/ASTContext.h
+++ b/clang/include/clang/AST/ASTContext.h
@@ -455,7 +455,7 @@ class ASTContext : public RefCountedBase<ASTContext> {
/// initialization of another module).
struct PerModuleInitializers {
llvm::SmallVector<Decl*, 4> Initializers;
- llvm::SmallVector<GlobalDeclID, 4> LazyInitializers;
+ llvm::SmallVector<DeclID, 4> LazyInitializers;
void resolve(ASTContext &Ctx);
};
@@ -1059,7 +1059,7 @@ class ASTContext : public RefCountedBase<ASTContext> {
/// or an ImportDecl nominating another module that has initializers.
void addModuleInitializer(Module *M, Decl *Init);
- void addLazyModuleInitializers(Module *M, ArrayRef<GlobalDeclID> IDs);
+ void addLazyModuleInitializers(Module *M, ArrayRef<DeclID> IDs);
/// Get the initializations to perform when importing a module, if any.
ArrayRef<Decl*> getModuleInitializers(Module *M);
diff --git a/clang/include/clang/AST/Decl.h b/clang/include/clang/AST/Decl.h
index a53c27a99a8c36..8b121896d66d15 100644
--- a/clang/include/clang/AST/Decl.h
+++ b/clang/include/clang/AST/Decl.h
@@ -157,7 +157,7 @@ class PragmaCommentDecl final
SourceLocation CommentLoc,
PragmaMSCommentKind CommentKind,
StringRef Arg);
- static PragmaCommentDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID,
+ static PragmaCommentDecl *CreateDeserialized(ASTContext &C, DeclID ID,
unsigned ArgSize);
PragmaMSCommentKind getCommentKind() const { return CommentKind; }
@@ -192,7 +192,7 @@ class PragmaDetectMismatchDecl final
SourceLocation Loc, StringRef Name,
StringRef Value);
static PragmaDetectMismatchDecl *
- CreateDeserialized(ASTContext &C, GlobalDeclID ID, unsigned NameValueSize);
+ CreateDeserialized(ASTContext &C, DeclID ID, unsigned NameValueSize);
StringRef getName() const { return getTrailingObjects<char>(); }
StringRef getValue() const { return getTrailingObjects<char>() + ValueStart; }
@@ -518,7 +518,7 @@ class LabelDecl : public NamedDecl {
static LabelDecl *Create(ASTContext &C, DeclContext *DC,
SourceLocation IdentL, IdentifierInfo *II,
SourceLocation GnuLabelL);
- static LabelDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static LabelDecl *CreateDeserialized(ASTContext &C, DeclID ID);
LabelStmt *getStmt() const { return TheStmt; }
void setStmt(LabelStmt *T) { TheStmt = T; }
@@ -581,7 +581,7 @@ class NamespaceDecl : public NamedDecl, public DeclContext,
IdentifierInfo *Id, NamespaceDecl *PrevDecl,
bool Nested);
- static NamespaceDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static NamespaceDecl *CreateDeserialized(ASTContext &C, DeclID ID);
using redecl_range = redeclarable_base::redecl_range;
using redecl_iterator = redeclarable_base::redecl_iterator;
@@ -1146,7 +1146,7 @@ class VarDecl : public DeclaratorDecl, public Redeclarable<VarDecl> {
const IdentifierInfo *Id, QualType T,
TypeSourceInfo *TInfo, StorageClass S);
- static VarDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static VarDecl *CreateDeserialized(ASTContext &C, DeclID ID);
SourceRange getSourceRange() const override LLVM_READONLY;
@@ -1728,7 +1728,7 @@ class ImplicitParamDecl : public VarDecl {
static ImplicitParamDecl *Create(ASTContext &C, QualType T,
ImplicitParamKind ParamKind);
- static ImplicitParamDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static ImplicitParamDecl *CreateDeserialized(ASTContext &C, DeclID ID);
ImplicitParamDecl(ASTContext &C, DeclContext *DC, SourceLocation IdLoc,
const IdentifierInfo *Id, QualType Type,
@@ -1782,7 +1782,7 @@ class ParmVarDecl : public VarDecl {
TypeSourceInfo *TInfo, StorageClass S,
Expr *DefArg);
- static ParmVarDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static ParmVarDecl *CreateDeserialized(ASTContext &C, DeclID ID);
SourceRange getSourceRange() const override LLVM_READONLY;
@@ -2178,7 +2178,7 @@ class FunctionDecl : public DeclaratorDecl,
bool hasWrittenPrototype, ConstexprSpecKind ConstexprKind,
Expr *TrailingRequiresClause);
- static FunctionDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static FunctionDecl *CreateDeserialized(ASTContext &C, DeclID ID);
DeclarationNameInfo getNameInfo() const {
return DeclarationNameInfo(getDeclName(), getLocation(), DNLoc);
@@ -3136,7 +3136,7 @@ class FieldDecl : public DeclaratorDecl, public Mergeable<FieldDecl> {
TypeSourceInfo *TInfo, Expr *BW, bool Mutable,
InClassInitStyle InitStyle);
- static FieldDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static FieldDecl *CreateDeserialized(ASTContext &C, DeclID ID);
/// Returns the index of this field within its record,
/// as appropriate for passing to ASTRecordLayout::getFieldOffset.
@@ -3311,7 +3311,7 @@ class EnumConstantDecl : public ValueDecl,
SourceLocation L, IdentifierInfo *Id,
QualType T, Expr *E,
const llvm::APSInt &V);
- static EnumConstantDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static EnumConstantDecl *CreateDeserialized(ASTContext &C, DeclID ID);
const Expr *getInitExpr() const { return (const Expr*) Init; }
Expr *getInitExpr() { return (Expr*) Init; }
@@ -3357,7 +3357,7 @@ class IndirectFieldDecl : public ValueDecl,
QualType T,
llvm::MutableArrayRef<NamedDecl *> CH);
- static IndirectFieldDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static IndirectFieldDecl *CreateDeserialized(ASTContext &C, DeclID ID);
using chain_iterator = ArrayRef<NamedDecl *>::const_iterator;
@@ -3542,7 +3542,7 @@ class TypedefDecl : public TypedefNameDecl {
static TypedefDecl *Create(ASTContext &C, DeclContext *DC,
SourceLocation StartLoc, SourceLocation IdLoc,
const IdentifierInfo *Id, TypeSourceInfo *TInfo);
- static TypedefDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static TypedefDecl *CreateDeserialized(ASTContext &C, DeclID ID);
SourceRange getSourceRange() const override LLVM_READONLY;
@@ -3567,7 +3567,7 @@ class TypeAliasDecl : public TypedefNameDecl {
static TypeAliasDecl *Create(ASTContext &C, DeclContext *DC,
SourceLocation StartLoc, SourceLocation IdLoc,
const IdentifierInfo *Id, TypeSourceInfo *TInfo);
- static TypeAliasDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static TypeAliasDecl *CreateDeserialized(ASTContext &C, DeclID ID);
SourceRange getSourceRange() const override LLVM_READONLY;
@@ -3977,7 +3977,7 @@ class EnumDecl : public TagDecl {
IdentifierInfo *Id, EnumDecl *PrevDecl,
bool IsScoped, bool IsScopedUsingClassTag,
bool IsFixed);
- static EnumDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static EnumDecl *CreateDeserialized(ASTContext &C, DeclID ID);
/// Overrides to provide correct range when there's an enum-base specifier
/// with forward declarations.
@@ -4182,7 +4182,7 @@ class RecordDecl : public TagDecl {
static RecordDecl *Create(const ASTContext &C, TagKind TK, DeclContext *DC,
SourceLocation StartLoc, SourceLocation IdLoc,
IdentifierInfo *Id, RecordDecl* PrevDecl = nullptr);
- static RecordDecl *CreateDeserialized(const ASTContext &C, GlobalDeclID ID);
+ static RecordDecl *CreateDeserialized(const ASTContext &C, DeclID ID);
RecordDecl *getPreviousDecl() {
return cast_or_null<RecordDecl>(
@@ -4433,7 +4433,7 @@ class FileScopeAsmDecl : public Decl {
StringLiteral *Str, SourceLocation AsmLoc,
SourceLocation RParenLoc);
- static FileScopeAsmDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static FileScopeAsmDecl *CreateDeserialized(ASTContext &C, DeclID ID);
SourceLocation getAsmLoc() const { return getLocation(); }
SourceLocation getRParenLoc() const { return RParenLoc; }
@@ -4469,7 +4469,7 @@ class TopLevelStmtDecl : public Decl, public DeclContext {
public:
static TopLevelStmtDecl *Create(ASTContext &C, Stmt *Statement);
- static TopLevelStmtDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static TopLevelStmtDecl *CreateDeserialized(ASTContext &C, DeclID ID);
SourceRange getSourceRange() const override LLVM_READONLY;
Stmt *getStmt() { return Statement; }
@@ -4563,7 +4563,7 @@ class BlockDecl : public Decl, public DeclContext {
public:
static BlockDecl *Create(ASTContext &C, DeclContext *DC, SourceLocation L);
- static BlockDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static BlockDecl *CreateDeserialized(ASTContext &C, DeclID ID);
SourceLocation getCaretLocation() const { return getLocation(); }
@@ -4717,7 +4717,7 @@ class CapturedDecl final
static CapturedDecl *Create(ASTContext &C, DeclContext *DC,
unsigned NumParams);
- static CapturedDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID,
+ static CapturedDecl *CreateDeserialized(ASTContext &C, DeclID ID,
unsigned NumParams);
Stmt *getBody() const override;
@@ -4851,7 +4851,7 @@ class ImportDecl final : public Decl,
SourceLocation EndLoc);
/// Create a new, deserialized module import declaration.
- static ImportDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID,
+ static ImportDecl *CreateDeserialized(ASTContext &C, DeclID ID,
unsigned NumLocations);
/// Retrieve the module that was imported by the import declaration.
@@ -4892,7 +4892,7 @@ class ExportDecl final : public Decl, public DeclContext {
public:
static ExportDecl *Create(ASTContext &C, DeclContext *DC,
SourceLocation ExportLoc);
- static ExportDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static ExportDecl *CreateDeserialized(ASTContext &C, DeclID ID);
SourceLocation getExportLoc() const { return getLocation(); }
SourceLocation getRBraceLoc() const { return RBraceLoc; }
@@ -4931,7 +4931,7 @@ class EmptyDecl : public Decl {
public:
static EmptyDecl *Create(ASTContext &C, DeclContext *DC,
SourceLocation L);
- static EmptyDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static EmptyDecl *CreateDeserialized(ASTContext &C, DeclID ID);
static bool classof(const Decl *D) { return classofKind(D->getKind()); }
static bool classofKind(Kind K) { return K == Empty; }
@@ -4957,7 +4957,7 @@ class HLSLBufferDecl final : public NamedDecl, public DeclContext {
bool CBuffer, SourceLocation KwLoc,
IdentifierInfo *ID, SourceLocation IDLoc,
SourceLocation LBrace);
- static HLSLBufferDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static HLSLBufferDecl *CreateDeserialized(ASTContext &C, DeclID ID);
SourceRange getSourceRange() const override LLVM_READONLY {
return SourceRange(getLocStart(), RBraceLoc);
diff --git a/clang/include/clang/AST/DeclBase.h b/clang/include/clang/AST/DeclBase.h
index e43e812cd94558..474e51c1df6d68 100644
--- a/clang/include/clang/AST/DeclBase.h
+++ b/clang/include/clang/AST/DeclBase.h
@@ -359,7 +359,7 @@ class alignas(8) Decl {
/// \param Ctx The context in which we will allocate memory.
/// \param ID The global ID of the deserialized declaration.
/// \param Extra The amount of extra space to allocate after the object.
- void *operator new(std::size_t Size, const ASTContext &Ctx, GlobalDeclID ID,
+ void *operator new(std::size_t Size, const ASTContext &Ctx, DeclID ID,
std::size_t Extra = 0);
/// Allocate memory for a non-deserialized declaration.
@@ -777,10 +777,10 @@ class alignas(8) Decl {
/// Retrieve the global declaration ID associated with this
/// declaration, which specifies where this Decl was loaded from.
- GlobalDeclID getGlobalID() const {
+ DeclID getGlobalID() const {
if (isFromASTFile())
- return (*((const GlobalDeclID *)this - 1));
- return GlobalDeclID();
+ return *((const DeclID *)this - 1);
+ return 0;
}
/// Retrieve the global ID of the module that owns this particular
diff --git a/clang/include/clang/AST/DeclCXX.h b/clang/include/clang/AST/DeclCXX.h
index fb52ac804849d8..a7644d2a19d245 100644
--- a/clang/include/clang/AST/DeclCXX.h
+++ b/clang/include/clang/AST/DeclCXX.h
@@ -120,7 +120,7 @@ class AccessSpecDecl : public Decl {
return new (C, DC) AccessSpecDecl(AS, DC, ASLoc, ColonLoc);
}
- static AccessSpecDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static AccessSpecDecl *CreateDeserialized(ASTContext &C, DeclID ID);
// Implement isa/cast/dyncast/etc.
static bool classof(const Decl *D) { return classofKind(D->getKind()); }
@@ -579,8 +579,7 @@ class CXXRecordDecl : public RecordDecl {
TypeSourceInfo *Info, SourceLocation Loc,
unsigned DependencyKind, bool IsGeneric,
LambdaCaptureDefault CaptureDefault);
- static CXXRecordDecl *CreateDeserialized(const ASTContext &C,
- GlobalDeclID ID);
+ static CXXRecordDecl *CreateDeserialized(const ASTContext &C, DeclID ID);
bool isDynamicClass() const {
return data().Polymorphic || data().NumVBases != 0;
@@ -1981,8 +1980,7 @@ class CXXDeductionGuideDecl : public FunctionDecl {
CXXConstructorDecl *Ctor = nullptr,
DeductionCandidate Kind = DeductionCandidate::Normal);
- static CXXDeductionGuideDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID);
+ static CXXDeductionGuideDecl *CreateDeserialized(ASTContext &C, DeclID ID);
ExplicitSpecifier getExplicitSpecifier() { return ExplicitSpec; }
const ExplicitSpecifier getExplicitSpecifier() const { return ExplicitSpec; }
@@ -2037,8 +2035,7 @@ class RequiresExprBodyDecl : public Decl, public DeclContext {
static RequiresExprBodyDecl *Create(ASTContext &C, DeclContext *DC,
SourceLocation StartLoc);
- static RequiresExprBodyDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID);
+ static RequiresExprBodyDecl *CreateDeserialized(ASTContext &C, DeclID ID);
// Implement isa/cast/dyncast/etc.
static bool classof(const Decl *D) { return classofKind(D->getKind()); }
@@ -2081,7 +2078,7 @@ class CXXMethodDecl : public FunctionDecl {
ConstexprSpecKind ConstexprKind, SourceLocation EndLocation,
Expr *TrailingRequiresClause = nullptr);
- static CXXMethodDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static CXXMethodDecl *CreateDeserialized(ASTContext &C, DeclID ID);
bool isStatic() const;
bool isInstance() const { return !isStatic(); }
@@ -2582,7 +2579,7 @@ class CXXConstructorDecl final
friend class ASTDeclWriter;
friend TrailingObjects;
- static CXXConstructorDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID,
+ static CXXConstructorDecl *CreateDeserialized(ASTContext &C, DeclID ID,
uint64_t AllocKind);
static CXXConstructorDecl *
Create(ASTContext &C, CXXRecordDecl *RD, SourceLocation StartLoc,
@@ -2825,7 +2822,7 @@ class CXXDestructorDecl : public CXXMethodDecl {
bool UsesFPIntrin, bool isInline, bool isImplicitlyDeclared,
ConstexprSpecKind ConstexprKind,
Expr *TrailingRequiresClause = nullptr);
- static CXXDestructorDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static CXXDestructorDecl *CreateDeserialized(ASTContext & C, DeclID ID);
void setOperatorDelete(FunctionDecl *OD, Expr *ThisArg);
@@ -2884,7 +2881,7 @@ class CXXConversionDecl : public CXXMethodDecl {
bool UsesFPIntrin, bool isInline, ExplicitSpecifier ES,
ConstexprSpecKind ConstexprKind, SourceLocation EndLocation,
Expr *TrailingRequiresClause = nullptr);
- static CXXConversionDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static CXXConversionDecl *CreateDeserialized(ASTContext &C, DeclID ID);
ExplicitSpecifier getExplicitSpecifier() {
return getCanonicalDecl()->ExplicitSpec;
@@ -2951,7 +2948,7 @@ class LinkageSpecDecl : public Decl, public DeclContext {
SourceLocation ExternLoc,
SourceLocation LangLoc,
LinkageSpecLanguageIDs Lang, bool HasBraces);
- static LinkageSpecDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static LinkageSpecDecl *CreateDeserialized(ASTContext &C, DeclID ID);
/// Return the language specified by this linkage specification.
LinkageSpecLanguageIDs getLanguage() const {
@@ -3099,7 +3096,7 @@ class UsingDirectiveDecl : public NamedDecl {
SourceLocation IdentLoc,
NamedDecl *Nominated,
DeclContext *CommonAncestor);
- static UsingDirectiveDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static UsingDirectiveDecl *CreateDeserialized(ASTContext &C, DeclID ID);
SourceRange getSourceRange() const override LLVM_READONLY {
return SourceRange(UsingLoc, getLocation());
@@ -3160,7 +3157,7 @@ class NamespaceAliasDecl : public NamedDecl,
SourceLocation IdentLoc,
NamedDecl *Namespace);
- static NamespaceAliasDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static NamespaceAliasDecl *CreateDeserialized(ASTContext &C, DeclID ID);
using redecl_range = redeclarable_base::redecl_range;
using redecl_iterator = redeclarable_base::redecl_iterator;
@@ -3257,7 +3254,7 @@ class LifetimeExtendedTemporaryDecl final
LifetimeExtendedTemporaryDecl(Temp, EDec, Mangling);
}
static LifetimeExtendedTemporaryDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
return new (C, ID) LifetimeExtendedTemporaryDecl(EmptyShell{});
}
@@ -3360,7 +3357,7 @@ class UsingShadowDecl : public NamedDecl, public Redeclarable<UsingShadowDecl> {
UsingShadowDecl(UsingShadow, C, DC, Loc, Name, Introducer, Target);
}
- static UsingShadowDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static UsingShadowDecl *CreateDeserialized(ASTContext &C, DeclID ID);
using redecl_range = redeclarable_base::redecl_range;
using redecl_iterator = redeclarable_base::redecl_iterator;
@@ -3569,7 +3566,7 @@ class UsingDecl : public BaseUsingDecl, public Mergeable<UsingDecl> {
const DeclarationNameInfo &NameInfo,
bool HasTypenameKeyword);
- static UsingDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static UsingDecl *CreateDeserialized(ASTContext &C, DeclID ID);
SourceRange getSourceRange() const override LLVM_READONLY;
@@ -3648,7 +3645,7 @@ class ConstructorUsingShadowDecl final : public UsingShadowDecl {
UsingDecl *Using, NamedDecl *Target,
bool IsVirtual);
static ConstructorUsingShadowDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID);
+ DeclID ID);
/// Override the UsingShadowDecl's getIntroducer, returning the UsingDecl that
/// introduced this.
@@ -3760,7 +3757,7 @@ class UsingEnumDecl : public BaseUsingDecl, public Mergeable<UsingEnumDecl> {
SourceLocation UsingL, SourceLocation EnumL,
SourceLocation NameL, TypeSourceInfo *EnumType);
- static UsingEnumDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static UsingEnumDecl *CreateDeserialized(ASTContext &C, DeclID ID);
SourceRange getSourceRange() const override LLVM_READONLY;
@@ -3833,7 +3830,7 @@ class UsingPackDecl final
NamedDecl *InstantiatedFrom,
ArrayRef<NamedDecl *> UsingDecls);
- static UsingPackDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID,
+ static UsingPackDecl *CreateDeserialized(ASTContext &C, DeclID ID,
unsigned NumExpansions);
SourceRange getSourceRange() const override LLVM_READONLY {
@@ -3926,8 +3923,8 @@ class UnresolvedUsingValueDecl : public ValueDecl,
NestedNameSpecifierLoc QualifierLoc,
const DeclarationNameInfo &NameInfo, SourceLocation EllipsisLoc);
- static UnresolvedUsingValueDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID);
+ static UnresolvedUsingValueDecl *
+ CreateDeserialized(ASTContext &C, DeclID ID);
SourceRange getSourceRange() const override LLVM_READONLY;
@@ -4017,8 +4014,8 @@ class UnresolvedUsingTypenameDecl
SourceLocation TargetNameLoc, DeclarationName TargetName,
SourceLocation EllipsisLoc);
- static UnresolvedUsingTypenameDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID);
+ static UnresolvedUsingTypenameDecl *
+ CreateDeserialized(ASTContext &C, DeclID ID);
/// Retrieves the canonical declaration of this declaration.
UnresolvedUsingTypenameDecl *getCanonicalDecl() override {
@@ -4048,7 +4045,7 @@ class UnresolvedUsingIfExistsDecl final : public NamedDecl {
SourceLocation Loc,
DeclarationName Name);
static UnresolvedUsingIfExistsDecl *CreateDeserialized(ASTContext &Ctx,
- GlobalDeclID ID);
+ DeclID ID);
static bool classof(const Decl *D) { return classofKind(D->getKind()); }
static bool classofKind(Kind K) { return K == Decl::UnresolvedUsingIfExists; }
@@ -4076,7 +4073,7 @@ class StaticAssertDecl : public Decl {
SourceLocation StaticAssertLoc,
Expr *AssertExpr, Expr *Message,
SourceLocation RParenLoc, bool Failed);
- static StaticAssertDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static StaticAssertDecl *CreateDeserialized(ASTContext &C, DeclID ID);
Expr *getAssertExpr() { return AssertExprAndFailed.getPointer(); }
const Expr *getAssertExpr() const { return AssertExprAndFailed.getPointer(); }
@@ -4123,7 +4120,7 @@ class BindingDecl : public ValueDecl {
static BindingDecl *Create(ASTContext &C, DeclContext *DC,
SourceLocation IdLoc, IdentifierInfo *Id);
- static BindingDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static BindingDecl *CreateDeserialized(ASTContext &C, DeclID ID);
/// Get the expression to which this declaration is bound. This may be null
/// in two
diff erent cases: while parsing the initializer for the
@@ -4192,7 +4189,7 @@ class DecompositionDecl final
QualType T, TypeSourceInfo *TInfo,
StorageClass S,
ArrayRef<BindingDecl *> Bindings);
- static DecompositionDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID,
+ static DecompositionDecl *CreateDeserialized(ASTContext &C, DeclID ID,
unsigned NumBindings);
ArrayRef<BindingDecl *> bindings() const {
@@ -4249,7 +4246,7 @@ class MSPropertyDecl : public DeclaratorDecl {
SourceLocation L, DeclarationName N, QualType T,
TypeSourceInfo *TInfo, SourceLocation StartL,
IdentifierInfo *Getter, IdentifierInfo *Setter);
- static MSPropertyDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static MSPropertyDecl *CreateDeserialized(ASTContext &C, DeclID ID);
static bool classof(const Decl *D) { return D->getKind() == MSProperty; }
@@ -4303,7 +4300,7 @@ class MSGuidDecl : public ValueDecl,
MSGuidDecl(DeclContext *DC, QualType T, Parts P);
static MSGuidDecl *Create(const ASTContext &C, QualType T, Parts P);
- static MSGuidDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static MSGuidDecl *CreateDeserialized(ASTContext &C, DeclID ID);
// Only ASTContext::getMSGuidDecl and deserialization create these.
friend class ASTContext;
@@ -4356,7 +4353,7 @@ class UnnamedGlobalConstantDecl : public ValueDecl,
static UnnamedGlobalConstantDecl *Create(const ASTContext &C, QualType T,
const APValue &APVal);
static UnnamedGlobalConstantDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID);
+ DeclID ID);
// Only ASTContext::getUnnamedGlobalConstantDecl and deserialization create
// these.
diff --git a/clang/include/clang/AST/DeclFriend.h b/clang/include/clang/AST/DeclFriend.h
index 9789282f351a55..b56627a5337d63 100644
--- a/clang/include/clang/AST/DeclFriend.h
+++ b/clang/include/clang/AST/DeclFriend.h
@@ -112,7 +112,7 @@ class FriendDecl final
Create(ASTContext &C, DeclContext *DC, SourceLocation L, FriendUnion Friend_,
SourceLocation FriendL,
ArrayRef<TemplateParameterList *> FriendTypeTPLists = std::nullopt);
- static FriendDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID,
+ static FriendDecl *CreateDeserialized(ASTContext &C, DeclID ID,
unsigned FriendTypeNumTPLists);
/// If this friend declaration names an (untemplated but possibly
diff --git a/clang/include/clang/AST/DeclID.h b/clang/include/clang/AST/DeclID.h
index 614ba06b63860c..e2c6dd65e86bc3 100644
--- a/clang/include/clang/AST/DeclID.h
+++ b/clang/include/clang/AST/DeclID.h
@@ -16,7 +16,6 @@
#ifndef LLVM_CLANG_AST_DECLID_H
#define LLVM_CLANG_AST_DECLID_H
-#include "llvm/ADT/DenseMapInfo.h"
#include "llvm/ADT/iterator.h"
namespace clang {
@@ -89,139 +88,90 @@ enum PredefinedDeclIDs {
/// \c PredefinedDeclIDs type and the PREDEF_DECL_*_ID constants.
const unsigned int NUM_PREDEF_DECL_IDS = 18;
-/// GlobalDeclID means DeclID in the current ASTContext and LocalDeclID means
-/// DeclID specific to a certain ModuleFile. Specially, in ASTWriter, the
-/// LocalDeclID to the ModuleFile been writting is equal to the GlobalDeclID.
-/// Outside the serializer, all the DeclID been used should be GlobalDeclID.
-/// We can translate a LocalDeclID to the GlobalDeclID by
-/// `ASTReader::getGlobalDeclID()`.
+/// An ID number that refers to a declaration in an AST file.
+///
+/// The ID numbers of declarations are consecutive (in order of
+/// discovery), with values below NUM_PREDEF_DECL_IDS being reserved.
+/// At the start of a chain of precompiled headers, declaration ID 1 is
+/// used for the translation unit declaration.
+using DeclID = uint32_t;
-class DeclIDBase {
+class LocalDeclID {
public:
- /// An ID number that refers to a declaration in an AST file.
- ///
- /// The ID numbers of declarations are consecutive (in order of
- /// discovery), with values below NUM_PREDEF_DECL_IDS being reserved.
- /// At the start of a chain of precompiled headers, declaration ID 1 is
- /// used for the translation unit declaration.
- ///
- /// DeclID should only be used directly in serialization. All other users
- /// should use LocalDeclID or GlobalDeclID.
- using DeclID = uint32_t;
-
-protected:
- DeclIDBase() : ID(PREDEF_DECL_NULL_ID) {}
- explicit DeclIDBase(DeclID ID) : ID(ID) {}
+ explicit LocalDeclID(DeclID ID) : ID(ID) {}
-public:
DeclID get() const { return ID; }
- explicit operator DeclID() const { return ID; }
+private:
+ DeclID ID;
+};
- explicit operator PredefinedDeclIDs() const { return (PredefinedDeclIDs)ID; }
+/// Wrapper class for DeclID. This is helpful to not mix the use of LocalDeclID
+/// and GlobalDeclID to improve the type safety.
+class GlobalDeclID {
+public:
+ GlobalDeclID() : ID(PREDEF_DECL_NULL_ID) {}
+ explicit GlobalDeclID(DeclID ID) : ID(ID) {}
- bool isValid() const { return ID != PREDEF_DECL_NULL_ID; }
+ DeclID get() const { return ID; }
- bool isInvalid() const { return ID == PREDEF_DECL_NULL_ID; }
+ explicit operator DeclID() const { return ID; }
- friend bool operator==(const DeclIDBase &LHS, const DeclIDBase &RHS) {
+ friend bool operator==(const GlobalDeclID &LHS, const GlobalDeclID &RHS) {
return LHS.ID == RHS.ID;
}
- friend bool operator!=(const DeclIDBase &LHS, const DeclIDBase &RHS) {
+ friend bool operator!=(const GlobalDeclID &LHS, const GlobalDeclID &RHS) {
return LHS.ID != RHS.ID;
}
- // We may sort the decl ID.
- friend bool operator<(const DeclIDBase &LHS, const DeclIDBase &RHS) {
+ // We may sort the global decl ID.
+ friend bool operator<(const GlobalDeclID &LHS, const GlobalDeclID &RHS) {
return LHS.ID < RHS.ID;
}
- friend bool operator>(const DeclIDBase &LHS, const DeclIDBase &RHS) {
+ friend bool operator>(const GlobalDeclID &LHS, const GlobalDeclID &RHS) {
return LHS.ID > RHS.ID;
}
- friend bool operator<=(const DeclIDBase &LHS, const DeclIDBase &RHS) {
+ friend bool operator<=(const GlobalDeclID &LHS, const GlobalDeclID &RHS) {
return LHS.ID <= RHS.ID;
}
- friend bool operator>=(const DeclIDBase &LHS, const DeclIDBase &RHS) {
+ friend bool operator>=(const GlobalDeclID &LHS, const GlobalDeclID &RHS) {
return LHS.ID >= RHS.ID;
}
-protected:
+private:
DeclID ID;
};
-class LocalDeclID : public DeclIDBase {
- using Base = DeclIDBase;
-
+/// A helper iterator adaptor to convert the iterators to `SmallVector<DeclID>`
+/// to the iterators to `SmallVector<GlobalDeclID>`.
+class GlobalDeclIDIterator
+ : public llvm::iterator_adaptor_base<GlobalDeclIDIterator, const DeclID *,
+ std::forward_iterator_tag,
+ GlobalDeclID> {
public:
- LocalDeclID() : Base() {}
- LocalDeclID(PredefinedDeclIDs ID) : Base(ID) {}
- explicit LocalDeclID(DeclID ID) : Base(ID) {}
-
- LocalDeclID &operator++() {
- ++ID;
- return *this;
- }
-
- LocalDeclID operator++(int) {
- LocalDeclID Ret = *this;
- ++(*this);
- return Ret;
- }
-};
+ GlobalDeclIDIterator() : iterator_adaptor_base(nullptr) {}
-class GlobalDeclID : public DeclIDBase {
- using Base = DeclIDBase;
+ GlobalDeclIDIterator(const DeclID *ID) : iterator_adaptor_base(ID) {}
-public:
- GlobalDeclID() : Base() {}
- explicit GlobalDeclID(DeclID ID) : Base(ID) {}
+ value_type operator*() const { return GlobalDeclID(*I); }
- // For DeclIDIterator<GlobalDeclID> to be able to convert a GlobalDeclID
- // to a LocalDeclID.
- explicit operator LocalDeclID() const { return LocalDeclID(this->ID); }
+ bool operator==(const GlobalDeclIDIterator &RHS) const { return I == RHS.I; }
};
/// A helper iterator adaptor to convert the iterators to
-/// `SmallVector<SomeDeclID>` to the iterators to `SmallVector<OtherDeclID>`.
-template <class FromTy, class ToTy>
+/// `SmallVector<GlobalDeclID>` to the iterators to `SmallVector<DeclID>`.
class DeclIDIterator
- : public llvm::iterator_adaptor_base<DeclIDIterator<FromTy, ToTy>,
- const FromTy *,
- std::forward_iterator_tag, ToTy> {
+ : public llvm::iterator_adaptor_base<DeclIDIterator, const GlobalDeclID *,
+ std::forward_iterator_tag, DeclID> {
public:
- DeclIDIterator() : DeclIDIterator::iterator_adaptor_base(nullptr) {}
+ DeclIDIterator() : iterator_adaptor_base(nullptr) {}
- DeclIDIterator(const FromTy *ID)
- : DeclIDIterator::iterator_adaptor_base(ID) {}
+ DeclIDIterator(const GlobalDeclID *ID) : iterator_adaptor_base(ID) {}
- ToTy operator*() const { return ToTy(*this->I); }
+ value_type operator*() const { return DeclID(*I); }
- bool operator==(const DeclIDIterator &RHS) const { return this->I == RHS.I; }
+ bool operator==(const DeclIDIterator &RHS) const { return I == RHS.I; }
};
} // namespace clang
-namespace llvm {
-template <> struct DenseMapInfo<clang::GlobalDeclID> {
- using GlobalDeclID = clang::GlobalDeclID;
- using DeclID = GlobalDeclID::DeclID;
-
- static GlobalDeclID getEmptyKey() {
- return GlobalDeclID(DenseMapInfo<DeclID>::getEmptyKey());
- }
-
- static GlobalDeclID getTombstoneKey() {
- return GlobalDeclID(DenseMapInfo<DeclID>::getTombstoneKey());
- }
-
- static unsigned getHashValue(const GlobalDeclID &Key) {
- return DenseMapInfo<DeclID>::getHashValue(Key.get());
- }
-
- static bool isEqual(const GlobalDeclID &L, const GlobalDeclID &R) {
- return L == R;
- }
-};
-
-} // namespace llvm
-
#endif
diff --git a/clang/include/clang/AST/DeclObjC.h b/clang/include/clang/AST/DeclObjC.h
index d2cc61ca19f8a5..7780afa6f1cf5c 100644
--- a/clang/include/clang/AST/DeclObjC.h
+++ b/clang/include/clang/AST/DeclObjC.h
@@ -236,7 +236,7 @@ class ObjCMethodDecl : public NamedDecl, public DeclContext {
ObjCImplementationControl impControl = ObjCImplementationControl::None,
bool HasRelatedResultType = false);
- static ObjCMethodDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static ObjCMethodDecl *CreateDeserialized(ASTContext &C, DeclID ID);
ObjCMethodDecl *getCanonicalDecl() override;
const ObjCMethodDecl *getCanonicalDecl() const {
@@ -614,8 +614,7 @@ class ObjCTypeParamDecl : public TypedefNameDecl {
IdentifierInfo *name,
SourceLocation colonLoc,
TypeSourceInfo *boundInfo);
- static ObjCTypeParamDecl *CreateDeserialized(ASTContext &ctx,
- GlobalDeclID ID);
+ static ObjCTypeParamDecl *CreateDeserialized(ASTContext &ctx, DeclID ID);
SourceRange getSourceRange() const override LLVM_READONLY;
@@ -790,7 +789,7 @@ class ObjCPropertyDecl : public NamedDecl {
TypeSourceInfo *TSI,
PropertyControl propControl = None);
- static ObjCPropertyDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static ObjCPropertyDecl *CreateDeserialized(ASTContext &C, DeclID ID);
SourceLocation getAtLoc() const { return AtLoc; }
void setAtLoc(SourceLocation L) { AtLoc = L; }
@@ -1280,8 +1279,7 @@ class ObjCInterfaceDecl : public ObjCContainerDecl
ObjCInterfaceDecl *PrevDecl,
SourceLocation ClassLoc = SourceLocation(), bool isInternal = false);
- static ObjCInterfaceDecl *CreateDeserialized(const ASTContext &C,
- GlobalDeclID ID);
+ static ObjCInterfaceDecl *CreateDeserialized(const ASTContext &C, DeclID ID);
/// Retrieve the type parameters of this class.
///
@@ -1971,7 +1969,7 @@ class ObjCIvarDecl : public FieldDecl {
TypeSourceInfo *TInfo, AccessControl ac,
Expr *BW = nullptr, bool synthesized = false);
- static ObjCIvarDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static ObjCIvarDecl *CreateDeserialized(ASTContext &C, DeclID ID);
/// Return the class interface that this ivar is logically contained
/// in; this is either the interface where the ivar was declared, or the
@@ -2041,8 +2039,7 @@ class ObjCAtDefsFieldDecl : public FieldDecl {
SourceLocation IdLoc, IdentifierInfo *Id,
QualType T, Expr *BW);
- static ObjCAtDefsFieldDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID);
+ static ObjCAtDefsFieldDecl *CreateDeserialized(ASTContext &C, DeclID ID);
// Implement isa/cast/dyncast/etc.
static bool classof(const Decl *D) { return classofKind(D->getKind()); }
@@ -2145,7 +2142,7 @@ class ObjCProtocolDecl : public ObjCContainerDecl,
SourceLocation atStartLoc,
ObjCProtocolDecl *PrevDecl);
- static ObjCProtocolDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static ObjCProtocolDecl *CreateDeserialized(ASTContext &C, DeclID ID);
const ObjCProtocolList &getReferencedProtocols() const {
assert(hasDefinition() && "No definition available!");
@@ -2364,7 +2361,7 @@ class ObjCCategoryDecl : public ObjCContainerDecl {
ObjCTypeParamList *typeParamList,
SourceLocation IvarLBraceLoc = SourceLocation(),
SourceLocation IvarRBraceLoc = SourceLocation());
- static ObjCCategoryDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static ObjCCategoryDecl *CreateDeserialized(ASTContext &C, DeclID ID);
ObjCInterfaceDecl *getClassInterface() { return ClassInterface; }
const ObjCInterfaceDecl *getClassInterface() const { return ClassInterface; }
@@ -2561,8 +2558,7 @@ class ObjCCategoryImplDecl : public ObjCImplDecl {
Create(ASTContext &C, DeclContext *DC, const IdentifierInfo *Id,
ObjCInterfaceDecl *classInterface, SourceLocation nameLoc,
SourceLocation atStartLoc, SourceLocation CategoryNameLoc);
- static ObjCCategoryImplDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID);
+ static ObjCCategoryImplDecl *CreateDeserialized(ASTContext &C, DeclID ID);
ObjCCategoryDecl *getCategoryDecl() const;
@@ -2644,8 +2640,7 @@ class ObjCImplementationDecl : public ObjCImplDecl {
SourceLocation IvarLBraceLoc=SourceLocation(),
SourceLocation IvarRBraceLoc=SourceLocation());
- static ObjCImplementationDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID);
+ static ObjCImplementationDecl *CreateDeserialized(ASTContext &C, DeclID ID);
/// init_iterator - Iterates through the ivar initializer list.
using init_iterator = CXXCtorInitializer **;
@@ -2785,7 +2780,7 @@ class ObjCCompatibleAliasDecl : public NamedDecl {
ObjCInterfaceDecl* aliasedClass);
static ObjCCompatibleAliasDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID);
+ DeclID ID);
const ObjCInterfaceDecl *getClassInterface() const { return AliasedClass; }
ObjCInterfaceDecl *getClassInterface() { return AliasedClass; }
@@ -2856,8 +2851,7 @@ class ObjCPropertyImplDecl : public Decl {
ObjCIvarDecl *ivarDecl,
SourceLocation ivarLoc);
- static ObjCPropertyImplDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID);
+ static ObjCPropertyImplDecl *CreateDeserialized(ASTContext &C, DeclID ID);
SourceRange getSourceRange() const override LLVM_READONLY;
diff --git a/clang/include/clang/AST/DeclOpenMP.h b/clang/include/clang/AST/DeclOpenMP.h
index cad7a619a63512..c7ede7f2157fef 100644
--- a/clang/include/clang/AST/DeclOpenMP.h
+++ b/clang/include/clang/AST/DeclOpenMP.h
@@ -59,9 +59,9 @@ template <typename U> class OMPDeclarativeDirective : public U {
}
template <typename T, typename... Params>
- static T *createEmptyDirective(const ASTContext &C, GlobalDeclID ID,
+ static T *createEmptyDirective(const ASTContext &C, unsigned ID,
unsigned NumClauses, unsigned NumChildren,
- Params &&...P) {
+ Params &&... P) {
auto *Inst = new (C, ID, size(NumClauses, NumChildren))
T(nullptr, std::forward<Params>(P)...);
Inst->Data = OMPChildren::CreateEmpty(
@@ -133,7 +133,7 @@ class OMPThreadPrivateDecl final : public OMPDeclarativeDirective<Decl> {
SourceLocation L,
ArrayRef<Expr *> VL);
static OMPThreadPrivateDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID, unsigned N);
+ DeclID ID, unsigned N);
typedef MutableArrayRef<Expr *>::iterator varlist_iterator;
typedef ArrayRef<const Expr *>::iterator varlist_const_iterator;
@@ -214,7 +214,7 @@ class OMPDeclareReductionDecl final : public ValueDecl, public DeclContext {
QualType T, OMPDeclareReductionDecl *PrevDeclInScope);
/// Create deserialized declare reduction node.
static OMPDeclareReductionDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID);
+ DeclID ID);
/// Get combiner expression of the declare reduction construct.
Expr *getCombiner() { return Combiner; }
@@ -318,8 +318,8 @@ class OMPDeclareMapperDecl final : public OMPDeclarativeDirective<ValueDecl>,
ArrayRef<OMPClause *> Clauses,
OMPDeclareMapperDecl *PrevDeclInScope);
/// Creates deserialized declare mapper node.
- static OMPDeclareMapperDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID, unsigned N);
+ static OMPDeclareMapperDecl *CreateDeserialized(ASTContext &C, DeclID ID,
+ unsigned N);
using clauselist_iterator = MutableArrayRef<OMPClause *>::iterator;
using clauselist_const_iterator = ArrayRef<const OMPClause *>::iterator;
@@ -397,8 +397,7 @@ class OMPCapturedExprDecl final : public VarDecl {
IdentifierInfo *Id, QualType T,
SourceLocation StartLoc);
- static OMPCapturedExprDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID);
+ static OMPCapturedExprDecl *CreateDeserialized(ASTContext &C, DeclID ID);
SourceRange getSourceRange() const override LLVM_READONLY;
@@ -428,7 +427,7 @@ class OMPRequiresDecl final : public OMPDeclarativeDirective<Decl> {
static OMPRequiresDecl *Create(ASTContext &C, DeclContext *DC,
SourceLocation L, ArrayRef<OMPClause *> CL);
/// Create deserialized requires node.
- static OMPRequiresDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID,
+ static OMPRequiresDecl *CreateDeserialized(ASTContext &C, DeclID ID,
unsigned N);
using clauselist_iterator = MutableArrayRef<OMPClause *>::iterator;
@@ -496,7 +495,7 @@ class OMPAllocateDecl final : public OMPDeclarativeDirective<Decl> {
static OMPAllocateDecl *Create(ASTContext &C, DeclContext *DC,
SourceLocation L, ArrayRef<Expr *> VL,
ArrayRef<OMPClause *> CL);
- static OMPAllocateDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID,
+ static OMPAllocateDecl *CreateDeserialized(ASTContext &C, DeclID ID,
unsigned NVars, unsigned NClauses);
typedef MutableArrayRef<Expr *>::iterator varlist_iterator;
diff --git a/clang/include/clang/AST/DeclTemplate.h b/clang/include/clang/AST/DeclTemplate.h
index 3ee03eebdb8ca4..0c95459a6ab186 100644
--- a/clang/include/clang/AST/DeclTemplate.h
+++ b/clang/include/clang/AST/DeclTemplate.h
@@ -797,7 +797,7 @@ class RedeclarableTemplateDecl : public TemplateDecl,
///
/// The first value in the array is the number of specializations/partial
/// specializations that follow.
- GlobalDeclID *LazySpecializations = nullptr;
+ DeclID *LazySpecializations = nullptr;
/// The set of "injected" template arguments used within this
/// template.
@@ -1087,8 +1087,7 @@ class FunctionTemplateDecl : public RedeclarableTemplateDecl {
NamedDecl *Decl);
/// Create an empty function template node.
- static FunctionTemplateDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID);
+ static FunctionTemplateDecl *CreateDeserialized(ASTContext &C, DeclID ID);
// Implement isa/cast/dyncast support
static bool classof(const Decl *D) { return classofKind(D->getKind()); }
@@ -1205,9 +1204,9 @@ class TemplateTypeParmDecl final : public TypeDecl,
bool Typename, bool ParameterPack, bool HasTypeConstraint = false,
std::optional<unsigned> NumExpanded = std::nullopt);
static TemplateTypeParmDecl *CreateDeserialized(const ASTContext &C,
- GlobalDeclID ID);
+ DeclID ID);
static TemplateTypeParmDecl *CreateDeserialized(const ASTContext &C,
- GlobalDeclID ID,
+ DeclID ID,
bool HasTypeConstraint);
/// Whether this template type parameter was declared with
@@ -1414,10 +1413,11 @@ class NonTypeTemplateParmDecl final
QualType T, TypeSourceInfo *TInfo, ArrayRef<QualType> ExpandedTypes,
ArrayRef<TypeSourceInfo *> ExpandedTInfos);
- static NonTypeTemplateParmDecl *
- CreateDeserialized(ASTContext &C, GlobalDeclID ID, bool HasTypeConstraint);
static NonTypeTemplateParmDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID,
+ DeclID ID,
+ bool HasTypeConstraint);
+ static NonTypeTemplateParmDecl *CreateDeserialized(ASTContext &C,
+ DeclID ID,
unsigned NumExpandedTypes,
bool HasTypeConstraint);
@@ -1632,9 +1632,10 @@ class TemplateTemplateParmDecl final
ArrayRef<TemplateParameterList *> Expansions);
static TemplateTemplateParmDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID);
- static TemplateTemplateParmDecl *
- CreateDeserialized(ASTContext &C, GlobalDeclID ID, unsigned NumExpansions);
+ DeclID ID);
+ static TemplateTemplateParmDecl *CreateDeserialized(ASTContext &C,
+ DeclID ID,
+ unsigned NumExpansions);
using TemplateParmPosition::getDepth;
using TemplateParmPosition::setDepth;
@@ -1856,8 +1857,8 @@ class ClassTemplateSpecializationDecl
ClassTemplateDecl *SpecializedTemplate,
ArrayRef<TemplateArgument> Args,
ClassTemplateSpecializationDecl *PrevDecl);
- static ClassTemplateSpecializationDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID);
+ static ClassTemplateSpecializationDecl *
+ CreateDeserialized(ASTContext &C, DeclID ID);
void getNameForDiagnostic(raw_ostream &OS, const PrintingPolicy &Policy,
bool Qualified) const override;
@@ -2109,7 +2110,7 @@ class ClassTemplatePartialSpecializationDecl
ClassTemplatePartialSpecializationDecl *PrevDecl);
static ClassTemplatePartialSpecializationDecl *
- CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ CreateDeserialized(ASTContext &C, DeclID ID);
ClassTemplatePartialSpecializationDecl *getMostRecentDecl() {
return cast<ClassTemplatePartialSpecializationDecl>(
@@ -2305,7 +2306,7 @@ class ClassTemplateDecl : public RedeclarableTemplateDecl {
NamedDecl *Decl);
/// Create an empty class template node.
- static ClassTemplateDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static ClassTemplateDecl *CreateDeserialized(ASTContext &C, DeclID ID);
/// Return the specialization with the provided arguments if it exists,
/// otherwise return the insertion point.
@@ -2471,7 +2472,7 @@ class FriendTemplateDecl : public Decl {
MutableArrayRef<TemplateParameterList *> Params, FriendUnion Friend,
SourceLocation FriendLoc);
- static FriendTemplateDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static FriendTemplateDecl *CreateDeserialized(ASTContext &C, DeclID ID);
/// If this friend declaration names a templated type (or
/// a dependent member type of a templated type), return that
@@ -2572,8 +2573,7 @@ class TypeAliasTemplateDecl : public RedeclarableTemplateDecl {
NamedDecl *Decl);
/// Create an empty alias template node.
- static TypeAliasTemplateDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID);
+ static TypeAliasTemplateDecl *CreateDeserialized(ASTContext &C, DeclID ID);
// Implement isa/cast/dyncast support
static bool classof(const Decl *D) { return classofKind(D->getKind()); }
@@ -2670,7 +2670,7 @@ class VarTemplateSpecializationDecl : public VarDecl,
TypeSourceInfo *TInfo, StorageClass S,
ArrayRef<TemplateArgument> Args);
static VarTemplateSpecializationDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID);
+ DeclID ID);
void getNameForDiagnostic(raw_ostream &OS, const PrintingPolicy &Policy,
bool Qualified) const override;
@@ -2900,8 +2900,8 @@ class VarTemplatePartialSpecializationDecl
TypeSourceInfo *TInfo, StorageClass S, ArrayRef<TemplateArgument> Args,
const TemplateArgumentListInfo &ArgInfos);
- static VarTemplatePartialSpecializationDecl *
- CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static VarTemplatePartialSpecializationDecl *CreateDeserialized(ASTContext &C,
+ DeclID ID);
VarTemplatePartialSpecializationDecl *getMostRecentDecl() {
return cast<VarTemplatePartialSpecializationDecl>(
@@ -3078,7 +3078,7 @@ class VarTemplateDecl : public RedeclarableTemplateDecl {
VarDecl *Decl);
/// Create an empty variable template node.
- static VarTemplateDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static VarTemplateDecl *CreateDeserialized(ASTContext &C, DeclID ID);
/// Return the specialization with the provided arguments if it exists,
/// otherwise return the insertion point.
@@ -3183,7 +3183,7 @@ class ConceptDecl : public TemplateDecl, public Mergeable<ConceptDecl> {
SourceLocation L, DeclarationName Name,
TemplateParameterList *Params,
Expr *ConstraintExpr);
- static ConceptDecl *CreateDeserialized(ASTContext &C, GlobalDeclID ID);
+ static ConceptDecl *CreateDeserialized(ASTContext &C, DeclID ID);
Expr *getConstraintExpr() const {
return ConstraintExpr;
@@ -3232,7 +3232,7 @@ class ImplicitConceptSpecializationDecl final
Create(const ASTContext &C, DeclContext *DC, SourceLocation SL,
ArrayRef<TemplateArgument> ConvertedArgs);
static ImplicitConceptSpecializationDecl *
- CreateDeserialized(const ASTContext &C, GlobalDeclID ID,
+ CreateDeserialized(const ASTContext &C, DeclID ID,
unsigned NumTemplateArgs);
ArrayRef<TemplateArgument> getTemplateArguments() const {
@@ -3275,7 +3275,7 @@ class TemplateParamObjectDecl : public ValueDecl,
static TemplateParamObjectDecl *Create(const ASTContext &C, QualType T,
const APValue &V);
static TemplateParamObjectDecl *CreateDeserialized(ASTContext &C,
- GlobalDeclID ID);
+ DeclID ID);
/// Only ASTContext::getTemplateParamObjectDecl and deserialization
/// create these.
diff --git a/clang/include/clang/AST/ExternalASTSource.h b/clang/include/clang/AST/ExternalASTSource.h
index 385c32edbae0fd..d0ee8ce6365a97 100644
--- a/clang/include/clang/AST/ExternalASTSource.h
+++ b/clang/include/clang/AST/ExternalASTSource.h
@@ -99,7 +99,7 @@ class ExternalASTSource : public RefCountedBase<ExternalASTSource> {
/// passes back decl sets as VisibleDeclaration objects.
///
/// The default implementation of this method is a no-op.
- virtual Decl *GetExternalDecl(GlobalDeclID ID);
+ virtual Decl *GetExternalDecl(DeclID ID);
/// Resolve a selector ID into a selector.
///
@@ -375,7 +375,7 @@ struct LazyOffsetPtr {
if (isOffset()) {
assert(Source &&
"Cannot deserialize a lazy pointer without an AST source");
- Ptr = reinterpret_cast<uint64_t>((Source->*Get)(OffsT(Ptr >> 1)));
+ Ptr = reinterpret_cast<uint64_t>((Source->*Get)(Ptr >> 1));
}
return reinterpret_cast<T*>(Ptr);
}
@@ -579,7 +579,7 @@ using LazyDeclStmtPtr =
/// A lazy pointer to a declaration.
using LazyDeclPtr =
- LazyOffsetPtr<Decl, GlobalDeclID, &ExternalASTSource::GetExternalDecl>;
+ LazyOffsetPtr<Decl, DeclID, &ExternalASTSource::GetExternalDecl>;
/// A lazy pointer to a set of CXXCtorInitializers.
using LazyCXXCtorInitializersPtr =
diff --git a/clang/include/clang/Frontend/ASTUnit.h b/clang/include/clang/Frontend/ASTUnit.h
index 080844893c13c9..163e87cd3df3ac 100644
--- a/clang/include/clang/Frontend/ASTUnit.h
+++ b/clang/include/clang/Frontend/ASTUnit.h
@@ -241,7 +241,7 @@ class ASTUnit {
/// A list of the serialization ID numbers for each of the top-level
/// declarations parsed within the precompiled preamble.
- std::vector<LocalDeclID> TopLevelDeclsInPreamble;
+ std::vector<DeclID> TopLevelDeclsInPreamble;
/// Whether we should be caching code-completion results.
bool ShouldCacheCodeCompletionResults : 1;
diff --git a/clang/include/clang/Frontend/MultiplexConsumer.h b/clang/include/clang/Frontend/MultiplexConsumer.h
index f29c8e92fded0c..6a82c0dd8cec24 100644
--- a/clang/include/clang/Frontend/MultiplexConsumer.h
+++ b/clang/include/clang/Frontend/MultiplexConsumer.h
@@ -35,7 +35,7 @@ class MultiplexASTDeserializationListener : public ASTDeserializationListener {
void IdentifierRead(serialization::IdentID ID, IdentifierInfo *II) override;
void MacroRead(serialization::MacroID ID, MacroInfo *MI) override;
void TypeRead(serialization::TypeIdx Idx, QualType T) override;
- void DeclRead(GlobalDeclID ID, const Decl *D) override;
+ void DeclRead(DeclID ID, const Decl *D) override;
void SelectorRead(serialization::SelectorID iD, Selector Sel) override;
void MacroDefinitionRead(serialization::PreprocessedEntityID,
MacroDefinitionRecord *MD) override;
diff --git a/clang/include/clang/Sema/MultiplexExternalSemaSource.h b/clang/include/clang/Sema/MultiplexExternalSemaSource.h
index 238fb398b7d129..da3204863a4157 100644
--- a/clang/include/clang/Sema/MultiplexExternalSemaSource.h
+++ b/clang/include/clang/Sema/MultiplexExternalSemaSource.h
@@ -65,7 +65,7 @@ class MultiplexExternalSemaSource : public ExternalSemaSource {
/// Resolve a declaration ID into a declaration, potentially
/// building a new declaration.
- Decl *GetExternalDecl(GlobalDeclID ID) override;
+ Decl *GetExternalDecl(DeclID ID) override;
/// Complete the redeclaration chain if it's been extended since the
/// previous generation of the AST source.
diff --git a/clang/include/clang/Serialization/ASTBitCodes.h b/clang/include/clang/Serialization/ASTBitCodes.h
index 186c3b722ced16..42e09a2bf6344d 100644
--- a/clang/include/clang/Serialization/ASTBitCodes.h
+++ b/clang/include/clang/Serialization/ASTBitCodes.h
@@ -60,10 +60,6 @@ const unsigned VERSION_MINOR = 1;
/// and start at 1. 0 is reserved for NULL.
using IdentifierID = uint32_t;
-/// An ID number that refers to a declaration in an AST file. See the comments
-/// in DeclIDBase for details.
-using DeclID = DeclIDBase::DeclID;
-
/// An ID number that refers to a type in an AST file.
///
/// The ID of a type is partitioned into two parts: the lower
@@ -1983,7 +1979,7 @@ enum CleanupObjectKind { COK_Block, COK_CompoundLiteral };
/// Describes the categories of an Objective-C class.
struct ObjCCategoriesInfo {
// The ID of the definition
- LocalDeclID DefinitionID;
+ DeclID DefinitionID;
// Offset into the array of category lists.
unsigned Offset;
@@ -2082,6 +2078,27 @@ template <> struct DenseMapInfo<clang::serialization::DeclarationNameKey> {
}
};
+template <> struct DenseMapInfo<clang::GlobalDeclID> {
+ using DeclID = clang::DeclID;
+ using GlobalDeclID = clang::GlobalDeclID;
+
+ static GlobalDeclID getEmptyKey() {
+ return GlobalDeclID(DenseMapInfo<DeclID>::getEmptyKey());
+ }
+
+ static GlobalDeclID getTombstoneKey() {
+ return GlobalDeclID(DenseMapInfo<DeclID>::getTombstoneKey());
+ }
+
+ static unsigned getHashValue(const GlobalDeclID &Key) {
+ return DenseMapInfo<DeclID>::getHashValue(Key.get());
+ }
+
+ static bool isEqual(const GlobalDeclID &L, const GlobalDeclID &R) {
+ return L == R;
+ }
+};
+
} // namespace llvm
#endif // LLVM_CLANG_SERIALIZATION_ASTBITCODES_H
diff --git a/clang/include/clang/Serialization/ASTDeserializationListener.h b/clang/include/clang/Serialization/ASTDeserializationListener.h
index 3ab7f1a91843b5..bb039558f7f73f 100644
--- a/clang/include/clang/Serialization/ASTDeserializationListener.h
+++ b/clang/include/clang/Serialization/ASTDeserializationListener.h
@@ -44,7 +44,7 @@ class ASTDeserializationListener {
/// unqualified.
virtual void TypeRead(serialization::TypeIdx Idx, QualType T) { }
/// A decl was deserialized from the AST file.
- virtual void DeclRead(GlobalDeclID ID, const Decl *D) {}
+ virtual void DeclRead(DeclID ID, const Decl *D) {}
/// A selector was read from the AST file.
virtual void SelectorRead(serialization::SelectorID iD, Selector Sel) {}
/// A macro definition was read from the AST file.
diff --git a/clang/include/clang/Serialization/ASTReader.h b/clang/include/clang/Serialization/ASTReader.h
index 64f1ebc117b327..65e2bcb990c312 100644
--- a/clang/include/clang/Serialization/ASTReader.h
+++ b/clang/include/clang/Serialization/ASTReader.h
@@ -603,8 +603,7 @@ class ASTReader
/// Decl::Kind, DeclID pairs.
using unalighed_decl_id_t =
llvm::support::detail::packed_endian_specific_integral<
- serialization::DeclID, llvm::endianness::native,
- llvm::support::unaligned>;
+ DeclID, llvm::endianness::native, llvm::support::unaligned>;
using LexicalContents = ArrayRef<unalighed_decl_id_t>;
/// Map from a DeclContext to its lexical contents.
@@ -1919,7 +1918,7 @@ class ASTReader
/// Resolve a declaration ID into a declaration, potentially
/// building a new declaration.
Decl *GetDecl(GlobalDeclID ID);
- Decl *GetExternalDecl(GlobalDeclID ID) override;
+ Decl *GetExternalDecl(DeclID ID) override;
/// Resolve a declaration ID into a declaration. Return 0 if it's not
/// been loaded yet.
@@ -1942,8 +1941,7 @@ class ASTReader
///
/// \returns the global ID of the given declaration as known in the given
/// module file.
- LocalDeclID mapGlobalIDToModuleFileGlobalID(ModuleFile &M,
- GlobalDeclID GlobalID);
+ DeclID mapGlobalIDToModuleFileGlobalID(ModuleFile &M, GlobalDeclID GlobalID);
/// Reads a declaration ID from the given position in a record in the
/// given module.
diff --git a/clang/include/clang/Serialization/ASTWriter.h b/clang/include/clang/Serialization/ASTWriter.h
index 6c45b7348b8552..d01b315492483e 100644
--- a/clang/include/clang/Serialization/ASTWriter.h
+++ b/clang/include/clang/Serialization/ASTWriter.h
@@ -212,10 +212,10 @@ class ASTWriter : public ASTDeserializationListener,
llvm::SmallVector<NamespaceDecl *, 16> DelayedNamespace;
/// The first ID number we can use for our own declarations.
- LocalDeclID FirstDeclID = LocalDeclID(clang::NUM_PREDEF_DECL_IDS);
+ DeclID FirstDeclID = clang::NUM_PREDEF_DECL_IDS;
/// The decl ID that will be assigned to the next new decl.
- LocalDeclID NextDeclID = FirstDeclID;
+ DeclID NextDeclID = FirstDeclID;
/// Map that provides the ID numbers of each declaration within
/// the output stream, as well as those deserialized from a chained PCH.
@@ -223,7 +223,7 @@ class ASTWriter : public ASTDeserializationListener,
/// The ID numbers of declarations are consecutive (in order of
/// discovery) and start at 2. 1 is reserved for the translation
/// unit, while 0 is reserved for NULL.
- llvm::DenseMap<const Decl *, LocalDeclID> DeclIDs;
+ llvm::DenseMap<const Decl *, DeclID> DeclIDs;
/// Offset of each declaration in the bitstream, indexed by
/// the declaration's ID.
@@ -233,8 +233,8 @@ class ASTWriter : public ASTDeserializationListener,
/// are relative to this value.
uint64_t DeclTypesBlockStartOffset = 0;
- /// Sorted (by file offset) vector of pairs of file offset/LocalDeclID.
- using LocDeclIDsTy = SmallVector<std::pair<unsigned, LocalDeclID>, 64>;
+ /// Sorted (by file offset) vector of pairs of file offset/DeclID.
+ using LocDeclIDsTy = SmallVector<std::pair<unsigned, DeclID>, 64>;
struct DeclIDInFileInfo {
LocDeclIDsTy DeclIDs;
@@ -249,7 +249,7 @@ class ASTWriter : public ASTDeserializationListener,
/// that it contains.
FileDeclIDsTy FileDeclIDs;
- void associateDeclWithFile(const Decl *D, LocalDeclID);
+ void associateDeclWithFile(const Decl *D, DeclID);
/// The first ID number we can use for our own types.
serialization::TypeID FirstTypeID = serialization::NUM_PREDEF_TYPE_IDS;
@@ -420,8 +420,8 @@ class ASTWriter : public ASTDeserializationListener,
/// headers. The declarations themselves are stored as declaration
/// IDs, since they will be written out to an EAGERLY_DESERIALIZED_DECLS
/// record.
- RecordData EagerlyDeserializedDecls;
- RecordData ModularCodegenDecls;
+ SmallVector<DeclID, 16> EagerlyDeserializedDecls;
+ SmallVector<DeclID, 16> ModularCodegenDecls;
/// DeclContexts that have received extensions since their serialized
/// form.
@@ -707,8 +707,7 @@ class ASTWriter : public ASTDeserializationListener,
if (D->isFromASTFile())
return false;
auto I = DeclIDs.find(D);
- return (I == DeclIDs.end() ||
- I->second.get() >= clang::NUM_PREDEF_DECL_IDS);
+ return (I == DeclIDs.end() || I->second >= clang::NUM_PREDEF_DECL_IDS);
};
/// Emit a reference to a declaration.
@@ -716,13 +715,12 @@ class ASTWriter : public ASTDeserializationListener,
// Emit a reference to a declaration if the declaration was emitted.
void AddEmittedDeclRef(const Decl *D, RecordDataImpl &Record);
- /// Force a declaration to be emitted and get its local ID to the module file
- /// been writing.
- LocalDeclID GetDeclRef(const Decl *D);
+ /// Force a declaration to be emitted and get its ID.
+ DeclID GetDeclRef(const Decl *D);
- /// Determine the local declaration ID of an already-emitted
+ /// Determine the declaration ID of an already-emitted
/// declaration.
- LocalDeclID getDeclID(const Decl *D);
+ DeclID getDeclID(const Decl *D);
/// Whether or not the declaration got emitted. If not, it wouldn't be
/// emitted.
diff --git a/clang/include/clang/Serialization/ModuleFile.h b/clang/include/clang/Serialization/ModuleFile.h
index 25f644e76edb1a..1f72226558764d 100644
--- a/clang/include/clang/Serialization/ModuleFile.h
+++ b/clang/include/clang/Serialization/ModuleFile.h
@@ -459,10 +459,10 @@ class ModuleFile {
const DeclOffset *DeclOffsets = nullptr;
/// Base declaration ID for declarations local to this module.
- serialization::DeclID BaseDeclID = 0;
+ DeclID BaseDeclID = 0;
/// Remapping table for declaration IDs in this module.
- ContinuousRangeMap<serialization::DeclID, int, 2> DeclRemap;
+ ContinuousRangeMap<DeclID, int, 2> DeclRemap;
/// Mapping from the module files that this module file depends on
/// to the base declaration ID for that module as it is understood within this
@@ -471,7 +471,7 @@ class ModuleFile {
/// This is effectively a reverse global-to-local mapping for declaration
/// IDs, so that we can interpret a true global ID (for this translation unit)
/// as a local ID (for this module file).
- llvm::DenseMap<ModuleFile *, serialization::DeclID> GlobalToLocalDeclIDs;
+ llvm::DenseMap<ModuleFile *, DeclID> GlobalToLocalDeclIDs;
/// Array of file-level DeclIDs sorted by file.
const LocalDeclID *FileSortedDecls = nullptr;
diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp
index 475b47afa63941..a7386f755ca03e 100644
--- a/clang/lib/AST/ASTContext.cpp
+++ b/clang/lib/AST/ASTContext.cpp
@@ -1083,8 +1083,7 @@ void ASTContext::addModuleInitializer(Module *M, Decl *D) {
Inits->Initializers.push_back(D);
}
-void ASTContext::addLazyModuleInitializers(Module *M,
- ArrayRef<GlobalDeclID> IDs) {
+void ASTContext::addLazyModuleInitializers(Module *M, ArrayRef<DeclID> IDs) {
auto *&Inits = ModuleInitializers[M];
if (!Inits)
Inits = new (*this) PerModuleInitializers;
diff --git a/clang/lib/AST/Decl.cpp b/clang/lib/AST/Decl.cpp
index e7e95c16b69786..f452902110c745 100644
--- a/clang/lib/AST/Decl.cpp
+++ b/clang/lib/AST/Decl.cpp
@@ -2151,7 +2151,7 @@ VarDecl *VarDecl::Create(ASTContext &C, DeclContext *DC, SourceLocation StartL,
return new (C, DC) VarDecl(Var, C, DC, StartL, IdL, Id, T, TInfo, S);
}
-VarDecl *VarDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+VarDecl *VarDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID)
VarDecl(Var, C, nullptr, SourceLocation(), SourceLocation(), nullptr,
QualType(), nullptr, SC_None);
@@ -2929,7 +2929,7 @@ QualType ParmVarDecl::getOriginalType() const {
return T;
}
-ParmVarDecl *ParmVarDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+ParmVarDecl *ParmVarDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID)
ParmVarDecl(ParmVar, C, nullptr, SourceLocation(), SourceLocation(),
nullptr, QualType(), nullptr, SC_None, nullptr);
@@ -4553,7 +4553,7 @@ FieldDecl *FieldDecl::Create(const ASTContext &C, DeclContext *DC,
BW, Mutable, InitStyle);
}
-FieldDecl *FieldDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+FieldDecl *FieldDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) FieldDecl(Field, nullptr, SourceLocation(),
SourceLocation(), nullptr, QualType(), nullptr,
nullptr, false, ICIS_NoInit);
@@ -4863,7 +4863,7 @@ EnumDecl *EnumDecl::Create(ASTContext &C, DeclContext *DC,
return Enum;
}
-EnumDecl *EnumDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+EnumDecl *EnumDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
EnumDecl *Enum =
new (C, ID) EnumDecl(C, nullptr, SourceLocation(), SourceLocation(),
nullptr, nullptr, false, false, false);
@@ -5025,8 +5025,7 @@ RecordDecl *RecordDecl::Create(const ASTContext &C, TagKind TK, DeclContext *DC,
return R;
}
-RecordDecl *RecordDecl::CreateDeserialized(const ASTContext &C,
- GlobalDeclID ID) {
+RecordDecl *RecordDecl::CreateDeserialized(const ASTContext &C, DeclID ID) {
RecordDecl *R = new (C, ID)
RecordDecl(Record, TagTypeKind::Struct, C, nullptr, SourceLocation(),
SourceLocation(), nullptr, nullptr);
@@ -5298,7 +5297,7 @@ PragmaCommentDecl *PragmaCommentDecl::Create(const ASTContext &C,
}
PragmaCommentDecl *PragmaCommentDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID,
+ DeclID ID,
unsigned ArgSize) {
return new (C, ID, additionalSizeToAlloc<char>(ArgSize + 1))
PragmaCommentDecl(nullptr, SourceLocation(), PCK_Unknown);
@@ -5323,7 +5322,7 @@ PragmaDetectMismatchDecl::Create(const ASTContext &C, TranslationUnitDecl *DC,
}
PragmaDetectMismatchDecl *
-PragmaDetectMismatchDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID,
+PragmaDetectMismatchDecl::CreateDeserialized(ASTContext &C, DeclID ID,
unsigned NameValueSize) {
return new (C, ID, additionalSizeToAlloc<char>(NameValueSize + 1))
PragmaDetectMismatchDecl(nullptr, SourceLocation(), 0);
@@ -5350,7 +5349,7 @@ LabelDecl *LabelDecl::Create(ASTContext &C, DeclContext *DC,
return new (C, DC) LabelDecl(DC, IdentL, II, nullptr, GnuLabelL);
}
-LabelDecl *LabelDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+LabelDecl *LabelDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) LabelDecl(nullptr, SourceLocation(), nullptr, nullptr,
SourceLocation());
}
@@ -5391,7 +5390,7 @@ ImplicitParamDecl *ImplicitParamDecl::Create(ASTContext &C, QualType Type,
}
ImplicitParamDecl *ImplicitParamDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
return new (C, ID) ImplicitParamDecl(C, QualType(), ImplicitParamKind::Other);
}
@@ -5409,7 +5408,7 @@ FunctionDecl::Create(ASTContext &C, DeclContext *DC, SourceLocation StartLoc,
return New;
}
-FunctionDecl *FunctionDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+FunctionDecl *FunctionDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) FunctionDecl(
Function, C, nullptr, SourceLocation(), DeclarationNameInfo(), QualType(),
nullptr, SC_None, false, false, ConstexprSpecKind::Unspecified, nullptr);
@@ -5419,7 +5418,7 @@ BlockDecl *BlockDecl::Create(ASTContext &C, DeclContext *DC, SourceLocation L) {
return new (C, DC) BlockDecl(DC, L);
}
-BlockDecl *BlockDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+BlockDecl *BlockDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) BlockDecl(nullptr, SourceLocation());
}
@@ -5433,7 +5432,7 @@ CapturedDecl *CapturedDecl::Create(ASTContext &C, DeclContext *DC,
CapturedDecl(DC, NumParams);
}
-CapturedDecl *CapturedDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID,
+CapturedDecl *CapturedDecl::CreateDeserialized(ASTContext &C, DeclID ID,
unsigned NumParams) {
return new (C, ID, additionalSizeToAlloc<ImplicitParamDecl *>(NumParams))
CapturedDecl(nullptr, NumParams);
@@ -5460,7 +5459,7 @@ EnumConstantDecl *EnumConstantDecl::Create(ASTContext &C, EnumDecl *CD,
}
EnumConstantDecl *EnumConstantDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
return new (C, ID) EnumConstantDecl(C, nullptr, SourceLocation(), nullptr,
QualType(), nullptr, llvm::APSInt());
}
@@ -5487,7 +5486,7 @@ IndirectFieldDecl::Create(ASTContext &C, DeclContext *DC, SourceLocation L,
}
IndirectFieldDecl *IndirectFieldDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
return new (C, ID)
IndirectFieldDecl(C, nullptr, SourceLocation(), DeclarationName(),
QualType(), std::nullopt);
@@ -5548,7 +5547,7 @@ bool TypedefNameDecl::isTransparentTagSlow() const {
return isTransparent;
}
-TypedefDecl *TypedefDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+TypedefDecl *TypedefDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) TypedefDecl(C, nullptr, SourceLocation(), SourceLocation(),
nullptr, nullptr);
}
@@ -5561,8 +5560,7 @@ TypeAliasDecl *TypeAliasDecl::Create(ASTContext &C, DeclContext *DC,
return new (C, DC) TypeAliasDecl(C, DC, StartLoc, IdLoc, Id, TInfo);
}
-TypeAliasDecl *TypeAliasDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+TypeAliasDecl *TypeAliasDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) TypeAliasDecl(C, nullptr, SourceLocation(),
SourceLocation(), nullptr, nullptr);
}
@@ -5593,7 +5591,7 @@ FileScopeAsmDecl *FileScopeAsmDecl::Create(ASTContext &C, DeclContext *DC,
}
FileScopeAsmDecl *FileScopeAsmDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
return new (C, ID) FileScopeAsmDecl(nullptr, nullptr, SourceLocation(),
SourceLocation());
}
@@ -5611,7 +5609,7 @@ TopLevelStmtDecl *TopLevelStmtDecl::Create(ASTContext &C, Stmt *Statement) {
}
TopLevelStmtDecl *TopLevelStmtDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
return new (C, ID)
TopLevelStmtDecl(/*DC=*/nullptr, SourceLocation(), /*S=*/nullptr);
}
@@ -5632,7 +5630,7 @@ EmptyDecl *EmptyDecl::Create(ASTContext &C, DeclContext *DC, SourceLocation L) {
return new (C, DC) EmptyDecl(DC, L);
}
-EmptyDecl *EmptyDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+EmptyDecl *EmptyDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) EmptyDecl(nullptr, SourceLocation());
}
@@ -5665,8 +5663,7 @@ HLSLBufferDecl *HLSLBufferDecl::Create(ASTContext &C,
return Result;
}
-HLSLBufferDecl *HLSLBufferDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+HLSLBufferDecl *HLSLBufferDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) HLSLBufferDecl(nullptr, false, SourceLocation(), nullptr,
SourceLocation(), SourceLocation());
}
@@ -5722,7 +5719,7 @@ ImportDecl *ImportDecl::CreateImplicit(ASTContext &C, DeclContext *DC,
return Import;
}
-ImportDecl *ImportDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID,
+ImportDecl *ImportDecl::CreateDeserialized(ASTContext &C, DeclID ID,
unsigned NumLocations) {
return new (C, ID, additionalSizeToAlloc<SourceLocation>(NumLocations))
ImportDecl(EmptyShell());
@@ -5755,6 +5752,6 @@ ExportDecl *ExportDecl::Create(ASTContext &C, DeclContext *DC,
return new (C, DC) ExportDecl(DC, ExportLoc);
}
-ExportDecl *ExportDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+ExportDecl *ExportDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) ExportDecl(nullptr, SourceLocation());
}
diff --git a/clang/lib/AST/DeclBase.cpp b/clang/lib/AST/DeclBase.cpp
index c33babf8d1df3b..a2d88cf7a6a12b 100644
--- a/clang/lib/AST/DeclBase.cpp
+++ b/clang/lib/AST/DeclBase.cpp
@@ -70,8 +70,8 @@ void Decl::updateOutOfDate(IdentifierInfo &II) const {
#define ABSTRACT_DECL(DECL)
#include "clang/AST/DeclNodes.inc"
-void *Decl::operator new(std::size_t Size, const ASTContext &Context,
- GlobalDeclID ID, std::size_t Extra) {
+void *Decl::operator new(std::size_t Size, const ASTContext &Context, DeclID ID,
+ std::size_t Extra) {
// Allocate an extra 8 bytes worth of storage, which ensures that the
// resulting pointer will still be 8-byte aligned.
static_assert(sizeof(unsigned) * 2 >= alignof(Decl),
@@ -85,7 +85,7 @@ void *Decl::operator new(std::size_t Size, const ASTContext &Context,
PrefixPtr[0] = 0;
// Store the global declaration ID in the second 4 bytes.
- PrefixPtr[1] = ID.get();
+ PrefixPtr[1] = ID;
return Result;
}
diff --git a/clang/lib/AST/DeclCXX.cpp b/clang/lib/AST/DeclCXX.cpp
index 75c441293d62e2..c525c3368ce224 100644
--- a/clang/lib/AST/DeclCXX.cpp
+++ b/clang/lib/AST/DeclCXX.cpp
@@ -57,8 +57,7 @@ using namespace clang;
void AccessSpecDecl::anchor() {}
-AccessSpecDecl *AccessSpecDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+AccessSpecDecl *AccessSpecDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) AccessSpecDecl(EmptyShell());
}
@@ -69,7 +68,7 @@ void LazyASTUnresolvedSet::getFromExternalSource(ASTContext &C) const {
for (ASTUnresolvedSet::iterator I = Impl.begin(); I != Impl.end(); ++I)
I.setDecl(cast<NamedDecl>(Source->GetExternalDecl(
- GlobalDeclID(reinterpret_cast<uintptr_t>(I.getDecl()) >> 2))));
+ reinterpret_cast<uintptr_t>(I.getDecl()) >> 2)));
Impl.Decls.setLazy(false);
}
@@ -162,7 +161,7 @@ CXXRecordDecl::CreateLambda(const ASTContext &C, DeclContext *DC,
}
CXXRecordDecl *CXXRecordDecl::CreateDeserialized(const ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
auto *R = new (C, ID)
CXXRecordDecl(CXXRecord, TagTypeKind::Struct, C, nullptr,
SourceLocation(), SourceLocation(), nullptr, nullptr);
@@ -2163,8 +2162,8 @@ CXXDeductionGuideDecl *CXXDeductionGuideDecl::Create(
TInfo, EndLocation, Ctor, Kind);
}
-CXXDeductionGuideDecl *
-CXXDeductionGuideDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+CXXDeductionGuideDecl *CXXDeductionGuideDecl::CreateDeserialized(ASTContext &C,
+ DeclID ID) {
return new (C, ID) CXXDeductionGuideDecl(
C, nullptr, SourceLocation(), ExplicitSpecifier(), DeclarationNameInfo(),
QualType(), nullptr, SourceLocation(), nullptr,
@@ -2176,8 +2175,8 @@ RequiresExprBodyDecl *RequiresExprBodyDecl::Create(
return new (C, DC) RequiresExprBodyDecl(C, DC, StartLoc);
}
-RequiresExprBodyDecl *
-RequiresExprBodyDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+RequiresExprBodyDecl *RequiresExprBodyDecl::CreateDeserialized(ASTContext &C,
+ DeclID ID) {
return new (C, ID) RequiresExprBodyDecl(C, nullptr, SourceLocation());
}
@@ -2282,8 +2281,7 @@ CXXMethodDecl::Create(ASTContext &C, CXXRecordDecl *RD, SourceLocation StartLoc,
isInline, ConstexprKind, EndLocation, TrailingRequiresClause);
}
-CXXMethodDecl *CXXMethodDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+CXXMethodDecl *CXXMethodDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) CXXMethodDecl(
CXXMethod, C, nullptr, SourceLocation(), DeclarationNameInfo(),
QualType(), nullptr, SC_None, false, false,
@@ -2701,7 +2699,7 @@ CXXConstructorDecl::CXXConstructorDecl(
void CXXConstructorDecl::anchor() {}
CXXConstructorDecl *CXXConstructorDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID,
+ DeclID ID,
uint64_t AllocKind) {
bool hasTrailingExplicit = static_cast<bool>(AllocKind & TAKHasTailExplicit);
bool isInheritingConstructor =
@@ -2848,7 +2846,7 @@ bool CXXConstructorDecl::isSpecializationCopyingObject() const {
void CXXDestructorDecl::anchor() {}
CXXDestructorDecl *CXXDestructorDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
return new (C, ID) CXXDestructorDecl(
C, nullptr, SourceLocation(), DeclarationNameInfo(), QualType(), nullptr,
false, false, false, ConstexprSpecKind::Unspecified, nullptr);
@@ -2880,7 +2878,7 @@ void CXXDestructorDecl::setOperatorDelete(FunctionDecl *OD, Expr *ThisArg) {
void CXXConversionDecl::anchor() {}
CXXConversionDecl *CXXConversionDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
return new (C, ID) CXXConversionDecl(
C, nullptr, SourceLocation(), DeclarationNameInfo(), QualType(), nullptr,
false, false, ExplicitSpecifier(), ConstexprSpecKind::Unspecified,
@@ -2925,8 +2923,7 @@ LinkageSpecDecl *LinkageSpecDecl::Create(ASTContext &C, DeclContext *DC,
return new (C, DC) LinkageSpecDecl(DC, ExternLoc, LangLoc, Lang, HasBraces);
}
-LinkageSpecDecl *LinkageSpecDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+LinkageSpecDecl *LinkageSpecDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID)
LinkageSpecDecl(nullptr, SourceLocation(), SourceLocation(),
LinkageSpecLanguageIDs::C, false);
@@ -2948,7 +2945,7 @@ UsingDirectiveDecl *UsingDirectiveDecl::Create(ASTContext &C, DeclContext *DC,
}
UsingDirectiveDecl *UsingDirectiveDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
return new (C, ID) UsingDirectiveDecl(nullptr, SourceLocation(),
SourceLocation(),
NestedNameSpecifierLoc(),
@@ -2987,8 +2984,7 @@ NamespaceDecl *NamespaceDecl::Create(ASTContext &C, DeclContext *DC,
NamespaceDecl(C, DC, Inline, StartLoc, IdLoc, Id, PrevDecl, Nested);
}
-NamespaceDecl *NamespaceDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+NamespaceDecl *NamespaceDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) NamespaceDecl(C, nullptr, false, SourceLocation(),
SourceLocation(), nullptr, nullptr, false);
}
@@ -3050,7 +3046,7 @@ NamespaceAliasDecl *NamespaceAliasDecl::Create(ASTContext &C, DeclContext *DC,
}
NamespaceAliasDecl *NamespaceAliasDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
return new (C, ID) NamespaceAliasDecl(C, nullptr, SourceLocation(),
SourceLocation(), nullptr,
NestedNameSpecifierLoc(),
@@ -3105,8 +3101,7 @@ UsingShadowDecl::UsingShadowDecl(Kind K, ASTContext &C, EmptyShell Empty)
: NamedDecl(K, nullptr, SourceLocation(), DeclarationName()),
redeclarable_base(C) {}
-UsingShadowDecl *UsingShadowDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+UsingShadowDecl *UsingShadowDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) UsingShadowDecl(UsingShadow, C, EmptyShell());
}
@@ -3129,7 +3124,7 @@ ConstructorUsingShadowDecl::Create(ASTContext &C, DeclContext *DC,
}
ConstructorUsingShadowDecl *
-ConstructorUsingShadowDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+ConstructorUsingShadowDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) ConstructorUsingShadowDecl(C, EmptyShell());
}
@@ -3177,7 +3172,7 @@ UsingDecl *UsingDecl::Create(ASTContext &C, DeclContext *DC, SourceLocation UL,
return new (C, DC) UsingDecl(DC, UL, QualifierLoc, NameInfo, HasTypename);
}
-UsingDecl *UsingDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+UsingDecl *UsingDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) UsingDecl(nullptr, SourceLocation(),
NestedNameSpecifierLoc(), DeclarationNameInfo(),
false);
@@ -3201,8 +3196,7 @@ UsingEnumDecl *UsingEnumDecl::Create(ASTContext &C, DeclContext *DC,
UsingEnumDecl(DC, EnumType->getType()->getAsTagDecl()->getDeclName(), UL, EL, NL, EnumType);
}
-UsingEnumDecl *UsingEnumDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+UsingEnumDecl *UsingEnumDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID)
UsingEnumDecl(nullptr, DeclarationName(), SourceLocation(),
SourceLocation(), SourceLocation(), nullptr);
@@ -3221,7 +3215,7 @@ UsingPackDecl *UsingPackDecl::Create(ASTContext &C, DeclContext *DC,
return new (C, DC, Extra) UsingPackDecl(DC, InstantiatedFrom, UsingDecls);
}
-UsingPackDecl *UsingPackDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID,
+UsingPackDecl *UsingPackDecl::CreateDeserialized(ASTContext &C, DeclID ID,
unsigned NumExpansions) {
size_t Extra = additionalSizeToAlloc<NamedDecl *>(NumExpansions);
auto *Result =
@@ -3247,7 +3241,7 @@ UnresolvedUsingValueDecl::Create(ASTContext &C, DeclContext *DC,
}
UnresolvedUsingValueDecl *
-UnresolvedUsingValueDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+UnresolvedUsingValueDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) UnresolvedUsingValueDecl(nullptr, QualType(),
SourceLocation(),
NestedNameSpecifierLoc(),
@@ -3277,8 +3271,7 @@ UnresolvedUsingTypenameDecl::Create(ASTContext &C, DeclContext *DC,
}
UnresolvedUsingTypenameDecl *
-UnresolvedUsingTypenameDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+UnresolvedUsingTypenameDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) UnresolvedUsingTypenameDecl(
nullptr, SourceLocation(), SourceLocation(), NestedNameSpecifierLoc(),
SourceLocation(), nullptr, SourceLocation());
@@ -3291,8 +3284,7 @@ UnresolvedUsingIfExistsDecl::Create(ASTContext &Ctx, DeclContext *DC,
}
UnresolvedUsingIfExistsDecl *
-UnresolvedUsingIfExistsDecl::CreateDeserialized(ASTContext &Ctx,
- GlobalDeclID ID) {
+UnresolvedUsingIfExistsDecl::CreateDeserialized(ASTContext &Ctx, DeclID ID) {
return new (Ctx, ID)
UnresolvedUsingIfExistsDecl(nullptr, SourceLocation(), DeclarationName());
}
@@ -3316,7 +3308,7 @@ StaticAssertDecl *StaticAssertDecl::Create(ASTContext &C, DeclContext *DC,
}
StaticAssertDecl *StaticAssertDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
return new (C, ID) StaticAssertDecl(nullptr, SourceLocation(), nullptr,
nullptr, SourceLocation(), false);
}
@@ -3338,7 +3330,7 @@ BindingDecl *BindingDecl::Create(ASTContext &C, DeclContext *DC,
return new (C, DC) BindingDecl(DC, IdLoc, Id);
}
-BindingDecl *BindingDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+BindingDecl *BindingDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) BindingDecl(nullptr, SourceLocation(), nullptr);
}
@@ -3369,7 +3361,7 @@ DecompositionDecl *DecompositionDecl::Create(ASTContext &C, DeclContext *DC,
}
DecompositionDecl *DecompositionDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID,
+ DeclID ID,
unsigned NumBindings) {
size_t Extra = additionalSizeToAlloc<BindingDecl *>(NumBindings);
auto *Result = new (C, ID, Extra)
@@ -3407,8 +3399,7 @@ MSPropertyDecl *MSPropertyDecl::Create(ASTContext &C, DeclContext *DC,
return new (C, DC) MSPropertyDecl(DC, L, N, T, TInfo, StartL, Getter, Setter);
}
-MSPropertyDecl *MSPropertyDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+MSPropertyDecl *MSPropertyDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) MSPropertyDecl(nullptr, SourceLocation(),
DeclarationName(), QualType(), nullptr,
SourceLocation(), nullptr, nullptr);
@@ -3425,7 +3416,7 @@ MSGuidDecl *MSGuidDecl::Create(const ASTContext &C, QualType T, Parts P) {
return new (C, DC) MSGuidDecl(DC, T, P);
}
-MSGuidDecl *MSGuidDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+MSGuidDecl *MSGuidDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) MSGuidDecl(nullptr, QualType(), Parts());
}
@@ -3535,7 +3526,7 @@ UnnamedGlobalConstantDecl::Create(const ASTContext &C, QualType T,
}
UnnamedGlobalConstantDecl *
-UnnamedGlobalConstantDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+UnnamedGlobalConstantDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID)
UnnamedGlobalConstantDecl(C, nullptr, QualType(), APValue());
}
diff --git a/clang/lib/AST/DeclFriend.cpp b/clang/lib/AST/DeclFriend.cpp
index 04b9b93699f36c..f6d11e550b57f9 100644
--- a/clang/lib/AST/DeclFriend.cpp
+++ b/clang/lib/AST/DeclFriend.cpp
@@ -62,7 +62,7 @@ FriendDecl *FriendDecl::Create(ASTContext &C, DeclContext *DC,
return FD;
}
-FriendDecl *FriendDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID,
+FriendDecl *FriendDecl::CreateDeserialized(ASTContext &C, DeclID ID,
unsigned FriendTypeNumTPLists) {
std::size_t Extra =
additionalSizeToAlloc<TemplateParameterList *>(FriendTypeNumTPLists);
diff --git a/clang/lib/AST/DeclObjC.cpp b/clang/lib/AST/DeclObjC.cpp
index 83062b0e68878d..f98ec6727e48a7 100644
--- a/clang/lib/AST/DeclObjC.cpp
+++ b/clang/lib/AST/DeclObjC.cpp
@@ -862,8 +862,7 @@ ObjCMethodDecl *ObjCMethodDecl::Create(
isImplicitlyDeclared, isDefined, impControl, HasRelatedResultType);
}
-ObjCMethodDecl *ObjCMethodDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ObjCMethodDecl *ObjCMethodDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) ObjCMethodDecl(SourceLocation(), SourceLocation(),
Selector(), QualType(), nullptr, nullptr);
}
@@ -1487,7 +1486,7 @@ ObjCTypeParamDecl *ObjCTypeParamDecl::Create(ASTContext &ctx, DeclContext *dc,
}
ObjCTypeParamDecl *ObjCTypeParamDecl::CreateDeserialized(ASTContext &ctx,
- GlobalDeclID ID) {
+ DeclID ID) {
return new (ctx, ID) ObjCTypeParamDecl(ctx, nullptr,
ObjCTypeParamVariance::Invariant,
SourceLocation(), 0, SourceLocation(),
@@ -1552,7 +1551,7 @@ ObjCInterfaceDecl *ObjCInterfaceDecl::Create(
}
ObjCInterfaceDecl *ObjCInterfaceDecl::CreateDeserialized(const ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
auto *Result = new (C, ID)
ObjCInterfaceDecl(C, nullptr, SourceLocation(), nullptr, nullptr,
SourceLocation(), nullptr, false);
@@ -1866,7 +1865,7 @@ ObjCIvarDecl *ObjCIvarDecl::Create(ASTContext &C, ObjCContainerDecl *DC,
synthesized);
}
-ObjCIvarDecl *ObjCIvarDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+ObjCIvarDecl *ObjCIvarDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) ObjCIvarDecl(nullptr, SourceLocation(), SourceLocation(),
nullptr, QualType(), nullptr,
ObjCIvarDecl::None, nullptr, false);
@@ -1915,7 +1914,7 @@ ObjCAtDefsFieldDecl
}
ObjCAtDefsFieldDecl *ObjCAtDefsFieldDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
return new (C, ID) ObjCAtDefsFieldDecl(nullptr, SourceLocation(),
SourceLocation(), nullptr, QualType(),
nullptr);
@@ -1950,7 +1949,7 @@ ObjCProtocolDecl *ObjCProtocolDecl::Create(ASTContext &C, DeclContext *DC,
}
ObjCProtocolDecl *ObjCProtocolDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
ObjCProtocolDecl *Result =
new (C, ID) ObjCProtocolDecl(C, nullptr, nullptr, SourceLocation(),
SourceLocation(), nullptr);
@@ -2149,7 +2148,7 @@ ObjCCategoryDecl *ObjCCategoryDecl::Create(
}
ObjCCategoryDecl *ObjCCategoryDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
return new (C, ID) ObjCCategoryDecl(nullptr, SourceLocation(),
SourceLocation(), SourceLocation(),
nullptr, nullptr, nullptr);
@@ -2189,8 +2188,8 @@ ObjCCategoryImplDecl *ObjCCategoryImplDecl::Create(
atStartLoc, CategoryNameLoc);
}
-ObjCCategoryImplDecl *
-ObjCCategoryImplDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+ObjCCategoryImplDecl *ObjCCategoryImplDecl::CreateDeserialized(ASTContext &C,
+ DeclID ID) {
return new (C, ID) ObjCCategoryImplDecl(nullptr, nullptr, nullptr,
SourceLocation(), SourceLocation(),
SourceLocation());
@@ -2297,7 +2296,7 @@ ObjCImplementationDecl::Create(ASTContext &C, DeclContext *DC,
}
ObjCImplementationDecl *
-ObjCImplementationDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+ObjCImplementationDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) ObjCImplementationDecl(nullptr, nullptr, nullptr,
SourceLocation(), SourceLocation());
}
@@ -2340,7 +2339,7 @@ ObjCCompatibleAliasDecl::Create(ASTContext &C, DeclContext *DC,
}
ObjCCompatibleAliasDecl *
-ObjCCompatibleAliasDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+ObjCCompatibleAliasDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) ObjCCompatibleAliasDecl(nullptr, SourceLocation(),
nullptr, nullptr);
}
@@ -2361,7 +2360,7 @@ ObjCPropertyDecl::Create(ASTContext &C, DeclContext *DC, SourceLocation L,
}
ObjCPropertyDecl *ObjCPropertyDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
return new (C, ID) ObjCPropertyDecl(nullptr, SourceLocation(), nullptr,
SourceLocation(), SourceLocation(),
QualType(), nullptr, None);
@@ -2393,8 +2392,8 @@ ObjCPropertyImplDecl *ObjCPropertyImplDecl::Create(ASTContext &C,
ivarLoc);
}
-ObjCPropertyImplDecl *
-ObjCPropertyImplDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+ObjCPropertyImplDecl *ObjCPropertyImplDecl::CreateDeserialized(ASTContext &C,
+ DeclID ID) {
return new (C, ID) ObjCPropertyImplDecl(nullptr, SourceLocation(),
SourceLocation(), nullptr, Dynamic,
nullptr, SourceLocation());
diff --git a/clang/lib/AST/DeclOpenMP.cpp b/clang/lib/AST/DeclOpenMP.cpp
index 81ca48e60942d5..9f1d2bd4123523 100644
--- a/clang/lib/AST/DeclOpenMP.cpp
+++ b/clang/lib/AST/DeclOpenMP.cpp
@@ -35,9 +35,8 @@ OMPThreadPrivateDecl *OMPThreadPrivateDecl::Create(ASTContext &C,
return D;
}
-OMPThreadPrivateDecl *OMPThreadPrivateDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID,
- unsigned N) {
+OMPThreadPrivateDecl *
+OMPThreadPrivateDecl::CreateDeserialized(ASTContext &C, DeclID ID, unsigned N) {
return OMPDeclarativeDirective::createEmptyDirective<OMPThreadPrivateDecl>(
C, ID, 0, N);
}
@@ -63,8 +62,7 @@ OMPAllocateDecl *OMPAllocateDecl::Create(ASTContext &C, DeclContext *DC,
return D;
}
-OMPAllocateDecl *OMPAllocateDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID,
+OMPAllocateDecl *OMPAllocateDecl::CreateDeserialized(ASTContext &C, DeclID ID,
unsigned NVars,
unsigned NClauses) {
return OMPDeclarativeDirective::createEmptyDirective<OMPAllocateDecl>(
@@ -90,8 +88,7 @@ OMPRequiresDecl *OMPRequiresDecl::Create(ASTContext &C, DeclContext *DC,
L);
}
-OMPRequiresDecl *OMPRequiresDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID,
+OMPRequiresDecl *OMPRequiresDecl::CreateDeserialized(ASTContext &C, DeclID ID,
unsigned N) {
return OMPDeclarativeDirective::createEmptyDirective<OMPRequiresDecl>(
C, ID, N, 0, SourceLocation());
@@ -119,7 +116,7 @@ OMPDeclareReductionDecl *OMPDeclareReductionDecl::Create(
}
OMPDeclareReductionDecl *
-OMPDeclareReductionDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+OMPDeclareReductionDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) OMPDeclareReductionDecl(
OMPDeclareReduction, /*DC=*/nullptr, SourceLocation(), DeclarationName(),
QualType(), /*PrevDeclInScope=*/nullptr);
@@ -149,9 +146,8 @@ OMPDeclareMapperDecl *OMPDeclareMapperDecl::Create(
C, DC, Clauses, 1, L, Name, T, VarName, PrevDeclInScope);
}
-OMPDeclareMapperDecl *OMPDeclareMapperDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID,
- unsigned N) {
+OMPDeclareMapperDecl *
+OMPDeclareMapperDecl::CreateDeserialized(ASTContext &C, DeclID ID, unsigned N) {
return OMPDeclarativeDirective::createEmptyDirective<OMPDeclareMapperDecl>(
C, ID, N, 1, SourceLocation(), DeclarationName(), QualType(),
DeclarationName(), /*PrevDeclInScope=*/nullptr);
@@ -181,7 +177,7 @@ OMPCapturedExprDecl *OMPCapturedExprDecl::Create(ASTContext &C, DeclContext *DC,
}
OMPCapturedExprDecl *OMPCapturedExprDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
return new (C, ID) OMPCapturedExprDecl(C, nullptr, nullptr, QualType(),
/*TInfo=*/nullptr, SourceLocation());
}
diff --git a/clang/lib/AST/DeclTemplate.cpp b/clang/lib/AST/DeclTemplate.cpp
index d27a30e0c5fce1..ca998b502bee49 100644
--- a/clang/lib/AST/DeclTemplate.cpp
+++ b/clang/lib/AST/DeclTemplate.cpp
@@ -337,10 +337,9 @@ void RedeclarableTemplateDecl::loadLazySpecializationsImpl() const {
CommonBase *CommonBasePtr = getMostRecentDecl()->getCommonPtr();
if (CommonBasePtr->LazySpecializations) {
ASTContext &Context = getASTContext();
- GlobalDeclID *Specs = CommonBasePtr->LazySpecializations;
+ DeclID *Specs = CommonBasePtr->LazySpecializations;
CommonBasePtr->LazySpecializations = nullptr;
- unsigned SpecSize = (*Specs++).get();
- for (unsigned I = 0; I != SpecSize; ++I)
+ for (uint32_t I = 0, N = *Specs++; I != N; ++I)
(void)Context.getExternalSource()->GetExternalDecl(Specs[I]);
}
}
@@ -418,8 +417,8 @@ FunctionTemplateDecl::Create(ASTContext &C, DeclContext *DC, SourceLocation L,
return TD;
}
-FunctionTemplateDecl *
-FunctionTemplateDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+FunctionTemplateDecl *FunctionTemplateDecl::CreateDeserialized(ASTContext &C,
+ DeclID ID) {
return new (C, ID) FunctionTemplateDecl(C, nullptr, SourceLocation(),
DeclarationName(), nullptr, nullptr);
}
@@ -504,7 +503,7 @@ ClassTemplateDecl *ClassTemplateDecl::Create(ASTContext &C, DeclContext *DC,
}
ClassTemplateDecl *ClassTemplateDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
return new (C, ID) ClassTemplateDecl(C, nullptr, SourceLocation(),
DeclarationName(), nullptr, nullptr);
}
@@ -653,14 +652,14 @@ TemplateTypeParmDecl *TemplateTypeParmDecl::Create(
}
TemplateTypeParmDecl *
-TemplateTypeParmDecl::CreateDeserialized(const ASTContext &C, GlobalDeclID ID) {
+TemplateTypeParmDecl::CreateDeserialized(const ASTContext &C, DeclID ID) {
return new (C, ID)
TemplateTypeParmDecl(nullptr, SourceLocation(), SourceLocation(), nullptr,
false, false, std::nullopt);
}
TemplateTypeParmDecl *
-TemplateTypeParmDecl::CreateDeserialized(const ASTContext &C, GlobalDeclID ID,
+TemplateTypeParmDecl::CreateDeserialized(const ASTContext &C, DeclID ID,
bool HasTypeConstraint) {
return new (C, ID,
additionalSizeToAlloc<TypeConstraint>(HasTypeConstraint ? 1 : 0))
@@ -760,7 +759,7 @@ NonTypeTemplateParmDecl *NonTypeTemplateParmDecl::Create(
}
NonTypeTemplateParmDecl *
-NonTypeTemplateParmDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID,
+NonTypeTemplateParmDecl::CreateDeserialized(ASTContext &C, DeclID ID,
bool HasTypeConstraint) {
return new (C, ID, additionalSizeToAlloc<std::pair<QualType,
TypeSourceInfo *>,
@@ -771,7 +770,7 @@ NonTypeTemplateParmDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID,
}
NonTypeTemplateParmDecl *
-NonTypeTemplateParmDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID,
+NonTypeTemplateParmDecl::CreateDeserialized(ASTContext &C, DeclID ID,
unsigned NumExpandedTypes,
bool HasTypeConstraint) {
auto *NTTP =
@@ -837,13 +836,13 @@ TemplateTemplateParmDecl::Create(const ASTContext &C, DeclContext *DC,
}
TemplateTemplateParmDecl *
-TemplateTemplateParmDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+TemplateTemplateParmDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) TemplateTemplateParmDecl(nullptr, SourceLocation(), 0, 0,
false, nullptr, false, nullptr);
}
TemplateTemplateParmDecl *
-TemplateTemplateParmDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID,
+TemplateTemplateParmDecl::CreateDeserialized(ASTContext &C, DeclID ID,
unsigned NumExpansions) {
auto *TTP =
new (C, ID, additionalSizeToAlloc<TemplateParameterList *>(NumExpansions))
@@ -949,8 +948,7 @@ ClassTemplateSpecializationDecl::Create(ASTContext &Context, TagKind TK,
}
ClassTemplateSpecializationDecl *
-ClassTemplateSpecializationDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ClassTemplateSpecializationDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
auto *Result =
new (C, ID) ClassTemplateSpecializationDecl(C, ClassTemplateSpecialization);
Result->setMayHaveOutOfDateDef(false);
@@ -1036,7 +1034,7 @@ ConceptDecl *ConceptDecl::Create(ASTContext &C, DeclContext *DC,
return TD;
}
-ConceptDecl *ConceptDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+ConceptDecl *ConceptDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
ConceptDecl *Result = new (C, ID) ConceptDecl(nullptr, SourceLocation(),
DeclarationName(),
nullptr, nullptr);
@@ -1070,7 +1068,7 @@ ImplicitConceptSpecializationDecl *ImplicitConceptSpecializationDecl::Create(
ImplicitConceptSpecializationDecl *
ImplicitConceptSpecializationDecl::CreateDeserialized(
- const ASTContext &C, GlobalDeclID ID, unsigned NumTemplateArgs) {
+ const ASTContext &C, DeclID ID, unsigned NumTemplateArgs) {
return new (C, ID, additionalSizeToAlloc<TemplateArgument>(NumTemplateArgs))
ImplicitConceptSpecializationDecl(EmptyShell{}, NumTemplateArgs);
}
@@ -1133,7 +1131,7 @@ Create(ASTContext &Context, TagKind TK,DeclContext *DC,
ClassTemplatePartialSpecializationDecl *
ClassTemplatePartialSpecializationDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
auto *Result = new (C, ID) ClassTemplatePartialSpecializationDecl(C);
Result->setMayHaveOutOfDateDef(false);
return Result;
@@ -1160,7 +1158,7 @@ FriendTemplateDecl::Create(ASTContext &Context, DeclContext *DC,
}
FriendTemplateDecl *FriendTemplateDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
return new (C, ID) FriendTemplateDecl(EmptyShell());
}
@@ -1179,8 +1177,8 @@ TypeAliasTemplateDecl::Create(ASTContext &C, DeclContext *DC, SourceLocation L,
return TD;
}
-TypeAliasTemplateDecl *
-TypeAliasTemplateDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+TypeAliasTemplateDecl *TypeAliasTemplateDecl::CreateDeserialized(ASTContext &C,
+ DeclID ID) {
return new (C, ID) TypeAliasTemplateDecl(C, nullptr, SourceLocation(),
DeclarationName(), nullptr, nullptr);
}
@@ -1217,8 +1215,7 @@ VarTemplateDecl *VarTemplateDecl::Create(ASTContext &C, DeclContext *DC,
return TD;
}
-VarTemplateDecl *VarTemplateDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+VarTemplateDecl *VarTemplateDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID) VarTemplateDecl(C, nullptr, SourceLocation(),
DeclarationName(), nullptr, nullptr);
}
@@ -1340,8 +1337,7 @@ VarTemplateSpecializationDecl *VarTemplateSpecializationDecl::Create(
}
VarTemplateSpecializationDecl *
-VarTemplateSpecializationDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+VarTemplateSpecializationDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
return new (C, ID)
VarTemplateSpecializationDecl(VarTemplateSpecialization, C);
}
@@ -1433,7 +1429,7 @@ VarTemplatePartialSpecializationDecl::Create(
VarTemplatePartialSpecializationDecl *
VarTemplatePartialSpecializationDecl::CreateDeserialized(ASTContext &C,
- GlobalDeclID ID) {
+ DeclID ID) {
return new (C, ID) VarTemplatePartialSpecializationDecl(C);
}
@@ -1547,7 +1543,7 @@ TemplateParamObjectDecl *TemplateParamObjectDecl::Create(const ASTContext &C,
}
TemplateParamObjectDecl *
-TemplateParamObjectDecl::CreateDeserialized(ASTContext &C, GlobalDeclID ID) {
+TemplateParamObjectDecl::CreateDeserialized(ASTContext &C, DeclID ID) {
auto *TPOD = new (C, ID) TemplateParamObjectDecl(nullptr, QualType(), APValue());
C.addDestruction(&TPOD->Value);
return TPOD;
diff --git a/clang/lib/AST/ExternalASTSource.cpp b/clang/lib/AST/ExternalASTSource.cpp
index e96a4749685115..26ded22bf32963 100644
--- a/clang/lib/AST/ExternalASTSource.cpp
+++ b/clang/lib/AST/ExternalASTSource.cpp
@@ -68,7 +68,7 @@ bool ExternalASTSource::layoutRecordType(
return false;
}
-Decl *ExternalASTSource::GetExternalDecl(GlobalDeclID ID) { return nullptr; }
+Decl *ExternalASTSource::GetExternalDecl(DeclID ID) { return nullptr; }
Selector ExternalASTSource::GetExternalSelector(uint32_t ID) {
return Selector();
diff --git a/clang/lib/Frontend/ASTUnit.cpp b/clang/lib/Frontend/ASTUnit.cpp
index 2f75313e8a4c50..361331de145b2a 100644
--- a/clang/lib/Frontend/ASTUnit.cpp
+++ b/clang/lib/Frontend/ASTUnit.cpp
@@ -1067,7 +1067,7 @@ class ASTUnitPreambleCallbacks : public PreambleCallbacks {
std::vector<Decl *> takeTopLevelDecls() { return std::move(TopLevelDecls); }
- std::vector<LocalDeclID> takeTopLevelDeclIDs() {
+ std::vector<DeclID> takeTopLevelDeclIDs() {
return std::move(TopLevelDeclIDs);
}
@@ -1101,7 +1101,7 @@ class ASTUnitPreambleCallbacks : public PreambleCallbacks {
private:
unsigned Hash = 0;
std::vector<Decl *> TopLevelDecls;
- std::vector<LocalDeclID> TopLevelDeclIDs;
+ std::vector<DeclID> TopLevelDeclIDs;
llvm::SmallVector<ASTUnit::StandaloneDiagnostic, 4> PreambleDiags;
};
@@ -1471,9 +1471,7 @@ void ASTUnit::RealizeTopLevelDeclsFromPreamble() {
for (const auto TopLevelDecl : TopLevelDeclsInPreamble) {
// Resolve the declaration ID to an actual declaration, possibly
// deserializing the declaration in the process.
- //
- // FIMXE: We shouldn't convert a LocalDeclID to GlobalDeclID directly.
- if (Decl *D = Source.GetExternalDecl(GlobalDeclID(TopLevelDecl.get())))
+ if (Decl *D = Source.GetExternalDecl(TopLevelDecl))
Resolved.push_back(D);
}
TopLevelDeclsInPreamble.clear();
diff --git a/clang/lib/Frontend/FrontendAction.cpp b/clang/lib/Frontend/FrontendAction.cpp
index a2af738a053e5b..91ce16e5e795e9 100644
--- a/clang/lib/Frontend/FrontendAction.cpp
+++ b/clang/lib/Frontend/FrontendAction.cpp
@@ -80,7 +80,7 @@ class DelegatingDeserializationListener : public ASTDeserializationListener {
if (Previous)
Previous->TypeRead(Idx, T);
}
- void DeclRead(GlobalDeclID ID, const Decl *D) override {
+ void DeclRead(DeclID ID, const Decl *D) override {
if (Previous)
Previous->DeclRead(ID, D);
}
@@ -102,7 +102,7 @@ class DeserializedDeclsDumper : public DelegatingDeserializationListener {
bool DeletePrevious)
: DelegatingDeserializationListener(Previous, DeletePrevious) {}
- void DeclRead(GlobalDeclID ID, const Decl *D) override {
+ void DeclRead(DeclID ID, const Decl *D) override {
llvm::outs() << "PCH DECL: " << D->getDeclKindName();
if (const NamedDecl *ND = dyn_cast<NamedDecl>(D)) {
llvm::outs() << " - ";
@@ -128,7 +128,7 @@ class DeserializedDeclsChecker : public DelegatingDeserializationListener {
: DelegatingDeserializationListener(Previous, DeletePrevious), Ctx(Ctx),
NamesToCheck(NamesToCheck) {}
- void DeclRead(GlobalDeclID ID, const Decl *D) override {
+ void DeclRead(DeclID ID, const Decl *D) override {
if (const NamedDecl *ND = dyn_cast<NamedDecl>(D))
if (NamesToCheck.find(ND->getNameAsString()) != NamesToCheck.end()) {
unsigned DiagID
diff --git a/clang/lib/Frontend/MultiplexConsumer.cpp b/clang/lib/Frontend/MultiplexConsumer.cpp
index c74bfd86195fec..9e885c8dc0f650 100644
--- a/clang/lib/Frontend/MultiplexConsumer.cpp
+++ b/clang/lib/Frontend/MultiplexConsumer.cpp
@@ -52,8 +52,7 @@ void MultiplexASTDeserializationListener::TypeRead(
Listeners[i]->TypeRead(Idx, T);
}
-void MultiplexASTDeserializationListener::DeclRead(GlobalDeclID ID,
- const Decl *D) {
+void MultiplexASTDeserializationListener::DeclRead(DeclID ID, const Decl *D) {
for (size_t i = 0, e = Listeners.size(); i != e; ++i)
Listeners[i]->DeclRead(ID, D);
}
diff --git a/clang/lib/Sema/MultiplexExternalSemaSource.cpp b/clang/lib/Sema/MultiplexExternalSemaSource.cpp
index 79e656eb4b7e27..e48c724983893e 100644
--- a/clang/lib/Sema/MultiplexExternalSemaSource.cpp
+++ b/clang/lib/Sema/MultiplexExternalSemaSource.cpp
@@ -46,7 +46,7 @@ void MultiplexExternalSemaSource::AddSource(ExternalSemaSource *Source) {
// ExternalASTSource.
//===----------------------------------------------------------------------===//
-Decl *MultiplexExternalSemaSource::GetExternalDecl(GlobalDeclID ID) {
+Decl *MultiplexExternalSemaSource::GetExternalDecl(DeclID ID) {
for(size_t i = 0; i < Sources.size(); ++i)
if (Decl *Result = Sources[i]->GetExternalDecl(ID))
return Result;
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index c99d6ed1c36c88..df9984d537bfd6 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -5101,9 +5101,8 @@ void ASTReader::InitializeContext() {
// If there's a listener, notify them that we "read" the translation unit.
if (DeserializationListener)
- DeserializationListener->DeclRead(
- GlobalDeclID(PREDEF_DECL_TRANSLATION_UNIT_ID),
- Context.getTranslationUnitDecl());
+ DeserializationListener->DeclRead(PREDEF_DECL_TRANSLATION_UNIT_ID,
+ Context.getTranslationUnitDecl());
// FIXME: Find a better way to deal with collisions between these
// built-in types. Right now, we just ignore the problem.
@@ -6011,9 +6010,9 @@ llvm::Error ASTReader::ReadSubmoduleBlock(ModuleFile &F,
case SUBMODULE_INITIALIZERS: {
if (!ContextObj)
break;
- SmallVector<GlobalDeclID, 16> Inits;
+ SmallVector<DeclID, 16> Inits;
for (auto &ID : Record)
- Inits.push_back(getGlobalDeclID(F, LocalDeclID(ID)));
+ Inits.push_back(getGlobalDeclID(F, LocalDeclID(ID)).get());
ContextObj->addLazyModuleInitializers(CurrentModule, Inits);
break;
}
@@ -7518,7 +7517,9 @@ ASTRecordReader::readASTTemplateArgumentListInfo() {
return ASTTemplateArgumentListInfo::Create(getContext(), Result);
}
-Decl *ASTReader::GetExternalDecl(GlobalDeclID ID) { return GetDecl(ID); }
+Decl *ASTReader::GetExternalDecl(DeclID ID) {
+ return GetDecl(GlobalDeclID(ID));
+}
void ASTReader::CompleteRedeclChain(const Decl *D) {
if (NumCurrentElementsDeserializing) {
@@ -7766,7 +7767,7 @@ static Decl *getPredefinedDecl(ASTContext &Context, PredefinedDeclIDs ID) {
Decl *ASTReader::GetExistingDecl(GlobalDeclID ID) {
assert(ContextObj && "reading decl with no AST context");
if (ID.get() < NUM_PREDEF_DECL_IDS) {
- Decl *D = getPredefinedDecl(*ContextObj, (PredefinedDeclIDs)ID);
+ Decl *D = getPredefinedDecl(*ContextObj, (PredefinedDeclIDs)ID.get());
if (D) {
// Track that we have merged the declaration with ID \p ID into the
// pre-existing predefined declaration \p D.
@@ -7803,17 +7804,17 @@ Decl *ASTReader::GetDecl(GlobalDeclID ID) {
if (!DeclsLoaded[Index]) {
ReadDeclRecord(ID);
if (DeserializationListener)
- DeserializationListener->DeclRead(ID, DeclsLoaded[Index]);
+ DeserializationListener->DeclRead(ID.get(), DeclsLoaded[Index]);
}
return DeclsLoaded[Index];
}
-LocalDeclID ASTReader::mapGlobalIDToModuleFileGlobalID(ModuleFile &M,
- GlobalDeclID GlobalID) {
+DeclID ASTReader::mapGlobalIDToModuleFileGlobalID(ModuleFile &M,
+ GlobalDeclID GlobalID) {
DeclID ID = GlobalID.get();
if (ID < NUM_PREDEF_DECL_IDS)
- return LocalDeclID(ID);
+ return ID;
GlobalDeclMapType::const_iterator I = GlobalDeclMap.find(GlobalID);
assert(I != GlobalDeclMap.end() && "Corrupted global declaration map");
@@ -7822,9 +7823,9 @@ LocalDeclID ASTReader::mapGlobalIDToModuleFileGlobalID(ModuleFile &M,
llvm::DenseMap<ModuleFile *, DeclID>::iterator Pos =
M.GlobalToLocalDeclIDs.find(Owner);
if (Pos == M.GlobalToLocalDeclIDs.end())
- return LocalDeclID();
+ return 0;
- return LocalDeclID(ID - Owner->BaseDeclID + Pos->second);
+ return ID - Owner->BaseDeclID + Pos->second;
}
GlobalDeclID ASTReader::ReadDeclID(ModuleFile &F, const RecordData &Record,
@@ -7991,7 +7992,6 @@ ASTReader::FindExternalVisibleDeclsByName(const DeclContext *DC,
// Load the list of declarations.
SmallVector<NamedDecl *, 64> Decls;
llvm::SmallPtrSet<NamedDecl *, 8> Found;
-
for (GlobalDeclID ID : It->second.Table.find(Name)) {
NamedDecl *ND = cast<NamedDecl>(GetDecl(ID));
if (ND->getDeclName() == Name && Found.insert(ND).second)
diff --git a/clang/lib/Serialization/ASTReaderDecl.cpp b/clang/lib/Serialization/ASTReaderDecl.cpp
index 744f11de88c2f8..9707eed701e9fa 100644
--- a/clang/lib/Serialization/ASTReaderDecl.cpp
+++ b/clang/lib/Serialization/ASTReaderDecl.cpp
@@ -273,15 +273,17 @@ namespace clang {
auto *&LazySpecializations = D->getCommonPtr()->LazySpecializations;
if (auto &Old = LazySpecializations) {
- IDs.insert(IDs.end(), Old + 1, Old + 1 + Old[0].get());
+ IDs.insert(IDs.end(), GlobalDeclIDIterator(Old + 1),
+ GlobalDeclIDIterator(Old + 1 + Old[0]));
llvm::sort(IDs);
IDs.erase(std::unique(IDs.begin(), IDs.end()), IDs.end());
}
- auto *Result = new (C) GlobalDeclID[1 + IDs.size()];
- *Result = GlobalDeclID(IDs.size());
+ auto *Result = new (C) DeclID[1 + IDs.size()];
+ *Result = IDs.size();
- std::copy(IDs.begin(), IDs.end(), Result + 1);
+ std::copy(DeclIDIterator(IDs.begin()), DeclIDIterator(IDs.end()),
+ Result + 1);
LazySpecializations = Result;
}
@@ -556,7 +558,7 @@ void ASTDeclReader::Visit(Decl *D) {
// If this is a tag declaration with a typedef name for linkage, it's safe
// to load that typedef now.
- if (NamedDeclForTagDecl.isValid())
+ if (NamedDeclForTagDecl != GlobalDeclID())
cast<TagDecl>(D)->TypedefNameDeclOrQualifier =
cast<TypedefNameDecl>(Reader.GetDecl(NamedDeclForTagDecl));
} else if (auto *ID = dyn_cast<ObjCInterfaceDecl>(D)) {
@@ -601,7 +603,7 @@ void ASTDeclReader::VisitDecl(Decl *D) {
GlobalDeclID SemaDCIDForTemplateParmDecl = readDeclID();
GlobalDeclID LexicalDCIDForTemplateParmDecl =
HasStandaloneLexicalDC ? readDeclID() : GlobalDeclID();
- if (LexicalDCIDForTemplateParmDecl.isInvalid())
+ if (LexicalDCIDForTemplateParmDecl == GlobalDeclID())
LexicalDCIDForTemplateParmDecl = SemaDCIDForTemplateParmDecl;
Reader.addPendingDeclContextInfo(D,
SemaDCIDForTemplateParmDecl,
@@ -1858,7 +1860,7 @@ void ASTDeclReader::VisitNamespaceDecl(NamespaceDecl *D) {
mergeRedeclarable(D, Redecl);
- if (AnonNamespace.isValid()) {
+ if (AnonNamespace != GlobalDeclID()) {
// Each module has its own anonymous namespace, which is disjoint from
// any other module's anonymous namespaces, so don't attach the anonymous
// namespace at all.
@@ -2790,9 +2792,9 @@ ASTDeclReader::VisitRedeclarable(Redeclarable<T> *D) {
uint64_t RedeclOffset = 0;
- // invalid FirstDeclID indicates that this declaration was the only
- // declaration of its entity, and is used for space optimization.
- if (FirstDeclID.isInvalid()) {
+ // 0 indicates that this declaration was the only declaration of its entity,
+ // and is used for space optimization.
+ if (FirstDeclID == GlobalDeclID()) {
FirstDeclID = ThisDeclID;
IsKeyDecl = true;
IsFirstLocalDecl = true;
@@ -3827,232 +3829,240 @@ Decl *ASTReader::ReadDeclRecord(GlobalDeclID ID) {
Twine("ASTReader::readDeclRecord failed reading decl code: ") +
toString(MaybeDeclCode.takeError()));
+ DeclID RawGlobalID = ID.get();
switch ((DeclCode)MaybeDeclCode.get()) {
case DECL_CONTEXT_LEXICAL:
case DECL_CONTEXT_VISIBLE:
llvm_unreachable("Record cannot be de-serialized with readDeclRecord");
case DECL_TYPEDEF:
- D = TypedefDecl::CreateDeserialized(Context, ID);
+ D = TypedefDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_TYPEALIAS:
- D = TypeAliasDecl::CreateDeserialized(Context, ID);
+ D = TypeAliasDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_ENUM:
- D = EnumDecl::CreateDeserialized(Context, ID);
+ D = EnumDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_RECORD:
- D = RecordDecl::CreateDeserialized(Context, ID);
+ D = RecordDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_ENUM_CONSTANT:
- D = EnumConstantDecl::CreateDeserialized(Context, ID);
+ D = EnumConstantDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_FUNCTION:
- D = FunctionDecl::CreateDeserialized(Context, ID);
+ D = FunctionDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_LINKAGE_SPEC:
- D = LinkageSpecDecl::CreateDeserialized(Context, ID);
+ D = LinkageSpecDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_EXPORT:
- D = ExportDecl::CreateDeserialized(Context, ID);
+ D = ExportDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_LABEL:
- D = LabelDecl::CreateDeserialized(Context, ID);
+ D = LabelDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_NAMESPACE:
- D = NamespaceDecl::CreateDeserialized(Context, ID);
+ D = NamespaceDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_NAMESPACE_ALIAS:
- D = NamespaceAliasDecl::CreateDeserialized(Context, ID);
+ D = NamespaceAliasDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_USING:
- D = UsingDecl::CreateDeserialized(Context, ID);
+ D = UsingDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_USING_PACK:
- D = UsingPackDecl::CreateDeserialized(Context, ID, Record.readInt());
+ D = UsingPackDecl::CreateDeserialized(Context, RawGlobalID,
+ Record.readInt());
break;
case DECL_USING_SHADOW:
- D = UsingShadowDecl::CreateDeserialized(Context, ID);
+ D = UsingShadowDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_USING_ENUM:
- D = UsingEnumDecl::CreateDeserialized(Context, ID);
+ D = UsingEnumDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_CONSTRUCTOR_USING_SHADOW:
- D = ConstructorUsingShadowDecl::CreateDeserialized(Context, ID);
+ D = ConstructorUsingShadowDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_USING_DIRECTIVE:
- D = UsingDirectiveDecl::CreateDeserialized(Context, ID);
+ D = UsingDirectiveDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_UNRESOLVED_USING_VALUE:
- D = UnresolvedUsingValueDecl::CreateDeserialized(Context, ID);
+ D = UnresolvedUsingValueDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_UNRESOLVED_USING_TYPENAME:
- D = UnresolvedUsingTypenameDecl::CreateDeserialized(Context, ID);
+ D = UnresolvedUsingTypenameDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_UNRESOLVED_USING_IF_EXISTS:
- D = UnresolvedUsingIfExistsDecl::CreateDeserialized(Context, ID);
+ D = UnresolvedUsingIfExistsDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_CXX_RECORD:
- D = CXXRecordDecl::CreateDeserialized(Context, ID);
+ D = CXXRecordDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_CXX_DEDUCTION_GUIDE:
- D = CXXDeductionGuideDecl::CreateDeserialized(Context, ID);
+ D = CXXDeductionGuideDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_CXX_METHOD:
- D = CXXMethodDecl::CreateDeserialized(Context, ID);
+ D = CXXMethodDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_CXX_CONSTRUCTOR:
- D = CXXConstructorDecl::CreateDeserialized(Context, ID, Record.readInt());
+ D = CXXConstructorDecl::CreateDeserialized(Context, RawGlobalID,
+ Record.readInt());
break;
case DECL_CXX_DESTRUCTOR:
- D = CXXDestructorDecl::CreateDeserialized(Context, ID);
+ D = CXXDestructorDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_CXX_CONVERSION:
- D = CXXConversionDecl::CreateDeserialized(Context, ID);
+ D = CXXConversionDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_ACCESS_SPEC:
- D = AccessSpecDecl::CreateDeserialized(Context, ID);
+ D = AccessSpecDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_FRIEND:
- D = FriendDecl::CreateDeserialized(Context, ID, Record.readInt());
+ D = FriendDecl::CreateDeserialized(Context, RawGlobalID, Record.readInt());
break;
case DECL_FRIEND_TEMPLATE:
- D = FriendTemplateDecl::CreateDeserialized(Context, ID);
+ D = FriendTemplateDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_CLASS_TEMPLATE:
- D = ClassTemplateDecl::CreateDeserialized(Context, ID);
+ D = ClassTemplateDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_CLASS_TEMPLATE_SPECIALIZATION:
- D = ClassTemplateSpecializationDecl::CreateDeserialized(Context, ID);
+ D = ClassTemplateSpecializationDecl::CreateDeserialized(Context,
+ RawGlobalID);
break;
case DECL_CLASS_TEMPLATE_PARTIAL_SPECIALIZATION:
- D = ClassTemplatePartialSpecializationDecl::CreateDeserialized(Context, ID);
+ D = ClassTemplatePartialSpecializationDecl::CreateDeserialized(Context,
+ RawGlobalID);
break;
case DECL_VAR_TEMPLATE:
- D = VarTemplateDecl::CreateDeserialized(Context, ID);
+ D = VarTemplateDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_VAR_TEMPLATE_SPECIALIZATION:
- D = VarTemplateSpecializationDecl::CreateDeserialized(Context, ID);
+ D = VarTemplateSpecializationDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_VAR_TEMPLATE_PARTIAL_SPECIALIZATION:
- D = VarTemplatePartialSpecializationDecl::CreateDeserialized(Context, ID);
+ D = VarTemplatePartialSpecializationDecl::CreateDeserialized(Context,
+ RawGlobalID);
break;
case DECL_FUNCTION_TEMPLATE:
- D = FunctionTemplateDecl::CreateDeserialized(Context, ID);
+ D = FunctionTemplateDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_TEMPLATE_TYPE_PARM: {
bool HasTypeConstraint = Record.readInt();
- D = TemplateTypeParmDecl::CreateDeserialized(Context, ID,
+ D = TemplateTypeParmDecl::CreateDeserialized(Context, RawGlobalID,
HasTypeConstraint);
break;
}
case DECL_NON_TYPE_TEMPLATE_PARM: {
bool HasTypeConstraint = Record.readInt();
- D = NonTypeTemplateParmDecl::CreateDeserialized(Context, ID,
+ D = NonTypeTemplateParmDecl::CreateDeserialized(Context, RawGlobalID,
HasTypeConstraint);
break;
}
case DECL_EXPANDED_NON_TYPE_TEMPLATE_PARM_PACK: {
bool HasTypeConstraint = Record.readInt();
D = NonTypeTemplateParmDecl::CreateDeserialized(
- Context, ID, Record.readInt(), HasTypeConstraint);
+ Context, RawGlobalID, Record.readInt(), HasTypeConstraint);
break;
}
case DECL_TEMPLATE_TEMPLATE_PARM:
- D = TemplateTemplateParmDecl::CreateDeserialized(Context, ID);
+ D = TemplateTemplateParmDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_EXPANDED_TEMPLATE_TEMPLATE_PARM_PACK:
- D = TemplateTemplateParmDecl::CreateDeserialized(Context, ID,
+ D = TemplateTemplateParmDecl::CreateDeserialized(Context, RawGlobalID,
Record.readInt());
break;
case DECL_TYPE_ALIAS_TEMPLATE:
- D = TypeAliasTemplateDecl::CreateDeserialized(Context, ID);
+ D = TypeAliasTemplateDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_CONCEPT:
- D = ConceptDecl::CreateDeserialized(Context, ID);
+ D = ConceptDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_REQUIRES_EXPR_BODY:
- D = RequiresExprBodyDecl::CreateDeserialized(Context, ID);
+ D = RequiresExprBodyDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_STATIC_ASSERT:
- D = StaticAssertDecl::CreateDeserialized(Context, ID);
+ D = StaticAssertDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_OBJC_METHOD:
- D = ObjCMethodDecl::CreateDeserialized(Context, ID);
+ D = ObjCMethodDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_OBJC_INTERFACE:
- D = ObjCInterfaceDecl::CreateDeserialized(Context, ID);
+ D = ObjCInterfaceDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_OBJC_IVAR:
- D = ObjCIvarDecl::CreateDeserialized(Context, ID);
+ D = ObjCIvarDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_OBJC_PROTOCOL:
- D = ObjCProtocolDecl::CreateDeserialized(Context, ID);
+ D = ObjCProtocolDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_OBJC_AT_DEFS_FIELD:
- D = ObjCAtDefsFieldDecl::CreateDeserialized(Context, ID);
+ D = ObjCAtDefsFieldDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_OBJC_CATEGORY:
- D = ObjCCategoryDecl::CreateDeserialized(Context, ID);
+ D = ObjCCategoryDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_OBJC_CATEGORY_IMPL:
- D = ObjCCategoryImplDecl::CreateDeserialized(Context, ID);
+ D = ObjCCategoryImplDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_OBJC_IMPLEMENTATION:
- D = ObjCImplementationDecl::CreateDeserialized(Context, ID);
+ D = ObjCImplementationDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_OBJC_COMPATIBLE_ALIAS:
- D = ObjCCompatibleAliasDecl::CreateDeserialized(Context, ID);
+ D = ObjCCompatibleAliasDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_OBJC_PROPERTY:
- D = ObjCPropertyDecl::CreateDeserialized(Context, ID);
+ D = ObjCPropertyDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_OBJC_PROPERTY_IMPL:
- D = ObjCPropertyImplDecl::CreateDeserialized(Context, ID);
+ D = ObjCPropertyImplDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_FIELD:
- D = FieldDecl::CreateDeserialized(Context, ID);
+ D = FieldDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_INDIRECTFIELD:
- D = IndirectFieldDecl::CreateDeserialized(Context, ID);
+ D = IndirectFieldDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_VAR:
- D = VarDecl::CreateDeserialized(Context, ID);
+ D = VarDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_IMPLICIT_PARAM:
- D = ImplicitParamDecl::CreateDeserialized(Context, ID);
+ D = ImplicitParamDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_PARM_VAR:
- D = ParmVarDecl::CreateDeserialized(Context, ID);
+ D = ParmVarDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_DECOMPOSITION:
- D = DecompositionDecl::CreateDeserialized(Context, ID, Record.readInt());
+ D = DecompositionDecl::CreateDeserialized(Context, RawGlobalID,
+ Record.readInt());
break;
case DECL_BINDING:
- D = BindingDecl::CreateDeserialized(Context, ID);
+ D = BindingDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_FILE_SCOPE_ASM:
- D = FileScopeAsmDecl::CreateDeserialized(Context, ID);
+ D = FileScopeAsmDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_TOP_LEVEL_STMT_DECL:
- D = TopLevelStmtDecl::CreateDeserialized(Context, ID);
+ D = TopLevelStmtDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_BLOCK:
- D = BlockDecl::CreateDeserialized(Context, ID);
+ D = BlockDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_MS_PROPERTY:
- D = MSPropertyDecl::CreateDeserialized(Context, ID);
+ D = MSPropertyDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_MS_GUID:
- D = MSGuidDecl::CreateDeserialized(Context, ID);
+ D = MSGuidDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_UNNAMED_GLOBAL_CONSTANT:
- D = UnnamedGlobalConstantDecl::CreateDeserialized(Context, ID);
+ D = UnnamedGlobalConstantDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_TEMPLATE_PARAM_OBJECT:
- D = TemplateParamObjectDecl::CreateDeserialized(Context, ID);
+ D = TemplateParamObjectDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_CAPTURED:
- D = CapturedDecl::CreateDeserialized(Context, ID, Record.readInt());
+ D = CapturedDecl::CreateDeserialized(Context, RawGlobalID,
+ Record.readInt());
break;
case DECL_CXX_BASE_SPECIFIERS:
Error("attempt to read a C++ base-specifier record as a declaration");
@@ -4063,62 +4073,66 @@ Decl *ASTReader::ReadDeclRecord(GlobalDeclID ID) {
case DECL_IMPORT:
// Note: last entry of the ImportDecl record is the number of stored source
// locations.
- D = ImportDecl::CreateDeserialized(Context, ID, Record.back());
+ D = ImportDecl::CreateDeserialized(Context, RawGlobalID, Record.back());
break;
case DECL_OMP_THREADPRIVATE: {
Record.skipInts(1);
unsigned NumChildren = Record.readInt();
Record.skipInts(1);
- D = OMPThreadPrivateDecl::CreateDeserialized(Context, ID, NumChildren);
+ D = OMPThreadPrivateDecl::CreateDeserialized(Context, RawGlobalID,
+ NumChildren);
break;
}
case DECL_OMP_ALLOCATE: {
unsigned NumClauses = Record.readInt();
unsigned NumVars = Record.readInt();
Record.skipInts(1);
- D = OMPAllocateDecl::CreateDeserialized(Context, ID, NumVars, NumClauses);
+ D = OMPAllocateDecl::CreateDeserialized(Context, RawGlobalID, NumVars,
+ NumClauses);
break;
}
case DECL_OMP_REQUIRES: {
unsigned NumClauses = Record.readInt();
Record.skipInts(2);
- D = OMPRequiresDecl::CreateDeserialized(Context, ID, NumClauses);
+ D = OMPRequiresDecl::CreateDeserialized(Context, RawGlobalID, NumClauses);
break;
}
case DECL_OMP_DECLARE_REDUCTION:
- D = OMPDeclareReductionDecl::CreateDeserialized(Context, ID);
+ D = OMPDeclareReductionDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_OMP_DECLARE_MAPPER: {
unsigned NumClauses = Record.readInt();
Record.skipInts(2);
- D = OMPDeclareMapperDecl::CreateDeserialized(Context, ID, NumClauses);
+ D = OMPDeclareMapperDecl::CreateDeserialized(Context, RawGlobalID,
+ NumClauses);
break;
}
case DECL_OMP_CAPTUREDEXPR:
- D = OMPCapturedExprDecl::CreateDeserialized(Context, ID);
+ D = OMPCapturedExprDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_PRAGMA_COMMENT:
- D = PragmaCommentDecl::CreateDeserialized(Context, ID, Record.readInt());
+ D = PragmaCommentDecl::CreateDeserialized(Context, RawGlobalID,
+ Record.readInt());
break;
case DECL_PRAGMA_DETECT_MISMATCH:
- D = PragmaDetectMismatchDecl::CreateDeserialized(Context, ID,
+ D = PragmaDetectMismatchDecl::CreateDeserialized(Context, RawGlobalID,
Record.readInt());
break;
case DECL_EMPTY:
- D = EmptyDecl::CreateDeserialized(Context, ID);
+ D = EmptyDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_LIFETIME_EXTENDED_TEMPORARY:
- D = LifetimeExtendedTemporaryDecl::CreateDeserialized(Context, ID);
+ D = LifetimeExtendedTemporaryDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_OBJC_TYPE_PARAM:
- D = ObjCTypeParamDecl::CreateDeserialized(Context, ID);
+ D = ObjCTypeParamDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_HLSL_BUFFER:
- D = HLSLBufferDecl::CreateDeserialized(Context, ID);
+ D = HLSLBufferDecl::CreateDeserialized(Context, RawGlobalID);
break;
case DECL_IMPLICIT_CONCEPT_SPECIALIZATION:
- D = ImplicitConceptSpecializationDecl::CreateDeserialized(Context, ID,
- Record.readInt());
+ D = ImplicitConceptSpecializationDecl::CreateDeserialized(
+ Context, RawGlobalID, Record.readInt());
break;
}
@@ -4410,9 +4424,8 @@ namespace {
// Map global ID of the definition down to the local ID used in this
// module file. If there is no such mapping, we'll find nothing here
// (or in any module it imports).
- LocalDeclID LocalID =
- Reader.mapGlobalIDToModuleFileGlobalID(M, InterfaceID);
- if (LocalID.isInvalid())
+ DeclID LocalID = Reader.mapGlobalIDToModuleFileGlobalID(M, InterfaceID);
+ if (!LocalID)
return true;
// Perform a binary search to find the local redeclarations for this
diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp
index 0408eeb6a95b00..842ea58656ad72 100644
--- a/clang/lib/Serialization/ASTWriter.cpp
+++ b/clang/lib/Serialization/ASTWriter.cpp
@@ -3043,7 +3043,7 @@ void ASTWriter::WriteSubmodules(Module *WritingModule) {
RecordData Inits;
for (Decl *D : Context->getModuleInitializers(Mod))
if (wasDeclEmitted(D))
- AddDeclRef(D, Inits);
+ Inits.push_back(GetDeclRef(D));
if (!Inits.empty())
Stream.EmitRecord(SUBMODULE_INITIALIZERS, Inits);
@@ -3226,7 +3226,7 @@ uint64_t ASTWriter::WriteDeclContextLexicalBlock(ASTContext &Context,
continue;
KindDeclPairs.push_back(D->getKind());
- KindDeclPairs.push_back(GetDeclRef(D).get());
+ KindDeclPairs.push_back(GetDeclRef(D));
}
++NumLexicalDeclContexts;
@@ -3261,7 +3261,7 @@ void ASTWriter::WriteTypeDeclOffsets() {
unsigned DeclOffsetAbbrev = Stream.EmitAbbrev(std::move(Abbrev));
{
RecordData::value_type Record[] = {DECL_OFFSET, DeclOffsets.size(),
- FirstDeclID.get() - NUM_PREDEF_DECL_IDS};
+ FirstDeclID - NUM_PREDEF_DECL_IDS};
Stream.EmitRecordWithBlob(DeclOffsetAbbrev, Record, bytes(DeclOffsets));
}
}
@@ -3282,7 +3282,7 @@ void ASTWriter::WriteFileDeclIDsMap() {
Info.FirstDeclIndex = FileGroupedDeclIDs.size();
llvm::stable_sort(Info.DeclIDs);
for (auto &LocDeclEntry : Info.DeclIDs)
- FileGroupedDeclIDs.push_back(LocDeclEntry.second.get());
+ FileGroupedDeclIDs.push_back(LocDeclEntry.second);
}
auto Abbrev = std::make_shared<BitCodeAbbrev>();
@@ -3420,11 +3420,11 @@ class ASTMethodPoolTrait {
for (const ObjCMethodList *Method = &Methods.Instance; Method;
Method = Method->getNext())
if (ShouldWriteMethodListNode(Method))
- LE.write<DeclID>((DeclID)Writer.getDeclID(Method->getMethod()));
+ LE.write<DeclID>(Writer.getDeclID(Method->getMethod()));
for (const ObjCMethodList *Method = &Methods.Factory; Method;
Method = Method->getNext())
if (ShouldWriteMethodListNode(Method))
- LE.write<DeclID>((DeclID)Writer.getDeclID(Method->getMethod()));
+ LE.write<DeclID>(Writer.getDeclID(Method->getMethod()));
assert(Out.tell() - Start == DataLen && "Data length is wrong");
}
@@ -3743,8 +3743,8 @@ class ASTIdentifierTableTrait {
// Only emit declarations that aren't from a chained PCH, though.
SmallVector<NamedDecl *, 16> Decls(IdResolver.decls(II));
for (NamedDecl *D : llvm::reverse(Decls))
- LE.write<DeclID>((DeclID)Writer.getDeclID(
- getDeclForLocalLookup(PP.getLangOpts(), D)));
+ LE.write<DeclID>(
+ Writer.getDeclID(getDeclForLocalLookup(PP.getLangOpts(), D)));
}
}
};
@@ -3860,7 +3860,7 @@ namespace {
// Trait used for the on-disk hash table used in the method pool.
class ASTDeclContextNameLookupTrait {
ASTWriter &Writer;
- llvm::SmallVector<LocalDeclID, 64> DeclIDs;
+ llvm::SmallVector<DeclID, 64> DeclIDs;
public:
using key_type = DeclarationNameKey;
@@ -3893,10 +3893,8 @@ class ASTDeclContextNameLookupTrait {
data_type ImportData(const reader::ASTDeclContextNameLookupTrait::data_type &FromReader) {
unsigned Start = DeclIDs.size();
- DeclIDs.insert(
- DeclIDs.end(),
- DeclIDIterator<GlobalDeclID, LocalDeclID>(FromReader.begin()),
- DeclIDIterator<GlobalDeclID, LocalDeclID>(FromReader.end()));
+ DeclIDs.insert(DeclIDs.end(), DeclIDIterator(FromReader.begin()),
+ DeclIDIterator(FromReader.end()));
return std::make_pair(Start, DeclIDs.size());
}
@@ -3985,7 +3983,7 @@ class ASTDeclContextNameLookupTrait {
endian::Writer LE(Out, llvm::endianness::little);
uint64_t Start = Out.tell(); (void)Start;
for (unsigned I = Lookup.first, N = Lookup.second; I != N; ++I)
- LE.write<DeclID>((DeclID)DeclIDs[I]);
+ LE.write<DeclID>(DeclIDs[I]);
assert(Out.tell() - Start == DataLen && "Data length is wrong");
}
};
@@ -4319,8 +4317,7 @@ void ASTWriter::WriteDeclContextVisibleUpdate(const DeclContext *DC) {
DC = cast<DeclContext>(Chain->getKeyDeclaration(cast<Decl>(DC)));
// Write the lookup table
- RecordData::value_type Record[] = {UPDATE_VISIBLE,
- getDeclID(cast<Decl>(DC)).get()};
+ RecordData::value_type Record[] = {UPDATE_VISIBLE, getDeclID(cast<Decl>(DC))};
Stream.EmitRecordWithBlob(UpdateVisibleAbbrev, Record, LookupTable);
}
@@ -4374,7 +4371,7 @@ void ASTWriter::WriteObjCCategories() {
Cat = Class->known_categories_begin(),
CatEnd = Class->known_categories_end();
Cat != CatEnd; ++Cat, ++Size) {
- assert(getDeclID(*Cat).isValid() && "Bogus category");
+ assert(getDeclID(*Cat) != 0 && "Bogus category");
AddDeclRef(*Cat, Categories);
}
@@ -5092,7 +5089,7 @@ void ASTWriter::WriteSpecialDeclRecords(Sema &SemaRef) {
if (!D || !wasDeclEmitted(D))
SemaDeclRefs.push_back(0);
else
- AddDeclRef(D, SemaDeclRefs);
+ SemaDeclRefs.push_back(getDeclID(D));
};
AddEmittedDeclRefOrZero(SemaRef.getStdNamespace());
@@ -5103,10 +5100,10 @@ void ASTWriter::WriteSpecialDeclRecords(Sema &SemaRef) {
Stream.EmitRecord(SEMA_DECL_REFS, SemaDeclRefs);
// Write the record containing decls to be checked for deferred diags.
- RecordData DeclsToCheckForDeferredDiags;
+ SmallVector<DeclID, 64> DeclsToCheckForDeferredDiags;
for (auto *D : SemaRef.DeclsToCheckForDeferredDiags)
if (wasDeclEmitted(D))
- AddDeclRef(D, DeclsToCheckForDeferredDiags);
+ DeclsToCheckForDeferredDiags.push_back(getDeclID(D));
if (!DeclsToCheckForDeferredDiags.empty())
Stream.EmitRecord(DECLS_TO_CHECK_FOR_DEFERRED_DIAGS,
DeclsToCheckForDeferredDiags);
@@ -5476,7 +5473,7 @@ void ASTWriter::WriteDeclAndTypes(ASTContext &Context) {
if (VisibleOffset)
VisibleOffset -= DeclTypesBlockStartOffset;
- AddDeclRef(NS, DelayedNamespaceRecord);
+ DelayedNamespaceRecord.push_back(getDeclID(NS));
DelayedNamespaceRecord.push_back(LexicalOffset);
DelayedNamespaceRecord.push_back(VisibleOffset);
}
@@ -5510,7 +5507,7 @@ void ASTWriter::WriteDeclAndTypes(ASTContext &Context) {
continue;
NewGlobalKindDeclPairs.push_back(D->getKind());
- NewGlobalKindDeclPairs.push_back(GetDeclRef(D).get());
+ NewGlobalKindDeclPairs.push_back(GetDeclRef(D));
}
auto Abv = std::make_shared<llvm::BitCodeAbbrev>();
@@ -5571,7 +5568,7 @@ void ASTWriter::WriteDeclUpdatesBlocks(RecordDataImpl &OffsetsRecord) {
case UPD_CXX_ADDED_TEMPLATE_SPECIALIZATION:
case UPD_CXX_ADDED_ANONYMOUS_NAMESPACE:
assert(Update.getDecl() && "no decl to add?");
- Record.AddDeclRef(Update.getDecl());
+ Record.push_back(GetDeclRef(Update.getDecl()));
break;
case UPD_CXX_ADDED_FUNCTION_DEFINITION:
@@ -5712,7 +5709,7 @@ void ASTWriter::WriteDeclUpdatesBlocks(RecordDataImpl &OffsetsRecord) {
}
}
- AddDeclRef(D, OffsetsRecord);
+ OffsetsRecord.push_back(GetDeclRef(D));
OffsetsRecord.push_back(Record.Emit(DECL_UPDATES));
}
}
@@ -5977,18 +5974,18 @@ void ASTWriter::AddEmittedDeclRef(const Decl *D, RecordDataImpl &Record) {
if (!wasDeclEmitted(D))
return;
- Record.push_back(GetDeclRef(D).get());
+ Record.push_back(GetDeclRef(D));
}
void ASTWriter::AddDeclRef(const Decl *D, RecordDataImpl &Record) {
- Record.push_back(GetDeclRef(D).get());
+ Record.push_back(GetDeclRef(D));
}
-LocalDeclID ASTWriter::GetDeclRef(const Decl *D) {
+DeclID ASTWriter::GetDeclRef(const Decl *D) {
assert(WritingAST && "Cannot request a declaration ID before AST writing");
if (!D) {
- return LocalDeclID();
+ return 0;
}
// If the DeclUpdate from the GMF gets touched, emit it.
@@ -6002,14 +5999,14 @@ LocalDeclID ASTWriter::GetDeclRef(const Decl *D) {
// If D comes from an AST file, its declaration ID is already known and
// fixed.
if (D->isFromASTFile())
- return LocalDeclID(D->getGlobalID());
+ return D->getGlobalID();
assert(!(reinterpret_cast<uintptr_t>(D) & 0x01) && "Invalid decl pointer");
- LocalDeclID &ID = DeclIDs[D];
- if (ID.isInvalid()) {
+ DeclID &ID = DeclIDs[D];
+ if (ID == 0) {
if (DoneWritingDeclsAndTypes) {
assert(0 && "New decl seen after serializing all the decls to emit!");
- return LocalDeclID();
+ return 0;
}
// We haven't seen this declaration before. Give it a new ID and
@@ -6021,14 +6018,14 @@ LocalDeclID ASTWriter::GetDeclRef(const Decl *D) {
return ID;
}
-LocalDeclID ASTWriter::getDeclID(const Decl *D) {
+DeclID ASTWriter::getDeclID(const Decl *D) {
if (!D)
- return LocalDeclID();
+ return 0;
// If D comes from an AST file, its declaration ID is already known and
// fixed.
if (D->isFromASTFile())
- return LocalDeclID(D->getGlobalID());
+ return D->getGlobalID();
assert(DeclIDs.contains(D) && "Declaration not emitted!");
return DeclIDs[D];
@@ -6049,8 +6046,8 @@ bool ASTWriter::wasDeclEmitted(const Decl *D) const {
return Emitted;
}
-void ASTWriter::associateDeclWithFile(const Decl *D, LocalDeclID ID) {
- assert(ID.isValid());
+void ASTWriter::associateDeclWithFile(const Decl *D, DeclID ID) {
+ assert(ID);
assert(D);
SourceLocation Loc = D->getLocation();
@@ -6082,7 +6079,7 @@ void ASTWriter::associateDeclWithFile(const Decl *D, LocalDeclID ID) {
if (!Info)
Info = std::make_unique<DeclIDInFileInfo>();
- std::pair<unsigned, LocalDeclID> LocDecl(Offset, ID);
+ std::pair<unsigned, DeclID> LocDecl(Offset, ID);
LocDeclIDsTy &Decls = Info->DeclIDs;
Decls.push_back(LocDecl);
}
@@ -6352,7 +6349,7 @@ void ASTRecordWriter::AddCXXDefinitionData(const CXXRecordDecl *D) {
Writer->Context->getLangOpts().ModulesDebugInfo && !D->isDependentType();
Record->push_back(ModulesDebugInfo);
if (ModulesDebugInfo)
- Writer->AddDeclRef(D, Writer->ModularCodegenDecls);
+ Writer->ModularCodegenDecls.push_back(Writer->GetDeclRef(D));
// IsLambda bit is already saved.
@@ -6456,7 +6453,7 @@ void ASTWriter::ReaderInitialized(ASTReader *Reader) {
// Note, this will get called multiple times, once one the reader starts up
// and again each time it's done reading a PCH or module.
- FirstDeclID = LocalDeclID(NUM_PREDEF_DECL_IDS + Chain->getTotalNumDecls());
+ FirstDeclID = NUM_PREDEF_DECL_IDS + Chain->getTotalNumDecls();
FirstTypeID = NUM_PREDEF_TYPE_IDS + Chain->getTotalNumTypes();
FirstIdentID = NUM_PREDEF_IDENT_IDS + Chain->getTotalNumIdentifiers();
FirstMacroID = NUM_PREDEF_MACRO_IDS + Chain->getTotalNumMacros();
diff --git a/clang/lib/Serialization/ASTWriterDecl.cpp b/clang/lib/Serialization/ASTWriterDecl.cpp
index 0edc4feda3ef23..fe867192b717c3 100644
--- a/clang/lib/Serialization/ASTWriterDecl.cpp
+++ b/clang/lib/Serialization/ASTWriterDecl.cpp
@@ -223,9 +223,9 @@ namespace clang {
assert(!Common->LazySpecializations);
}
- ArrayRef<GlobalDeclID> LazySpecializations;
+ ArrayRef<DeclID> LazySpecializations;
if (auto *LS = Common->LazySpecializations)
- LazySpecializations = llvm::ArrayRef(LS + 1, LS[0].get());
+ LazySpecializations = llvm::ArrayRef(LS + 1, LS[0]);
// Add a slot to the record for the number of specializations.
unsigned I = Record.size();
@@ -243,9 +243,7 @@ namespace clang {
assert(D->isCanonicalDecl() && "non-canonical decl in set");
AddFirstDeclFromEachModule(D, /*IncludeLocal*/true);
}
- Record.append(
- DeclIDIterator<GlobalDeclID, DeclID>(LazySpecializations.begin()),
- DeclIDIterator<GlobalDeclID, DeclID>(LazySpecializations.end()));
+ Record.append(LazySpecializations.begin(), LazySpecializations.end());
// Update the size entry we added earlier.
Record[I] = Record.size() - I - 1;
@@ -1168,7 +1166,7 @@ void ASTDeclWriter::VisitVarDecl(VarDecl *D) {
Record.push_back(VarDeclBits);
if (ModulesCodegen)
- Writer.AddDeclRef(D, Writer.ModularCodegenDecls);
+ Writer.ModularCodegenDecls.push_back(Writer.GetDeclRef(D));
if (D->hasAttr<BlocksAttr>()) {
BlockVarCopyInit Init = Writer.Context->getBlockVarCopyInit(D);
@@ -2788,10 +2786,10 @@ void ASTWriter::WriteDecl(ASTContext &Context, Decl *D) {
"serializing");
// Determine the ID for this declaration.
- LocalDeclID ID;
+ DeclID ID;
assert(!D->isFromASTFile() && "should not be emitting imported decl");
- LocalDeclID &IDR = DeclIDs[D];
- if (IDR.isInvalid())
+ DeclID &IDR = DeclIDs[D];
+ if (IDR == 0)
IDR = NextDeclID++;
ID = IDR;
@@ -2809,7 +2807,7 @@ void ASTWriter::WriteDecl(ASTContext &Context, Decl *D) {
// Record the offset for this declaration
SourceLocation Loc = D->getLocation();
- unsigned Index = ID.get() - FirstDeclID.get();
+ unsigned Index = ID - FirstDeclID;
if (DeclOffsets.size() == Index)
DeclOffsets.emplace_back(getAdjustedLocation(Loc), Offset,
DeclTypesBlockStartOffset);
@@ -2829,7 +2827,7 @@ void ASTWriter::WriteDecl(ASTContext &Context, Decl *D) {
// Note declarations that should be deserialized eagerly so that we can add
// them to a record in the AST file later.
if (isRequiredDecl(D, Context, WritingModule))
- AddDeclRef(D, EagerlyDeserializedDecls);
+ EagerlyDeserializedDecls.push_back(ID);
}
void ASTRecordWriter::AddFunctionDefinition(const FunctionDecl *FD) {
@@ -2865,7 +2863,7 @@ void ASTRecordWriter::AddFunctionDefinition(const FunctionDecl *FD) {
}
Record->push_back(ModulesCodegen);
if (ModulesCodegen)
- Writer->AddDeclRef(FD, Writer->ModularCodegenDecls);
+ Writer->ModularCodegenDecls.push_back(Writer->GetDeclRef(FD));
if (auto *CD = dyn_cast<CXXConstructorDecl>(FD)) {
Record->push_back(CD->getNumCtorInitializers());
if (CD->getNumCtorInitializers())
More information about the cfe-commits
mailing list