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 63b6276c07d9dc8b8eec3a0120c683aa99af718c..608e0e96dab52cf9ad7702a8652981aed556126e 100644 (file)
@@ -1,3 +1,8 @@
+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
index b25464e730ea39bad7e82797d7738c43495884f2..924a5a381643a6d5d29bdef9a5d543c1a2f4eaa4 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;