From 873a0746f124c47413407a7f767c906db17828db Mon Sep 17 00:00:00 2001 From: Justin Bogner Date: Mon, 28 Aug 2017 23:46:11 +0000 Subject: [PATCH] [sanitizer-coverage] Return the array from CreatePCArray. NFC Be more consistent with CreateFunctionLocalArrayInSection in the API of CreatePCArray, and assign the member variable in the caller like we do for the guard and 8-bit counter arrays. This also tweaks the order of method declarations to match the order of definitions in the file. llvm-svn: 311955 --- .../Instrumentation/SanitizerCoverage.cpp | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp b/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp index bac6b116e714..ffe35f57db76 100644 --- a/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp +++ b/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp @@ -204,8 +204,8 @@ private: GlobalVariable *CreateFunctionLocalArrayInSection(size_t NumElements, Function &F, Type *Ty, const char *Section); + GlobalVariable *CreatePCArray(Function &F, ArrayRef AllBlocks); void CreateFunctionLocalArrays(Function &F, ArrayRef AllBlocks); - void CreatePCArray(Function &F, ArrayRef AllBlocks); void InjectCoverageAtBlock(Function &F, BasicBlock &BB, size_t Idx); Function *CreateInitCallsForSections(Module &M, const char *InitFunctionName, Type *Ty, const char *Section); @@ -541,8 +541,9 @@ GlobalVariable *SanitizerCoverageModule::CreateFunctionLocalArrayInSection( return Array; } -void SanitizerCoverageModule::CreatePCArray(Function &F, - ArrayRef AllBlocks) { +GlobalVariable * +SanitizerCoverageModule::CreatePCArray(Function &F, + ArrayRef AllBlocks) { size_t N = AllBlocks.size(); assert(N); SmallVector PCs; @@ -559,15 +560,17 @@ void SanitizerCoverageModule::CreatePCArray(Function &F, ConstantInt::get(IntptrTy, 0), IntptrPtrTy)); } } - FunctionPCsArray = CreateFunctionLocalArrayInSection(N * 2, F, IntptrPtrTy, - SanCovPCsSectionName); - FunctionPCsArray->setInitializer( + auto *PCArray = CreateFunctionLocalArrayInSection(N * 2, F, IntptrPtrTy, + SanCovPCsSectionName); + PCArray->setInitializer( ConstantArray::get(ArrayType::get(IntptrPtrTy, N * 2), PCs)); - FunctionPCsArray->setConstant(true); + PCArray->setConstant(true); // We don't reference the PCs array in any of our runtime functions, so we // need to prevent it from being dead stripped. - appendToUsed(*F.getParent(), {FunctionPCsArray}); + appendToUsed(*F.getParent(), {PCArray}); + + return PCArray; } void SanitizerCoverageModule::CreateFunctionLocalArrays( @@ -579,7 +582,7 @@ void SanitizerCoverageModule::CreateFunctionLocalArrays( Function8bitCounterArray = CreateFunctionLocalArrayInSection( AllBlocks.size(), F, Int8Ty, SanCovCountersSectionName); if (Options.PCTable) - CreatePCArray(F, AllBlocks); + FunctionPCsArray = CreatePCArray(F, AllBlocks); } bool SanitizerCoverageModule::InjectCoverage(Function &F,