diff options
author | Kostya Serebryany <kcc@google.com> | 2017-07-31 19:49:45 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2017-07-31 19:49:45 +0000 |
commit | bb6f079a457548fd617f2560f0c296083ecae570 (patch) | |
tree | adc74c7e37ed41cee1f232f77ac20ab86f2449df | |
parent | 9f6e41cdbabd7cfcfe7096544a61bb41dfcef746 (diff) | |
download | bcm5719-llvm-bb6f079a457548fd617f2560f0c296083ecae570.tar.gz bcm5719-llvm-bb6f079a457548fd617f2560f0c296083ecae570.zip |
[sanitizer-coverage] ensure minimal alignment for coverage counters and guards
llvm-svn: 309610
3 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp b/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp index 9f129b71288..fb7f8ec85d4 100644 --- a/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp +++ b/llvm/lib/Transforms/Instrumentation/SanitizerCoverage.cpp @@ -487,6 +487,8 @@ GlobalVariable *SanitizerCoverageModule::CreateFunctionLocalArrayInSection( if (auto Comdat = F.getComdat()) Array->setComdat(Comdat); Array->setSection(getSectionName(Section)); + Array->setAlignment(Ty->isPointerTy() ? DL->getPointerSize() + : Ty->getPrimitiveSizeInBits() / 8); return Array; } @@ -505,7 +507,6 @@ void SanitizerCoverageModule::CreatePCArray(Function &F, FunctionPCsArray->setInitializer( ConstantArray::get(ArrayType::get(Int8PtrTy, N), PCs)); FunctionPCsArray->setConstant(true); - FunctionPCsArray->setAlignment(DL->getPointerSize()); } void SanitizerCoverageModule::CreateFunctionLocalArrays( diff --git a/llvm/test/Instrumentation/SanitizerCoverage/inline-8bit-counters.ll b/llvm/test/Instrumentation/SanitizerCoverage/inline-8bit-counters.ll index 5b5b75117fb..597f77f3c8c 100644 --- a/llvm/test/Instrumentation/SanitizerCoverage/inline-8bit-counters.ll +++ b/llvm/test/Instrumentation/SanitizerCoverage/inline-8bit-counters.ll @@ -5,6 +5,7 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3 target triple = "x86_64-unknown-linux-gnu" define void @foo() { entry: +; 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 diff --git a/llvm/test/Instrumentation/SanitizerCoverage/tracing.ll b/llvm/test/Instrumentation/SanitizerCoverage/tracing.ll index 1561a148601..209b9874cb2 100644 --- a/llvm/test/Instrumentation/SanitizerCoverage/tracing.ll +++ b/llvm/test/Instrumentation/SanitizerCoverage/tracing.ll @@ -26,6 +26,7 @@ entry: ; CHECK_PC: ret void ; CHECK_PC-NOT: call void @__sanitizer_cov_module_init +; 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 |