xref: /llvm-project/compiler-rt/test/profile/gcov-dump-and-remove.c (revision 93bb2f16e85d2d4c8d3ddadebd99fc0fe26d974b)
1 // XFAIL: aix
2 /// Test we close file handle on flush, so the .gcda file can be deleted on
3 /// Windows while the process is still running. In addition, test we create
4 /// a new .gcda on flush, so there is a file when the process exists.
5 // RUN: mkdir -p %t.d && cd %t.d
6 // RUN: %clang --coverage -o %t %s
7 // RUN: test -f gcov-dump-and-remove.gcno
8 
9 // RUN: rm -f gcov-dump-and-remove.gcda && %run %t
10 // RUN: llvm-cov gcov -t gcov-dump-and-remove.gcda | FileCheck %s
11 
12 extern void __gcov_dump(void);
13 extern void __gcov_reset(void);
14 extern int remove(const char *);   // CHECK:          -: [[#@LINE]]:extern int remove
15 int main(void) {                   // CHECK-NEXT:     1: [[#@LINE]]:
16   __gcov_dump();                   // CHECK-NEXT:     1: [[#@LINE]]:
17   __gcov_reset();                  // CHECK-NEXT:     1: [[#@LINE]]:
18   if (remove("gcov-dump-and-remove.gcda") != 0) // CHECK-NEXT:     1: [[#@LINE]]:
19     return 1;                      // CHECK-NEXT: #####: [[#@LINE]]: return 1;
20                                    // CHECK-NEXT:     -: [[#@LINE]]:
21   __gcov_dump();                   // CHECK-NEXT:     1: [[#@LINE]]:
22   __gcov_reset();                  // CHECK-NEXT:     1: [[#@LINE]]:
23   __gcov_dump();                   // CHECK-NEXT:     1: [[#@LINE]]:
24   if (remove("gcov-dump-and-remove.gcda") != 0) // CHECK-NEXT:     1: [[#@LINE]]:
25     return 1;                      // CHECK-NEXT: #####: [[#@LINE]]: return 1;
26 
27   return 0;
28 }
29