Fix format_gcov to not print misleading values (PR gcov-profile/53915)
authorMartin Liska <mliska@suse.cz>
Fri, 28 Apr 2017 12:51:22 +0000 (14:51 +0200)
committerMartin Liska <marxin@gcc.gnu.org>
Fri, 28 Apr 2017 12:51:22 +0000 (12:51 +0000)
2017-04-28  Martin Liska  <mliska@suse.cz>

PR gcov-profile/53915
* gcov.c (format_gcov): Print 'NAN %' when top > bottom.

From-SVN: r247375

gcc/ChangeLog
gcc/gcov.c

index 63b6276..608e0e9 100644 (file)
@@ -1,5 +1,10 @@
 2017-04-28  Martin Liska  <mliska@suse.cz>
 
+       PR gcov-profile/53915
+       * gcov.c (format_gcov): Print 'NAN %' when top > bottom.
+
+2017-04-28  Martin Liska  <mliska@suse.cz>
+
        PR gcov-profile/79891
        * gcov.c (add_line_counts): Assign BBs to lines just if the BB
        is marked by compiler as living on a line.
index b25464e..924a5a3 100644 (file)
@@ -1946,6 +1946,13 @@ format_gcov (gcov_type top, gcov_type bottom, int dp)
 {
   static char buffer[20];
 
+  /* Handle invalid values that would result in a misleading value.  */
+  if (bottom != 0 && top > bottom && dp >= 0)
+    {
+      sprintf (buffer, "NAN %%");
+      return buffer;
+    }
+
   if (dp >= 0)
     {
       float ratio = bottom ? (float)top / bottom : 0;