|
| 1 | +// RUN: %clangxx_profgen -std=c++17 -fuse-ld=lld -fcoverage-mapping -o %t %s |
| 2 | +// RUN: env LLVM_PROFILE_FILE=%t.profraw %run %t |
| 3 | +// RUN: llvm-profdata merge -o %t.profdata %t.profraw |
| 4 | +// RUN: llvm-cov show %t -instr-profile=%t.profdata 2>&1 | FileCheck %s |
| 5 | + |
| 6 | +void foo() { // CHECK: [[@LINE]]| 1|void foo() { |
| 7 | + bool cond1 = false; // CHECK-NEXT: [[@LINE]]| 1| bool cond1 = false; |
| 8 | + bool cond2 = true; // CHECK-NEXT: [[@LINE]]| 1| bool cond2 = true; |
| 9 | + if (cond1 && // CHECK-NEXT: [[@LINE]]| 1| if (cond1 && |
| 10 | + cond2) { // CHECK-NEXT: [[@LINE]]| 0| cond2) { |
| 11 | + } // CHECK-NEXT: [[@LINE]]| 0| } |
| 12 | +} // CHECK-NEXT: [[@LINE]]| 1|} |
| 13 | + |
| 14 | +void bar() { // CHECK: [[@LINE]]| 1|void bar() { |
| 15 | + bool cond1 = true; // CHECK-NEXT: [[@LINE]]| 1| bool cond1 = true; |
| 16 | + bool cond2 = false; // CHECK-NEXT: [[@LINE]]| 1| bool cond2 = false; |
| 17 | + if (cond1 && // CHECK-NEXT: [[@LINE]]| 1| if (cond1 && |
| 18 | + cond2) { // CHECK-NEXT: [[@LINE]]| 1| cond2) { |
| 19 | + } // CHECK-NEXT: [[@LINE]]| 0| } |
| 20 | +} // CHECK-NEXT: [[@LINE]]| 1|} |
| 21 | + |
| 22 | +void baz() { // CHECK: [[@LINE]]| 1|void baz() { |
| 23 | + bool cond1 = false; // CHECK-NEXT: [[@LINE]]| 1| bool cond1 = false; |
| 24 | + bool cond2 = true; // CHECK-NEXT: [[@LINE]]| 1| bool cond2 = true; |
| 25 | + if (cond1 // CHECK-NEXT: [[@LINE]]| 1| if (cond1 |
| 26 | + && // CHECK-NEXT: [[@LINE]]| 0| && |
| 27 | + cond2) { // CHECK-NEXT: [[@LINE]]| 0| cond2) { |
| 28 | + } // CHECK-NEXT: [[@LINE]]| 0| } |
| 29 | +} // CHECK-NEXT: [[@LINE]]| 1|} |
| 30 | + |
| 31 | +int main() { |
| 32 | + foo(); |
| 33 | + bar(); |
| 34 | + baz(); |
| 35 | + return 0; |
| 36 | +} |
0 commit comments