]> granicus.if.org Git - llvm/commitdiff
[SanitizerCoverage] Add associated metadata to 8-bit counters.
authorMatt Morehouse <mascasa@google.com>
Thu, 12 Jul 2018 20:24:58 +0000 (20:24 +0000)
committerMatt Morehouse <mascasa@google.com>
Thu, 12 Jul 2018 20:24:58 +0000 (20:24 +0000)
Summary:
This allows counters associated with unused functions to be
dead-stripped along with their functions.  This approach is the same one
we used for PC tables.

Fixes an issue where LLD removes an unused PC table but leaves the 8-bit
counter.

Reviewers: eugenis

Reviewed By: eugenis

Subscribers: llvm-commits, hiraditya, kcc

Differential Revision: https://reviews.llvm.org/D49264

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@336941 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/Instrumentation/SanitizerCoverage.cpp

index a9336381edd8b78c31ef5dd86ffb37b3e80da2db..a4dd48c8dd6a731406a24734654aab6839ec8a16 100644 (file)
@@ -595,7 +595,9 @@ void SanitizerCoverageModule::CreateFunctionLocalArrays(
   if (Options.Inline8bitCounters) {
     Function8bitCounterArray = CreateFunctionLocalArrayInSection(
         AllBlocks.size(), F, Int8Ty, SanCovCountersSectionName);
-    GlobalsToAppendToUsed.push_back(Function8bitCounterArray);
+    GlobalsToAppendToCompilerUsed.push_back(Function8bitCounterArray);
+    MDNode *MD = MDNode::get(F.getContext(), ValueAsMetadata::get(&F));
+    Function8bitCounterArray->addMetadata(LLVMContext::MD_associated, *MD);
   }
   if (Options.PCTable) {
     FunctionPCsArray = CreatePCArray(F, AllBlocks);