From bc05e4e4c01b8a05e750b9aa9cad7df729b57938 Mon Sep 17 00:00:00 2001 From: Xinliang David Li Date: Thu, 21 Jan 2016 00:57:42 +0000 Subject: [Coverage] Add a test case for comdat 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. llvm-svn: 258376 --- llvm/test/tools/llvm-cov/Inputs/elf_binary_comdat | Bin 0 -> 2125247 bytes .../tools/llvm-cov/Inputs/elf_binary_comdat.profdata | Bin 0 -> 1040 bytes llvm/test/tools/llvm-cov/Inputs/instrprof-comdat.h | 19 +++++++++++++++++++ llvm/test/tools/llvm-cov/cov-comdat.test | 10 ++++++++++ 4 files changed, 29 insertions(+) create mode 100755 llvm/test/tools/llvm-cov/Inputs/elf_binary_comdat create mode 100644 llvm/test/tools/llvm-cov/Inputs/elf_binary_comdat.profdata create mode 100644 llvm/test/tools/llvm-cov/Inputs/instrprof-comdat.h create mode 100644 llvm/test/tools/llvm-cov/cov-comdat.test (limited to 'llvm') diff --git a/llvm/test/tools/llvm-cov/Inputs/elf_binary_comdat b/llvm/test/tools/llvm-cov/Inputs/elf_binary_comdat new file mode 100755 index 00000000000..b5ce4b5a35f Binary files /dev/null and b/llvm/test/tools/llvm-cov/Inputs/elf_binary_comdat differ diff --git a/llvm/test/tools/llvm-cov/Inputs/elf_binary_comdat.profdata b/llvm/test/tools/llvm-cov/Inputs/elf_binary_comdat.profdata new file mode 100644 index 00000000000..85667041e2c Binary files /dev/null and b/llvm/test/tools/llvm-cov/Inputs/elf_binary_comdat.profdata differ 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 FOO { +public: + FOO() : t(0) {} + + T DoIt(T ti); + +private: + T t; +}; + +template T FOO::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 -- cgit v1.2.3