Index: test/profile/Inputs/instrprof-gcov-execlp.c =================================================================== --- test/profile/Inputs/instrprof-gcov-execlp.c +++ test/profile/Inputs/instrprof-gcov-execlp.c @@ -0,0 +1,15 @@ +#include + +void func1() {} +void func2() {} + +int main(void) +{ + func1(); + + execlp("ls", "-l", "-h", (char*)0); + + func2(); + + return 0; +} Index: test/profile/Inputs/instrprof-gcov-execlp.c.gcov =================================================================== --- test/profile/Inputs/instrprof-gcov-execlp.c.gcov +++ test/profile/Inputs/instrprof-gcov-execlp.c.gcov @@ -0,0 +1,23 @@ +//CHECK: -: 0:Source:{{.*}}Inputs/instrprof-gcov-execlp.c +//CHECK-NEXT: -: 0:Graph:instrprof-gcov-execlp.gcno +//CHECK-NEXT: -: 0:Data:instrprof-gcov-execlp.gcda +//CHECK-NEXT: -: 0:Runs:1 +//CHECK-NEXT: -: 0:Programs:1 +//CHECK-NEXT: -: 1:#include +//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 0 returned 0% blocks executed 0% +//CHECK-NEXT: #####: 4:void func2() {} +//CHECK-NEXT: -: 5: +//CHECK-NEXT:function main called 1 returned 0% blocks executed 33% +//CHECK-NEXT: 1: 6:int main(void) +//CHECK-NEXT: -: 7:{ +//CHECK-NEXT: 1: 8: func1(); +//CHECK-NEXT: -: 9: +//CHECK-NEXT: 1: 10: execlp("ls", "-l", "-h", (char*)0); +//CHECK-NEXT: -: 11: +//CHECK-NEXT: #####: 12: func2(); +//CHECK-NEXT: -: 13: +//CHECK-NEXT: #####: 14: return 0; +//CHECK-NEXT: -: 15:} Index: test/profile/Inputs/instrprof-gcov-execvp.c =================================================================== --- test/profile/Inputs/instrprof-gcov-execvp.c +++ test/profile/Inputs/instrprof-gcov-execvp.c @@ -0,0 +1,17 @@ +#include + +void func1() {} +void func2() {} + +int main(void) +{ + char *const args[] = {"-l", "-h", (char*)0}; + + func1(); + + execvp("ls", args); + + func2(); + + return 0; +} Index: test/profile/Inputs/instrprof-gcov-execvp.c.gcov =================================================================== --- test/profile/Inputs/instrprof-gcov-execvp.c.gcov +++ test/profile/Inputs/instrprof-gcov-execvp.c.gcov @@ -0,0 +1,25 @@ +//CHECK: -: 0:Source:{{.*}}Inputs/instrprof-gcov-execvp.c +//CHECK-NEXT: -: 0:Graph:instrprof-gcov-execvp.gcno +//CHECK-NEXT: -: 0:Data:instrprof-gcov-execvp.gcda +//CHECK-NEXT: -: 0:Runs:1 +//CHECK-NEXT: -: 0:Programs:1 +//CHECK-NEXT: -: 1:#include +//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 0 returned 0% blocks executed 0% +//CHECK-NEXT: #####: 4:void func2() {} +//CHECK-NEXT: -: 5: +//CHECK-NEXT:function main called 1 returned 0% blocks executed 33% +//CHECK-NEXT: 1: 6:int main(void) +//CHECK-NEXT: -: 7:{ +//CHECK-NEXT: 1: 8: char *const args[] = {"-l", "-h", (char*)0}; +//CHECK-NEXT: -: 9: +//CHECK-NEXT: 1: 10: func1(); +//CHECK-NEXT: -: 11: +//CHECK-NEXT: 1: 12: execvp("ls", args); +//CHECK-NEXT: -: 13: +//CHECK-NEXT: #####: 14: func2(); +//CHECK-NEXT: -: 15: +//CHECK-NEXT: #####: 16: return 0; +//CHECK-NEXT: -: 17:} Index: test/profile/Inputs/instrprof-gcov-fork.c.gcov =================================================================== --- test/profile/Inputs/instrprof-gcov-fork.c.gcov +++ test/profile/Inputs/instrprof-gcov-fork.c.gcov @@ -10,8 +10,8 @@ // 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:function main called 1 returned 200% blocks executed 100% +// CHECK-NEXT: 1: 6:int main(void) // CHECK-NEXT: -: 7:{ // CHECK-NEXT: 1: 8: func1(); // CHECK-NEXT: -: 9: Index: test/profile/Posix/instrprof-gcov-execlp.test =================================================================== --- test/profile/Posix/instrprof-gcov-execlp.test +++ test/profile/Posix/instrprof-gcov-execlp.test @@ -0,0 +1,10 @@ +RUN: mkdir -p %t.d +RUN: cd %t.d + +RUN: %clang --coverage -o %t %S/../Inputs/instrprof-gcov-execlp.c +RUN: test -f instrprof-gcov-execlp.gcno + +RUN: rm -f instrprof-gcov-execlp.gcda +RUN: %run %t +RUN: llvm-cov gcov -b -c instrprof-gcov-execlp.gcda +RUN: FileCheck --match-full-lines --strict-whitespace --input-file instrprof-gcov-execlp.c.gcov %S/../Inputs/instrprof-gcov-execlp.c.gcov Index: test/profile/Posix/instrprof-gcov-execvp.test =================================================================== --- test/profile/Posix/instrprof-gcov-execvp.test +++ test/profile/Posix/instrprof-gcov-execvp.test @@ -0,0 +1,10 @@ +RUN: mkdir -p %t.d +RUN: cd %t.d + +RUN: %clang --coverage -o %t %S/../Inputs/instrprof-gcov-execvp.c +RUN: test -f instrprof-gcov-execvp.gcno + +RUN: rm -f instrprof-gcov-execvp.gcda +RUN: %run %t +RUN: llvm-cov gcov -b -c instrprof-gcov-execvp.gcda +RUN: FileCheck --match-full-lines --strict-whitespace --input-file instrprof-gcov-execvp.c.gcov %S/../Inputs/instrprof-gcov-execvp.c.gcov Index: test/profile/Posix/instrprof-gcov-fork.test =================================================================== --- test/profile/Posix/instrprof-gcov-fork.test +++ test/profile/Posix/instrprof-gcov-fork.test @@ -1,5 +1,3 @@ -XFAIL: * - RUN: mkdir -p %t.d RUN: cd %t.d