Hi!

Doing low = -low; on signed HOST_WIDE_INT results in undefined behavior
if the low HWI is LONG_LONG_MIN.  Fixed thusly, ok for trunk?

2014-03-26  Jakub Jelinek  <ja...@redhat.com>

        PR other/59545
        * real.c (real_to_integer2): Change type of low to UHWI.

--- gcc/real.c.jj       2014-01-03 11:40:37.000000000 +0100
+++ gcc/real.c  2014-03-26 10:11:39.670655366 +0100
@@ -1377,7 +1377,8 @@ real_to_integer2 (HOST_WIDE_INT *plow, H
                  const REAL_VALUE_TYPE *r)
 {
   REAL_VALUE_TYPE t;
-  HOST_WIDE_INT low, high;
+  unsigned HOST_WIDE_INT low;
+  HOST_WIDE_INT high;
   int exp;
 
   switch (r->cl)

        Jakub

Reply via email to