Generate signed types whenever possible.

2011-07-21  Sebastian Pop  <sebastian.pop@amd.com>

	* graphite-clast-to-gimple.c (type_for_interval): Generate signed
	types whenever possible.

From-SVN: r176604
This commit is contained in:
Sebastian Pop 2011-07-21 22:57:49 +00:00 committed by Sebastian Pop
parent 3d9784cb6f
commit 84f2ffea18
2 changed files with 16 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2011-07-21 Sebastian Pop <sebastian.pop@amd.com>
* graphite-clast-to-gimple.c (type_for_interval): Generate signed
types whenever possible.
2011-07-21 Sebastian Pop <sebastian.pop@amd.com>
* graphite-clast-to-gimple.c (struct clast_name_index): Add lb

View File

@ -443,6 +443,7 @@ type_for_interval (mpz_t v1, mpz_t v2)
bool unsigned_p;
tree type;
enum machine_mode mode;
int wider_precision;
int precision = MAX (mpz_sizeinbase (v1, 2),
mpz_sizeinbase (v2, 2));
@ -458,8 +459,16 @@ type_for_interval (mpz_t v1, mpz_t v2)
unsigned_p = (mpz_sgn (v2) >= 0);
mode = smallest_mode_for_size (precision, MODE_INT);
precision = GET_MODE_PRECISION (mode);
type = build_nonstandard_integer_type (precision, unsigned_p);
wider_precision = GET_MODE_PRECISION (mode);
/* As we want to generate signed types as much as possible, try to
fit the interval [v1, v2] in a signed type. For example,
supposing that we have the interval [0, 100], instead of
generating unsigned char, we want to generate a signed char. */
if (unsigned_p && precision < wider_precision)
unsigned_p = false;
type = build_nonstandard_integer_type (wider_precision, unsigned_p);
if (!type)
{