@@ -954,14 +954,16 @@ ASTSelectorLookupTrait::ReadData(Selector, const unsigned char* d,
954
954
// Load instance methods
955
955
for (unsigned I = 0 ; I != NumInstanceMethods; ++I) {
956
956
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))))
958
959
Result.Instance .push_back (Method);
959
960
}
960
961
961
962
// Load factory methods
962
963
for (unsigned I = 0 ; I != NumFactoryMethods; ++I) {
963
964
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))))
965
967
Result.Factory .push_back (Method);
966
968
}
967
969
@@ -1091,7 +1093,8 @@ IdentifierInfo *ASTIdentifierLookupTrait::ReadData(const internal_key_type& k,
1091
1093
SmallVector<DeclID, 4 > DeclIDs;
1092
1094
for (; DataLen > 0 ; DataLen -= sizeof (DeclID))
1093
1095
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))));
1095
1098
Reader.SetGloballyVisibleDecls (II, DeclIDs);
1096
1099
}
1097
1100
@@ -1212,7 +1215,7 @@ void ASTDeclContextNameLookupTrait::ReadDataInto(internal_key_type,
1212
1215
using namespace llvm ::support;
1213
1216
1214
1217
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) );
1216
1219
Val.insert (Reader.getGlobalDeclID (F, LocalID));
1217
1220
}
1218
1221
}
@@ -1652,7 +1655,7 @@ bool ASTReader::ReadSLocEntry(int ID) {
1652
1655
1653
1656
unsigned NumFileDecls = Record[7 ];
1654
1657
if (NumFileDecls && ContextObj) {
1655
- const DeclID *FirstDecl = F->FileSortedDecls + Record[6 ];
1658
+ const LocalDeclID *FirstDecl = F->FileSortedDecls + Record[6 ];
1656
1659
assert (F->FileSortedDecls && " FILE_SORTED_DECLS not encountered yet ?" );
1657
1660
FileDeclIDs[FID] =
1658
1661
FileDeclsInfo (F, llvm::ArrayRef (FirstDecl, NumFileDecls));
@@ -3458,7 +3461,8 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
3458
3461
// FIXME: Skip reading this record if our ASTConsumer doesn't care
3459
3462
// about "interesting" decls (for instance, if we're building a module).
3460
3463
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])));
3462
3466
break ;
3463
3467
3464
3468
case MODULAR_CODEGEN_DECLS:
@@ -3467,7 +3471,8 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
3467
3471
if (F.Kind == MK_MainFile ||
3468
3472
getContext ().getLangOpts ().BuildingPCHWithObjectFile )
3469
3473
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])));
3471
3476
break ;
3472
3477
3473
3478
case SPECIAL_TYPES:
@@ -3499,12 +3504,14 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
3499
3504
3500
3505
case UNUSED_FILESCOPED_DECLS:
3501
3506
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])));
3503
3509
break ;
3504
3510
3505
3511
case DELEGATING_CTORS:
3506
3512
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])));
3508
3515
break ;
3509
3516
3510
3517
case WEAK_UNDECLARED_IDENTIFIERS:
@@ -3612,7 +3619,7 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
3612
3619
break ;
3613
3620
3614
3621
case FILE_SORTED_DECLS:
3615
- F.FileSortedDecls = (const DeclID *)Blob.data ();
3622
+ F.FileSortedDecls = (const LocalDeclID *)Blob.data ();
3616
3623
F.NumFileSortedDecls = Record[0 ];
3617
3624
break ;
3618
3625
@@ -3667,7 +3674,7 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
3667
3674
3668
3675
case EXT_VECTOR_DECLS:
3669
3676
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]) ));
3671
3678
break ;
3672
3679
3673
3680
case VTABLE_USES:
@@ -3681,7 +3688,7 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
3681
3688
VTableUses.clear ();
3682
3689
3683
3690
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++]) ));
3685
3692
VTableUses.push_back (
3686
3693
ReadSourceLocation (F, Record, Idx).getRawEncoding ());
3687
3694
VTableUses.push_back (Record[Idx++]);
@@ -3700,7 +3707,8 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
3700
3707
" Invalid PENDING_IMPLICIT_INSTANTIATIONS block" );
3701
3708
3702
3709
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++])));
3704
3712
PendingInstantiations.push_back (
3705
3713
ReadSourceLocation (F, Record, I).getRawEncoding ());
3706
3714
}
@@ -3711,7 +3719,7 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
3711
3719
return llvm::createStringError (std::errc::illegal_byte_sequence,
3712
3720
" Invalid SEMA_DECL_REFS block" );
3713
3721
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]) ));
3715
3723
break ;
3716
3724
3717
3725
case PPD_ENTITIES_OFFSETS: {
@@ -3770,7 +3778,7 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
3770
3778
std::errc::illegal_byte_sequence,
3771
3779
" invalid DECL_UPDATE_OFFSETS block in AST file" );
3772
3780
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]) );
3774
3782
DeclUpdateOffsets[ID].push_back (std::make_pair (&F, Record[I + 1 ]));
3775
3783
3776
3784
// If we've already loaded the decl, perform the updates when we finish
@@ -3788,7 +3796,7 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
3788
3796
" invalid DELAYED_NAMESPACE_LEXICAL_VISIBLE_RECORD block in AST "
3789
3797
" file" );
3790
3798
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]) );
3792
3800
3793
3801
uint64_t BaseOffset = F.DeclsBlockStartOffset ;
3794
3802
assert (BaseOffset && " Invalid DeclsBlockStartOffset for module file!" );
@@ -3823,7 +3831,8 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
3823
3831
// FIXME: Modules will have trouble with this.
3824
3832
CUDASpecialDeclRefs.clear ();
3825
3833
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])));
3827
3836
break ;
3828
3837
3829
3838
case HEADER_SEARCH_TABLE:
@@ -3864,12 +3873,13 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
3864
3873
3865
3874
case TENTATIVE_DEFINITIONS:
3866
3875
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])));
3868
3878
break ;
3869
3879
3870
3880
case KNOWN_NAMESPACES:
3871
3881
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]) ));
3873
3883
break ;
3874
3884
3875
3885
case UNDEFINED_BUT_USED:
@@ -3881,15 +3891,17 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
3881
3891
return llvm::createStringError (std::errc::illegal_byte_sequence,
3882
3892
" invalid undefined-but-used record" );
3883
3893
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++])));
3885
3896
UndefinedButUsed.push_back (
3886
3897
ReadSourceLocation (F, Record, I).getRawEncoding ());
3887
3898
}
3888
3899
break ;
3889
3900
3890
3901
case DELETE_EXPRS_TO_ANALYZE:
3891
3902
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++])));
3893
3905
const uint64_t Count = Record[I++];
3894
3906
DelayedDeleteExprs.push_back (Count);
3895
3907
for (uint64_t C = 0 ; C < Count; ++C) {
@@ -3974,7 +3986,7 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
3974
3986
case UNUSED_LOCAL_TYPEDEF_NAME_CANDIDATES:
3975
3987
for (unsigned I = 0 , N = Record.size (); I != N; ++I)
3976
3988
UnusedLocalTypedefNameCandidates.push_back (
3977
- getGlobalDeclID (F, Record[I]));
3989
+ getGlobalDeclID (F, LocalDeclID ( Record[I]) ));
3978
3990
break ;
3979
3991
3980
3992
case CUDA_PRAGMA_FORCE_HOST_DEVICE_DEPTH:
@@ -4030,7 +4042,8 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
4030
4042
4031
4043
case DECLS_TO_CHECK_FOR_DEFERRED_DIAGS:
4032
4044
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])));
4034
4047
break ;
4035
4048
}
4036
4049
}
@@ -6010,7 +6023,7 @@ llvm::Error ASTReader::ReadSubmoduleBlock(ModuleFile &F,
6010
6023
break ;
6011
6024
SmallVector<DeclID, 16 > Inits;
6012
6025
for (auto &ID : Record)
6013
- Inits.push_back (getGlobalDeclID (F, ID ));
6026
+ Inits.push_back (getGlobalDeclID (F, LocalDeclID (ID) ));
6014
6027
ContextObj->addLazyModuleInitializers (CurrentModule, Inits);
6015
6028
break ;
6016
6029
}
@@ -7650,17 +7663,18 @@ CXXBaseSpecifier *ASTReader::GetExternalCXXBaseSpecifiers(uint64_t Offset) {
7650
7663
7651
7664
serialization::DeclID
7652
7665
ASTReader::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;
7655
7669
7656
7670
if (!F.ModuleOffsetMap .empty ())
7657
7671
ReadModuleOffsetMap (F);
7658
7672
7659
7673
ContinuousRangeMap<DeclID, int , 2 >::iterator I =
7660
- F.DeclRemap .find (LocalID - NUM_PREDEF_DECL_IDS);
7674
+ F.DeclRemap .find (ID - NUM_PREDEF_DECL_IDS);
7661
7675
assert (I != F.DeclRemap .end () && " Invalid index into decl index remap" );
7662
7676
7663
- return LocalID + I->second ;
7677
+ return ID + I->second ;
7664
7678
}
7665
7679
7666
7680
bool ASTReader::isDeclIDFromModule (serialization::GlobalDeclID ID,
@@ -7830,7 +7844,7 @@ serialization::DeclID ASTReader::ReadDeclID(ModuleFile &F,
7830
7844
return 0 ;
7831
7845
}
7832
7846
7833
- return getGlobalDeclID (F, Record[Idx++]);
7847
+ return getGlobalDeclID (F, LocalDeclID ( Record[Idx++]) );
7834
7848
}
7835
7849
7836
7850
// / Resolve the offset of a statement into a statement.
@@ -7877,7 +7891,7 @@ void ASTReader::FindExternalLexicalDecls(
7877
7891
PredefsVisited[ID] = true ;
7878
7892
}
7879
7893
7880
- if (Decl *D = GetLocalDecl (*M, ID )) {
7894
+ if (Decl *D = GetLocalDecl (*M, LocalDeclID (ID) )) {
7881
7895
assert (D->getKind () == K && " wrong kind for lexical decl" );
7882
7896
if (!DC->isDeclInLexicalTraversal (D))
7883
7897
Decls.push_back (D);
@@ -8767,11 +8781,11 @@ void ASTReader::ReadLateParsedTemplates(
8767
8781
RecordDataImpl &LateParsed = LPT.second ;
8768
8782
for (unsigned Idx = 0 , N = LateParsed.size (); Idx < N;
8769
8783
/* In loop */ ) {
8770
- FunctionDecl *FD =
8771
- cast<FunctionDecl>( GetLocalDecl (*FMod, LateParsed[Idx++]));
8784
+ FunctionDecl *FD = cast<FunctionDecl>(
8785
+ GetLocalDecl (*FMod, LocalDeclID ( LateParsed[Idx++]) ));
8772
8786
8773
8787
auto LT = std::make_unique<LateParsedTemplate>();
8774
- LT->D = GetLocalDecl (*FMod, LateParsed[Idx++]);
8788
+ LT->D = GetLocalDecl (*FMod, LocalDeclID ( LateParsed[Idx++]) );
8775
8789
LT->FPO = FPOptions::getFromOpaqueInt (LateParsed[Idx++]);
8776
8790
8777
8791
ModuleFile *F = getOwningModuleFile (LT->D );
0 commit comments