summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/llvm-cov/deferred-region.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/tools/llvm-cov/deferred-region.cpp')
-rw-r--r--llvm/test/tools/llvm-cov/deferred-region.cpp79
1 files changed, 79 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-cov/deferred-region.cpp b/llvm/test/tools/llvm-cov/deferred-region.cpp
new file mode 100644
index 00000000000..3704d0ed515
--- /dev/null
+++ b/llvm/test/tools/llvm-cov/deferred-region.cpp
@@ -0,0 +1,79 @@
+// RUN: llvm-cov show %S/Inputs/deferred-regions.covmapping -instr-profile %S/Inputs/deferred-regions.profdata -show-line-counts-or-regions -dump -filename-equivalence %s 2>&1 | FileCheck %s
+
+void foo(int x) {
+ if (x == 0) {
+ return; // CHECK: [[@LINE]]|{{ +}}1|
+ }
+
+} // CHECK: [[@LINE]]|{{ +}}2|
+
+void bar() {
+ return;
+
+} // CHECK: [[@LINE]]|{{ +}}1|
+
+void for_loop() {
+ if (false)
+ return; // CHECK: [[@LINE]]|{{ +}}0|
+
+ for (int i = 0; i < 10; ++i) { // CHECK: [[@LINE]]|{{ +}}2|
+ if (i % 2 == 0)
+ continue; // CHECK: [[@LINE]]|{{ +}}1|
+
+ if (i % 5 == 0)
+ break; // CHECK: [[@LINE]]|{{ +}}0|
+
+ int x = i;
+ return; // CHECK: [[@LINE]]|{{ +}}1|
+
+ } // CHECK: [[@LINE]]|{{ +}}1|
+}
+
+struct Error {};
+
+void while_loop() {
+ if (false)
+ return; // CHECK: [[@LINE]]|{{ +}}0|
+
+ int x = 0;
+ while (++x < 10) { // CHECK: [[@LINE]]|{{ +}}3|
+ if (x == 1)
+ continue; // CHECK: [[@LINE]]|{{ +}}1|
+
+ while (++x < 4) { // CHECK: [[@LINE]]|{{ +}}1|
+ if (x == 3)
+ break; // CHECK: [[@LINE]]|{{ +}}1|
+ // CHECK: [[@LINE]]|{{ +}}0|
+ while (++x < 5) {} // CHECK: [[@LINE]]|{{ +}}0|
+ } // CHECK: [[@LINE]]|{{ +}}1|
+
+ if (x == 0)
+ throw Error(); // CHECK: [[@LINE]]|{{ +}}0|
+
+ while (++x < 9) { // CHECK: [[@LINE]]|{{ +}}6|
+ if (x == 0) // CHECK: [[@LINE]]|{{ +}}5|
+ break; // CHECK: [[@LINE]]|{{ +}}0|
+
+ }
+ }
+}
+
+void gotos() {
+ if (false)
+ goto out; // CHECK: [[@LINE]]|{{ +}}0|
+
+ return;
+
+out: // CHECK: [[@LINE]]|{{ +}}1|
+ return;
+}
+
+int main() {
+ foo(0);
+ foo(1);
+ bar();
+ for_loop();
+ while_loop();
+ gotos();
+ return 0;
+}
OpenPOWER on IntegriCloud