aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CodeGenModule.cpp
diff options
context:
space:
mode:
authorNAKAMURA Takumi <geek4civic@gmail.com>2024-07-10 17:11:12 +0900
committerGitHub <noreply@github.com>2024-07-10 17:11:12 +0900
commitda31b684a57cdc77ad4274fd7d8b47ee27dea6c6 (patch)
treeb3132dd22853c6a66c8ffcc9d9c695c920ea14cb /clang/lib/CodeGen/CodeGenModule.cpp
parentc188cb77ab99f9a455059efe4bd8b6b6665e15d0 (diff)
downloadllvm-da31b684a57cdc77ad4274fd7d8b47ee27dea6c6.zip
llvm-da31b684a57cdc77ad4274fd7d8b47ee27dea6c6.tar.gz
llvm-da31b684a57cdc77ad4274fd7d8b47ee27dea6c6.tar.bz2
[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.
Diffstat (limited to 'clang/lib/CodeGen/CodeGenModule.cpp')
-rw-r--r--clang/lib/CodeGen/CodeGenModule.cpp3
1 files changed, 3 insertions, 0 deletions
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;
}