]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Create x.gcov file for binary w/o x.gcda file (PR
authorMartin Liska <mliska@suse.cz>
Thu, 3 Nov 2016 13:43:12 +0000 (14:43 +0100)
committerMartin Liska <marxin@gcc.gnu.org>
Thu, 3 Nov 2016 13:43:12 +0000 (13:43 +0000)
From-SVN: r241820

gcc/ChangeLog
gcc/gcov.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/gcov/gcov-16.C [new file with mode: 0644]
gcc/testsuite/lib/gcov.exp

index f1de931560da23ccbe957fb0f7b0967c26716e7b..9e2bd1de218f8889b6f998e3ee49f9a24a513401 100644 (file)
@@ -1,3 +1,12 @@
+2016-11-03  Martin Liska  <mliska@suse.cz>
+
+       Backport from mainline
+       2016-08-12  Martin Liska  <mliska@suse.cz>
+       Adam Fineman  <afineman@afineman.com>
+
+       * gcov.c (process_file): Create .gcov file when .gcda
+       file is missing.
+
 2016-11-03  Eric Botcazou  <ebotcazou@adacore.com>
 
        Backport from mainline
index 796b1b976127834d21eee4c722161245b63a8cb6..ea2dbf4315ccdf82bd781f1defae2b332f67ab49 100644 (file)
@@ -725,7 +725,7 @@ process_file (const char *file_name)
 
       fns = fn->next;
       fn->next = NULL;
-      if (fn->counts)
+      if (fn->counts || no_data_file)
        {
          unsigned src = fn->src;
          unsigned line = fn->line;
index c8357e517e725c02cb9bfaa5e3f424af3b547850..f6ff62f2f819f2800c7f6f0a535d44290adcb6e8 100644 (file)
@@ -1,3 +1,11 @@
+2016-11-03  Martin Liska  <mliska@suse.cz>
+
+       Backport from mainline
+       2016-08-12  Martin Liska  <mliska@suse.cz>
+
+       * g++.dg/gcov/gcov-16.C: New test.
+       * lib/gcov.exp: Support new argument for run-gcov function.
+
 2016-11-02  Will Schmidt  <will_schmidt@vnet.ibm.com>
 
        Backport from trunk
diff --git a/gcc/testsuite/g++.dg/gcov/gcov-16.C b/gcc/testsuite/g++.dg/gcov/gcov-16.C
new file mode 100644 (file)
index 0000000..f09d406
--- /dev/null
@@ -0,0 +1,10 @@
+// PR gcov-profile/64634
+// { dg-options "-fprofile-arcs -ftest-coverage" }
+// { dg-do run { target native } }
+
+int main()
+{
+  return 0;   /* count(#####) */
+}
+
+// { dg-final { run-gcov remove-gcda gcov-16.C } }
index 229a396155385c3728addd8da519310c042b25e5..5b2a04d2363ee41bce561d40b0676e8049d4e4a2 100644 (file)
 
 global GCOV
 
+#
+# clean-gcov-file -- delete a working file the compiler creates for gcov
+#
+# TESTCASE is the name of the test.
+# SUFFIX is file suffix
+
+proc clean-gcov-file { testcase suffix } {
+    set basename [file tail $testcase]
+    set base [file rootname $basename]
+    remote_file host delete $base.$suffix
+}
+
 #
 # clean-gcov -- delete the working files the compiler creates for gcov
 #
 # TESTCASE is the name of the test.
 #
 proc clean-gcov { testcase } {
-    set basename [file tail $testcase]
-    set base [file rootname $basename]
-    remote_file host delete $base.gcno $base.gcda \
-       $basename.gcov $base.h.gcov
+    clean-gcov-file $testcase "gcno"
+    clean-gcov-file $testcase "gcda"
+    clean-gcov-file $testcase "gcov"
+    clean-gcov-file $testcase "h.gcov"
 }
 
 #
@@ -305,6 +317,7 @@ proc run-gcov { args } {
     set gcov_verify_branches 0
     set gcov_verify_lines 1
     set gcov_verify_intermediate 0
+    set gcov_remove_gcda 0
     set xfailed 0
 
     foreach a $args {
@@ -317,6 +330,8 @@ proc run-gcov { args } {
          set gcov_verify_calls 0
          set gcov_verify_branches 0
          set gcov_verify_lines 0
+       } elseif { $a == "remove-gcda" } {
+         set gcov_remove_gcda 1
        } elseif { $gcov_args == "" } {
            set gcov_args $a
        } else {
@@ -332,6 +347,11 @@ proc run-gcov { args } {
     # Extract the test file name from the arguments.
     set testcase [lindex $gcov_args end]
 
+    if { $gcov_remove_gcda } {
+       verbose "Removing $testcase.gcda"
+       clean-gcov-file $testcase "gcda"
+    }
+
     verbose "Running $GCOV $testcase" 2
     set testcase [remote_download host $testcase]
     set result [remote_exec host $GCOV $gcov_args]