This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [wide-int] Fix aarch{32,64} builds


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);


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]