OSDN Git Service

ebcf3b276c9fb8d7b19af58a14519d5af6ff0e94
[android-x86/external-llvm.git] / test / Instrumentation / SanitizerCoverage / postdominator_check.ll
1 ; RUN: opt < %s -sancov -sanitizer-coverage-level=4 -sanitizer-coverage-trace-pc -sanitizer-coverage-prune-blocks=1 -S | FileCheck %s
2 ; RUN: opt < %s -sancov -sanitizer-coverage-level=4 -sanitizer-coverage-trace-pc -sanitizer-coverage-prune-blocks=0 -S | FileCheck %s --check-prefix=CHECK_NO_PRUNE
3 ; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)' -sanitizer-coverage-level=4 -sanitizer-coverage-trace-pc -sanitizer-coverage-prune-blocks=1 -S | FileCheck %s
4 ; RUN: opt < %s -passes='module(sancov-module),function(sancov-func)' -sanitizer-coverage-level=4 -sanitizer-coverage-trace-pc -sanitizer-coverage-prune-blocks=0 -S | FileCheck %s --check-prefix=CHECK_NO_PRUNE
5
6 define i32 @foo(i32) #0 {
7   %2 = icmp sgt i32 %0, 0
8   br i1 %2, label %left, label %right
9 ; CHECK: call void @__sanitizer_cov_trace_pc()
10
11 ; CHECK_NO_PRUNE: call void @__sanitizer_cov_trace_pc()
12
13 left:
14   %3 = icmp sgt i32 %0, 10
15   br i1 %3, label %left_left, label %left_right
16 ; CHECK-LABEL: left:
17 ; CHECK-NOT: call void @__sanitizer_cov_trace_pc()
18
19 ; CHECK_NO_PRUNE-LABEL: left:
20 ; CHECK_NO_PRUNE: call void @__sanitizer_cov_trace_pc()
21
22 left_left:
23   br label %left_join
24 ; CHECK-LABEL: left_left:
25 ; CHECK: call void @__sanitizer_cov_trace_pc()
26
27 ; CHECK_NO_PRUNE-LABEL: left_left:
28 ; CHECK_NO_PRUNE: call void @__sanitizer_cov_trace_pc()
29
30 left_right:
31   br label %left_join
32 ; CHECK-LABEL: left_right:
33 ; CHECK: call void @__sanitizer_cov_trace_pc()
34
35 ; CHECK_NO_PRUNE-LABEL: left_right:
36 ; CHECK_NO_PRUNE: call void @__sanitizer_cov_trace_pc()
37
38 left_join:
39   br label %finish
40 ; CHECK-LABEL: left_join:
41 ; CHECK-NOT: call void @__sanitizer_cov_trace_pc()
42
43 ; CHECK_NO_PRUNE-LABEL: left_join:
44 ; CHECK_NO_PRUNE: call void @__sanitizer_cov_trace_pc()
45
46 right:
47   %4 = icmp sgt i32 %0, 10
48   br i1 %4, label %right_left, label %right_right
49 ; CHECK-LABEL: right:
50 ; CHECK-NOT: call void @__sanitizer_cov_trace_pc()
51
52 ; CHECK_NO_PRUNE-LABEL: right:
53 ; CHECK_NO_PRUNE: call void @__sanitizer_cov_trace_pc()
54
55 right_left:
56   br label %right_join
57 ; CHECK-LABEL: right_left:
58 ; CHECK: call void @__sanitizer_cov_trace_pc()
59
60 ; CHECK_NO_PRUNE-LABEL: right_left:
61 ; CHECK_NO_PRUNE: call void @__sanitizer_cov_trace_pc()
62
63 right_right:
64   br label %right_join
65 ; CHECK-LABEL: right_right:
66 ; CHECK: call void @__sanitizer_cov_trace_pc()
67
68 ; CHECK_NO_PRUNE-LABEL: right_right:
69 ; CHECK_NO_PRUNE: call void @__sanitizer_cov_trace_pc()
70
71 right_join:
72   br label %finish
73 ; CHECK-LABEL: right_join:
74 ; CHECK-NOT: call void @__sanitizer_cov_trace_pc()
75
76 ; CHECK_NO_PRUNE-LABEL: right_join:
77 ; CHECK_NO_PRUNE: call void @__sanitizer_cov_trace_pc()
78
79 finish:
80   ret i32 %0
81 ; CHECK-LABEL: finish:
82 ; CHECK-NOT: call void @__sanitizer_cov_trace_pc()
83
84 ; CHECK_NO_PRUNE-LABEL: finish:
85 ; CHECK_NO_PRUNE: call void @__sanitizer_cov_trace_pc()
86
87 }