forked from OSchip/llvm-project
[SanitizerCoverage] Don't add instrumentation to unreachable blocks.
llvm-svn: 241127
This commit is contained in:
parent
3e32a4e717
commit
342b1e8053
|
@ -375,6 +375,13 @@ void SanitizerCoverageModule::SetNoSanitizeMetadata(Instruction *I) {
|
|||
|
||||
void SanitizerCoverageModule::InjectCoverageAtBlock(Function &F, BasicBlock &BB,
|
||||
bool UseCalls) {
|
||||
// Don't insert coverage for unreachable blocks: we will never call
|
||||
// __sanitizer_cov() for them, so counting them in
|
||||
// NumberOfInstrumentedBlocks() might complicate calculation of code coverage
|
||||
// percentage. Also, unreachable instructions frequently have no debug
|
||||
// locations.
|
||||
if (isa<UnreachableInst>(BB.getTerminator()))
|
||||
return;
|
||||
BasicBlock::iterator IP = BB.getFirstInsertionPt(), BE = BB.end();
|
||||
// Skip static allocas at the top of the entry block so they don't become
|
||||
// dynamic when we split the block. If we used our optimized stack layout,
|
||||
|
|
|
@ -119,3 +119,12 @@ entry:
|
|||
; CHECK4: call void @__sanitizer_cov_indir_call16({{.*}},[[CACHE:.*]])
|
||||
; CHECK4-NOT: call void @__sanitizer_cov_indir_call16({{.*}},[[CACHE]])
|
||||
; CHECK4: ret void
|
||||
|
||||
define void @call_unreachable() uwtable sanitize_address {
|
||||
entry:
|
||||
unreachable
|
||||
}
|
||||
|
||||
; CHECK4-LABEL: define void @call_unreachable
|
||||
; CHECK4-NOT: __sanitizer_cov
|
||||
; CHECK4: unreachable
|
||||
|
|
Loading…
Reference in New Issue