+2010-03-11 Sebastian Pop <sebastian.pop@amd.com>
+
+ * graphite-clast-to-gimple.c (my_long_long): Defined.
+ (gcc_type_for_cloog_iv): Use it instead of long_long_integer_type_node.
+ * graphite-sese-to-poly.c (my_long_long): Defined.
+ (scop_ivs_can_be_represented): Use it.
+
2010-03-10 Sebastian Pop <sebastian.pop@amd.com>
* doc/invoke.texi: Fix documentation of graphite-max-nb-scop-params,
/* Compute the type for the induction variable at LEVEL for the
statement PBB, based on the transformed schedule of PBB. OLD_TYPE
is the type of the old induction variable for that loop. */
+/* Java does not initialize long_long_integer_type_node. */
+#define my_long_long (long_long_integer_type_node ? long_long_integer_type_node : ssizetype)
+
+/* Given a CLOOG_IV, return the type that CLOOG_IV should have in GCC
+ land. The selected type is big enough to include the original loop
+ iteration variable, but signed to work with the subtractions CLooG
+ may have introduced. If such a type is not available, we fail.
static tree
compute_type_for_level_1 (poly_bb_p pbb, int level, tree old_type)
if (CLAST_STMT_IS_A (stmt, stmt_for))
return clast_get_body_of_loop (((struct clast_for *) stmt)->body);
- if (CLAST_STMT_IS_A (stmt, stmt_guard))
- return clast_get_body_of_loop (((struct clast_guard *) stmt)->then);
+ if (type_precision < TYPE_PRECISION (my_long_long))
+ return my_long_long;
if (CLAST_STMT_IS_A (stmt, stmt_block))
return clast_get_body_of_loop (((struct clast_block *) stmt)->body);
- gcc_unreachable ();
+ return my_long_long;
}
-/* Returns the type for the induction variable for the loop translated
- from STMT_FOR. */
+#undef my_long_long
+
+/* Returns the induction variable for the loop that gets translated to
+ STMT. */
static tree
gcc_type_for_iv_of_clast_loop (struct clast_for *stmt_for, int level,