forked from OSchip/llvm-project
[sancov] save entry block from pruning (it is always full dominator)
llvm-svn: 265168
This commit is contained in:
parent
d3e3d48cb9
commit
01c0f8d8a3
|
@ -342,9 +342,9 @@ static bool isFullPostDominator(const BasicBlock *BB,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool shouldInstrumentBlock(const BasicBlock *BB, const DominatorTree *DT,
|
static bool shouldInstrumentBlock(const Function& F, const BasicBlock *BB, const DominatorTree *DT,
|
||||||
const PostDominatorTree *PDT) {
|
const PostDominatorTree *PDT) {
|
||||||
if (!ClPruneBlocks)
|
if (!ClPruneBlocks || &F.getEntryBlock() == BB)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return !(isFullDominator(BB, DT) || isFullPostDominator(BB, PDT));
|
return !(isFullDominator(BB, DT) || isFullPostDominator(BB, PDT));
|
||||||
|
@ -374,7 +374,7 @@ bool SanitizerCoverageModule::runOnFunction(Function &F) {
|
||||||
&getAnalysis<PostDominatorTreeWrapperPass>(F).getPostDomTree();
|
&getAnalysis<PostDominatorTreeWrapperPass>(F).getPostDomTree();
|
||||||
|
|
||||||
for (auto &BB : F) {
|
for (auto &BB : F) {
|
||||||
if (shouldInstrumentBlock(&BB, DT, PDT))
|
if (shouldInstrumentBlock(F, &BB, DT, PDT))
|
||||||
BlocksToInstrument.push_back(&BB);
|
BlocksToInstrument.push_back(&BB);
|
||||||
for (auto &Inst : BB) {
|
for (auto &Inst : BB) {
|
||||||
if (Options.IndirectCalls) {
|
if (Options.IndirectCalls) {
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
; RUN: -S | FileCheck %s --check-prefix=CHECK2
|
; RUN: -S | FileCheck %s --check-prefix=CHECK2
|
||||||
; RUN: opt < %s -sancov -sanitizer-coverage-level=2 -sanitizer-coverage-block-threshold=1 \
|
; RUN: opt < %s -sancov -sanitizer-coverage-level=2 -sanitizer-coverage-block-threshold=1 \
|
||||||
; RUN: -S | FileCheck %s --check-prefix=CHECK_WITH_CHECK
|
; RUN: -S | FileCheck %s --check-prefix=CHECK_WITH_CHECK
|
||||||
; RUN: opt < %s -sancov -sanitizer-coverage-level=2 -sanitizer-coverage-prune-blocks=1 -S | FileCheck %s --check-prefix=CHECKPRUNE
|
; RUN: opt < %s -sancov -sanitizer-coverage-level=3 -sanitizer-coverage-prune-blocks=1 -S | FileCheck %s --check-prefix=CHECKPRUNE
|
||||||
|
|
||||||
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
|
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
|
||||||
target triple = "x86_64-unknown-linux-gnu"
|
target triple = "x86_64-unknown-linux-gnu"
|
||||||
|
@ -138,8 +138,7 @@ entry:
|
||||||
|
|
||||||
; CHECKPRUNE-LABEL: define void @foo
|
; CHECKPRUNE-LABEL: define void @foo
|
||||||
; CHECKPRUNE: call void @__sanitizer_cov
|
; CHECKPRUNE: call void @__sanitizer_cov
|
||||||
; CHECKPRUNE: call void asm sideeffect "", ""()
|
|
||||||
; CHECKPRUNE: call void @__sanitizer_cov
|
; CHECKPRUNE: call void @__sanitizer_cov
|
||||||
; CHECKPRUNE: call void asm sideeffect "", ""()
|
; CHECKPRUNE: call void @__sanitizer_cov
|
||||||
; CHECKPRUNE-NOT: call void @__sanitizer_cov
|
; CHECKPRUNE-NOT: call void @__sanitizer_cov
|
||||||
; CHECKPRUNE: ret void
|
; CHECKPRUNE: ret void
|
||||||
|
|
Loading…
Reference in New Issue