From 2a6873fdf3fa413cd7ef09b368fab64aa936d027 Mon Sep 17 00:00:00 2001 From: Justin Bogner Date: Wed, 26 Mar 2014 22:03:06 +0000 Subject: llvm-cov: Handle functions with no line number Functions may in an instrumented binary but not in the original source when they're inserted by the compiler or the runtime. These functions aren't meaningful to the user, so teach llvm-cov to skip over them instead of crashing. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204863 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/tools/llvm-cov/Inputs/copy_block_helper.gcda | Bin 0 -> 432 bytes test/tools/llvm-cov/Inputs/copy_block_helper.gcno | Bin 0 -> 1140 bytes test/tools/llvm-cov/copy_block_helper.m | 29 ++++++++++++++++++++++ test/tools/llvm-cov/lit.local.cfg | 2 +- 4 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 test/tools/llvm-cov/Inputs/copy_block_helper.gcda create mode 100644 test/tools/llvm-cov/Inputs/copy_block_helper.gcno create mode 100644 test/tools/llvm-cov/copy_block_helper.m (limited to 'test') diff --git a/test/tools/llvm-cov/Inputs/copy_block_helper.gcda b/test/tools/llvm-cov/Inputs/copy_block_helper.gcda new file mode 100644 index 0000000000..d7ff4696df Binary files /dev/null and b/test/tools/llvm-cov/Inputs/copy_block_helper.gcda differ diff --git a/test/tools/llvm-cov/Inputs/copy_block_helper.gcno b/test/tools/llvm-cov/Inputs/copy_block_helper.gcno new file mode 100644 index 0000000000..a9d1084064 Binary files /dev/null and b/test/tools/llvm-cov/Inputs/copy_block_helper.gcno differ diff --git a/test/tools/llvm-cov/copy_block_helper.m b/test/tools/llvm-cov/copy_block_helper.m new file mode 100644 index 0000000000..61a91c1e77 --- /dev/null +++ b/test/tools/llvm-cov/copy_block_helper.m @@ -0,0 +1,29 @@ +// Make sure that compiler-added functions (whose line number is zero) don't +// crash llvm-cov. + +// We need shell for cd +// REQUIRES: shell + +// RUN: rm -rf %t +// RUN: mkdir %t +// RUN: cd %t +// RUN: cp %s %p/Inputs/copy_block_helper.gc* . + +// RUN: llvm-cov copy_block_helper.m | FileCheck %s --check-prefix=STDOUT +// STDOUT: File 'copy_block_helper.m' +// STDOUT: Lines executed:100.00% of 5 +// STDOUT: copy_block_helper.m:creating 'copy_block_helper.m.gcov' + +// RUN: FileCheck %s --check-prefix=GCOV < %t/copy_block_helper.m.gcov +// GCOV: -: 0:Runs:1 +// GCOV: -: 0:Programs:1 + +id test_helper(id (^foo)(void)) { return foo(); } // GCOV: 1: [[@LINE]]:id +void test(id x) { // GCOV: -: [[@LINE]]:void test + test_helper(^{ // GCOV: 2: [[@LINE]]: test_helper + return x; // GCOV: 1: [[@LINE]]: return + }); // GCOV: -: [[@LINE]]: +} // GCOV: 1: [[@LINE]]:} + +// GCOV: 1: [[@LINE+1]]:int main +int main(int argc, const char *argv[]) { test(0); } diff --git a/test/tools/llvm-cov/lit.local.cfg b/test/tools/llvm-cov/lit.local.cfg index df9b335dd1..f738810475 100644 --- a/test/tools/llvm-cov/lit.local.cfg +++ b/test/tools/llvm-cov/lit.local.cfg @@ -1 +1 @@ -config.suffixes = ['.test'] +config.suffixes = ['.test', '.m'] -- cgit v1.2.3