[llvm] r194616 - Added basic unit test for llvm-cov.
Yuchen Wu
yuchenericwu at hotmail.com
Wed Nov 13 14:50:16 PST 2013
Author: ywu
Date: Wed Nov 13 16:50:15 2013
New Revision: 194616
URL: http://llvm.org/viewvc/llvm-project?rev=194616&view=rev
Log:
Added basic unit test for llvm-cov.
This test compares the output of llvm-cov against a coverage file
generated by gcov. Currently, llvm-cov does not work on certain
platforms (namely big-endian architectures such as PowerPC, among
others). These platforms are marked as XFAIL for now, but will be fixed
later.
Added:
llvm/trunk/test/tools/llvm-cov/Inputs/README
llvm/trunk/test/tools/llvm-cov/Inputs/test.cpp
llvm/trunk/test/tools/llvm-cov/Inputs/test.cpp.gcov
llvm/trunk/test/tools/llvm-cov/Inputs/test.gcda
llvm/trunk/test/tools/llvm-cov/Inputs/test.gcno
llvm/trunk/test/tools/llvm-cov/lit.local.cfg
llvm/trunk/test/tools/llvm-cov/llvm-cov.test
Added: llvm/trunk/test/tools/llvm-cov/Inputs/README
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-cov/Inputs/README?rev=194616&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-cov/Inputs/README (added)
+++ llvm/trunk/test/tools/llvm-cov/Inputs/README Wed Nov 13 16:50:15 2013
@@ -0,0 +1,7 @@
+These inputs were pre-generated to allow for easier testing of llvm-cov.
+
+test.gcno and test.gcda were create by running clang:
+ clang++ -g -ftest-coverage -fprofile-arcs test.cpp
+
+test.cpp.gcov was created by running gcov 4.2.1:
+ gcov test.cpp
Added: llvm/trunk/test/tools/llvm-cov/Inputs/test.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-cov/Inputs/test.cpp?rev=194616&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-cov/Inputs/test.cpp (added)
+++ llvm/trunk/test/tools/llvm-cov/Inputs/test.cpp Wed Nov 13 16:50:15 2013
@@ -0,0 +1,77 @@
+#include <cstdlib>
+
+bool on = false;
+int len = 42;
+double grid[10][10] = {0};
+const char * hello = "world";
+const char * world = "hello";
+
+struct A {
+ virtual void B();
+};
+
+void A::B() {}
+
+void useless() {}
+
+double more_useless() {
+ return 0;
+}
+
+int foo() {
+ on = true;
+ return 3;
+}
+
+int bar() {
+ len--;
+ return foo() + 45;
+}
+
+void assign(int ii, int jj) {
+ grid[ii][jj] = (ii+1) * (jj+1);
+}
+
+void initialize_grid() {
+ for (int ii = 0; ii < 2; ii++)
+ for (int jj = 0; jj < 2; jj++)
+ assign(ii, jj);
+}
+
+int main() {
+ initialize_grid();
+
+ int a = 2;
+ on = rand() % 2;
+ if (on) {
+ foo();
+ ++a;
+ } else {
+ bar();
+ a += rand();
+ }
+
+ for (int ii = 0; ii < 10; ++ii) {
+ switch (rand() % 5) {
+ case 0:
+ a += rand();
+ break;
+ case 1:
+ case 2:
+ a += rand() / rand();
+ break;
+ case 3:
+ a -= rand();
+ break;
+ default:
+ a = -1;
+ }
+ }
+
+ A thing;
+ for (uint64_t ii = 0; ii < 4294967296; ++ii)
+ thing.B();
+
+ return a + 8 + grid[2][3] + len;
+ return more_useless();
+}
Added: llvm/trunk/test/tools/llvm-cov/Inputs/test.cpp.gcov
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-cov/Inputs/test.cpp.gcov?rev=194616&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-cov/Inputs/test.cpp.gcov (added)
+++ llvm/trunk/test/tools/llvm-cov/Inputs/test.cpp.gcov Wed Nov 13 16:50:15 2013
@@ -0,0 +1,82 @@
+ -: 0:Source:test.cpp
+ -: 0:Graph:test.gcno
+ -: 0:Data:test.gcda
+ -: 0:Runs:2
+ -: 0:Programs:1
+ -: 1:#include <cstdlib>
+ -: 2:
+ -: 3:bool on = false;
+ -: 4:int len = 42;
+ -: 5:double grid[10][10] = {0};
+ -: 6:const char * hello = "world";
+ -: 7:const char * world = "hello";
+ -: 8:
+ 4: 9:struct A {
+ -: 10: virtual void B();
+ -: 11:};
+ -: 12:
+8589934592: 13:void A::B() {}
+ -: 14:
+ #####: 15:void useless() {}
+ -: 16:
+ -: 17:double more_useless() {
+ #####: 18: return 0;
+ -: 19:}
+ -: 20:
+ -: 21:int foo() {
+ 2: 22: on = true;
+ 2: 23: return 3;
+ -: 24:}
+ -: 25:
+ -: 26:int bar() {
+ #####: 27: len--;
+ #####: 28: return foo() + 45;
+ -: 29:}
+ -: 30:
+ 8: 31:void assign(int ii, int jj) {
+ 8: 32: grid[ii][jj] = (ii+1) * (jj+1);
+ 8: 33:}
+ -: 34:
+ -: 35:void initialize_grid() {
+ 12: 36: for (int ii = 0; ii < 2; ii++)
+ 24: 37: for (int jj = 0; jj < 2; jj++)
+ 12: 38: assign(ii, jj);
+ 2: 39:}
+ -: 40:
+ -: 41:int main() {
+ 2: 42: initialize_grid();
+ -: 43:
+ 2: 44: int a = 2;
+ 2: 45: on = rand() % 2;
+ 2: 46: if (on) {
+ 2: 47: foo();
+ 2: 48: ++a;
+ 2: 49: } else {
+ #####: 50: bar();
+ #####: 51: a += rand();
+ -: 52: }
+ -: 53:
+ 44: 54: for (int ii = 0; ii < 10; ++ii) {
+ 20: 55: switch (rand() % 5) {
+ -: 56: case 0:
+ 4: 57: a += rand();
+ 4: 58: break;
+ -: 59: case 1:
+ -: 60: case 2:
+ 2: 61: a += rand() / rand();
+ 2: 62: break;
+ -: 63: case 3:
+ 6: 64: a -= rand();
+ 6: 65: break;
+ -: 66: default:
+ 8: 67: a = -1;
+ 8: 68: }
+ 20: 69: }
+ -: 70:
+ 2: 71: A thing;
+17179869188: 72: for (uint64_t ii = 0; ii < 4294967296; ++ii)
+8589934592: 73: thing.B();
+ -: 74:
+ 2: 75: return a + 8 + grid[2][3] + len;
+ -: 76: return more_useless();
+ -: 77:}
Added: llvm/trunk/test/tools/llvm-cov/Inputs/test.gcda
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-cov/Inputs/test.gcda?rev=194616&view=auto
==============================================================================
Binary files llvm/trunk/test/tools/llvm-cov/Inputs/test.gcda (added) and llvm/trunk/test/tools/llvm-cov/Inputs/test.gcda Wed Nov 13 16:50:15 2013 differ
Added: llvm/trunk/test/tools/llvm-cov/Inputs/test.gcno
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-cov/Inputs/test.gcno?rev=194616&view=auto
==============================================================================
Binary files llvm/trunk/test/tools/llvm-cov/Inputs/test.gcno (added) and llvm/trunk/test/tools/llvm-cov/Inputs/test.gcno Wed Nov 13 16:50:15 2013 differ
Added: llvm/trunk/test/tools/llvm-cov/lit.local.cfg
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-cov/lit.local.cfg?rev=194616&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-cov/lit.local.cfg (added)
+++ llvm/trunk/test/tools/llvm-cov/lit.local.cfg Wed Nov 13 16:50:15 2013
@@ -0,0 +1 @@
+config.suffixes = ['.test']
Added: llvm/trunk/test/tools/llvm-cov/llvm-cov.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-cov/llvm-cov.test?rev=194616&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-cov/llvm-cov.test (added)
+++ llvm/trunk/test/tools/llvm-cov/llvm-cov.test Wed Nov 13 16:50:15 2013
@@ -0,0 +1,4 @@
+RUN: cd %p/Inputs && llvm-cov -gcno=test.gcno -gcda=test.gcda \
+RUN: | diff test.cpp.gcov -
+
+XFAIL: ppc64-linux-gnu, s390x-linux-gnu, arm
More information about the llvm-commits
mailing list