Files
llvm/test/Instrumentation/SanitizerCoverage/chains.ll
T
George Karpenkov f6cb509385 Fix coverage check for full post-dominator basic blocks.
Coverage instrumentation which does not instrument full post-dominators
and full-dominators may skip valid paths, as the reasoning for skipping
blocks may become circular.
This patch fixes that, by only skipping
full post-dominators with multiple predecessors, as such predecessors by
definition can not be full-dominators.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303827 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-25 01:41:46 +00:00

34 lines
744 B
LLVM

; RUN: opt < %s -sancov -sanitizer-coverage-level=4 -sanitizer-coverage-trace-pc -sanitizer-coverage-prune-blocks=1 -S | FileCheck %s
define i32 @blah(i32) #0 {
%2 = icmp sgt i32 %0, 1
br i1 %2, label %branch, label %exit
; CHECK: call void @__sanitizer_cov_trace_pc()
branch:
br label %pos2
; CHECK-LABEL: branch:
; CHECK-NOT: call void @__sanitizer_cov_trace_pc()
pos2:
br label %pos3
; CHECK-LABEL: pos2:
; CHECK-NOT: call void @__sanitizer_cov_trace_pc()
pos3:
br label %pos4
; CHECK-LABEL: pos3:
; CHECK-NOT: call void @__sanitizer_cov_trace_pc()
pos4:
ret i32 0
; CHECK-LABEL: pos4:
; CHECK: call void @__sanitizer_cov_trace_pc()
exit:
ret i32 0
; CHECK-LABEL: exit:
; CHECK: call void @__sanitizer_cov_trace_pc()
}