[clang] [clang][modules] Deserialize submodule lazily (PR #194968)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Apr 29 14:49:39 PDT 2026
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff origin/main HEAD --extensions cpp,h -- clang/include/clang/Basic/Module.h clang/include/clang/Lex/ModuleMap.h clang/include/clang/Lex/Preprocessor.h clang/include/clang/Serialization/ASTBitCodes.h clang/include/clang/Serialization/ASTReader.h clang/include/clang/Serialization/ModuleFile.h clang/lib/Basic/Module.cpp clang/lib/Lex/ModuleMap.cpp clang/lib/Lex/Preprocessor.cpp clang/lib/Sema/SemaLookup.cpp clang/lib/Sema/SemaModule.cpp clang/lib/Serialization/ASTReader.cpp clang/lib/Serialization/ASTWriter.cpp --diff_from_common_commit
``````````
:warning:
The reproduction instructions above might return results for more than one PR
in a stack if you are using a stacked PR workflow. You can limit the results by
changing `origin/main` to the base branch/commit you want to compare against.
:warning:
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/clang/include/clang/Basic/Module.h b/clang/include/clang/Basic/Module.h
index cadad5bf9..14200b505 100644
--- a/clang/include/clang/Basic/Module.h
+++ b/clang/include/clang/Basic/Module.h
@@ -251,9 +251,7 @@ public:
SubmoduleID = ID;
}
- operator bool() const {
- return Existing || (ExternalSource && SubmoduleID);
- }
+ operator bool() const { return Existing || (ExternalSource && SubmoduleID); }
operator Module *() const {
if (ExternalSource) {
diff --git a/clang/include/clang/Serialization/ASTReader.h b/clang/include/clang/Serialization/ASTReader.h
index 7ca79f019..bedac9f8a 100644
--- a/clang/include/clang/Serialization/ASTReader.h
+++ b/clang/include/clang/Serialization/ASTReader.h
@@ -418,15 +418,13 @@ struct LookupBlockOffsets : VisibleLookupBlockOffsets {
/// The AST reader provides lazy de-serialization of declarations, as
/// required when traversing the AST. Only those AST nodes that are
/// actually required will be de-serialized.
-class ASTReader
- : public ExternalPreprocessorSource,
- public ExternalPreprocessingRecordSource,
- public ExternalHeaderFileInfoSource,
- public ExternalSemaSource,
- public IdentifierInfoLookup,
- public ExternalSLocEntrySource,
- public ExternalSubmoduleSource
-{
+class ASTReader : public ExternalPreprocessorSource,
+ public ExternalPreprocessingRecordSource,
+ public ExternalHeaderFileInfoSource,
+ public ExternalSemaSource,
+ public IdentifierInfoLookup,
+ public ExternalSLocEntrySource,
+ public ExternalSubmoduleSource {
public:
/// Types of AST files.
friend class ASTDeclMerger;
diff --git a/clang/lib/Lex/ModuleMap.cpp b/clang/lib/Lex/ModuleMap.cpp
index 6e2f7e076..e771a4b50 100644
--- a/clang/lib/Lex/ModuleMap.cpp
+++ b/clang/lib/Lex/ModuleMap.cpp
@@ -938,7 +938,8 @@ Module *ModuleMap::lookupModuleUnqualified(StringRef Name,
return findModule(Name);
}
-ModuleRef ModuleMap::lookupModuleQualified(StringRef Name, Module *Context) const{
+ModuleRef ModuleMap::lookupModuleQualified(StringRef Name,
+ Module *Context) const {
if (!Context)
return findModule(Name);
diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp
index 41eca76d3..e44cee65c 100644
--- a/clang/lib/Serialization/ASTReader.cpp
+++ b/clang/lib/Serialization/ASTReader.cpp
@@ -3830,8 +3830,9 @@ llvm::Error ASTReader::ReadASTBlock(ModuleFile &F,
// Introduce the local -> global mapping for submodules within this
// module.
- F.SubmoduleRemap.insertOrReplace(std::make_pair(
- F.LocalBaseSubmoduleID, F.BaseSubmoduleID - F.LocalBaseSubmoduleID));
+ F.SubmoduleRemap.insertOrReplace(
+ std::make_pair(F.LocalBaseSubmoduleID,
+ F.BaseSubmoduleID - F.LocalBaseSubmoduleID));
SubmodulesLoaded.resize(SubmodulesLoaded.size() + F.LocalNumSubmodules);
}
diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp
index fc24c5776..1970ed865 100644
--- a/clang/lib/Serialization/ASTWriter.cpp
+++ b/clang/lib/Serialization/ASTWriter.cpp
@@ -3272,7 +3272,8 @@ void ASTWriter::WriteSubmodules(Module *WritingModule, ASTContext *Context) {
// Emit one SUBMODULE_CHILD record per direct child so the reader can
// populate PendingSubmodules and demand-load children by name.
for (Module *Child : Mod->submodules()) {
- RecordData::value_type Record[] = {SUBMODULE_CHILD, getSubmoduleID(Child)};
+ RecordData::value_type Record[] = {SUBMODULE_CHILD,
+ getSubmoduleID(Child)};
Stream.EmitRecordWithBlob(ChildAbbrev, Record, Child->Name);
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/194968
More information about the cfe-commits
mailing list