aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2019-10-29 09:45:06 +0100
committerMartin Liska <marxin@gcc.gnu.org>2019-10-29 08:45:06 +0000
commit50a2d3be7bf473c7590f77350fadf3471427ce09 (patch)
tree1535cbd21da96dd65bfd76e013d9b46a237393d2
parent3518424d4bf6a9654c7fea7f046ed839e888b1d6 (diff)
downloadgcc-50a2d3be7bf473c7590f77350fadf3471427ce09.zip
gcc-50a2d3be7bf473c7590f77350fadf3471427ce09.tar.gz
gcc-50a2d3be7bf473c7590f77350fadf3471427ce09.tar.bz2
Fix unsigned type overflow in memory report.
2019-10-29 Martin Liska <mliska@suse.cz> * ggc-common.c: One can't subtract unsigned types in compare function. From-SVN: r277560
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/ggc-common.c9
2 files changed, 11 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 51097bb..b6eeead 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2019-10-29 Martin Liska <mliska@suse.cz>
+ * ggc-common.c: One can't subtract unsigned types
+ in compare function.
+
+2019-10-29 Martin Liska <mliska@suse.cz>
+
* cgraphunit.c (symbol_table::compile): Pass
title as dump_memory_report argument.
* toplev.c (dump_memory_report): New argument.
diff --git a/gcc/ggc-common.c b/gcc/ggc-common.c
index 37d3c5d..48db420 100644
--- a/gcc/ggc-common.c
+++ b/gcc/ggc-common.c
@@ -928,10 +928,13 @@ public:
static int
compare (const void *first, const void *second)
{
- const mem_pair_t f = *(const mem_pair_t *)first;
- const mem_pair_t s = *(const mem_pair_t *)second;
+ const mem_pair_t mem1 = *(const mem_pair_t *) first;
+ const mem_pair_t mem2 = *(const mem_pair_t *) second;
- return s.second->get_balance () - f.second->get_balance ();
+ size_t balance1 = mem1.second->get_balance ();
+ size_t balance2 = mem2.second->get_balance ();
+
+ return balance1 == balance2 ? 0 : (balance1 < balance2 ? 1 : -1);
}
/* Dump header with NAME. */