[PATCH] D121446: Add -no-unused-coverage option
Hiral via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Mar 10 23:39:25 PST 2022
Hiralo created this revision.
Hiralo added a reviewer: vsk.
Hiralo added a project: clang.
Herald added subscribers: dexonsmith, wenlei, dang.
Herald added a project: All.
Hiralo requested review of this revision.
Herald added a subscriber: cfe-commits.
commit 87f30be546daca55664ded147acceb9f206399e0
Author: Hiral Oza <hiral.oza at netapp.com>
Date: Fri Mar 11 09:41:38 2022 +0530
Add -no-unused-coverage option
Reduce the size of instrumented objects by eliminating counters for code that will not be emitted.
Author: Thom.Harp at netapp.com
diff --git a/clang/include/clang/Basic/CodeGenOptions.def b/clang/include/clang/Basic/CodeGenOptions.def
index 3301e7587d21..e51261ddcced 100644
- a/clang/include/clang/Basic/CodeGenOptions.def
+++ b/clang/include/clang/Basic/CodeGenOptions.def
@@ -211,6 +211,8 @@ CODEGENOPT(CoverageMapping , 1, 0) ///< Generate coverage mapping regions to
///< enable code coverage analysis.
CODEGENOPT(DumpCoverageMapping , 1, 0) ///< Dump the generated coverage mapping
///< regions.
+CODEGENOPT(NoUnusedCoverage , 1, 0) ///< Turn off coverage mapping for code that
+ ///< is not emitted.
/// If -fpcc-struct-return or -freg-struct-return is specified.
ENUM_CODEGENOPT(StructReturnConvention, StructReturnConventionKind, 2, SRCK_Default)
diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td
index fa54d4a7689c..05926e01efb1 100644
- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -5158,6 +5158,9 @@ def coverage_version_EQ : Joined<["-"], "coverage-version=">,
def dump_coverage_mapping : Flag<["-"], "dump-coverage-mapping">,
HelpText<"Dump the coverage mapping records, for testing">,
MarshallingInfoFlag<CodeGenOpts<"DumpCoverageMapping">>;
+def no_unused_coverage : Flag<["-"], "no-unused-coverage">,
+ HelpText<"Turn off coverage mapping for code that is not emitted">,
+ MarshallingInfoFlag<CodeGenOpts<"NoUnusedCoverage">>;
def fuse_register_sized_bitfield_access: Flag<["-"], "fuse-register-sized-bitfield-access">,
HelpText<"Use register sized accesses to bit-fields, when possible.">,
MarshallingInfoFlag<CodeGenOpts<"UseRegisterSizedBitfieldAccess">>;
diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index 9c76648f5f19..bc968d888e11 100644
- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -538,7 +538,9 @@ void CodeGenModule::Release() {
EmitCtorList(GlobalDtors, "llvm.global_dtors");
EmitGlobalAnnotations();
EmitStaticExternCAliases();
- EmitDeferredUnusedCoverageMappings();
+ if (!CodeGenOpts.NoUnusedCoverage) {
+ EmitDeferredUnusedCoverageMappings();
+ }
CodeGenPGO(*this).setValueProfilingFlag(getModule());
if (CoverageMapping)
CoverageMapping->emit();
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D121446
Files:
clang/include/clang/Basic/CodeGenOptions.def
clang/include/clang/Driver/Options.td
clang/lib/CodeGen/CodeGenModule.cpp
Index: clang/lib/CodeGen/CodeGenModule.cpp
===================================================================
--- clang/lib/CodeGen/CodeGenModule.cpp
+++ clang/lib/CodeGen/CodeGenModule.cpp
@@ -538,7 +538,9 @@
EmitCtorList(GlobalDtors, "llvm.global_dtors");
EmitGlobalAnnotations();
EmitStaticExternCAliases();
- EmitDeferredUnusedCoverageMappings();
+ if (!CodeGenOpts.NoUnusedCoverage) {
+ EmitDeferredUnusedCoverageMappings();
+ }
CodeGenPGO(*this).setValueProfilingFlag(getModule());
if (CoverageMapping)
CoverageMapping->emit();
Index: clang/include/clang/Driver/Options.td
===================================================================
--- clang/include/clang/Driver/Options.td
+++ clang/include/clang/Driver/Options.td
@@ -5158,6 +5158,9 @@
def dump_coverage_mapping : Flag<["-"], "dump-coverage-mapping">,
HelpText<"Dump the coverage mapping records, for testing">,
MarshallingInfoFlag<CodeGenOpts<"DumpCoverageMapping">>;
+def no_unused_coverage : Flag<["-"], "no-unused-coverage">,
+ HelpText<"Turn off coverage mapping for code that is not emitted">,
+ MarshallingInfoFlag<CodeGenOpts<"NoUnusedCoverage">>;
def fuse_register_sized_bitfield_access: Flag<["-"], "fuse-register-sized-bitfield-access">,
HelpText<"Use register sized accesses to bit-fields, when possible.">,
MarshallingInfoFlag<CodeGenOpts<"UseRegisterSizedBitfieldAccess">>;
Index: clang/include/clang/Basic/CodeGenOptions.def
===================================================================
--- clang/include/clang/Basic/CodeGenOptions.def
+++ clang/include/clang/Basic/CodeGenOptions.def
@@ -211,6 +211,8 @@
///< enable code coverage analysis.
CODEGENOPT(DumpCoverageMapping , 1, 0) ///< Dump the generated coverage mapping
///< regions.
+CODEGENOPT(NoUnusedCoverage , 1, 0) ///< Turn off coverage mapping for code that
+ ///< is not emitted.
/// If -fpcc-struct-return or -freg-struct-return is specified.
ENUM_CODEGENOPT(StructReturnConvention, StructReturnConventionKind, 2, SRCK_Default)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D121446.414595.patch
Type: text/x-patch
Size: 2137 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20220311/1e738141/attachment.bin>
More information about the cfe-commits
mailing list