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:
parent
3d9784cb6f
commit
84f2ffea18
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue