From patchwork Fri Jul 30 02:06:36 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [2/3] Generate in priority signed types for integer constants. Date: Thu, 29 Jul 2010 16:06:36 -0000 From: Sebastian Pop X-Patchwork-Id: 60328 Message-Id: <1280455597-2075-3-git-send-email-sebpop@gmail.com> To: gcc-patches@gcc.gnu.org Cc: gcc-graphite@googlegroups.com, Sebastian Pop 2010-07-29 Sebastian Pop * graphite-clast-to-gimple.c (gcc_type_for_interval): Generate in priority signed types. --- gcc/ChangeLog.graphite | 5 +++++ gcc/graphite-clast-to-gimple.c | 12 +++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog.graphite b/gcc/ChangeLog.graphite index 9898a8c..8278652 100644 --- a/gcc/ChangeLog.graphite +++ b/gcc/ChangeLog.graphite @@ -1,5 +1,10 @@ 2010-07-29 Sebastian Pop + * graphite-clast-to-gimple.c (gcc_type_for_interval): Generate in + priority signed types. + +2010-07-29 Sebastian Pop + * graphite-clast-to-gimple.c (max_signed_precision_type): Remove the call to lang_hooks.types.type_for_size. Call build_nonstandard_integer_type. diff --git a/gcc/graphite-clast-to-gimple.c b/gcc/graphite-clast-to-gimple.c index 534c88e..c642d19 100644 --- a/gcc/graphite-clast-to-gimple.c +++ b/gcc/graphite-clast-to-gimple.c @@ -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);