summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorXinliang David Li <davidxl@google.com>2019-06-06 16:29:44 +0000
committerXinliang David Li <davidxl@google.com>2019-06-06 16:29:44 +0000
commit758c08921da7282a74a3779d7d89940263f5a6af (patch)
tree567105a0498ada11330cb2e05b3408857b4981b7
parent5c0114058126757ce21e546997121afffc8119cd (diff)
downloadbcm5719-llvm-758c08921da7282a74a3779d7d89940263f5a6af.tar.gz
bcm5719-llvm-758c08921da7282a74a3779d7d89940263f5a6af.zip
[Profile]: Add runtime interface to specify file handle for profile data (Part-II)
Test cases Author: Sajjad Mirza Differential Revision: http://reviews.llvm.org/D62541 llvm-svn: 362716
-rw-r--r--compiler-rt/test/profile/instrprof-set-file-object-merging.c43
-rw-r--r--compiler-rt/test/profile/instrprof-set-file-object.c31
2 files changed, 74 insertions, 0 deletions
diff --git a/compiler-rt/test/profile/instrprof-set-file-object-merging.c b/compiler-rt/test/profile/instrprof-set-file-object-merging.c
new file mode 100644
index 00000000000..3f71a810356
--- /dev/null
+++ b/compiler-rt/test/profile/instrprof-set-file-object-merging.c
@@ -0,0 +1,43 @@
+// Test that the specified output merges the profiling data.
+// Run the program twice so that the counters accumulate.
+// RUN: %clang -fprofile-instr-generate -fcoverage-mapping -o %t %s
+// RUN: %run %t %t.merging.profraw
+// RUN: %run %t %t.merging.profraw
+// RUN: test -f %t.merging.profraw
+// RUN: llvm-profdata merge -o %t.merging.profdata %t.merging.profraw
+// RUN: llvm-cov show -instr-profile %t.merging.profdata %t | FileCheck %s --match-full-lines
+// RUN: rm %t.merging.profdata %t.merging.profraw
+#include <stdio.h>
+
+extern void __llvm_profile_set_file_object(FILE *, int);
+
+int main(int argc, const char *argv[]) {
+ if (argc < 2)
+ return 1;
+
+ FILE *F = fopen(argv[1], "r+b");
+ if (!F) {
+ // File might not exist, try opening with truncation
+ F = fopen(argv[1], "w+b");
+ }
+ __llvm_profile_set_file_object(F, 1);
+
+ return 0;
+}
+// CHECK: 10| |#include <stdio.h>
+// CHECK: 11| |
+// CHECK: 12| |extern void __llvm_profile_set_file_object(FILE *, int);
+// CHECK: 13| |
+// CHECK: 14| 2|int main(int argc, const char *argv[]) {
+// CHECK: 15| 2| if (argc < 2)
+// CHECK: 16| 0| return 1;
+// CHECK: 17| 2|
+// CHECK: 18| 2| FILE *F = fopen(argv[1], "r+b");
+// CHECK: 19| 2| if (!F) {
+// CHECK: 20| 1| // File might not exist, try opening with truncation
+// CHECK: 21| 1| F = fopen(argv[1], "w+b");
+// CHECK: 22| 1| }
+// CHECK: 23| 2| __llvm_profile_set_file_object(F, 1);
+// CHECK: 24| 2|
+// CHECK: 25| 2| return 0;
+// CHECK: 26| 2|}
diff --git a/compiler-rt/test/profile/instrprof-set-file-object.c b/compiler-rt/test/profile/instrprof-set-file-object.c
new file mode 100644
index 00000000000..813130007f0
--- /dev/null
+++ b/compiler-rt/test/profile/instrprof-set-file-object.c
@@ -0,0 +1,31 @@
+// Test that the specified output has profiling data.
+// RUN: %clang -fprofile-instr-generate -fcoverage-mapping -o %t %s
+// RUN: %run %t %t.file.profraw
+// RUN: test -f %t.file.profraw
+// RUN: llvm-profdata merge -o %t.file.profdata %t.file.profraw
+// RUN: llvm-cov show -instr-profile %t.file.profdata %t | FileCheck %s --match-full-lines
+// RUN: rm %t.file.profraw %t.file.profdata
+#include <stdio.h>
+
+extern void __llvm_profile_set_file_object(FILE *, int);
+
+int main(int argc, const char *argv[]) {
+ if (argc < 2)
+ return 1;
+
+ FILE *F = fopen(argv[1], "w+b");
+ __llvm_profile_set_file_object(F, 0);
+ return 0;
+}
+// CHECK: 8| |#include <stdio.h>
+// CHECK: 9| |
+// CHECK: 10| |extern void __llvm_profile_set_file_object(FILE *, int);
+// CHECK: 11| |
+// CHECK: 12| 1|int main(int argc, const char *argv[]) {
+// CHECK: 13| 1| if (argc < 2)
+// CHECK: 14| 0| return 1;
+// CHECK: 15| 1|
+// CHECK: 16| 1| FILE *F = fopen(argv[1], "w+b");
+// CHECK: 17| 1| __llvm_profile_set_file_object(F, 0);
+// CHECK: 18| 1| return 0;
+// CHECK: 19| 1|}
OpenPOWER on IntegriCloud