]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Generate in priority signed types for integer constants.
authorSebastian Pop <sebastian.pop@amd.com>
Thu, 30 Sep 2010 21:16:25 +0000 (21:16 +0000)
committerSebastian Pop <spop@gcc.gnu.org>
Thu, 30 Sep 2010 21:16:25 +0000 (21:16 +0000)
2010-07-29  Sebastian Pop  <sebastian.pop@amd.com>

* graphite-clast-to-gimple.c (gcc_type_for_interval): Generate in
priority signed types.

From-SVN: r164772

gcc/ChangeLog
gcc/ChangeLog.graphite
gcc/graphite-clast-to-gimple.c

index 20fa477420a34f842ad70ca2f02722edc1ca733c..51522af23299e0f60defae079d7830075b798ce3 100644 (file)
@@ -1,3 +1,8 @@
+2010-09-30  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-clast-to-gimple.c (gcc_type_for_interval): Generate in
+       priority signed types.
+
 2010-09-30  Sebastian Pop  <sebastian.pop@amd.com>
 
        * graphite-clast-to-gimple.c (max_signed_precision_type): Remove the call
index dd37363fdb318d597a057d1f39d490657657a4cc..b469a1297c80208f457d04c0e36c362e2b58e9b7 100644 (file)
@@ -1,3 +1,8 @@
+2010-07-29  Sebastian Pop  <sebastian.pop@amd.com>
+
+       * graphite-clast-to-gimple.c (gcc_type_for_interval): Generate in
+       priority signed types.
+
 2010-07-29  Sebastian Pop  <sebastian.pop@amd.com>
 
        * graphite-clast-to-gimple.c (max_signed_precision_type): Remove the call
index 73bd97144f029eb6c64cd95de6e6396daa08ee0c..88a72f1fea73df2eb1142a1705ddf7a1a1a92dc2 100644 (file)
@@ -459,9 +459,6 @@ gcc_type_for_interval (mpz_t low, mpz_t up)
 
   gcc_assert (mpz_cmp (low, up) <= 0);
 
-  if (mpz_sgn (low) < 0)
-    unsigned_p = false;
-
   prec_up = precision_for_value (up);
   prec_int = precision_for_interval (low, up);
   precision = MAX (prec_up, prec_int);
@@ -472,6 +469,15 @@ gcc_type_for_interval (mpz_t low, mpz_t up)
       return integer_type_node;
     }
 
+  if (mpz_sgn (low) <= 0)
+    unsigned_p = false;
+
+  else if (precision < BITS_PER_WORD)
+    {
+      unsigned_p = false;
+      precision++;
+    }
+
   mode = smallest_mode_for_size (precision, MODE_INT);
   precision = GET_MODE_PRECISION (mode);
   type = build_nonstandard_integer_type (precision, unsigned_p);