summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
diff options
context:
space:
mode:
authorMatt Morehouse <mascasa@google.com>2018-09-11 17:20:14 +0000
committerMatt Morehouse <mascasa@google.com>2018-09-11 17:20:14 +0000
commit40fbdd0c4f85133949ddf9da6b19dfa8a46d06a9 (patch)
treec86a96fbd5cff0d5c1605042a1dbfa02c40a01cc /llvm/lib/Transforms
parent06b6e0f4067490825551a81d30d4177b5230f28b (diff)
downloadbcm5719-llvm-40fbdd0c4f85133949ddf9da6b19dfa8a46d06a9.tar.gz
bcm5719-llvm-40fbdd0c4f85133949ddf9da6b19dfa8a46d06a9.zip
Revert "[SanitizerCoverage] Create comdat for global arrays."
This reverts r341951 due to bot breakage. llvm-svn: 341965
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r--llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp45
1 files changed, 14 insertions, 31 deletions
diff --git a/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp b/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
index 11d08d4d867..1f97e909851 100644
--- a/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
+++ b/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp
@@ -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::CreateFunctionLocalArrayInSection(
auto Array = new GlobalVariable(
*CurModule, ArrayTy, false, GlobalVariable::PrivateLinkage,
Constant::getNullValue(ArrayTy), "__sancov_gen_");
- 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);
+ if (auto Comdat = F.getComdat())
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::CreateFunctionLocalArrays(
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,
OpenPOWER on IntegriCloud