I always like patches that change host dependencies into more general code.

ok from my perspective.

kenny

On 11/02/2013 06:13 AM, Richard Sandiford wrote:
I decided to lump these together since the problems were the same.
There were some typos in the real_to_integer invocation, while changing:

        /* There must be no padding.  */
        if (!host_integerp (TYPE_SIZE (type), 1)
            || (tree_low_cst (TYPE_SIZE (type), 1)
                != count * GET_MODE_BITSIZE (*modep)))
          return -1;

to:

        if (!tree_fits_uhwi_p (TYPE_SIZE (type))
            || (tree_to_uhwi (TYPE_SIZE (type))
                != count * GET_MODE_BITSIZE (*modep)))
          return -1;

introduced a signed/unsigned warning.

Tested on aarch64-linux-gnueabi & arm-linux-gnueabi and applied as
obvious.

Thanks,
Richard


Index: gcc/config/aarch64/aarch64.c
===================================================================
--- gcc/config/aarch64/aarch64.c        (revision 204311)
+++ gcc/config/aarch64/aarch64.c        (working copy)
@@ -6030,9 +6030,7 @@
                      - tree_to_uhwi (TYPE_MIN_VALUE (index)));
/* There must be no padding. */
-       if (!tree_fits_uhwi_p (TYPE_SIZE (type))
-           || (tree_to_uhwi (TYPE_SIZE (type))
-               != count * GET_MODE_BITSIZE (*modep)))
+       if (wi::ne_p (TYPE_SIZE (type), count * GET_MODE_BITSIZE (*modep)))
          return -1;
return count;
@@ -6060,9 +6058,7 @@
          }
/* There must be no padding. */
-       if (!tree_fits_uhwi_p (TYPE_SIZE (type))
-           || (tree_to_uhwi (TYPE_SIZE (type))
-               != count * GET_MODE_BITSIZE (*modep)))
+       if (wi::ne_p (TYPE_SIZE (type), count * GET_MODE_BITSIZE (*modep)))
          return -1;
return count;
@@ -6092,9 +6088,7 @@
          }
/* There must be no padding. */
-       if (!tree_fits_uhwi_p (TYPE_SIZE (type))
-           || (tree_to_uhwi (TYPE_SIZE (type))
-               != count * GET_MODE_BITSIZE (*modep)))
+       if (wi::ne_p (TYPE_SIZE (type), count * GET_MODE_BITSIZE (*modep)))
          return -1;
return count;
@@ -7433,7 +7427,7 @@
    int exponent;
    unsigned HOST_WIDE_INT mantissa, mask;
    REAL_VALUE_TYPE r, m;
-  bool &fail
+  bool fail;
if (!CONST_DOUBLE_P (x))
      return false;
@@ -7457,7 +7451,7 @@
       WARNING: If we ever have a representation using more than 2 * H_W_I - 1
       bits for the mantissa, this can fail (low bits will be lost).  */
    real_ldexp (&m, &r, point_pos - exponent);
-  w = real_to_integer (m, &fail, HOST_BITS_PER_WIDE_INT * 2);
+  wide_int w = real_to_integer (&m, &fail, HOST_BITS_PER_WIDE_INT * 2);
/* If the low part of the mantissa has bits set we cannot represent
       the value.  */
Index: gcc/config/arm/arm.c
===================================================================
--- gcc/config/arm/arm.c        (revision 204311)
+++ gcc/config/arm/arm.c        (working copy)
@@ -4678,9 +4678,7 @@
                      - tree_to_uhwi (TYPE_MIN_VALUE (index)));
/* There must be no padding. */
-       if (!tree_fits_uhwi_p (TYPE_SIZE (type))
-           || (tree_to_uhwi (TYPE_SIZE (type))
-               != count * GET_MODE_BITSIZE (*modep)))
+       if (wi::ne_p (TYPE_SIZE (type), count * GET_MODE_BITSIZE (*modep)))
          return -1;
return count;
@@ -4708,9 +4706,7 @@
          }
/* There must be no padding. */
-       if (!tree_fits_uhwi_p (TYPE_SIZE (type))
-           || (tree_to_uhwi (TYPE_SIZE (type))
-               != count * GET_MODE_BITSIZE (*modep)))
+       if (wi::ne_p (TYPE_SIZE (type), count * GET_MODE_BITSIZE (*modep)))
          return -1;
return count;
@@ -4740,9 +4736,7 @@
          }
/* There must be no padding. */
-       if (!tree_fits_uhwi_p (TYPE_SIZE (type))
-           || (tree_to_uhwi (TYPE_SIZE (type))
-               != count * GET_MODE_BITSIZE (*modep)))
+       if (wi::ne_p (TYPE_SIZE (type), count * GET_MODE_BITSIZE (*modep)))
          return -1;
return count;
@@ -11299,7 +11293,7 @@
       WARNING: If there's ever a VFP version which uses more than 2 * H_W_I - 1
       bits for the mantissa, this may fail (low bits would be lost).  */
    real_ldexp (&m, &r, point_pos - exponent);
-  wide_int w = real_to_integer (m, &fail, HOST_BITS_PER_WIDE_INT * 2);
+  wide_int w = real_to_integer (&m, &fail, HOST_BITS_PER_WIDE_INT * 2);
    mantissa = w.elt (0);
    mant_hi = w.elt (1);

Reply via email to