aboutsummaryrefslogtreecommitdiff
path: root/test/tools/llvm-cov/range_based_for.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/tools/llvm-cov/range_based_for.cpp')
-rw-r--r--test/tools/llvm-cov/range_based_for.cpp29
1 files changed, 29 insertions, 0 deletions
diff --git a/test/tools/llvm-cov/range_based_for.cpp b/test/tools/llvm-cov/range_based_for.cpp
new file mode 100644
index 000000000000..3fdb2441399c
--- /dev/null
+++ b/test/tools/llvm-cov/range_based_for.cpp
@@ -0,0 +1,29 @@
+// Make sure that compiler-added local variables (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/range_based_for.gc* .
+
+// RUN: llvm-cov range_based_for.cpp | FileCheck %s --check-prefix=STDOUT
+// STDOUT: File 'range_based_for.cpp'
+// STDOUT: Lines executed:100.00% of 5
+// STDOUT: range_based_for.cpp:creating 'range_based_for.cpp.gcov'
+
+// RUN: FileCheck %s --check-prefix=GCOV < %t/range_based_for.cpp.gcov
+// GCOV: -: 0:Runs:1
+// GCOV: -: 0:Programs:1
+
+int main(int argc, const char *argv[]) { // GCOV: 1: [[@LINE]]:int main(
+ int V[] = {1, 2}; // GCOV: 1: [[@LINE]]: int V[]
+ for (int &I : V) { // GCOV: 10: [[@LINE]]: for (
+ } // GCOV: 2: [[@LINE]]: }
+ return 0; // GCOV: 1: [[@LINE]]: return
+} // GCOV: -: [[@LINE]]:}
+
+// llvm-cov doesn't work on big endian yet
+// XFAIL: powerpc64-, s390x, mips-, mips64-, sparc