aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Pop <sebastian.pop@amd.com>2010-06-02 16:39:47 +0000
committerSebastian Pop <spop@gcc.gnu.org>2010-06-02 16:39:47 +0000
commitd6abd6d8bde894f946209e897495ef093d7dd792 (patch)
tree62bf01a6d9429070dae6e2ddd858ecae30dad4a6
parent718d3588b02c5fde3939e889c7586d71a99c4629 (diff)
downloadgcc-d6abd6d8bde894f946209e897495ef093d7dd792.zip
gcc-d6abd6d8bde894f946209e897495ef093d7dd792.tar.gz
gcc-d6abd6d8bde894f946209e897495ef093d7dd792.tar.bz2
Use smallest_mode_for_size for computing the precision types of new graphite IVs.
2010-06-02 Sebastian Pop <sebastian.pop@amd.com> * graphite-clast-to-gimple.c (gcc_type_for_interval): Use smallest_mode_for_size for computing the precision types of new graphite IVs. Do not call lang_hooks.types.type_for_size. From-SVN: r160165
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/graphite-clast-to-gimple.c12
2 files changed, 17 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index de6cb5b..915aa2d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2010-06-02 Sebastian Pop <sebastian.pop@amd.com>
+ * graphite-clast-to-gimple.c (gcc_type_for_interval): Use
+ smallest_mode_for_size for computing the precision types of new
+ graphite IVs. Do not call lang_hooks.types.type_for_size.
+
+2010-06-02 Sebastian Pop <sebastian.pop@amd.com>
+
* tree-if-conv.c (predicate_bbs): Do not reset the GIMPLE_DEBUG
information.
(remove_conditions_and_labels): Reset the GIMPLE_DEBUG information.
diff --git a/gcc/graphite-clast-to-gimple.c b/gcc/graphite-clast-to-gimple.c
index b0e1a94..3240c37 100644
--- a/gcc/graphite-clast-to-gimple.c
+++ b/gcc/graphite-clast-to-gimple.c
@@ -478,6 +478,7 @@ gcc_type_for_interval (mpz_t low, mpz_t up, tree old_type)
bool unsigned_p = true;
int precision, prec_up, prec_int;
tree type;
+ enum machine_mode mode;
gcc_assert (value_le (low, up));
@@ -490,7 +491,16 @@ gcc_type_for_interval (mpz_t low, mpz_t up, tree old_type)
prec_int = precision_for_interval (low, up);
precision = prec_up > prec_int ? prec_up : prec_int;
- type = lang_hooks.types.type_for_size (precision, unsigned_p);
+ if (precision > BITS_PER_WORD)
+ {
+ gloog_error = true;
+ return integer_type_node;
+ }
+
+ mode = smallest_mode_for_size (precision, MODE_INT);
+ precision = GET_MODE_PRECISION (mode);
+ type = build_nonstandard_integer_type (precision, unsigned_p);
+
if (!type)
{
gloog_error = true;