[clang] [serialization] no transitive decl change (PR #92083)
Jan Svoboda via cfe-commits
cfe-commits at lists.llvm.org
Fri May 24 05:03:49 PDT 2024
================
@@ -7802,20 +7800,31 @@ Decl *ASTReader::GetDecl(GlobalDeclID ID) {
LocalDeclID ASTReader::mapGlobalIDToModuleFileGlobalID(ModuleFile &M,
GlobalDeclID GlobalID) {
- DeclID ID = GlobalID.get();
- if (ID < NUM_PREDEF_DECL_IDS)
+ if (GlobalID.get() < NUM_PREDEF_DECL_IDS)
+ return LocalDeclID(GlobalID.get());
+
+ if (!M.ModuleOffsetMap.empty())
+ ReadModuleOffsetMap(M);
+
+ ModuleFile *Owner = getOwningModuleFile(GlobalID);
+ DeclID ID = GlobalID.getLocalDeclIndex();
+
+ if (Owner == &M) {
+ ID += NUM_PREDEF_DECL_IDS;
return LocalDeclID(ID);
+ }
- GlobalDeclMapType::const_iterator I = GlobalDeclMap.find(GlobalID);
- assert(I != GlobalDeclMap.end() && "Corrupted global declaration map");
- ModuleFile *Owner = I->second;
+ uint64_t OrignalModuleFileIndex = 0;
+ for (unsigned I = 0; I < M.DependentModules.size(); I++)
----------------
jansvoboda11 wrote:
I just now noticed the name `DependentModules` (introduced in #86912) sounds like exactly the opposite of what this member represents. Can we rename this to `TransitiveImports` (or something similar) in a prep patch to clarify the semantics here?
https://github.com/llvm/llvm-project/pull/92083
More information about the cfe-commits
mailing list