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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits