summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/llvm-cov
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/tools/llvm-cov')
-rw-r--r--llvm/test/tools/llvm-cov/Inputs/multiple_objects/header.h29
-rw-r--r--llvm/test/tools/llvm-cov/Inputs/multiple_objects/merged.profdatabin0 -> 1488 bytes
-rw-r--r--llvm/test/tools/llvm-cov/Inputs/multiple_objects/use_1.cc14
-rw-r--r--llvm/test/tools/llvm-cov/Inputs/multiple_objects/use_1.covmappingbin0 -> 492 bytes
-rw-r--r--llvm/test/tools/llvm-cov/Inputs/multiple_objects/use_2.cc20
-rw-r--r--llvm/test/tools/llvm-cov/Inputs/multiple_objects/use_2.covmappingbin0 -> 384 bytes
-rw-r--r--llvm/test/tools/llvm-cov/multiple-objects.test17
7 files changed, 80 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-cov/Inputs/multiple_objects/header.h b/llvm/test/tools/llvm-cov/Inputs/multiple_objects/header.h
new file mode 100644
index 00000000000..03b37cd2dbb
--- /dev/null
+++ b/llvm/test/tools/llvm-cov/Inputs/multiple_objects/header.h
@@ -0,0 +1,29 @@
+static inline void f1() {
+#ifdef DEF
+ if (false && false)
+ return;
+
+ if (true || false || true)
+ return;
+
+ if (true && false)
+ return;
+#endif
+}
+
+template<typename T>
+void f2(T **x) {
+#ifdef DEF
+ if (false && false)
+ *x = nullptr;
+
+ if (true || false || true)
+ *x = nullptr;
+
+ if (true && false)
+ *x = nullptr;
+#endif
+}
+
+static inline void f3() {
+}
diff --git a/llvm/test/tools/llvm-cov/Inputs/multiple_objects/merged.profdata b/llvm/test/tools/llvm-cov/Inputs/multiple_objects/merged.profdata
new file mode 100644
index 00000000000..eeaa4eb45c8
--- /dev/null
+++ b/llvm/test/tools/llvm-cov/Inputs/multiple_objects/merged.profdata
Binary files differ
diff --git a/llvm/test/tools/llvm-cov/Inputs/multiple_objects/use_1.cc b/llvm/test/tools/llvm-cov/Inputs/multiple_objects/use_1.cc
new file mode 100644
index 00000000000..835db293f69
--- /dev/null
+++ b/llvm/test/tools/llvm-cov/Inputs/multiple_objects/use_1.cc
@@ -0,0 +1,14 @@
+#define DEF
+#include "header.h"
+
+int main() {
+ f1();
+
+ int *x;
+ f2(&x);
+
+ float *y;
+ f2(&y);
+
+ return 0;
+}
diff --git a/llvm/test/tools/llvm-cov/Inputs/multiple_objects/use_1.covmapping b/llvm/test/tools/llvm-cov/Inputs/multiple_objects/use_1.covmapping
new file mode 100644
index 00000000000..641bdb441c2
--- /dev/null
+++ b/llvm/test/tools/llvm-cov/Inputs/multiple_objects/use_1.covmapping
Binary files differ
diff --git a/llvm/test/tools/llvm-cov/Inputs/multiple_objects/use_2.cc b/llvm/test/tools/llvm-cov/Inputs/multiple_objects/use_2.cc
new file mode 100644
index 00000000000..52965599a3a
--- /dev/null
+++ b/llvm/test/tools/llvm-cov/Inputs/multiple_objects/use_2.cc
@@ -0,0 +1,20 @@
+#undef DEF
+#include "header.h"
+
+static int foo() {
+ return 0;
+}
+
+int main() {
+ f1();
+
+ long *x;
+ f2(&x);
+
+ double *y;
+ f2(&y);
+
+ f3();
+
+ return foo();
+}
diff --git a/llvm/test/tools/llvm-cov/Inputs/multiple_objects/use_2.covmapping b/llvm/test/tools/llvm-cov/Inputs/multiple_objects/use_2.covmapping
new file mode 100644
index 00000000000..f26caea7480
--- /dev/null
+++ b/llvm/test/tools/llvm-cov/Inputs/multiple_objects/use_2.covmapping
Binary files differ
diff --git a/llvm/test/tools/llvm-cov/multiple-objects.test b/llvm/test/tools/llvm-cov/multiple-objects.test
new file mode 100644
index 00000000000..f23a16d4cac
--- /dev/null
+++ b/llvm/test/tools/llvm-cov/multiple-objects.test
@@ -0,0 +1,17 @@
+RUN: llvm-cov report -instr-profile %S/Inputs/multiple_objects/merged.profdata \
+RUN: %S/Inputs/multiple_objects/use_2.covmapping \
+RUN: -object %S/Inputs/multiple_objects/use_1.covmapping | FileCheck -check-prefix=REPORT %s
+
+REPORT: Filename{{ +}}Regions{{ +}}Missed Regions{{ +}}Cover
+REPORT-NEXT: ---
+REPORT-NEXT: header.h{{ +}}25{{ +}}14{{ +}}44.00%
+
+Instructions for regenerating the test:
+
+clang -std=c++11 -mllvm -enable-name-compression=false -fprofile-instr-generate -fcoverage-mapping use_1.cc -o use_1
+clang -std=c++11 -mllvm -enable-name-compression=false -fprofile-instr-generate -fcoverage-mapping use_2.cc -o use_2
+LLVM_PROFILE_FILE="use_1.raw" ./use_1
+LLVM_PROFILE_FILE="use_2.raw" ./use_2
+llvm-profdata merge use_{1,2}.raw -o merged.profdata
+llvm-cov convert-for-testing ./use_1 -o ./use_1.covmapping
+llvm-cov convert-for-testing ./use_2 -o ./use_2.covmapping
OpenPOWER on IntegriCloud