================
@@ -6277,11 +6292,34 @@ bool ASTReader::isAcceptableASTFile(
/*ValidateDiagnosticOptions=*/true);
}
-llvm::Error ASTReader::ReadSubmoduleBlock(ModuleFile &F,
- unsigned ClientLoadCapabilities) {
- // Enter the submodule block.
- if (llvm::Error Err = F.Stream.EnterSubBlock(SUBMODULE_BLOCK_ID))
- return Err;
+Module *ASTReader::getSubmodule(uint32_t GlobalID) {
+ if (GlobalID < NUM_PREDEF_SUBMODULE_IDS) {
+ assert(GlobalID == 0 && "Unhandled global submodule ID");
+ return nullptr;
+ }
+
+ if (GlobalID > SubmodulesLoaded.size()) {
+ Error("submodule ID out of range in AST file");
+ return nullptr;
+ }
+
+ SubmoduleID GlobalIndex = GlobalID - NUM_PREDEF_SUBMODULE_IDS;
+ if (GlobalIndex < SubmodulesLoaded.size() && SubmodulesLoaded[GlobalIndex])
+ return SubmodulesLoaded[GlobalIndex];
+
+ GlobalSubmoduleMapType::iterator It = GlobalSubmoduleMap.find(GlobalID);
+ assert(It != GlobalSubmoduleMap.end());
+ ModuleFile &F = *It->second;
+ unsigned Index = GlobalID - F.BaseSubmoduleID - NUM_PREDEF_SELECTOR_IDS;
+ unsigned LocalID = Index + F.LocalBaseSubmoduleID + NUM_PREDEF_SUBMODULE_IDS;
----------------
jansvoboda11 wrote:
You're right, line 6313 incorrectly uses `NUM_PREDEF_SELECTOR_IDS`. I'll fix
that.
https://github.com/llvm/llvm-project/pull/194968
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits