mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
0495ee8bbd
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. llvm-svn: 303827
34 lines
744 B
LLVM
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()
|
|
|
|
}
|