summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/profile/Inputs/instrprof-gcov-fork.c15
-rw-r--r--test/profile/Inputs/instrprof-gcov-fork.c.gcov23
-rw-r--r--test/profile/Posix/instrprof-gcov-fork.test12
3 files changed, 50 insertions, 0 deletions
diff --git a/test/profile/Inputs/instrprof-gcov-fork.c b/test/profile/Inputs/instrprof-gcov-fork.c
new file mode 100644
index 000000000..818c459c5
--- /dev/null
+++ b/test/profile/Inputs/instrprof-gcov-fork.c
@@ -0,0 +1,15 @@
+#include <unistd.h>
+
+void func1() {}
+void func2() {}
+
+int main(void)
+{
+ func1();
+
+ fork();
+
+ func2();
+
+ return 0;
+}
diff --git a/test/profile/Inputs/instrprof-gcov-fork.c.gcov b/test/profile/Inputs/instrprof-gcov-fork.c.gcov
new file mode 100644
index 000000000..9591f62ed
--- /dev/null
+++ b/test/profile/Inputs/instrprof-gcov-fork.c.gcov
@@ -0,0 +1,23 @@
+// CHECK: -: 0:Source:{{.*}}Inputs/instrprof-gcov-fork.c
+// CHECK-NEXT: -: 0:Graph:instrprof-gcov-fork.gcno
+// CHECK-NEXT: -: 0:Data:instrprof-gcov-fork.gcda
+// CHECK-NEXT: -: 0:Runs:1
+// CHECK-NEXT: -: 0:Programs:1
+// CHECK-NEXT: -: 1:#include <unistd.h>
+// CHECK-NEXT: -: 2:
+// CHECK-NEXT:function func1 called 1 returned 100% blocks executed 100%
+// CHECK-NEXT: 1: 3:void func1() {}
+// CHECK-NEXT:function func2 called 2 returned 100% blocks executed 100%
+// CHECK-NEXT: 2: 4:void func2() {}
+// CHECK-NEXT: -: 5:
+// CHECK-NEXT:function main called 1 returned 100% blocks executed 100%
+// CHECK-NEXT: -: 6:int main(void)
+// CHECK-NEXT: -: 7:{
+// CHECK-NEXT: 1: 8: func1();
+// CHECK-NEXT: -: 9:
+// CHECK-NEXT: 1: 10: fork();
+// CHECK-NEXT: -: 11:
+// CHECK-NEXT: 2: 12: func2();
+// CHECK-NEXT: -: 13:
+// CHECK-NEXT: 2: 14: return 0;
+// CHECK-NEXT: -: 15:}
diff --git a/test/profile/Posix/instrprof-gcov-fork.test b/test/profile/Posix/instrprof-gcov-fork.test
new file mode 100644
index 000000000..436d7e663
--- /dev/null
+++ b/test/profile/Posix/instrprof-gcov-fork.test
@@ -0,0 +1,12 @@
+XFAIL: *
+
+RUN: mkdir -p %t.d
+RUN: cd %t.d
+
+RUN: %clang --coverage -o %t %S/../Inputs/instrprof-gcov-fork.c
+RUN: test -f instrprof-gcov-fork.gcno
+
+RUN: rm -f instrprof-gcov-fork.gcda
+RUN: %run %t
+RUN: llvm-cov gcov -b -c instrprof-gcov-fork.gcda
+RUN: FileCheck --match-full-lines --strict-whitespace --input-file instrprof-gcov-fork.c.gcov %S/../Inputs/instrprof-gcov-fork.c.gcov