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