forked from OSchip/llvm-project
[sanitizer-coverage] don't instrument a function if it's entry block ends with 'unreachable'
llvm-svn: 332072
This commit is contained in:
parent
a092e184cf
commit
a2759327fd
|
@ -480,6 +480,8 @@ bool SanitizerCoverageModule::runOnFunction(Function &F) {
|
||||||
if (F.getName() == "__local_stdio_printf_options" ||
|
if (F.getName() == "__local_stdio_printf_options" ||
|
||||||
F.getName() == "__local_stdio_scanf_options")
|
F.getName() == "__local_stdio_scanf_options")
|
||||||
return false;
|
return false;
|
||||||
|
if (isa<UnreachableInst>(F.getEntryBlock().getTerminator()))
|
||||||
|
return false;
|
||||||
// Don't instrument functions using SEH for now. Splitting basic blocks like
|
// Don't instrument functions using SEH for now. Splitting basic blocks like
|
||||||
// we do for coverage breaks WinEHPrepare.
|
// we do for coverage breaks WinEHPrepare.
|
||||||
// FIXME: Remove this when SEH no longer uses landingpad pattern matching.
|
// FIXME: Remove this when SEH no longer uses landingpad pattern matching.
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
; Checks that a function with no-return in the entry block is not instrumented.
|
||||||
|
; RUN: opt < %s -sancov -sanitizer-coverage-level=3 -sanitizer-coverage-trace-pc-guard -S | FileCheck %s
|
||||||
|
; CHECK-NOT: call void @__sanitizer_cov_trace_pc_guard
|
||||||
|
|
||||||
|
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||||
|
target triple = "x86_64-unknown-linux-gnu"
|
||||||
|
|
||||||
|
define dso_local void @_Z3foov() noinline nounwind optnone uwtable {
|
||||||
|
entry:
|
||||||
|
call void @abort() noreturn nounwind
|
||||||
|
unreachable
|
||||||
|
|
||||||
|
return: ; No predecessors!
|
||||||
|
ret void
|
||||||
|
}
|
||||||
|
|
||||||
|
declare dso_local void @abort() noreturn nounwind
|
Loading…
Reference in New Issue