@@ -954,14 +954,16 @@ ASTSelectorLookupTrait::ReadData(Selector, const unsigned char* d,
954954 // Load instance methods
955955 for (unsigned I = 0 ; I != NumInstanceMethods; ++I) {
956956 if (ObjCMethodDecl *Method = Reader.GetLocalDeclAs <ObjCMethodDecl>(
957- F, endian::readNext<DeclID, llvm::endianness::little>(d)))
957+ F,
958+ LocalDeclID (endian::readNext<DeclID, llvm::endianness::little>(d))))
958959 Result.Instance .push_back (Method);
959960 }
960961
961962 // Load factory methods
962963 for (unsigned I = 0 ; I != NumFactoryMethods; ++I) {
963964 if (ObjCMethodDecl *Method = Reader.GetLocalDeclAs <ObjCMethodDecl>(
964- F, endian::readNext<DeclID, llvm::endianness::little>(d)))
965+ F,
966+ LocalDeclID (endian::readNext<DeclID, llvm::endianness::little>(d))))
965967 Result.Factory .push_back (Method);
966968 }
967969
@@ -1091,7 +1093,8 @@ IdentifierInfo *ASTIdentifierLookupTrait::ReadData(const internal_key_type& k,
10911093 SmallVector<DeclID, 4 > DeclIDs;
10921094 for (; DataLen > 0 ; DataLen -= sizeof (DeclID))
10931095 DeclIDs.push_back (Reader.getGlobalDeclID (
1094- F, endian::readNext<DeclID, llvm::endianness::little>(d)));
1096+ F,
1097+ LocalDeclID (endian::readNext<DeclID, llvm::endianness::little>(d))));
10951098 Reader.SetGloballyVisibleDecls (II, DeclIDs);
10961099 }
10971100
@@ -1212,7 +1215,7 @@ void ASTDeclContextNameLookupTrait::ReadDataInto(internal_key_type,
12121215 using namespace llvm ::support;
12131216
12141217 for (unsigned NumDecls = DataLen / sizeof (DeclID); NumDecls; --NumDecls) {
1215- DeclID LocalID = endian::readNext<DeclID, llvm::endianness::little>(d);
1218+ LocalDeclID LocalID ( endian::readNext<DeclID, llvm::endianness::little>(d) );
12161219 Val.insert (Reader.getGlobalDeclID (F, LocalID));
12171220 }
12181221}
@@ -1652,7 +1655,7 @@ bool ASTReader::ReadSLocEntry(int ID) {
16521655
16531656 unsigned NumFileDecls = Record[7 ];
16541657 if (NumFileDecls && ContextObj) {
1655- const DeclID *FirstDecl = F->FileSortedDecls + Record[6 ];
1658+ const LocalDeclID *FirstDecl = F->FileSortedDecls + Record[6 ];
16561659 assert (F->FileSortedDecls && " FILE_SORTED_DECLS not encountered yet ?" );
16571660 FileDeclIDs[FID] =
16581661 FileDeclsInfo (F, llvm::ArrayRef (FirstDecl, NumFileDecls));
@@ -3458,7 +3461,8 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
34583461 // FIXME: Skip reading this record if our ASTConsumer doesn't care
34593462 // about "interesting" decls (for instance, if we're building a module).
34603463 for (unsigned I = 0 , N = Record.size (); I != N; ++I)
3461- EagerlyDeserializedDecls.push_back (getGlobalDeclID (F, Record[I]));
3464+ EagerlyDeserializedDecls.push_back (
3465+ getGlobalDeclID (F, LocalDeclID (Record[I])));
34623466 break ;
34633467
34643468 case MODULAR_CODEGEN_DECLS:
@@ -3467,7 +3471,8 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
34673471 if (F.Kind == MK_MainFile ||
34683472 getContext ().getLangOpts ().BuildingPCHWithObjectFile )
34693473 for (unsigned I = 0 , N = Record.size (); I != N; ++I)
3470- EagerlyDeserializedDecls.push_back (getGlobalDeclID (F, Record[I]));
3474+ EagerlyDeserializedDecls.push_back (
3475+ getGlobalDeclID (F, LocalDeclID (Record[I])));
34713476 break ;
34723477
34733478 case SPECIAL_TYPES:
@@ -3499,12 +3504,14 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
34993504
35003505 case UNUSED_FILESCOPED_DECLS:
35013506 for (unsigned I = 0 , N = Record.size (); I != N; ++I)
3502- UnusedFileScopedDecls.push_back (getGlobalDeclID (F, Record[I]));
3507+ UnusedFileScopedDecls.push_back (
3508+ getGlobalDeclID (F, LocalDeclID (Record[I])));
35033509 break ;
35043510
35053511 case DELEGATING_CTORS:
35063512 for (unsigned I = 0 , N = Record.size (); I != N; ++I)
3507- DelegatingCtorDecls.push_back (getGlobalDeclID (F, Record[I]));
3513+ DelegatingCtorDecls.push_back (
3514+ getGlobalDeclID (F, LocalDeclID (Record[I])));
35083515 break ;
35093516
35103517 case WEAK_UNDECLARED_IDENTIFIERS:
@@ -3612,7 +3619,7 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
36123619 break ;
36133620
36143621 case FILE_SORTED_DECLS:
3615- F.FileSortedDecls = (const DeclID *)Blob.data ();
3622+ F.FileSortedDecls = (const LocalDeclID *)Blob.data ();
36163623 F.NumFileSortedDecls = Record[0 ];
36173624 break ;
36183625
@@ -3667,7 +3674,7 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
36673674
36683675 case EXT_VECTOR_DECLS:
36693676 for (unsigned I = 0 , N = Record.size (); I != N; ++I)
3670- ExtVectorDecls.push_back (getGlobalDeclID (F, Record[I]));
3677+ ExtVectorDecls.push_back (getGlobalDeclID (F, LocalDeclID ( Record[I]) ));
36713678 break ;
36723679
36733680 case VTABLE_USES:
@@ -3681,7 +3688,7 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
36813688 VTableUses.clear ();
36823689
36833690 for (unsigned Idx = 0 , N = Record.size (); Idx != N; /* In loop */ ) {
3684- VTableUses.push_back (getGlobalDeclID (F, Record[Idx++]));
3691+ VTableUses.push_back (getGlobalDeclID (F, LocalDeclID ( Record[Idx++]) ));
36853692 VTableUses.push_back (
36863693 ReadSourceLocation (F, Record, Idx).getRawEncoding ());
36873694 VTableUses.push_back (Record[Idx++]);
@@ -3700,7 +3707,8 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
37003707 " Invalid PENDING_IMPLICIT_INSTANTIATIONS block" );
37013708
37023709 for (unsigned I = 0 , N = Record.size (); I != N; /* in loop */ ) {
3703- PendingInstantiations.push_back (getGlobalDeclID (F, Record[I++]));
3710+ PendingInstantiations.push_back (
3711+ getGlobalDeclID (F, LocalDeclID (Record[I++])));
37043712 PendingInstantiations.push_back (
37053713 ReadSourceLocation (F, Record, I).getRawEncoding ());
37063714 }
@@ -3711,7 +3719,7 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
37113719 return llvm::createStringError (std::errc::illegal_byte_sequence,
37123720 " Invalid SEMA_DECL_REFS block" );
37133721 for (unsigned I = 0 , N = Record.size (); I != N; ++I)
3714- SemaDeclRefs.push_back (getGlobalDeclID (F, Record[I]));
3722+ SemaDeclRefs.push_back (getGlobalDeclID (F, LocalDeclID ( Record[I]) ));
37153723 break ;
37163724
37173725 case PPD_ENTITIES_OFFSETS: {
@@ -3770,7 +3778,7 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
37703778 std::errc::illegal_byte_sequence,
37713779 " invalid DECL_UPDATE_OFFSETS block in AST file" );
37723780 for (unsigned I = 0 , N = Record.size (); I != N; I += 2 ) {
3773- GlobalDeclID ID = getGlobalDeclID (F, Record[I]);
3781+ GlobalDeclID ID = getGlobalDeclID (F, LocalDeclID ( Record[I]) );
37743782 DeclUpdateOffsets[ID].push_back (std::make_pair (&F, Record[I + 1 ]));
37753783
37763784 // If we've already loaded the decl, perform the updates when we finish
@@ -3788,7 +3796,7 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
37883796 " invalid DELAYED_NAMESPACE_LEXICAL_VISIBLE_RECORD block in AST "
37893797 " file" );
37903798 for (unsigned I = 0 , N = Record.size (); I != N; I += 3 ) {
3791- GlobalDeclID ID = getGlobalDeclID (F, Record[I]);
3799+ GlobalDeclID ID = getGlobalDeclID (F, LocalDeclID ( Record[I]) );
37923800
37933801 uint64_t BaseOffset = F.DeclsBlockStartOffset ;
37943802 assert (BaseOffset && " Invalid DeclsBlockStartOffset for module file!" );
@@ -3823,7 +3831,8 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
38233831 // FIXME: Modules will have trouble with this.
38243832 CUDASpecialDeclRefs.clear ();
38253833 for (unsigned I = 0 , N = Record.size (); I != N; ++I)
3826- CUDASpecialDeclRefs.push_back (getGlobalDeclID (F, Record[I]));
3834+ CUDASpecialDeclRefs.push_back (
3835+ getGlobalDeclID (F, LocalDeclID (Record[I])));
38273836 break ;
38283837
38293838 case HEADER_SEARCH_TABLE:
@@ -3864,12 +3873,13 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
38643873
38653874 case TENTATIVE_DEFINITIONS:
38663875 for (unsigned I = 0 , N = Record.size (); I != N; ++I)
3867- TentativeDefinitions.push_back (getGlobalDeclID (F, Record[I]));
3876+ TentativeDefinitions.push_back (
3877+ getGlobalDeclID (F, LocalDeclID (Record[I])));
38683878 break ;
38693879
38703880 case KNOWN_NAMESPACES:
38713881 for (unsigned I = 0 , N = Record.size (); I != N; ++I)
3872- KnownNamespaces.push_back (getGlobalDeclID (F, Record[I]));
3882+ KnownNamespaces.push_back (getGlobalDeclID (F, LocalDeclID ( Record[I]) ));
38733883 break ;
38743884
38753885 case UNDEFINED_BUT_USED:
@@ -3881,15 +3891,17 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
38813891 return llvm::createStringError (std::errc::illegal_byte_sequence,
38823892 " invalid undefined-but-used record" );
38833893 for (unsigned I = 0 , N = Record.size (); I != N; /* in loop */ ) {
3884- UndefinedButUsed.push_back (getGlobalDeclID (F, Record[I++]));
3894+ UndefinedButUsed.push_back (
3895+ getGlobalDeclID (F, LocalDeclID (Record[I++])));
38853896 UndefinedButUsed.push_back (
38863897 ReadSourceLocation (F, Record, I).getRawEncoding ());
38873898 }
38883899 break ;
38893900
38903901 case DELETE_EXPRS_TO_ANALYZE:
38913902 for (unsigned I = 0 , N = Record.size (); I != N;) {
3892- DelayedDeleteExprs.push_back (getGlobalDeclID (F, Record[I++]));
3903+ DelayedDeleteExprs.push_back (
3904+ getGlobalDeclID (F, LocalDeclID (Record[I++])));
38933905 const uint64_t Count = Record[I++];
38943906 DelayedDeleteExprs.push_back (Count);
38953907 for (uint64_t C = 0 ; C < Count; ++C) {
@@ -3974,7 +3986,7 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
39743986 case UNUSED_LOCAL_TYPEDEF_NAME_CANDIDATES:
39753987 for (unsigned I = 0 , N = Record.size (); I != N; ++I)
39763988 UnusedLocalTypedefNameCandidates.push_back (
3977- getGlobalDeclID (F, Record[I]));
3989+ getGlobalDeclID (F, LocalDeclID ( Record[I]) ));
39783990 break ;
39793991
39803992 case CUDA_PRAGMA_FORCE_HOST_DEVICE_DEPTH:
@@ -4030,7 +4042,8 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
40304042
40314043 case DECLS_TO_CHECK_FOR_DEFERRED_DIAGS:
40324044 for (unsigned I = 0 , N = Record.size (); I != N; ++I)
4033- DeclsToCheckForDeferredDiags.insert (getGlobalDeclID (F, Record[I]));
4045+ DeclsToCheckForDeferredDiags.insert (
4046+ getGlobalDeclID (F, LocalDeclID (Record[I])));
40344047 break ;
40354048 }
40364049 }
@@ -6010,7 +6023,7 @@ llvm::Error ASTReader::ReadSubmoduleBlock(ModuleFile &F,
60106023 break ;
60116024 SmallVector<DeclID, 16 > Inits;
60126025 for (auto &ID : Record)
6013- Inits.push_back (getGlobalDeclID (F, ID ));
6026+ Inits.push_back (getGlobalDeclID (F, LocalDeclID (ID) ));
60146027 ContextObj->addLazyModuleInitializers (CurrentModule, Inits);
60156028 break ;
60166029 }
@@ -7650,17 +7663,18 @@ CXXBaseSpecifier *ASTReader::GetExternalCXXBaseSpecifiers(uint64_t Offset) {
76507663
76517664serialization::DeclID
76527665ASTReader::getGlobalDeclID (ModuleFile &F, LocalDeclID LocalID) const {
7653- if (LocalID < NUM_PREDEF_DECL_IDS)
7654- return LocalID;
7666+ DeclID ID = LocalID.get ();
7667+ if (ID < NUM_PREDEF_DECL_IDS)
7668+ return ID;
76557669
76567670 if (!F.ModuleOffsetMap .empty ())
76577671 ReadModuleOffsetMap (F);
76587672
76597673 ContinuousRangeMap<DeclID, int , 2 >::iterator I =
7660- F.DeclRemap .find (LocalID - NUM_PREDEF_DECL_IDS);
7674+ F.DeclRemap .find (ID - NUM_PREDEF_DECL_IDS);
76617675 assert (I != F.DeclRemap .end () && " Invalid index into decl index remap" );
76627676
7663- return LocalID + I->second ;
7677+ return ID + I->second ;
76647678}
76657679
76667680bool ASTReader::isDeclIDFromModule (serialization::GlobalDeclID ID,
@@ -7830,7 +7844,7 @@ serialization::DeclID ASTReader::ReadDeclID(ModuleFile &F,
78307844 return 0 ;
78317845 }
78327846
7833- return getGlobalDeclID (F, Record[Idx++]);
7847+ return getGlobalDeclID (F, LocalDeclID ( Record[Idx++]) );
78347848}
78357849
78367850// / Resolve the offset of a statement into a statement.
@@ -7877,7 +7891,7 @@ void ASTReader::FindExternalLexicalDecls(
78777891 PredefsVisited[ID] = true ;
78787892 }
78797893
7880- if (Decl *D = GetLocalDecl (*M, ID )) {
7894+ if (Decl *D = GetLocalDecl (*M, LocalDeclID (ID) )) {
78817895 assert (D->getKind () == K && " wrong kind for lexical decl" );
78827896 if (!DC->isDeclInLexicalTraversal (D))
78837897 Decls.push_back (D);
@@ -8767,11 +8781,11 @@ void ASTReader::ReadLateParsedTemplates(
87678781 RecordDataImpl &LateParsed = LPT.second ;
87688782 for (unsigned Idx = 0 , N = LateParsed.size (); Idx < N;
87698783 /* In loop */ ) {
8770- FunctionDecl *FD =
8771- cast<FunctionDecl>( GetLocalDecl (*FMod, LateParsed[Idx++]));
8784+ FunctionDecl *FD = cast<FunctionDecl>(
8785+ GetLocalDecl (*FMod, LocalDeclID ( LateParsed[Idx++]) ));
87728786
87738787 auto LT = std::make_unique<LateParsedTemplate>();
8774- LT->D = GetLocalDecl (*FMod, LateParsed[Idx++]);
8788+ LT->D = GetLocalDecl (*FMod, LocalDeclID ( LateParsed[Idx++]) );
87758789 LT->FPO = FPOptions::getFromOpaqueInt (LateParsed[Idx++]);
87768790
87778791 ModuleFile *F = getOwningModuleFile (LT->D );
0 commit comments