[llvm] r341965 - Revert "[SanitizerCoverage] Create comdat for global arrays."

Matt Morehouse via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 11 10:20:14 PDT 2018


Author: morehouse
Date: Tue Sep 11 10:20:14 2018
New Revision: 341965

URL: http://llvm.org/viewvc/llvm-project?rev=341965&view=rev
Log:
Revert "[SanitizerCoverage] Create comdat for global arrays."

This reverts r341951 due to bot breakage.

Modified:
    llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
    llvm/trunk/test/Instrumentation/SanitizerCoverage/div-tracing.ll
    llvm/trunk/test/Instrumentation/SanitizerCoverage/gep-tracing.ll
    llvm/trunk/test/Instrumentation/SanitizerCoverage/inline-8bit-counters.ll
    llvm/trunk/test/Instrumentation/SanitizerCoverage/pc-table.ll
    llvm/trunk/test/Instrumentation/SanitizerCoverage/tracing.ll

Modified: llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp?rev=341965&r1=341964&r2=341965&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp (original)
+++ llvm/trunk/lib/Transforms/Instrumentation/SanitizerCoverage.cpp Tue Sep 11 10:20:14 2018
@@ -219,11 +219,6 @@ private:
                    MDNode::get(*C, None));
   }
 
-  std::string UniqueSuffix() {
-    static size_t Count = 0;
-    return "_sancov" + std::to_string(Count++);
-  }
-
   std::string getSectionName(const std::string &Section) const;
   std::string getSectionStart(const std::string &Section) const;
   std::string getSectionEnd(const std::string &Section) const;
@@ -576,34 +571,11 @@ GlobalVariable *SanitizerCoverageModule:
   auto Array = new GlobalVariable(
       *CurModule, ArrayTy, false, GlobalVariable::PrivateLinkage,
       Constant::getNullValue(ArrayTy), "__sancov_gen_");
-  if (auto Comdat = F.getComdat()) {
+  if (auto Comdat = F.getComdat())
     Array->setComdat(Comdat);
-  } else {
-    // TODO: Refactor into a helper function and use it in ASan.
-    assert(F.hasName());
-    std::string Name = F.getName();
-    if (F.hasLocalLinkage()) {
-      std::string ModuleId = getUniqueModuleId(CurModule);
-      Name += ModuleId.empty() ? UniqueSuffix() : ModuleId;
-    }
-    Comdat = CurModule->getOrInsertComdat(Name);
-    // Make this IMAGE_COMDAT_SELECT_NODUPLICATES on COFF. Also upgrade private
-    // linkage to internal linkage so that a symbol table entry is emitted. This
-    // is necessary in order to create the comdat group.
-    if (TargetTriple.isOSBinFormatCOFF()) {
-      Comdat->setSelectionKind(Comdat::NoDuplicates);
-      if (F.hasPrivateLinkage())
-        F.setLinkage(GlobalValue::InternalLinkage);
-    }
-    F.setComdat(Comdat);
-    Array->setComdat(Comdat);
-  }
   Array->setSection(getSectionName(Section));
   Array->setAlignment(Ty->isPointerTy() ? DL->getPointerSize()
                                         : Ty->getPrimitiveSizeInBits() / 8);
-  GlobalsToAppendToCompilerUsed.push_back(Array);
-  MDNode *MD = MDNode::get(F.getContext(), ValueAsMetadata::get(&F));
-  Array->addMetadata(LLVMContext::MD_associated, *MD);
   return Array;
 }
 
@@ -641,12 +613,23 @@ void SanitizerCoverageModule::CreateFunc
     FunctionGuardArray = CreateFunctionLocalArrayInSection(
         AllBlocks.size(), F, Int32Ty, SanCovGuardsSectionName);
     GlobalsToAppendToUsed.push_back(FunctionGuardArray);
+    GlobalsToAppendToCompilerUsed.push_back(FunctionGuardArray);
+    MDNode *MD = MDNode::get(F.getContext(), ValueAsMetadata::get(&F));
+    FunctionGuardArray->addMetadata(LLVMContext::MD_associated, *MD);
   }
-  if (Options.Inline8bitCounters)
+  if (Options.Inline8bitCounters) {
     Function8bitCounterArray = CreateFunctionLocalArrayInSection(
         AllBlocks.size(), F, Int8Ty, SanCovCountersSectionName);
-  if (Options.PCTable)
+    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);
+    GlobalsToAppendToCompilerUsed.push_back(FunctionPCsArray);
+    MDNode *MD = MDNode::get(F.getContext(), ValueAsMetadata::get(&F));
+    FunctionPCsArray->addMetadata(LLVMContext::MD_associated, *MD);
+  }
 }
 
 bool SanitizerCoverageModule::InjectCoverage(Function &F,

Modified: llvm/trunk/test/Instrumentation/SanitizerCoverage/div-tracing.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/div-tracing.ll?rev=341965&r1=341964&r2=341965&view=diff
==============================================================================
--- llvm/trunk/test/Instrumentation/SanitizerCoverage/div-tracing.ll (original)
+++ llvm/trunk/test/Instrumentation/SanitizerCoverage/div-tracing.ll Tue Sep 11 10:20:14 2018
@@ -10,7 +10,7 @@ entry:
   ret i32 %div
 }
 
