Commit 248081bc by Sebastian Pop Committed by Sebastian Pop

Use ssizetype when long_long_integer_type_node is NULL.

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.

From-SVN: r157438
parent d97c90ae
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> 2010-03-10 Sebastian Pop <sebastian.pop@amd.com>
* doc/invoke.texi: Fix documentation of graphite-max-nb-scop-params, * doc/invoke.texi: Fix documentation of graphite-max-nb-scop-params,
......
...@@ -547,6 +547,9 @@ clast_get_body_of_loop (struct clast_stmt *stmt) ...@@ -547,6 +547,9 @@ clast_get_body_of_loop (struct clast_stmt *stmt)
gcc_unreachable (); gcc_unreachable ();
} }
/* 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 /* 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 land. The selected type is big enough to include the original loop
iteration variable, but signed to work with the subtractions CLooG iteration variable, but signed to work with the subtractions CLooG
...@@ -581,8 +584,8 @@ gcc_type_for_cloog_iv (const char *cloog_iv, gimple_bb_p gbb) ...@@ -581,8 +584,8 @@ gcc_type_for_cloog_iv (const char *cloog_iv, gimple_bb_p gbb)
if (type_precision <= TYPE_PRECISION (long_integer_type_node)) if (type_precision <= TYPE_PRECISION (long_integer_type_node))
return long_integer_type_node; return long_integer_type_node;
if (type_precision <= TYPE_PRECISION (long_long_integer_type_node)) if (type_precision <= TYPE_PRECISION (my_long_long))
return long_long_integer_type_node; return my_long_long;
gcc_unreachable (); gcc_unreachable ();
} }
...@@ -593,17 +596,19 @@ gcc_type_for_cloog_iv (const char *cloog_iv, gimple_bb_p gbb) ...@@ -593,17 +596,19 @@ gcc_type_for_cloog_iv (const char *cloog_iv, gimple_bb_p gbb)
if (type_precision < TYPE_PRECISION (long_integer_type_node)) if (type_precision < TYPE_PRECISION (long_integer_type_node))
return long_integer_type_node; return long_integer_type_node;
if (type_precision < TYPE_PRECISION (long_long_integer_type_node)) if (type_precision < TYPE_PRECISION (my_long_long))
return long_long_integer_type_node; return my_long_long;
/* There is no signed type available, that is large enough to hold the /* There is no signed type available, that is large enough to hold the
original value. */ original value. */
gcc_unreachable (); gcc_unreachable ();
} }
return long_long_integer_type_node; return my_long_long;
} }
#undef my_long_long
/* Returns the induction variable for the loop that gets translated to /* Returns the induction variable for the loop that gets translated to
STMT. */ STMT. */
......
...@@ -2910,6 +2910,9 @@ scop_canonicalize_loops (scop_p scop) ...@@ -2910,6 +2910,9 @@ scop_canonicalize_loops (scop_p scop)
graphite_loop_normal_form (loop); graphite_loop_normal_form (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)
/* Can all ivs be represented by a signed integer? /* Can all ivs be represented by a signed integer?
As CLooG might generate negative values in its expressions, signed loop ivs As CLooG might generate negative values in its expressions, signed loop ivs
are required in the backend. */ are required in the backend. */
...@@ -2934,13 +2937,14 @@ scop_ivs_can_be_represented (scop_p scop) ...@@ -2934,13 +2937,14 @@ scop_ivs_can_be_represented (scop_p scop)
precision = TYPE_PRECISION (type); precision = TYPE_PRECISION (type);
if (TYPE_UNSIGNED (type) if (TYPE_UNSIGNED (type)
&& precision >= TYPE_PRECISION (long_long_integer_type_node)) && precision >= TYPE_PRECISION (my_long_long))
return false; return false;
} }
return true; return true;
} }
#undef my_long_long
/* Builds the polyhedral representation for a SESE region. */ /* Builds the polyhedral representation for a SESE region. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment