Fix unsigned type overflow in memory report.
authorMartin Liska <mliska@suse.cz>
Tue, 29 Oct 2019 08:45:06 +0000 (09:45 +0100)
committerMartin Liska <marxin@gcc.gnu.org>
Tue, 29 Oct 2019 08:45:06 +0000 (08:45 +0000)
2019-10-29  Martin Liska  <mliska@suse.cz>

* ggc-common.c: One can't subtract unsigned types
in compare function.

From-SVN: r277560

gcc/ChangeLog
gcc/ggc-common.c

index 51097bba5441343622cdb04653b0c9869407746a..b6eeeaddc8ee0e8b9d44d58cdfbc4dee44df2b7d 100644 (file)
@@ -1,3 +1,8 @@
+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
index 37d3c5df9e1f54026bf3055700374fc25eee1699..48db4208599f60d7609ab5b8ef14e7fc12b6b91e 100644 (file)
@@ -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.  */