[compiler-rt] r362716 - [Profile]: Add runtime interface to specify file handle for profile data (Part-II)
Xinliang David Li via llvm-commits
llvm-commits at lists.llvm.org
Thu Jun 6 09:29:45 PDT 2019
Author: davidxl
Date: Thu Jun 6 09:29:44 2019
New Revision: 362716
URL: http://llvm.org/viewvc/llvm-project?rev=362716&view=rev
Log:
[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
Added:
compiler-rt/trunk/test/profile/instrprof-set-file-object-merging.c
compiler-rt/trunk/test/profile/instrprof-set-file-object.c
Added: compiler-rt/trunk/test/profile/instrprof-set-file-object-merging.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/instrprof-set-file-object-merging.c?rev=362716&view=auto
==============================================================================
--- compiler-rt/trunk/test/profile/instrprof-set-file-object-merging.c (added)
+++ compiler-rt/trunk/test/profile/instrprof-set-file-object-merging.c Thu Jun 6 09:29:44 2019
@@ -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|}
Added: compiler-rt/trunk/test/profile/instrprof-set-file-object.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/instrprof-set-file-object.c?rev=362716&view=auto
==============================================================================
--- compiler-rt/trunk/test/profile/instrprof-set-file-object.c (added)
+++ compiler-rt/trunk/test/profile/instrprof-set-file-object.c Thu Jun 6 09:29:44 2019
@@ -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|}
More information about the llvm-commits
mailing list