diff options
author | Yuchen Wu <yuchenericwu@hotmail.com> | 2013-11-05 01:56:23 +0000 |
---|---|---|
committer | Yuchen Wu <yuchenericwu@hotmail.com> | 2013-11-05 01:56:23 +0000 |
commit | 07a59fbd3baed0b729f1437a6635ee1d8d463929 (patch) | |
tree | 4d5d36a1769ec54756ef26f55ef8997f5b40a89b | |
parent | d8acf0078cf363252727acff00f85ae8074f95b3 (diff) | |
download | external_llvm-07a59fbd3baed0b729f1437a6635ee1d8d463929.zip external_llvm-07a59fbd3baed0b729f1437a6635ee1d8d463929.tar.gz external_llvm-07a59fbd3baed0b729f1437a6635ee1d8d463929.tar.bz2 |
Added basic unit test for llvm-cov.
This test compares the output of llvm-cov against a coverage file
generated by gcov.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@194038 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | test/tools/llvm-cov/Inputs/README | 7 | ||||
-rw-r--r-- | test/tools/llvm-cov/Inputs/test.cpp | 77 | ||||
-rw-r--r-- | test/tools/llvm-cov/Inputs/test.cpp.gcov | 82 | ||||
-rw-r--r-- | test/tools/llvm-cov/Inputs/test.gcda | bin | 0 -> 857 bytes | |||
-rw-r--r-- | test/tools/llvm-cov/Inputs/test.gcno | bin | 0 -> 3113 bytes | |||
-rw-r--r-- | test/tools/llvm-cov/lit.local.cfg | 1 | ||||
-rw-r--r-- | test/tools/llvm-cov/llvm-cov.test | 2 |
7 files changed, 169 insertions, 0 deletions
diff --git a/test/tools/llvm-cov/Inputs/README b/test/tools/llvm-cov/Inputs/README new file mode 100644 index 0000000..35c489e --- /dev/null +++ b/test/tools/llvm-cov/Inputs/README @@ -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 the latest version of clang: + clang++ -g -ftest-coverage -fprofile-arcs test.cpp + +test.cpp.gcov was created by running gcov 4.2.1: + gcov test.cpp diff --git a/test/tools/llvm-cov/Inputs/test.cpp b/test/tools/llvm-cov/Inputs/test.cpp new file mode 100644 index 0000000..07bc3f2 --- /dev/null +++ b/test/tools/llvm-cov/Inputs/test.cpp @@ -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(); +} diff --git a/test/tools/llvm-cov/Inputs/test.cpp.gcov b/test/tools/llvm-cov/Inputs/test.cpp.gcov new file mode 100644 index 0000000..a3dacc2 --- /dev/null +++ b/test/tools/llvm-cov/Inputs/test.cpp.gcov @@ -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:} diff --git a/test/tools/llvm-cov/Inputs/test.gcda b/test/tools/llvm-cov/Inputs/test.gcda Binary files differnew file mode 100644 index 0000000..16fff43 --- /dev/null +++ b/test/tools/llvm-cov/Inputs/test.gcda diff --git a/test/tools/llvm-cov/Inputs/test.gcno b/test/tools/llvm-cov/Inputs/test.gcno Binary files differnew file mode 100644 index 0000000..9db4f59 --- /dev/null +++ b/test/tools/llvm-cov/Inputs/test.gcno diff --git a/test/tools/llvm-cov/lit.local.cfg b/test/tools/llvm-cov/lit.local.cfg new file mode 100644 index 0000000..df9b335 --- /dev/null +++ b/test/tools/llvm-cov/lit.local.cfg @@ -0,0 +1 @@ +config.suffixes = ['.test'] diff --git a/test/tools/llvm-cov/llvm-cov.test b/test/tools/llvm-cov/llvm-cov.test new file mode 100644 index 0000000..a404e61 --- /dev/null +++ b/test/tools/llvm-cov/llvm-cov.test @@ -0,0 +1,2 @@ +RUN: llvm-cov -gcno=test.gcno -gcda=test.gcda -C=%p/Inputs/ \ +RUN: | diff %p/Inputs/test.cpp.gcov - |