https://github.com/jansvoboda11 created https://github.com/llvm/llvm-project/pull/70874
None >From c3602bceb01aa93f801670a31bb43903d6a10d9c Mon Sep 17 00:00:00 2001 From: Jan Svoboda <jan_svob...@apple.com> Date: Tue, 31 Oct 2023 16:35:38 -0700 Subject: [PATCH] [clang][deps] Skip writing `DIAG_PRAGMA_MAPPINGS` record --- clang/include/clang/Lex/HeaderSearchOptions.h | 4 ++++ clang/lib/Serialization/ASTWriter.cpp | 4 ++-- .../Tooling/DependencyScanning/DependencyScanningWorker.cpp | 2 ++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/clang/include/clang/Lex/HeaderSearchOptions.h b/clang/include/clang/Lex/HeaderSearchOptions.h index c7d95006bb779ad..e7204bf718b5f75 100644 --- a/clang/include/clang/Lex/HeaderSearchOptions.h +++ b/clang/include/clang/Lex/HeaderSearchOptions.h @@ -219,6 +219,10 @@ class HeaderSearchOptions { unsigned ModulesValidateDiagnosticOptions : 1; + /// Whether to entirely skip writing pragma diagnostic mappings. + /// Primarily used to speed up deserialization during dependency scanning. + unsigned ModulesSkipPragmaDiagnosticMappings : 1; + unsigned ModulesHashContent : 1; /// Whether we should include all things that could impact the module in the diff --git a/clang/lib/Serialization/ASTWriter.cpp b/clang/lib/Serialization/ASTWriter.cpp index 739344b9a128dcf..011a94c5b55520d 100644 --- a/clang/lib/Serialization/ASTWriter.cpp +++ b/clang/lib/Serialization/ASTWriter.cpp @@ -1259,8 +1259,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 29df0c3a0afdb5c..45cd247148dd34d 100644 --- a/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp +++ b/clang/lib/Tooling/DependencyScanning/DependencyScanningWorker.cpp @@ -252,6 +252,8 @@ class DependencyScanningAction : public tooling::ToolAction { // TODO: Implement diagnostic bucketing to reduce the impact of strict // context hashing. ScanInstance.getHeaderSearchOpts().ModulesStrictContextHash = true; + ScanInstance.getHeaderSearchOpts().ModulesSkipPragmaDiagnosticMappings = + true; // Avoid some checks and module map parsing when loading PCM files. ScanInstance.getPreprocessorOpts().ModulesCheckRelocated = false; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits