From da31b684a57cdc77ad4274fd7d8b47ee27dea6c6 Mon Sep 17 00:00:00 2001 From: NAKAMURA Takumi Date: Wed, 10 Jul 2024 17:11:12 +0900 Subject: [Coverage] Suppress covmap and profdata for system headers. (#97952) With `system-headers-coverage=false`, functions defined in system headers were not instrumented but corresponding covmaps were emitted. It caused wasting covmap and profraw. This change improves: - Reduce object size (due to reduced covmap) - Reduce size of profraw (uninstrumented system headers occupied counters) - Smarter view of coverage report. Stubs of uninstrumented system headers will be no longer seen. --- clang/lib/CodeGen/CodeGenModule.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'clang/lib/CodeGen/CodeGenModule.cpp') diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp index 44bc7fb..5c810cd 100644 --- a/clang/lib/CodeGen/CodeGenModule.cpp +++ b/clang/lib/CodeGen/CodeGenModule.cpp @@ -7165,6 +7165,9 @@ void CodeGenModule::AddDeferredUnusedCoverageMapping(Decl *D) { SourceManager &SM = getContext().getSourceManager(); if (LimitedCoverage && SM.getMainFileID() != SM.getFileID(D->getBeginLoc())) break; + if (!llvm::coverage::SystemHeadersCoverage && + SM.isInSystemHeader(D->getBeginLoc())) + break; DeferredEmptyCoverageMappingDecls.try_emplace(D, true); break; } -- cgit v1.1