-; CHECK-LABEL: @div_a_b
+; CHECK-LABEL: div_a_b
 ; CHECK: call void @__sanitizer_cov_trace_div4(i32 %b)
 ; CHECK: ret
 
@@ -21,7 +21,7 @@ entry:
   ret i32 %div
 }
 
-; CHECK-LABEL: @div_a_10
+; CHECK-LABEL: div_a_10
 ; CHECK-NOT: __sanitizer_cov_trace_div
 ; CHECK: ret
 
@@ -31,7 +31,7 @@ entry:
   ret i64 %div
 }
 
-; CHECK-LABEL: @div_a_b_64
+; CHECK-LABEL: div_a_b
 ; CHECK: call void @__sanitizer_cov_trace_div8(i64 %b)
 ; CHECK: ret
 

Modified: llvm/trunk/test/Instrumentation/SanitizerCoverage/gep-tracing.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/gep-tracing.ll?rev=341965&r1=341964&r2=341965&view=diff
==============================================================================
--- llvm/trunk/test/Instrumentation/SanitizerCoverage/gep-tracing.ll (original)
+++ llvm/trunk/test/Instrumentation/SanitizerCoverage/gep-tracing.ll Tue Sep 11 10:20:14 2018
@@ -26,7 +26,7 @@ entry:
   ret void
 }
 
-; CHECK-LABEL: define void @gep_2([1000 x i32]* nocapture %a, i32 %i, i32 %j)
+; CHECK-LABEL: define void @gep_2([1000 x i32]* nocapture %a, i32 %i, i32 %j) {
 ; CHECK: call void @__sanitizer_cov_trace_gep(i64 %idxprom1)
 ; CHECK: call void @__sanitizer_cov_trace_gep(i64 %idxprom)
 ; CHECK: ret void

Modified: llvm/trunk/test/Instrumentation/SanitizerCoverage/inline-8bit-counters.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/inline-8bit-counters.ll?rev=341965&r1=341964&r2=341965&view=diff
==============================================================================
--- llvm/trunk/test/Instrumentation/SanitizerCoverage/inline-8bit-counters.ll (original)
+++ llvm/trunk/test/Instrumentation/SanitizerCoverage/inline-8bit-counters.ll Tue Sep 11 10:20:14 2018
@@ -5,7 +5,7 @@ target datalayout = "e-p:64:64:64-i1:8:8
 target triple = "x86_64-unknown-linux-gnu"
 define void @foo() {
 entry:
-; CHECK: section "__sancov_cntrs", comdat($foo), align 1
+; CHECK: section "__sancov_cntrs", align 1
 ; CHECK:  %0 = load i8, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @__sancov_gen_, i64 0, i64 0), !nosanitize
 ; CHECK:  %1 = add i8 %0, 1
 ; CHECK:  store i8 %1, i8* getelementptr inbounds ([1 x i8], [1 x i8]* @__sancov_gen_, i64 0, i64 0), !nosanitize

Modified: llvm/trunk/test/Instrumentation/SanitizerCoverage/pc-table.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/pc-table.ll?rev=341965&r1=341964&r2=341965&view=diff
==============================================================================
--- llvm/trunk/test/Instrumentation/SanitizerCoverage/pc-table.ll (original)
+++ llvm/trunk/test/Instrumentation/SanitizerCoverage/pc-table.ll Tue Sep 11 10:20:14 2018
@@ -17,7 +17,7 @@ entry:
   ret void
 }
 
-; CHECK: private constant [6 x i64*] [{{.*}}@foo{{.*}}blockaddress{{.*}}blockaddress{{.*}}], section "__sancov_pcs", comdat($foo), align 8
+; CHECK: private constant [6 x i64*] [{{.*}}@foo{{.*}}blockaddress{{.*}}blockaddress{{.*}}], section "__sancov_pcs", align 8
 ; CHECK: define internal void @sancov.module_ctor
 ; CHECK: call void @__sanitizer_cov
 ; CHECK: call void @__sanitizer_cov_pcs_init

Modified: llvm/trunk/test/Instrumentation/SanitizerCoverage/tracing.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Instrumentation/SanitizerCoverage/tracing.ll?rev=341965&r1=341964&r2=341965&view=diff
==============================================================================
--- llvm/trunk/test/Instrumentation/SanitizerCoverage/tracing.ll (original)
+++ llvm/trunk/test/Instrumentation/SanitizerCoverage/tracing.ll Tue Sep 11 10:20:14 2018
@@ -32,7 +32,7 @@ entry:
 ; CHECK_PC: ret void
 ; CHECK_PC-NOT: call void @__sanitizer_cov_module_init
 
-; CHECK_PC_GUARD: section "__sancov_guards", comdat($foo), align 4
+; CHECK_PC_GUARD: section "__sancov_guards", align 4
 ; CHECK_PC_GUARD-LABEL: define void @foo
 ; CHECK_PC_GUARD: call void @__sanitizer_cov_trace_pc_guard
 ; CHECK_PC_GUARD: call void @__sanitizer_cov_trace_pc_guard




More information about the llvm-commits mailing list