[gcc/devel/ranger] value-prof: Fix abs uses in value-prof.c [PR93962]

Aldy Hernandez aldyh@gcc.gnu.org
Wed Jun 17 19:34:29 GMT 2020


https://gcc.gnu.org/g:60342fdbfb0630243d2b85d2ca45204ded990b17

commit 60342fdbfb0630243d2b85d2ca45204ded990b17
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Wed Mar 11 09:34:59 2020 +0100

    value-prof: Fix abs uses in value-prof.c [PR93962]
    
    Jeff has recently fixed dump_histogram_value to use std::abs instead of abs,
    because on FreeBSD apparently the ::abs isn't overloaded and only has
    int abs (int);
    Seems on Solaris /usr/include/iso/stdlib_iso.h abs has:
    int abs (int);
    long abs (long);
    overloads but already not
    long long abs (long long);
    and there is another abs use in get_nth_most_common_value, also on int64_t.
    The long long std::abs (long long); overload is there only in C++11 and we
    in GCC10 still support C++98.
    
    Martin has said that a counter should never be INT64_MIN, so IMHO it is
    better to use abs_hwi which will assert that.
    
    2020-03-11  Jakub Jelinek  <jakub@redhat.com>
    
            PR bootstrap/93962
            * value-prof.c (dump_histogram_value): Use abs_hwi instead of
            std::abs.
            (get_nth_most_common_value): Use abs_hwi instead of abs.

Diff:
---
 gcc/ChangeLog    | 5 +++++
 gcc/value-prof.c | 4 ++--
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b2d8ee1c830..e4b74dd1f06 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
 2020-03-11  Jakub Jelinek  <jakub@redhat.com>
 
+	PR bootstrap/93962
+	* value-prof.c (dump_histogram_value): Use abs_hwi instead of
+	std::abs.
+	(get_nth_most_common_value): Use abs_hwi instead of abs.
+
 	PR middle-end/94111
 	* dfp.c (decimal_to_binary): Only use decimal128ToString if from->cl
 	is rvc_normal, otherwise use real_to_decimal to print the number to
diff --git a/gcc/value-prof.c b/gcc/value-prof.c
index 585b909096f..45677be46b1 100644
--- a/gcc/value-prof.c
+++ b/gcc/value-prof.c
@@ -266,7 +266,7 @@ dump_histogram_value (FILE *dump_file, histogram_value hist)
 	  if (hist->hvalue.counters)
 	    {
 	      fprintf (dump_file, " all: %" PRId64 "%s, values: ",
-		       std::abs ((int64_t) hist->hvalue.counters[0]),
+		       (int64_t) abs_hwi (hist->hvalue.counters[0]),
 		       hist->hvalue.counters[0] < 0
 		       ? " (values missing)": "");
 	      for (unsigned i = 0; i < GCOV_TOPN_VALUES; i++)
@@ -743,7 +743,7 @@ get_nth_most_common_value (gimple *stmt, const char *counter_type,
   *count = 0;
   *value = 0;
 
-  gcov_type read_all = abs (hist->hvalue.counters[0]);
+  gcov_type read_all = abs_hwi (hist->hvalue.counters[0]);
 
   gcov_type v = hist->hvalue.counters[2 * n + 1];
   gcov_type c = hist->hvalue.counters[2 * n + 2];


More information about the Gcc-cvs mailing list