1; RUN: opt < %s -sancov -sanitizer-coverage-level=4 -sanitizer-coverage-trace-pc -sanitizer-coverage-prune-blocks=1 -S -enable-new-pm=0 | FileCheck %s 2; RUN: opt < %s -sancov -sanitizer-coverage-level=4 -sanitizer-coverage-trace-pc -sanitizer-coverage-prune-blocks=0 -S -enable-new-pm=0 | FileCheck %s --check-prefix=CHECK_NO_PRUNE 3; RUN: opt < %s -passes='module(sancov-module)' -sanitizer-coverage-level=4 -sanitizer-coverage-trace-pc -sanitizer-coverage-prune-blocks=1 -S | FileCheck %s 4; 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 5 6define 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 13left: 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 22left_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 30left_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 38left_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 46right: 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 55right_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 63right_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 71right_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 79finish: 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} 88