summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJustin Bogner <mail@justinbogner.com>2014-03-26 22:03:06 +0000
committerJustin Bogner <mail@justinbogner.com>2014-03-26 22:03:06 +0000
commit2a6873fdf3fa413cd7ef09b368fab64aa936d027 (patch)
tree8f4ce3706adbf461c1702131c289203bb8b0cf03 /test
parent70ea745ec8b91327874c0f8166d8471e4c377f37 (diff)
downloadllvm-2a6873fdf3fa413cd7ef09b368fab64aa936d027.tar.gz
llvm-2a6873fdf3fa413cd7ef09b368fab64aa936d027.tar.bz2
llvm-2a6873fdf3fa413cd7ef09b368fab64aa936d027.tar.xz
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
Diffstat (limited to 'test')
-rw-r--r--test/tools/llvm-cov/Inputs/copy_block_helper.gcdabin0 -> 432 bytes
-rw-r--r--test/tools/llvm-cov/Inputs/copy_block_helper.gcnobin0 -> 1140 bytes
-rw-r--r--test/tools/llvm-cov/copy_block_helper.m29
-rw-r--r--test/tools/llvm-cov/lit.local.cfg2
4 files changed, 30 insertions, 1 deletions
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
--- /dev/null
+++ b/test/tools/llvm-cov/Inputs/copy_block_helper.gcda
Binary files 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
--- /dev/null
+++ b/test/tools/llvm-cov/Inputs/copy_block_helper.gcno
Binary files 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']