[clang] [clang][deps] Skip writing `DIAG_PRAGMA_MAPPINGS` record (PR #70874)
via cfe-commits
cfe-commits at lists.llvm.org
Thu Nov 9 15:57:51 PST 2023
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: Jan Svoboda (jansvoboda11)
<details>
<summary>Changes</summary>
---
Full diff: https://github.com/llvm/llvm-project/pull/70874.diff
3 Files Affected:
- (modified) clang/include/clang/Lex/HeaderSearchOptions.h (+7-1)
- (modified) clang/lib/Serialization/ASTWriter.cpp (+2-2)
- (modified) clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp (+2)
``````````diff
diff --git a/clang/include/clang/Lex/HeaderSearchOptions.h b/clang/include/clang/Lex/HeaderSearchOptions.h
index 114af14dec7f5a8..fa2d0b502d72c19 100644
--- a/clang/include/clang/Lex/HeaderSearchOptions.h
+++ b/clang/include/clang/Lex/HeaderSearchOptions.h
@@ -247,6 +247,11 @@ class HeaderSearchOptions {
LLVM_PREFERRED_TYPE(bool)
unsigned ModulesSkipHeaderSearchPaths : 1;
+ /// Whether to entirely skip writing pragma diagnostic mappings.
+ /// Primarily used to speed up deserialization during dependency scanning.
+ LLVM_PREFERRED_TYPE(bool)
+ unsigned ModulesSkipPragmaDiagnosticMappings : 1;
+
LLVM_PREFERRED_TYPE(bool)
unsigned ModulesHashContent : 1;
@@ -270,7 +275,8 @@ class HeaderSearchOptions {
ForceCheckCXX20ModulesInputFiles(false), UseDebugInfo(false),
ModulesValidateDiagnosticOptions(true),
ModulesSkipDiagnosticOptions(false),
- ModulesSkipHeaderSearchPaths(false), ModulesHashContent(false),
+ ModulesSkipHeaderSearchPaths(false),
+ ModulesSkipPragmaDiagnosticMappings(false), ModulesHashContent(false),
ModulesStrictContextHash(false) {}
/// AddPath - Add the \p Path path to the specified \p Group list.
diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp
index 1e86566d81fbc02..0161ad10f3f2381 100644
--- a/clang/lib/Serialization/ASTWriter.cpp
+++ b/clang/lib/Serialization/ASTWriter.cpp
@@ -1261,8 +1261,8 @@ void ASTWriter::writeUnhashedControlBlock(Preprocessor &PP,
Stream.EmitRecord(HEADER_SEARCH_PATHS, Record);
}
- // Write out the diagnostic/pragma mappings.
- WritePragmaDiagnosticMappings(Diags, /* isModule = */ WritingModule);
+ if (!HSOpts.ModulesSkipPragmaDiagnosticMappings)
+ WritePragmaDiagnosticMappings(Diags, /* isModule = */ WritingModule);
// Header search entry usage.
auto HSEntryUsage = PP.getHeaderSearchInfo().computeUserEntryUsage();
diff --git a/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp b/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp
index d1d3cc50cb25b83..c54e6d523800b6b 100644
--- a/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp
+++ b/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp
@@ -255,6 +255,8 @@ class DependencyScanningAction : public tooling::ToolAction {
ScanInstance.getHeaderSearchOpts().ModulesStrictContextHash = true;
ScanInstance.getHeaderSearchOpts().ModulesSkipDiagnosticOptions = true;
ScanInstance.getHeaderSearchOpts().ModulesSkipHeaderSearchPaths = true;
+ ScanInstance.getHeaderSearchOpts().ModulesSkipPragmaDiagnosticMappings =
+ true;
// Avoid some checks and module map parsing when loading PCM files.
ScanInstance.getPreprocessorOpts().ModulesCheckRelocated = false;
``````````
</details>
https://github.com/llvm/llvm-project/pull/70874
More information about the cfe-commits
mailing list