diff options
-rwxr-xr-x | llvm/test/tools/llvm-cov/Inputs/elf_binary_comdat | bin | 0 -> 2125219 bytes | |||
-rw-r--r-- | llvm/test/tools/llvm-cov/Inputs/elf_binary_comdat.profdata | bin | 0 -> 1040 bytes | |||
-rw-r--r-- | llvm/test/tools/llvm-cov/Inputs/instrprof-comdat.h | 19 | ||||
-rw-r--r-- | llvm/test/tools/llvm-cov/cov-comdat.test | 10 |
4 files changed, 29 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-cov/Inputs/elf_binary_comdat b/llvm/test/tools/llvm-cov/Inputs/elf_binary_comdat Binary files differnew file mode 100755 index 00000000000..319322d747f --- /dev/null +++ b/llvm/test/tools/llvm-cov/Inputs/elf_binary_comdat diff --git a/llvm/test/tools/llvm-cov/Inputs/elf_binary_comdat.profdata b/llvm/test/tools/llvm-cov/Inputs/elf_binary_comdat.profdata Binary files differnew file mode 100644 index 00000000000..85667041e2c --- /dev/null +++ b/llvm/test/tools/llvm-cov/Inputs/elf_binary_comdat.profdata diff --git a/llvm/test/tools/llvm-cov/Inputs/instrprof-comdat.h b/llvm/test/tools/llvm-cov/Inputs/instrprof-comdat.h new file mode 100644 index 00000000000..e1227167cd4 --- /dev/null +++ b/llvm/test/tools/llvm-cov/Inputs/instrprof-comdat.h @@ -0,0 +1,19 @@ +template <class T> class FOO { +public: + FOO() : t(0) {} + + T DoIt(T ti); + +private: + T t; +}; + +template <class T> T FOO<T>::DoIt(T ti) { // HEADER: 2| [[@LINE]]|template + for (T I = 0; I < ti; I++) { // HEADER: 22| [[@LINE]]| for (T + t += I; // HEADER: 20| [[@LINE]]| t += I; + if (I > ti / 2) // HEADER: 20| [[@LINE]]| if (I > ti + t -= 1; // HEADER: 8| [[@LINE]]| t -= 1; + } // HEADER: 10| [[@LINE]]| } + // HEADER: 1| [[@LINE]]| + return t; // HEADER: 1| [[@LINE]]| return t; +} diff --git a/llvm/test/tools/llvm-cov/cov-comdat.test b/llvm/test/tools/llvm-cov/cov-comdat.test new file mode 100644 index 00000000000..f44434c0c22 --- /dev/null +++ b/llvm/test/tools/llvm-cov/cov-comdat.test @@ -0,0 +1,10 @@ +REQUIRES: shell + +# The binary contains two (merged) covmap sections which +# have duplicate CovMapRecords from comdat (template instantation). +# This test makes sure the reader reads it properly. It also +# tests that the coverage data from different instantiations +# of the same template function are properly merged in show +# output. + +// RUN: llvm-cov show %S/Inputs/elf_binary_comdat -instr-profile %S/Inputs/elf_binary_comdat.profdata -filename-equivalence %S/Inputs/instrprof-comdat.h | FileCheck --check-prefix=HEADER %S/Inputs/instrprof-comdat.h |